虚拟文件系统.docx_第1页
虚拟文件系统.docx_第2页
虚拟文件系统.docx_第3页
虚拟文件系统.docx_第4页
虚拟文件系统.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第33卷 第1期 陕西师范大学学报(自然科学版)2005年3月 Journalof ShaanxiNonTlalUniversity(NaturalScienceEdition)V0133 No1Mar2005文章编号:16724291(2005)01002904Linux系统中虚拟文件系统内核机制研究史芳丽, 周亚莉(西安交通大学经济与金融学院;管理学院,陕西西安710061)摘要:针对Linux操作系统强大的多物理文件系统管理性能,从Linux的内核文件管理机制虚拟文件系统(VFS)出发,对Linux系统如何识别和管理不同的物理文件系统进行了研究,剖析了Linux文件系统中一个物理文件系统的安装与注册、VFS的产生,以及通过VFS来管理和访问物理文件系统的内核工作机制关键词:虚拟文件系统;超级块;文件系统;安装;注册;访问中图分类号:TP31681 文献标识码:AVFSkernelmechanismin LinuxsvstemSHIFangIi,ZHOUYali(SchOOlof EconomicsandFinance;Schlof Management,Xi7anJiaotong University,Xi7an710061,Shaanxi,China)Abstract:As fOrmanyfilesystem managingperfonTlanceof Linuxoperating system,thequestionwhatidentifyandmanagedifferentphysicalfilesystemsofLinuxsystemthroughkemelfilemanagingworkin mechanismof Linuxvirtualfilesystemare discussed Theinstallation andregistrationofanphysical systemandproductionof VFSandkernelworkingmechanismofmanagingandacceSSingthroughVFSphysical矗le systeminLinuxdeeplyareanalyzedKeywords:virtual file system(VFS);superblock;file system;installation;registration;accessMRSubjectclassification:68N25Linux操作系统的一个重要特点是它能够支持如Ext2、FAT、VFAT、FAT32、MINIx等许多不同类型的物理文件系统文献14和文献5对Linux文件系统的优良性能和使用进行了研究,文献6对Linux核心可抢占性方法进行了研究,但没有从Linux的系统内核分析和研究如何实现多物理文件系统的管理与访问本文在参考文献的基础上,研究和提出从内核如何建立虚拟文件系统(VirtualFileSystem,VFS)开始,到一个物理文件系统如何安装、注册和拆卸,如何通过VFS来管理和访问物理文件系统等方面的内核工作机制1虚拟文件系统的工作机制11 V邢的内涵“nux支持各种不同的文件系统是通过VFS实现的,不同的物理文件系统具有不同的组织结构和不同的处理方式,为了能够处理各种不同的物理文件系统,操作系统必须把它们所具有的特性进行抽象,并建立一个面向各种物理文件系统的转换机制,通过这个转换机制,把各种不同物理文件系统转换为一个具有统一共性的虚拟文件系统VFS实际上向Linux内核和系统中运行的进程提供了一个处收稿日期:200410 12基金项目:国家自然科学基金资助项目(70273034)作者简介:史芳丽(1963一),女,陕西富平人,西安交通大学副教授,博士研究生万方数据陕西师范大学学报(自然科学版) 第33卷理各种物理文件系统的公共接口,通过这个接口使得不同的物理文件系统看来都是相同的VFS和各种物理文件系统组成了如图1所示的Linux文件系统VFS并不是一种物理的文件系统,它仅是一套转换机制,它在系统启动时建立,在系统关闭时消失,并且仅存在于内存空间所以,VFS并不具有一般物理文件系统的实体在VFs提供的接口中包含向各种物理文件系统转换用的一系列数据结构,如V】玛超级块、V】玛的in。de等,同时还包含对不同物理文件系统进行处理的各种操作函数的转换人口f vFsI中申申l BuffercacheI殳备驱动程序l 图1 Lin呱文件系统Fig1Linuxfile syst哪!2 VFS超级块与Ext2超级块VFS超级块是在文件系统安装时由系统在内存中建立的,对于每个已安装的文件系统,在内存中都有与其对应的VFs超级块VFS超级块的作用是把在各种文件系统中表示整体组织结构的信息转换成统一的格式各种文件系统的VFS超级块都是一个superblock结构体,VFS超级块super_block结构体的定义在includefsfsh中各文件系统VFS超级块中各成员的数据则来自该文件系统本身的管理信息结构这些数据是在文件系统安装时,由读超级块例程readsuper()把某种文件系统的管理信息写入它的VFS超级块中VFS超级块主要包含的信息有:文件系统的组织信息、文件系统的注册和安装信息、超级块的属性信息,不同物理文件系统特有的信息则由联合体u的各个成员项表示,指向super-operations结构体中包含着对超级块进行操作的函数指针等而对于物理文件系统Ext2,其超级块是用来描述Ext2文件系统整体信息的数据结构,主要描述文件在逻辑分区中的静态分布情况,以及描述文件系统的各种组成结构的尺寸、数量等信息13 VFSinode与Ext2inode在进程使用一个文件时,无论是哪种文件系统的文件,首先需要打开这个文件在文件打开时,系统就在内存中建立该文件的VFSinode,VFSinode占用的是内存空问,而且只是当前正在使用的活动文件才有VFSinodeVFSinOde的作用是把不同文件系统的活动文件的管理信息,如文件类型、文件尺寸、文件位置等转换成统一的格式,VFSinode结构定义在includefsh中它除了包括Ext2inode中的若干静态管理信息外,又增加了许多文件的动态管理信息,如设备标识符、索引节点编号(表明一个VFsinode惟一地对应一个文件)、在联合体u中的各个成员项给出了不同文件系统的个性信息、锁定标志、VFSinode的双向链表指针,指向一组函数的指针等而Ext2文件系统中的inode是Ext2文件系统的基本目录,它是组成文件系统的基本构件inode表示Ext2文件系统树型结构的节点,每一个节点对应一个inode在Ext2文件系统树型结构中个节点是一个文件或目录,所以inOde是描述文件或目录的信息体Ext2文件系统中的每个文件由一个inode描述,且只能由一个inode描述无论是普通文件还是目录文件、设备文件、符号链接文件、FIFO文件都有对应的inOdeExt2文件系统的inode的作用是记录与文件管理有关的各种静态信息,如文件的类型和访问权限、文件的尺寸、文件的位置、文件的时间信息等2文件系统的安装与注册21文件系统的安装为了使某种物理文件系统能够在Linux系统中使用,必须把它们安装到“nux的文件系统中,并且要注册到系统内核为此,Linux文件系统设置了安装和注册文件系统的数据结构,以及安装、注册文件系统的命令和函数用于安装和注册文件系统的数据结构和函数都属于VFS的组成部分但是要安装的文件系统必须已经存在于外存磁盘空间上,每个文件系统都有一个独立的磁盘分区,并且具有各自的树型层次结构文件系统的安装就是利用“nux的模块特性,把文件系统作为可装卸模块纳入Linux文件系统中,使其成为Linux文件系统的一部分如果文件系统建于内核中,则在系统引导时安装与注册该文件系统;如果文件系统作为内核可装载的模块,则实际安装某个文件系统时进行注册,在不需要时卸载由于Ext2是Linux的标准文件系统,所以在系万方数据第l期 史芳丽等:Linux系统中虚拟文件系统内核机制研究 31统启动时自动把Ext2文件系统的磁盘分区作为Linux文件系统的根文件系统,即Ext2的树型层次结构就成为Linux系统文件的基本结构Ext2以外的文件系统则安装在根文件系统下的某个目录下,成为系统树型结构中的一个分枝Linux文件系统的树型层次结构中用于安装其它文件系统的目录称为安装点或安装目录当mount命令安装一个物理文件系统时,Linux系统中已安装的文件系统用一个vfsmount结构进行描述,它在include几inuxHlounth中定义该结构体中包含着对已安装的物理文件系统的管理信息,如指出文件系统所在设备的属性、安装点的目录名、文件系统VFS超级块的指针等系统中所有已安装文件系统的各个vfSmount结构体使用其成员项mntnext组成一个链表,称为物理文件系统链表,如图2所示!“一13“1。! 一VfsmountVfsmountVfsmntlistmnt dev mnt devmmdeVname mmdeVnamemmdirname mmdirnamemmflags mntflagsmnt sbmnt sbmnt neXt mnt neXtvfsmount图2vfsI珊岫t多链表结构Fig2Str眦ture ofVfslo岫tm粕ylinked Iist22安装命令的内部工作过程用户(一般是啪t)在安装文件系统时,要指定三种信息:文件系统的名称、包含文件系统的物理块设备和文件系统在已有文件系统中的安装点例如:#mounttmsdosdevhdcmntusr其中msdoS是要安装的文件系统类型,devhdc是文件系统所在的设备,mntusr是安装点VFS对上述命令的执行过程如下:(1)寻找对应的文件系统信息,VFS通过filesystems在filesystemtype组成的链表中根据指定的文件系统名称搜索文件系统类型信息(2)如果在上述链表中找到匹配的文件系统,则说明内核具有对该文件系统的内建支持否则,说明该文件系统可能由可装载模块支持,VFs会请求内核装入相应原文件系统模块,此时,该文件系统在VFS中注册并初始化(3)不管是哪种情况,如果VFS无法找到指定的文件系统,则返回错误(4)VFS检验指定的物理块设备是否已经安装如果指定的块设备已被安装,则返回错误(5)玛查找作为新文件系统安装点目录的V】强索引节点,该V】玛索引节点可在索引节点高速缓存中,也有可能需要从安装点所在的块设备中读取(6)如果该安装点已经安装有其它文件系统,则返回错误因为同一目录只能同时安装一个文件系统(7)VFS安装代码为新的文件系统分配超块,并将安装信息传递给该文件系统的超块读取例程(8)文件系统的超块读取例程将对应文件系统的信息映射到VFS超块中如果在此过程中发生错误,则返回错误(9)如果成功安装,则所有已安装的文件系统形成图2所示的数据结构23文件系统的注册Linux为了能够对安装在系统中的各种物理文件进行管理,物理文件系统在安装后还必须向系统内核注册文件系统卸载后还需要进行注销向系统内核注册也有两种方式:一种是在编译核心系统时确定,并在系统初始化时通过内嵌的函数调用向注册表登记;另一种则利用“nux的模块(module)特征,把某个文件系统当作一个模块装入该模块时(通过kerneld或用insmod命令)向注册表登记它的类型,卸装该模块时则从注册表注销系统把每个已注册的文件系统登记在一个filesystemtype结构体中,所有已注册文件系统的filesystemtype结构体组成一个链表,称为注册链表,如图3所示各种文件系统的注册是通过内核提供的文件系统初始化函数实现的,对不同文件系统使用不同的万方数据32陕西师范大学学报(自然科学版) 第33卷初始化函数,如init_E)也一fS()是E)以文件系统初始化函数;i“t一耐nix-fS()是n】inix文件系统的初始化函数;initn_ljd盼fS()是nlsd吣文件系统初始化函数在各种文件系统初始化函数中,把该文件系统的注册结构体作为参数,调用由内核提供的文件注册函数repisterfileSsyStem()该函数的功能是把文件系统注册结构体加入到注册链表中,从而完成注册任务如Ext2文件系统的初始化函数在fsExt2Superc中定义如下:intinitExt2一fs(void)returmregiste卜filesystem(&Ext2一fstype);该函数以Ext2文件系统的注册结构体Ext2一fstype的首地址作为参数,调用registerfilesyStem()函数该函数的执行过程是在注册链表中从链首开始向后遍历,查看该文件系统是否已注册,若没有注册,则把该文件系统的注册结构体加到注册链表的链尾Ext2文什系统 proc文件系统 msdos文什系统Filesystem卜-Ext2 readsuper procreadsuper msdos read suDer“Ext2” “prOc” “msdos”l I 1next neXt一 neXt图3文件系统的注册链表Fig3 Re画strati帅linkedlist offilesystem3通过虚拟文件系统访问Ext2中的文件当进程访问某一个物理文件系统的文件时,并不直接访问该物理文件系统,而是通过VFS访问它在内存中的VFS超级块和inode,获得文件系统和文件的管理信息,然后使用这些信息访问磁盘上的文件由于不同文件系统对文件操作的函数不同,所以VFS中设置了公共的操作函数接口当进程向系统发出文件操作的请求时,该文件可以是某个物理文件系统中的一个文件,内核将通过VFS公共的操作接口转换到该文件系统的相应操作函数在操作J访问Exl2 JI超级块 flf蒜的inode I l转换入口fExt2文什系统超级块块描述符 Openclose块位幽inode位幽 Re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论