VFS(virtual
File System)的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口。虚拟文件系统(VFS)是一个软件抽象层,最初是为了解决透明地访问本地文件系统和远程网络文件系统文件的问题而引入的。
Sun网络文件系统(NFS)提供对文件系统的透明、远程访问。与
unix下的许多其他远程文件系统实现不同,NFS被设计为易于移植到其他操作系统和机器体系结构。为了以一种对应用程序透明的方式将NFS构建到UNIX内核中,
太阳微系统(Sun Microsystems,Inc.)向内核添加一个新接口,将通用文件系统操作与特定文件系统实现分开。该“文件系统接口”由两部分组成:虚拟文件系统(VFS)接口定义了可以在文件系统上执行的操作,而虚拟节点(vnode)接口定义了可以在该文件系统中的文件上执行的操作。
虚拟文件系统(VFS)接口,也称为v-node接口,提供了物理文件系统和逻辑文件系统之间的桥梁。这个接口允许支持物理文件系统的多个并发实例,每个实例称为一个文件系统实现,文件系统实现可以支持将文件数据存储在本地节点或远程节点。
VFS(virtual
File System)充当了用户和文件的后台文件系统之间的接口,屏蔽了诸如‘open()’‘read()’‘write()’等通用调用背后的任何实现细节。大多数用户空间程序都以完全与文件系统无关的方式编写,而VFS提供了更大的灵活性和可移植性。
Linux是一个非常优秀的操作系统,它是免费的,而且很稳定。 Linux所支持的文件系统高达十几个,除了为它量身打造的
Ext2之外,它还支持了
MINIX,FAT,VFAT,NFS,NTFS…等等。
所谓VFS就是Virtual
File System虚拟文件系统,也称为虚拟文件系统开关(Virtual Filesystem Switch).
VFS是一个异构文件系统之上的软件粘合层(注:有时也把VFS称为可堆叠的文件系统(Stackable Filesystem),因为VFS可以无缝地使用多个不同类型的文件系统,就像把多个文件系统堆叠在一起一样,故而得名)。通过VFS,可以为访问文件系统的系统调用提供一个统一的抽象接口。
VFS最早由
太阳微系统提出以实现NFS(Network FileSystem,网络文件系统)。但是现在很多
unix系统都采用了VFS(包括
Linux、
FreeBSD、
Solaris等)。
VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。在古老的DOS操作系统中,要访问本地文件系统之外的文件系统需要使用特殊的工具才能进行。而在
Linux下,通过VFS,一个抽象的通用访问接口屏蔽了底层文件系统和物理介质的差异性。