用户空间 → VFS (系统调用接口)
内核空间 → 具体文件系统 (ext4/xfs/btrfs/...)
→ Page Cache
→ Block I/O Layer
硬件 → 磁盘设备
VFS 是内核的抽象层,定义统一的文件操作接口:
struct file_operations {
ssize_t (*read)(...);
ssize_t (*write)(...);
int (*open)(...);
int (*fsync)(...);
...
};
| 结构 | 作用 |
|---|---|
| super_block | 文件系统元信息(挂载点) |
| inode | 文件元数据(权限、大小、数据块位置) |
| dentry | 目录项缓存(路径名 → inode 映射) |
| file | 打开文件实例(当前偏移、文件状态标志) |
每个文件/目录对应一个 inode,存储:
stat <file> # 查看 inode 信息
ls -i # 显示 inode 编号
df -i # inode 使用情况
pdflush 线程负责回写cat /proc/meminfo | grep -i cache
free -h # buff/cache 列
| 文件系统 | 特点 | 适用场景 |
|---|---|---|
| ext4 | 稳定成熟,支持 16TB | 通用场景 |
| xfs | 高性能,支持 8EB | 大文件、数据库、日志 |
| btrfs | 快照、压缩、COW | 数据完整性要求高 |
| zfs | 最强数据保护,ARC 缓存 | 存储服务器 |
| tmpfs | 内存文件系统 | /tmp, /dev/shm |