文件系统把持久化块设备组织成目录和文件。目录项建立名字到 inode 的映射,inode 保存类型、权限、大小、时间和数据块位置;文件名通常不在 inode 内,因此多个硬链接可指向同一 inode。符号链接则保存另一条路径。

应用打开路径时,内核逐级解析目录、检查权限并建立打开文件对象,再给进程一个文件描述符。描述符只是进程表中的索引;复制描述符可能共享文件偏移。VFS 提供统一接口,让不同具体文件系统实现 open、read、write 等操作。

读取通常先查 Page Cache,命中便免去设备 I/O;写入常先修改缓存页并标脏,内核稍后写回。write 返回不等于数据已落到稳定介质,关键数据需按语义调用 fsync,并注意目录项和文件内容可能需要分别持久化。顺序 I/O 往往比随机 I/O 更容易预读和合并。

日志文件系统先记录元数据或事务意图,再写最终位置,崩溃后通过日志恢复一致结构,但并不自动保证应用多文件事务。容量也不只受数据块限制,海量小文件可能先耗尽 inode。

误区是把删除文件等同立即释放空间(仍被进程打开时可能继续占用)、认为 rename 跨文件系统仍原子、把缓存内存当泄漏,以及认为日志等于备份。小结:理解名字、inode、打开对象、缓存页和磁盘块的分层,才能解释文件为何可见、何时持久和为何占空间。