VFS系统
大家好!今天让小编来大家介绍下关于VFS系统的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
创意岭作为行业内优秀的企业,服务客户遍布全球各地,相关业务请拨打电话:175-8598-2043,或添加微信:1454722008
文章目录列表:
一、什么是虚拟文件系统,linux系统文件系统
1
引言
Linux
中允许众多不同的文件系统共存,如
ext2,
ext3,
vfat
等。通过使用同一套文件
I/O
系统
调用即可对
Linux
中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的
操作可以跨文件系统而执行。如图
1
所示,我们可以使用
cp
命令从
vfat
文件系统格式的硬盘拷贝数据到
ext3
文件系统格式的硬盘;而这样的操作涉及到两个不同的文件系统。
图
1.
跨文件系统的文件操作
“一切皆是文件”是
Unix/Linux
的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、
套接字等在
Unix/Linux
中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。
图
2.
一切皆是文件
而虚拟文件系统正是实现上述两点
Linux
特性的关键所在。虚拟文件系统(Virtual
File
System,
简称
VFS),
是
Linux
内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个
抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖
VFS
共存,而且也依靠
VFS
协同工作。
为了能够支持各种实际文件系统,VFS
定义了所有文件系统都支持的基本的、概念上的接口和数据
结构;同时实际文件系统也提供
VFS
所期望的抽象接口和数据结构,将自身的诸如文件、目录等概念在形式
上与VFS的定义保持一致。换句话说,一个实际的文件系统想要被
Linux
支持,就必须提供一个符合VFS标准
的接口,才能与
VFS
协同工作。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS
层和内核的其他部分看来,所有文件系统都是相同的。图3显示了VFS在内核中与实际的文件系统的协同关系。
图3.
VFS在内核中与其他的内核模块的协同关系
我们已经知道,正是由于在内核中引入了VFS,跨文件系统的文件操作才能实现,“一切皆是文件”
的口号才能承诺。而为什么引入了VFS,就能实现这两个特性呢?在接下来,我们将以这样的一个思路来切入
文章的正题:我们将先简要介绍下用以描述VFS模型的一些数据结构,总结出这些数据结构相互间的关系;然后
选择两个具有代表性的文件I/O操作sys_open()和sys_read()来详细说明内核是如何借助VFS和具体的文件系统打
交道以实现跨文件系统的文件操作和承诺“一切皆是文件”的口号。
二、怎样完linux上vfs里面的文件系统祖册
c
三、怎样打开vfs格式的文件啊
你应该先了解下什么是vfs
VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。
Linux是一个非常优秀的操作系统,它是免费的,而且很稳定。 Linux所支持的文件系统高达十几个,除了为它量身打造的Ext2之外,它还支持了Minix,FAT,VFAT,NFS,NTFS…等等。
所谓VFS就是Virtual File System虚拟文件系统,也称为虚拟文件系统开关(Virtual Filesystem Switch).
这是Linux档案系统对外的接口。任何要使用档案系统的程序都必须经由这层接口来使用它。
VFS是一个异构文件系统之上的软件粘合层(注:有时也把VFS称为可堆叠的文件系统(Stackable Filesystem),因为VFS可以无缝地使用多个不同类型的文件系统,就像把多个文件系统堆叠在一起一样,故而得名)。通过VFS,可以为访问文件系统的系统调用提供一个统一的抽象接口。
VFS最早由Sun公司提出以实现NFS(Network FileSystem,网络文件系统)。但是现在很多Unix系统都采用了VFS(包括Linux、FreeBSD、Solaris等)。
Linux下的VFS:
VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。在古老的DOS操作系统中,要访问本地文件系统之外的文件系统需要使用特殊的工具才能进行。而在Linux下,通过VFS,一个抽象的通用访问接口屏蔽了底层文件系统和物理介质的差异性。
每一种类型的文件系统代码都隐藏了实现的细节。因此,对于VFS层和内核的其它部分而言,每一种类型的文件系统看起来都是一样的。
在Linux中,VFS采用的是面向对象的编程方法。
四、磁盘格式化mkfs、mke2fs
在完成磁盘分区的操作后,接着就需要对新建的分区进行格式化,创建相应的文件系统。在linux系统中我们通常借助mkfs和mke2fs这两个命令来进行以上操作。
mkfs命令通常用于在设备硬件分区上创建linux文件系统。mkfs命令支持建立多种Linux文件系统,如ext系列,xfs等等。实际上mkfs是支持多种文件系统构建命令 mkfs. TYPE 的前部分,mkfs命令通常执行的时候也是调用 mkfs. TYPE 来执行,如mkfs.ext2,mkfs.vfs,mkfs.vfat等等。
创建vfat系统:
创建ext4文件系统并指定卷标为testdisk:
mke2fs命令是专门用于管理ext系列文件系统的一个专门的工具。其还有像mkfs.ext2,mkfs.ext3,mkfs.ext4等衍生的命令,它们的用法mke2fs类似,在系统man下它们的帮助手册会直接跳转mke2fs命令的帮助手册。
创建ext4文件系统并设置卷标为testdisk:
以上就是小编对于VFS系统问题和相关问题的解答了,如有疑问,可拨打网站上的电话,或添加微信。
推荐阅读: