什么是文件系统?
文件系统是操作系统对存储设备上文件一种管理机制,不同的管理机制形成了不同的文件系统;
文件系统划分
按IO栈的层级来分,可以分为VFS和具体文件系统两层。VFS屏蔽不同的文件系统,向上提供统一的访问接口,具体的文件系统则为具体的文件系统实现,比如ext4、overlayfs等;
按存储介质的不同,文件系统可以分为三类:
- 基于磁盘的文件系统,常见的有Ext4、XFS、OverlayFS 等文件系统;
- 基于内存的文件系统,比如常用的 /proc 文件系统;
- 网络文件系统,也就是用来访问其他计算机数据的文件系统,比如 NFS、SMB、iSCSI 等;
挂载点
查看文件系统挂载点
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-root 909G 565G 299G 66% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 785M 1.2M 784M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 62M 3.8G 2% /run/shm
none 100M 48K 100M 1% /run/user
/dev/sda1 228M 98M 118M 46% /boot
查看目录或文件所在文件系统的挂载点
df -h 文件/目录
基本要素
- 超级块(super_block):存储文件系统的元数据,每个文件系统对应一个超级块;
- 目录项模块:文件系统的目录管理,比如一个路径 /home/foo/hello.txt,那么目录项有home, foo, hello.txt。目录项的块,存储的是这个目录下的所有的文件的inode号和文件名等信息;
- 索引节点inode:存储文件的元数据,比如 inode 编号、文件大小、访问权限、修改日期、数据的位置等,每个文件对应一个inode(索引节点对应的缓存叫索引节点缓存);
- 逻辑块Page:文件系统读写数据的基本单元,常见的逻辑块大小为 4KB,即8个连续扇区(逻辑块对应的缓存叫页缓存);
参考: