首页 > 代码库 > linux 文件系统
linux 文件系统
一、文件系统简介
文件系统是操作系统用于明确 磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。从系统角度来看,文件系统是对文件文件存储空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
1、对文件操作的实际意义
文件被删除:inode被标记为空闲,此inode指向的磁盘块被标记为空闲;如果inode被引用了多次,且此次删除未使得其引用计数降低为的话,这意味着文件被删除仅删除了一个访问路径;
文件复制:创建一个新文件,并原文件中数据在新文件指向的磁盘块中再写一次的过程;
文件移动:在同一个分区移到:移动文件仅是改变了文件访问路径;跨分区移到:在新分区创建文件,把数据复制过去,删除原分区数据;
2、Linux的文件系统的类型:
ext(2,3,4), xfs, ffs, ufs, reiserfs, jfs, vfat(fat32), ntfs
交换文件系统:swap
网络文件系统:nfs, smbfs(cifs)
分布式文件系统:ceph
光盘文件系统:isso9660
btrfs,
二、linux分区的创建
1、物理意义
硬盘分区:
磁道:track
扇区:sector
柱面:cylinder:
分区根据柱面划分
MBR:Master Boot Record
主引导记录
512Bytes: 引导启动OS
446bytes: 程序,bootloader
64bytes: 分区表,每16bytes标记一个分区,一共4分区
2bytes: 5A, MBR有效性标记
1T: 3主+1扩展(切割1个或多个逻辑)
2、逻辑分区意义
分区创建基本命令
查看:fdisk -l [DEVICE]...
创建分区:fdisk [DEVICE]
交互式界面,有许多子命令
p: 显示磁盘分区表
n: new,新建分区
d: delete,删除分区
t: 修改分区的系统ID
l: 列表出所有已经的系统ID
w: 保存并退出
q: 不保存退出
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n 创建主分区
Command action
e extended 逻辑分区
p primary partition (1-4) 主分区
p
Partition number (1-4): 1 第一个分区
First cylinder (1-2610, default 1): 开始块
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +6G 划分6g容量
Command (m for help): t 修改文件类型
Selected partition 1
Hex code (type L to list codes): 8e 文件类型(Linux LVM)
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p 查看分区
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xba762e8d
Device Boot Start End Blocks Id System
/dev/sdb1 1 393 6156741 8e Linux LVM 分区总的信息
3、让内核读取到分区信息
对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表:
CentOS 5:
# partprobe [DEVICE]
CentOS 6:
partx -a [DEVICE]
kpartx -af [DEVICE]
4、链接文件
创建链接:
ln [-sv] SRC DEST
硬链接:
不能对目录文件创建硬链接;
硬链接不能跨分区
创建硬链接会增加inode引用计数
符号链接:
可以对目录创建
不受分区限制
对文件创建符号链接不会增加引用计数
[root@dingchao tmp]# ln zip.sh / 创建一个硬链接
[root@dingchao tmp]# ls -li 查看inode节点
1179963 -rw-r--r-- 2 root root 0 Jul 12 00:00 zip.sh
[root@dingchao /]# ls -li
1179963 -rw-r--r-- 2 root root 0 Jul 12 00:00 zip.sh inode节点相同
创建软连接
[root@dingchao tmp]# ln -s zip.sh /etc 创建软连接
[root@dingchao tmp]# ls -al 查看文件
-rw-r--r-- 2 root root 0 Jul 12 00:00 zip.sh 源文件
[root@dingchao tmp]# cd /etc
[root@dingchao etc]# ls -al
lrwxrwxrwx 1 root root 6 Jul 12 10:17 zip.sh -> zip.sh 目标链接文件
5、创建文件系统:
mkfs : make file system
-t FSTYPE [DEVICE]
mkfs -t FSTYPE = mkfs.FSTYPE
mkfs -t ext4 = mkfs.ext4
注意:CentOS
Linux内核是模块化的,这些模块支持动态装载和卸载;
文件系统可能会被直接打包进内核,也可以被编译成内核模块;
6、文件格式化
mke2fs:
-t {ext2|ext3|ext4}:指定文件系统
-b {1024|2048|4096}:指定块大小
-L LABEL: 打标
-j: 相当于 -t ext3
-i #: 每多少字节给创建一个inode,此字节数不应该少小块大小
-N #: 直接指定可用的inode数;
-m #: 指定预留空间占整个分区空间的百分比;默认为5;
-O:指定分区特性
[root@localhost ~]# mkfs -t ext4 /dev/sdb1 格式化分区sdb1
物理磁盘结构示意图
7、文件系统挂载
文件系统挂载:默认只有管理员才有权限
将额外的分区与根文件系统上的某目录建立关联关系的过程;
目录中的原有文件会被隐藏
挂载点:另一个文件系统的访问入口
挂载: mount DEVICE MOUNT_POINT
固定挂载点:/mnt, /media
mount [option]... [-t fstype] [-o option] 设备 挂载点
挂载点:
1、事先存在;
2、使用空闲目录;
常用的挂载选项:
-t fstype:指定文件系统类型
-r: readonly, 只读挂载
-w: read and write, 读写挂载
-L LABEL:以卷标方式指定设备, mount -L MYDATA 挂载点
-U UUID: 以UUID的方式指定设备,mount UUID=‘uuid‘ 挂载点, mount -U uuid 挂载点
-a: 自动挂载所有(/etc/fstab文件中定义的)的支持自动挂载设备
-n: 挂载时,不更新/etc/mtab文件
-o option:
async:异步I/O,数据写操作先于内存完成,而后再根据某种策略同步至持久设备中
sync: 同步I/O,
atime/noatime: 文件和目录被访问时是更新最近一次的访问时间戳
auto/noauto:设备是否支持mount的-a选项自动挂载
diratime/nodiratime: 目录被访问时是更新最近一次的访问时间戳
dev/nodev: 是否支持在此设备上使用设备;
exec/noexec: 是否允许执行此设备上的二进制程序文件
suid/nosuid: 是否支持在此设备的文件上使用suid
remount: 重新挂载,通常用于不卸载的情况下重新指定挂载选项
ro: 只读
rw: 读写
user/nouser: 是否允许普通挂载此文件设备
acl: 在此设备是支持使用facl,默认不支持;
[root@localhost ~]# mount /dev/sdb1 /tmp/mnt 挂载设备sdb1到/tmp/mnt目录下
至此所分好的区就可以使用啦
本文出自 “天涯海角” 博客,谢绝转载!