Linux 虚拟系统文件交换器剖析
Linux ? 的最显著特征是灵活性和扩展性,例如它的虚拟文件系统交换器(VFS).您可以在各种设备上创建文件系统,包括传统的磁盘、USB flash 驱动、内存以及其他储存设备.您还可以在另一个文件系统环境中嵌入文件系统.探索导致 VFS 如此强大的因素,并了解 VFS 的主要接口和进程. Linux 文件系统的灵活性和扩展性支持直接源于一组抽象接口.这组接口的核心就是虚拟文件系统交换器(VFS). VFS 为上层应用程序提供一组标准接口,用于对不同的文件系统执行文件 I/O.这组接口在一个或多个底层设备上支持多个并发文件系统.另外,这些文件系统可以不是静态的,可以根据储存设备而变化. VF与VFS 您还可以看到 VFS 还被定义为虚拟文件系统(virtual file system),但定义为虚拟文件系统转换器(virtual file system switch)更能说明其作用,虚拟层跨多个文件系统转换(即多路复用)请求./proc 文件系统在这里带来很多的混淆,它通常也被称为虚拟文件系统. 例如,一个典型的 Linux 桌面在可用硬盘上支持 ext3 文件系统,并且在可用的 CD-ROM(或者称为 CD-ROM 文件系统 或 CDFS)上支持 ISO 9660 文件系统. CD-ROM 是可以插入和移除的, Linux 内核适应这些包含不同内容和结构的新文件系统.可以通过网络文件系统(Network File System,NFS)访问远程文件系统.在此时,Linux 还可以挂载来自本地硬盘的 Windows?/Linux 双引导系统的 NT File System (NTFS) 分区,并且能够向其读写数据. ,可移除的 USB flash 启动(UFD)是可以热插拔的,它构成另一个文件系统.概而言之,可以在这些设备中使用同一组文件 I/O 接口,从而允许底层的文件系统和物理设备能够从用户中抽象出来(见图 1). 图 1. 在不同文件系统和储存设备之间提供统一接口的抽象层
分层抽象 现在,我们向 Linux VFS 提供的抽象特性添加一些具体的架构.图 2 从 VFS 的角度显示 Linux 结构的高级视图.在 VFS 之上的是标准的内核系统调用接口(SCI).这个接口允许用户空间发出要求转换到内核的调用(在不同地址空间中).在这个域中,调用 POSIX open 调用的用户空间应用程序经过 GNU C 库(glibc)进入内核和系统调用去多元化(de-multiplexing).,使用 sys_open 调用 VFS. 拥有帝国一切,皆有可能。欢迎访问phome.net 图 2. VFS 的分层架构
早期的VFS实现 Linux 并不是第一个包含虚拟层以支持通用文件模型的操作系统.早期的 VFS 实现包括 Sun 的 VFS(SunOS version 2.0,大约出现在 1985 年),以及 IBM 和 Microsoft? 的 “Installable File System” for IBM OS/2.这些虚拟化文件系统层的方法为 Linux VFS 铺平了道路. VFS 提供抽象层,从而将 POSIX API 与特定文件系统如何实现该行为的细节分离开来.这里的关键之处是,不管底层文件系统是 ext3 还是 Btrfs,Open、Read、Write 或 Close API 系统调用都能正常工作.VFS 提供一个由底层文件系统(它们为各种 POSIX API 函数实现行为)继承的通用文件模型.另一个在 VFS 范围之外的深层抽象隐藏了底层物理设备(可能是磁盘、磁盘分区、网络储存实体、内存或其他能够储存信息的媒介 —— 即使是暂时性的). 除了从底层文件系统抽象文件操作的细节之外,VFS 还将底层块设备绑定到可用的文件系统.让我们看看 VFS 的内部结构及其工作原理.
VFS的内部结构 在查看 VFS 子系统的总体架构之前,我们先看看所使用的主要对象.这个小节探索了超块(superblock)、索引节点(或 inode)、目录条目(或 dentry)和文件对象.在这里,其他一些组成部分也很重要,比如缓存.不过我将在后面的总体架构中讨论它们. 超块 超块(superblock)是关于文件系统的高级元 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |