作者: admin
虚拟文件系统(VFS)
在linux Ext文件系统的开发过程中,引入了一个非常重要的概念,即虚拟文件系统 (VFS)。它并不是真正的文件系统,而是作为实际文件系统(Ext)和操作系统之间的接口出现,将实际的文件系统和操作系统隔离开来。在虚拟文件系统的帮助下,Linux可以支持除 Ext 之外的许多文件系统类型。各文件系统为 VFS 提供一致的访问接口,从而将不同文件系统的细节隐藏了起来。对操作系统的其他部分,以及运行在操作系统之上的程序而言,所有的文件系统都是一样的。
对虚拟文件系统来说,它一方面要保证快速访问实际文件系统中的数据,一方面还要保证文件和数据能够正确保存。这两个方面实际是互相矛盾的。Linux通过高速缓存协调这两个需求。在高速缓存中,Linux不仅缓存数据,而且还管理着操作系统和块设备之间的接口。
虚拟文件系统与真正的文件系统有所区别,是一个位于Linux内核与真正的文件系统中间的一个“中间层”,它的作用是让Linux可以支持其他的文件系统。
在早期开发的时候,Linux只有Minix文件系统可以使用。在引入了Ext2和Ext3之后,Linux本身的限制和性能等问题解决了,但是当一个计算机中安装有多个系统,存在多种文件系统分区时,就无法识别非Ext类型的分区。虚拟文件系统正是为了解决这个问题而产生的。当Linux内核需要访问磁盘的时候,并不直接与相应的文件系统交互,而是访问虚拟文件系统;虚拟文件系统会与相应的文件系统去交互,或者是直接对磁盘进行操作。
我们用一个Linux访问NTFS文件系统的实例来说明。在Linux内核要访问的文件在Windows平台主要使用的NTFS分区时,就与虚拟文件系统进行通讯,向它提出请求;虚拟文件系统则调用相应的NTFS文件系统,来完成操作。对其他文件系统的访问如ISO9660等,甚至Linux本身的EX2、EX3都是如此。可见虚拟文件系统的重要性,它是Linux上其他真正的文件系统得以使用的基础。