Skip to content

文件系统

文件系统(File System)是操作系统管理持久存储的子系统——它把磁盘上一堆无序的扇区/块组织成有名字、有结构、可共享、可保护文件与目录,让用户和程序不必关心数据落在第几个扇区,只需 open/read/write。没有文件系统,磁盘就是一片只能按块号访问的原始空间;有了文件系统,开发者面对的是 README.md/etc/hosts~/photos 这样的友好抽象。文件系统向上提供命名空间(路径树)与访问接口(系统调用),向下负责块分配(数据存哪儿)、空闲管理(哪些块可用)、一致性(断电不丢数据)——它是离用户最近、也是 IO 性能优化(缓存/预读/写时复制)最关键的一层。

文件系统的全部考点围绕五个核心问题展开:①数据怎么存(文件分配方式——连续/链接/索引,决定是否支持随机访问、有无碎片);②怎么找(inode 索引节点——UNIX/Linux 主流方案,数据块指针 + 多级间接指针,理解大小文件如何寻址);③怎么组织(目录结构——单级/树形/无环图,绝对路径 vs 相对路径,软链接 vs 硬链接);④空闲怎么管(位图/空闲链表,快速定位可用块);⑤工程实现(EXT4 日志、NTFS、APFS 写时复制等典型 FS 的取舍)。本叶讲透这些机制——是诊断磁盘 IO 抖动、理解 ls -i/df -i/ln 行为、面试"软硬链接区别"等高频题的地基。

评价

优点

  • 友好抽象:把磁盘块封装成命名文件 + 层次目录,用户与程序用路径操作,无需关心物理块号
  • 共享与保护:通过权限位(rwx)和属主实现多用户共享同一份数据并隔离越权访问
  • 持久与一致:日志(EXT4)/写时复制(APFS/ZFS)保证断电后文件系统结构不损坏
  • 随机访问:索引分配(inode)支持 lseek 任意定位,数据库/索引系统赖以高效

缺点

  • 碎片与开销:连续分配会外部碎片;inode 间接寻址有指针开销;元数据(inode/位图)占额外空间
  • 一致性维护代价:写数据要同步更新元数据,日志带来额外写放大,影响 SSD 寿命与吞吐
  • 跨文件系统限制:硬链接不能跨文件系统/分区(依赖 inode 号),软链接失效(目标删除即悬空)

本叶地图

  • 入门 —— 文件抽象(磁盘块→命名文件)、文件属性与类型、目录概念、绝对/相对路径
  • 文件分配与索引 —— 连续/链接/索引分配的取舍、inode 结构与多级间接指针、随机访问支持
  • 目录结构与链接 —— 单级/树形/无环图目录、软链接 vs 硬链接、空闲空间管理(位图)、EXT4/NTFS/APFS 对比
  • 参考 —— 分配方式对比表、软硬链接对比、inode 结构图、典型 FS 对比、易错点

幻灯片地址

文件系统

测试题

文件系统测试题