文件系统

文件系统(File System)是 OS 用来在存储设备(磁盘、SSD、U盘等)上组织、存储、检索、保护和管理文件数据的一套机制与数据结构集合。它介于“裸块设备”和“用户/应用程序”之间,把物理扇区抽象成“目录—文件—字节流”的层次视图。

核心职责

  • 命名与寻址:把人类可读的路径(/home/user/a.txt)映射到物理块地址。
  • 空间管理:分配/回收磁盘块,记录哪些块空闲、哪些被占用。
  • 元数据维护:存储权限、所有者、时间戳、大小、链接数等(inode / dentry / FAT 表等)。
  • 数据布局:决定文件内容如何分散或连续存放,影响性能与碎片。
  • 一致性保障:通过日志(journal)、写时复制(CoW)、fsck 等应对掉电/崩溃。
  • 访问控制:结合 OS 权限模型(DAC/MAC)做读写执行控制。

典型抽象层级

应用程序 (open/read/write)
   ↓
VFS(虚拟文件系统,屏蔽差异)
   ↓
具体文件系统驱动(ext4/xfs/ntfs/apfs/ffs...)
   ↓
块设备层(bio/请求队列)
   ↓
磁盘/SSD 硬件

常见文件系统举例

  • Linux:ext2/ext3/ext4、XFS、Btrfs、F2FS(闪存优化)、OverlayFS(容器)
  • Windows:FAT32、exFAT、NTFS、ReFS
  • macOS/iOS:HFS+、APFS
  • 网络/分布式:NFS、CIFS/SMB、CephFS、GlusterFS、HDFS
  • 内存/伪文件系统:tmpfs、procfs、sysfs、devtmpfs

关键概念(面试/工程常用)

  • inode(索引节点):Unix 系文件系统中存元数据+块指针,文件名在目录项里。
  • superblock:描述文件系统整体信息(魔数、块大小、挂载状态)。
  • journal / log:先写日志再改数据,崩溃后可回放恢复。
  • CoW:写时复制(Btrfs/ZFS/APFS),快照便宜、一致性强。
  • mount:把一个文件系统实例挂到目录树的某个点,VFS 统一呈现。
  • page cache:OS 把文件页缓存在内存,read/write 很多情况只碰内存。
上一篇
下一篇