虚拟文件系统-VFS介绍

虚拟文件系统-VFS介绍

虚拟文件系统(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上其他真正的文件系统得以使用的基础。

Delphi编写的虚拟硬盘文件浏览程序,这段代码只实现了很小的功能,对分区格式有限制,只能读取不能写入,只能读取C盘根目录下的文件.等等.代码里符带一份学习笔记,是Fat分区格式的,不是太详细,到数据恢复网可以找到详细的资料.   使用Virtual PC的时候,刚开始时对于VPC和宿主之间的文件传输却一直没有整明白,所以要从宿主计算机中传输文件到VPC中只能靠WinIso制作成iso文件再用VPC的光驱来读取,这样做很麻烦,而且只是一面传输,所以就看一下VPC的虚拟硬盘,一看之下和记忆中的硬盘格式差不多,我只记得有个"55 AA",不巧的是在这里也找到了这个数据.所以就想做一个读取虚拟磁盘的软件.    于是去网上找了一些看了下:    首先是硬盘的主引导扇区,固定值:0磁面0磁道1扇区.大小512字节,记得前几天看过<>--一本不错的书,它那上面的第一个程序便是写了一个引导程序.它便是写了程序所需要的功能后将其它地方填0以达到512字节.当然最后两个字节一定是"55 AA",只有这个值才是有效的.    但是,上面所提那个引导程序显然是不合理的(书中只是一个软件盘引导可以不涉及到分区信息).因为真正的引导程序只能是占用此扇区的前446个字节,而后面直到最后"55 AA"之前的64个字节,是用来记录分区信息的DPT(Disk PartitionTable).但是作为在虚拟机上或软盘上的演示似乎也无妨(硬盘肯定不行,会破坏整个系统分区).    由于只是为了VPC与宿主计算机交换数据,所以我决定只读取第一分区就可以了.首先准备一个新VPC虚拟硬盘,用VPC建一个最小的3M硬盘(这一点是Virtual PC比VMWare强的),分区(全做为C盘),格式化,由于硬盘很小,所以只能格式化成Fat12,这里只学习了Fat12和Fat16的分区格式,然后用UltraEdit打开:    果然,510字节后便是"55 AA"即行标"0x01f0h"最后两字节,再看一下前面行标"0x1B0h"最后两字节是"80 01"80便是表示此分区为活动分区,即从此开始为第一个分区的信息.前面正好446字节.    每一个分区由十六个字节来描述.第一字节只能为"80"或"00",我们先不关心这些字节,只关心最后四个字节--分区所占扇区数.和最后第八字节开始的四个字节--相对扇区数,即此分区之前还有多少扇区.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值