VFS架构概览
Linux VFS是一个抽象层,它为用户空间提供了统一的文件系统接口,同时屏蔽了底层不同文件系统(ext4、btrfs、NTFS等)的实现细节。
Plain Text复制代码
┌─────────────────────────────────────────────────────────────────────┐│ 用户空间(User Space) ││ ┌─────────────────────────────────────────────────────────────┐ ││ │ open() read() write() close() stat() ... │ ││ └─────────────────────────────────────────────────────────────┘ ││ │ ││ ▼ ││ ┌─────────────────────────────────────────────────────────────────┐││ │ VFS 虚拟文件系统层 │││ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │││ │ │ super_ │ │ inode │ │ dentry │ │ file │ │││ │ │ block │◄──│ │◄──│ │◄──│ │ │││ │ │(文件系统)│ │ (文件元数据)│ │ (目录项) │ │ (打开文件)│ │││ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │││ └─────────────────────────────────────────────────────────────────┘││ │ ││ ┌───────────────┼───────────────┐ ││ ▼ ▼ ▼ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ││ │ ext4 文件系统 │ │ btrfs 文件系统 │ │ proc 文件系统 │ ││ └─────────────────┘ └─────────────────┘ └─────────────────┘ ││ 具体文件系统层 │└─────────────────────────────────────────────────────────────────────┘
三大核心对象的协作关系
┌─────────────────────────────────────────────────────────────────────┐│ super_block (文件系统) ││ ┌─────────────────────────────────────────────────────────────┐ ││ │ s_root → dentry (根目录) │ ││ │ s_inodes → inode链表 │ ││ │ s_dentry_lru → dentry LRU缓存 │ ││ │ s_op → super_operations │ ││ └─────────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────────┘ │ │ s_root ▼┌─────────────────────────────────────────────────────────────────────┐│ dentry (目录项树) ││ ┌─────────────────────────────────────────────────────────────┐ ││ │ d_parent → 父目录dentry │ ││ │ d_child → 兄弟dentry链表 │ ││ │ d_subdirs → 子目录dentry链表 │ ││ │ d_inode → 关联的inode │ ││ │ d_name → 目录项名称 │ ││ └─────────────────────────────────────────────────────────────┘ ││ │ ││ ┌──────────┴──────────┐ ││ ▼ ▼ ││ ┌─────────────────┐ ┌─────────────────┐ ││ │ dentry (文件) │ │ dentry (子目录)│ ││ └─────────────────┘ └─────────────────┘ │└─────────────────────────────────────────────────────────────────────┘ │ │ d_inode ▼┌─────────────────────────────────────────────────────────────────────┐│ inode (文件元数据) ││ ┌─────────────────────────────────────────────────────────────┐ ││ │ i_ino → inode编号 │ ││ │ i_mode → 文件类型和权限 │ ││ │ i_size → 文件大小 │ ││ │ i_atime/mtime/ctime → 时间戳 │ ││ │ i_nlink → 硬链接数 │ ││ │ i_op → inode_operations │ ││ │ i_fop → file_operations │ ││ │ i_dentry → 指向该inode的dentry链表 │ ││ └─────────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────────┘

关注'linux探究'微信公众号,获取更多Linux技术干货与版本更新资讯