UNIX文件系统:VFS/Vnode架构的演进与实现
1. Sun VFS/Vnode架构概述
Sun VFS/Vnode架构是在Sun Microsystem的SunOS操作系统上开发的。世界最初是通过Steve Kleiman发表的一篇经常被引用的Usenix论文了解到vnode的。该论文提出了新文件系统架构的四个设计目标:
- 文件系统的实现应明确分为独立于文件系统的层和依赖于文件系统的层,且两层之间的接口应定义清晰。
- 应支持本地磁盘文件系统(如4.2BSD快速文件系统FSS)、非UNIX类文件系统(如MS - DOS)、无状态文件系统(如NFS)和有状态文件系统(如RFS)。
- 应能够支持远程文件系统(如NFS和RFS)的服务器端。
- 文件系统跨接口的操作应是原子性的,这样多个操作不需要用锁来包含。
其主要实现目标之一是消除对全局数据的需求,使接口可重入。因此,之前在用户区存储与文件系统相关数据(如u_base和u_count)的方式需要被移除。出错时设置u_error也需要被移除,新接口应明确返回错误值。
2. 主要结构与接口
2.1 VFS和vnode接口
该架构在内核的独立于文件系统层和依赖于文件系统层之间有两套接口。VFS接口通过一组vfsops访问,而vnode接口通过一组vnops(也称为vnodeops)访问。vfsops操作整个文件系统,而vnodeops操作单个文件。
2.2 vnode结构
由于该架构包含非UNIX和非基于磁盘的文件系统,之前15年中普遍作为文件内存表示的核心inode不再适用,因此引入了新的vno
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



