linux-sre-handbook

05-文件系统原理

文件系统分层

用户空间   →  VFS (系统调用接口)
内核空间   →  具体文件系统 (ext4/xfs/btrfs/...)
          →  Page Cache
          →  Block I/O Layer
硬件      →  磁盘设备

虚拟文件系统 (VFS)

VFS 是内核的抽象层,定义统一的文件操作接口:

struct file_operations {
    ssize_t (*read)(...);
    ssize_t (*write)(...);
    int (*open)(...);
    int (*fsync)(...);
    ...
};

核心数据结构

结构 作用
super_block 文件系统元信息(挂载点)
inode 文件元数据(权限、大小、数据块位置)
dentry 目录项缓存(路径名 → inode 映射)
file 打开文件实例(当前偏移、文件状态标志)

inode 详解

每个文件/目录对应一个 inode,存储:

stat <file>            # 查看 inode 信息
ls -i                  # 显示 inode 编号
df -i                  # inode 使用情况

Page Cache

cat /proc/meminfo | grep -i cache
free -h               # buff/cache 列

常见文件系统对比

文件系统 特点 适用场景
ext4 稳定成熟,支持 16TB 通用场景
xfs 高性能,支持 8EB 大文件、数据库、日志
btrfs 快照、压缩、COW 数据完整性要求高
zfs 最强数据保护,ARC 缓存 存储服务器
tmpfs 内存文件系统 /tmp, /dev/shm

延伸阅读