知识卡片

VFS四大对象的抽象设计

专业/工作 · 551

内容

虚拟文件系统(VFS)用四种面向对象的抽象把Linux支持的所有具体文件系统统一到同一套模型下:超级块代表一个已挂载的文件系统整体信息;索引节点(inode)代表一个物理文件的元数据(大小、权限、创建时间);目录项(dentry)描述路径的层级关系,目录和文件都被当作目录项对象;文件对象则代表一个进程当前打开的文件实例,由open创建、close销毁。上层应用只需要面对这四类对象和统一的系统调用接口,具体是ext4还是Btrfs在处理请求,对应用完全透明。发散:这是”面向对象抽象消解异构实现差异”的教科书案例——VFS本身不存储数据也不做决策,只是把每个具体文件系统都要有的共性行为提炼成接口,真正的实现全部下放给背后的具体文件系统。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第3章《Linux存储栈》