《Linux系统中虚拟文件系统内核机制研究.pdf》由会员分享,可在线阅读,更多相关《Linux系统中虚拟文件系统内核机制研究.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3 3 卷第1 期陕西师范大学学报(自然科学版)2 0 0 5 年3 月J o u r n a lo fS h a a n x iN o n T l a lU n i v e r s i t y(N a t u r a lS c i e n c eE d i t i o n)V 0 1 3 3N o 1M a r 2 0 0 5文章编号:1 6 7 2 4 2 9 1(2 0 0 5)0 1 0 0 2 9 0 4L i n u x 系统中虚拟文件系统内核机制研究史芳丽,周亚莉(西安交通大学经济与金融学院;管理学院,陕西西安7 1 0 0 6 1)摘要:针对L i n u x 操作系统强大的
2、多物理文件系统管理性能,从L i n u x 的内核文件管理机制虚拟文件系统(V F S)出发,对L i n u x 系统如何识别和管理不同的物理文件系统进行了研究,剖析了L i n u x 文件系统中一个物理文件系统的安装与注册、V F S 的产生,以及通过V F S 来管理和访问物理文件系统的内核工作机制关键词:虚拟文件系统;超级块;文件系统;安装;注册;访问中图分类号:T P 3 1 6 8 1文献标识码:AV F Sk e r n e lm e c h a n i s mi nL i n u xs v s t e mS H IF a n g I i,Z H O UY a l i(S c
3、 h O O lo fE c o n o m i c sa n dF i n a n c e;S c h lo fM a n a g e m e n t,X i7 a nJ i a o t o n gU n i v e r s i t y,X i7 a n7 1 0 0 6 1,S h a a n x i,C h i n a)A b s t r a c t:A sf O rm a n yf i l es y s t e mm a n a g i n gp e r f o n T l a n c eo fL i n u xo p e r a t i n gs y s t e m,t h eq u
4、 e s t i o nw h a ti d e n t i f ya n dm a n a g ed i f f e r e n tp h y s i c a lf i l es y s t e m so fL i n u xs y s t e mt h r o u g hk e m e lf i l em a n a g i n gw o r ki nm e c h a n i s mo fL i n u x v i r t u a lf i l es y s t e ma r ed i s c u s s e d T h ei n s t a l l a t i o na n dr e
5、g i s t r a t i o no fa np h y s i c a ls y s t e ma n dp r o d u c t i o no fV F Sa n dk e r n e lw o r k i n gm e c h a n i s mo fm a n a g i n ga n da c c e S S i n gt h r o u g hV F Sp h y s i c a l 矗l es y s t e mi nL i n u xd e e p l ya r ea n a l y z e d K e yw o r d s:v i r t u a lf i l es y
6、 s t e m(V F S);s u p e rb l o c k;f i l es y s t e m;i n s t a l l a t i o n;r e g i s t r a t i o n;a c c e s sM RS u b j e c tc l a s s i f i c a t i o n:6 8 N 2 5L i n u x 操作系统的一个重要特点是它能够支持如E x t 2、F A T、V F A T、F A T 3 2、M I N I x 等许多不同类型的物理文件系统文献 1 4 和文献 5 对L i n u x 文件系统的优良性能和使用进行了研究,文献 6 对L
7、i n u x 核心可抢占性方法进行了研究,但没有从L i n u x 的系统内核分析和研究如何实现多物理文件系统的管理与访问本文在参考文献的基础上,研究和提出从内核如何建立虚拟文件系统(V i r t u a lF i l eS y s t e m,V F S)开始,到一个物理文件系统如何安装、注册和拆卸,如何通过V F S 来管理和访问物理文件系统等方面的内核工作机制1 虚拟文件系统的工作机制1 1V 邢的内涵“n u x 支持各种不同的文件系统是通过V F S实现的,不同的物理文件系统具有不同的组织结构和不同的处理方式,为了能够处理各种不同的物理文件系统,操作系统必须把它们所具有的特性进
8、行抽象,并建立一个面向各种物理文件系统的转换机制,通过这个转换机制,把各种不同物理文件系统转换为一个具有统一共性的虚拟文件系统V F S 实际上向L i n u x 内核和系统中运行的进程提供了一个处收稿日期:2 0 0 41 0 1 2基金项目:国家自然科学基金资助项目(7 0 2 7 3 0 3 4)作者简介:史芳丽(1 9 6 3 一),女,陕西富平人,西安交通大学副教授,博士研究生万方数据陕西师范大学学报(自然科学版)第3 3 卷理各种物理文件系统的公共接口,通过这个接口使得不同的物理文件系统看来都是相同的V F S 和各种物理文件系统组成了如图1 所示的L i n u x 文件系统V
9、 F S 并不是一种物理的文件系统,它仅是一套转换机制,它在系统启动时建立,在系统关闭时消失,并且仅存在于内存空间所以,V F S 并不具有一般物理文件系统的实体在V F s 提供的接口中包含向各种物理文件系统转换用的一系列数据结构,如V】玛超级块、V】玛的i n。d e 等,同时还包含对不同物理文件系统进行处理的各种操作函数的转换人口fv F sI中申申lB u f f e rc a c h eI殳备驱动程序l图1L i n 呱文件系统F i g 1L i n u xf i l es y s t 哪!2V F S 超级块与E x t 2 超级块V F S 超级块是在文件系统安装时由系统在内存
10、中建立的,对于每个已安装的文件系统,在内存中都有与其对应的V F s 超级块V F S 超级块的作用是把在各种文件系统中表示整体组织结构的信息转换成统一的格式各种文件系统的V F S 超级块都是一个s u p e r b l o c k 结构体,V F S 超级块s u p e r _ b l o c k 结构体的定义在i n c l u d e f s f s h 中各文件系统V F S 超级块中各成员的数据则来自该文件系统本身的管理信息结构这些数据是在文件系统安装时,由读超级块例程r e a d s u p e r()把某种文件系统的管理信息写入它的V F S 超级块中V F S 超级块主
11、要包含的信息有:文件系统的组织信息、文件系统的注册和安装信息、超级块的属性信息,不同物理文件系统特有的信息则由联合体u 的各个成员项表示,指向s u p e r-o p e r a t i o n s 结构体中包含着对超级块进行操作的函数指针等而对于物理文件系统E x t 2,其超级块是用来描述E x t 2 文件系统整体信息的数据结构,主要描述文件在逻辑分区中的静态分布情况,以及描述文件系统的各种组成结构的尺寸、数量等信息1 3V F Si n o d e 与E x t 2i n o d e在进程使用一个文件时,无论是哪种文件系统的文件,首先需要打开这个文件在文件打开时,系统就在内存中建立该
12、文件的V F Si n o d e,V F Si n o d e占用的是内存空问,而且只是当前正在使用的活动文件才有V F Si n o d e V F Si n O d e 的作用是把不同文件系统的活动文件的管理信息,如文件类型、文件尺寸、文件位置等转换成统一的格式,V F Si n o d e 结构定义在i n c l u d e f s h 中它除了包括E x t 2i n o d e 中的若干静态管理信息外,又增加了许多文件的动态管理信息,如设备标识符、索引节点编号(表明一个V F si n o d e 惟一地对应一个文件)、在联合体u 中的各个成员项给出了不同文件系统的个性信息、锁定
13、标志、V F Si n o d e 的双向链表指针,指向一组函数的指针等而E x t 2 文件系统中的i n o d e 是E x t 2 文件系统的基本目录,它是组成文件系统的基本构件i n o d e表示E x t 2 文件系统树型结构的节点,每一个节点对应一个i n o d e 在E x t 2 文件系统树型结构中个节点是一个文件或目录,所以i n O d e 是描述文件或目录的信息体E x t 2 文件系统中的每个文件由一个i n o d e 描述,且只能由一个i n o d e 描述无论是普通文件还是目录文件、设备文件、符号链接文件、F I F O文件都有对应的i n O d e E
14、 x t 2 文件系统的i n o d e 的作用是记录与文件管理有关的各种静态信息,如文件的类型和访问权限、文件的尺寸、文件的位置、文件的时间信息等2 文件系统的安装与注册2 1 文件系统的安装为了使某种物理文件系统能够在L i n u x 系统中使用,必须把它们安装到“n u x 的文件系统中,并且要注册到系统内核为此,L i n u x 文件系统设置了安装和注册文件系统的数据结构,以及安装、注册文件系统的命令和函数用于安装和注册文件系统的数据结构和函数都属于V F S 的组成部分但是要安装的文件系统必须已经存在于外存磁盘空间上,每个文件系统都有一个独立的磁盘分区,并且具有各自的树型层次结
15、构文件系统的安装就是利用“n u x的模块特性,把文件系统作为可装卸模块纳入L i n u x 文件系统中,使其成为L i n u x 文件系统的一部分如果文件系统建于内核中,则在系统引导时安装与注册该文件系统;如果文件系统作为内核可装载的模块,则实际安装某个文件系统时进行注册,在不需要时卸载由于E x t 2 是L i n u x 的标准文件系统,所以在系万方数据第l 期史芳丽等:L i n u x 系统中虚拟文件系统内核机制研究3 1统启动时自动把E x t 2 文件系统的磁盘分区作为L i n u x 文件系统的根文件系统,即E x t 2 的树型层次结构就成为L i n u x 系统文
16、件的基本结构E x t 2 以外的文件系统则安装在根文件系统下的某个目录下,成为系统树型结构中的一个分枝L i n u x 文件系统的树型层次结构中用于安装其它文件系统的目录称为安装点或安装目录当m o u n t 命令安装一个物理文件系统时,L i n u x系统中已安装的文件系统用一个v f s m o u n t 结构进行描述,它在i n c l u d e 几i n u x H l o u n t h 中定义该结构体中包含着对已安装的物理文件系统的管理信息,如指出文件系统所在设备的属性、安装点的目录名、文件系统V F S 超级块的指针等系统中所有已安装文件系统的各个v f S m o
17、u n t 结构体使用其成员项m n t n e x t 组成一个链表,称为物理文件系统链表,如图2 所示!“一13“1。!一V f s m o u n tV f s m o u n tV f s m n t l i s tm n td e vm n td e vm m d e V n a m em m d e V n a m em m d i r n a m em m d i r n a m em m f l a g sm n t f l a g sm n ts bm n ts bm n tn e X tm n tn e X tv f s m o u n t图2v f s I 珊岫t 多链表
18、结构F i g 2S t r 眦t u r eo fV f s l o 岫tm 粕yl i n k e dI i s t2 2 安装命令的内部工作过程用户(一般是啪t)在安装文件系统时,要指定三种信息:文件系统的名称、包含文件系统的物理块设备和文件系统在已有文件系统中的安装点例如:#m o u n t tm s d o s d e v h d c m n t u s r 其中m s d o S 是要安装的文件系统类型,d e v h d c 是文件系统所在的设备,m n t u s r 是安装点V F S 对上述命令的执行过程如下:(1)寻找对应的文件系统信息,V F S 通过f i l e
19、s y s t e m s 在f i l e s y s t e m t y p e 组成的链表中根据指定的文件系统名称搜索文件系统类型信息(2)如果在上述链表中找到匹配的文件系统,则说明内核具有对该文件系统的内建支持否则,说明该文件系统可能由可装载模块支持,V F s 会请求内核装入相应原文件系统模块,此时,该文件系统在V F S 中注册并初始化(3)不管是哪种情况,如果V F S 无法找到指定的文件系统,则返回错误(4)V F S 检验指定的物理块设备是否已经安装如果指定的块设备已被安装,则返回错误(5)玛查找作为新文件系统安装点目录的V】强索引节点,该V】玛索引节点可在索引节点高速缓存中
20、,也有可能需要从安装点所在的块设备中读取(6)如果该安装点已经安装有其它文件系统,则返回错误因为同一目录只能同时安装一个文件系统(7)V F S 安装代码为新的文件系统分配超块,并将安装信息传递给该文件系统的超块读取例程(8)文件系统的超块读取例程将对应文件系统的信息映射到V F S 超块中如果在此过程中发生错误,则返回错误(9)如果成功安装,则所有已安装的文件系统形成图2 所示的数据结构2 3 文件系统的注册L i n u x 为了能够对安装在系统中的各种物理文件进行管理,物理文件系统在安装后还必须向系统内核注册文件系统卸载后还需要进行注销向系统内核注册也有两种方式:一种是在编译核心系统时确
21、定,并在系统初始化时通过内嵌的函数调用向注册表登记;另一种则利用“n u x 的模块(m o d u l e)特征,把某个文件系统当作一个模块装入该模块时(通过k e r n e l d 或用i n s m o d 命令)向注册表登记它的类型,卸装该模块时则从注册表注销系统把每个已注册的文件系统登记在一个f i l e s y s t e m t y p e 结构体中,所有已注册文件系统的f i l e s y s t e m t y p e 结构体组成一个链表,称为注册链表,如图3 所示各种文件系统的注册是通过内核提供的文件系统初始化函数实现的,对不同文件系统使用不同的万方数据3 2陕西师范
22、大学学报(自然科学版)第3 3 卷初始化函数,如i n i t _ E)也一f S()是E)以文件系统初始化函数;i“t 一耐n i x-f S()是n】i n i x 文件系统的初始化函数;i n i t n _ l j d 盼f S()是n l s d 吣文件系统初始化函数在各种文件系统初始化函数中,把该文件系统的注册结构体作为参数,调用由内核提供的文件注册函数r e p i s t e r f i l e S s y S t e m()该函数的功能是把文件系统注册结构体加入到注册链表中,从而完成注册任务如E x t 2 文件系统的初始化函数在f s E x t 2 S u p e r c
23、 中定义如下:i n ti n i t E x t 2 一f s(v o i d)r e t u r mr e g i s t e 卜f i l e s y s t e m(&E x t 2 一f s t y p e);该函数以E x t 2 文件系统的注册结构体E x t 2 一f s t y p e的首地址作为参数,调用r e g i s t e r f i l e s y S t e m()函数该函数的执行过程是在注册链表中从链首开始向后遍历,查看该文件系统是否已注册,若没有注册,则把该文件系统的注册结构体加到注册链表的链尾E x t 2 文什系统p r o c 文件系统m s d o
24、s 文什系统F i l e s y s t e m 卜-E x t 2 r e a ds u p e rp r o cr e a ds u p e rm s d o sr e a ds u D e r“E x t 2”“p r O c”“m s d o s”lI1n e x tn e X t一n e X t图3 文件系统的注册链表F i g 3R e 画s t r a t i 帅l i n k e dl i s to ff i l es y s t e m3 通过虚拟文件系统访问E x t 2 中的文件当进程访问某一个物理文件系统的文件时,并不直接访问该物理文件系统,而是通过V F S 访问它
25、在内存中的V F S 超级块和i n o d e,获得文件系统和文件的管理信息,然后使用这些信息访问磁盘上的文件由于不同文件系统对文件操作的函数不同,所以V F S 中设置了公共的操作函数接口当进程向系统发出文件操作的请求时,该文件可以是某个物理文件系统中的一个文件,内核将通过V F S 公共的操作接口转换到该文件系统的相应操作函数在操作J 访问E x l 2JI 超级块f l f 蒜的i n o d eIl 转换入口fE x t 2 文什系统超级块块描述符O p e nc l o s e块位幽i n o d e 位幽R e a dw r i t ei n o d e 表数据区D e l e
26、t e 文件组织操作函数图4 由v F s 实现转换的示意图F i g 4S k e t c hm a p0 ft r 锄s f o n nb yV 礴函数执行过程中,对文件的搜索、定位等则是通过V F S 超级块和i n o d e 得到该文件相应的管理数据这样,进程通过V F S 接口就可以访问各种不同的物理文件系统V F S 的功能及其工作原理,可以通过进程访问不同物理文件系统的过程来说明图4 给出了进程访问E x t 2 文件系统时,经V F S 实现转换的示意图参考文献:1 l i n u x 文件系统 E B o L h t t p:y a n j i n 4 1 5 g o n
27、e a S e n e t 2 0 0 4 2 M。s h eB a r L i n u x 文件系统 M 天宏工作室译北京:清华大学出版社,2 0 0 3 3 L i n u x 的文件系统 E B o L h t t p:、w w i r o n w a r e i n f o c o n l c n,2 0 0 4 4 文件系统 E B o L h t t p:、w w t o d a y h e r o n e t,2 0 0 4 5 E v iN e m e t h,G a r t hS n y d e r,T r e n tRH e i n L i n u x 系统管理技术手册 M 张辉译北京:人民邮电出版社,2 0 0 4 5 3 6 6 1 1 3 1 5 2 6 杜聪,徐志伟o O s M()S 文件系统的性能分析 J 计算机学报,2 0 0 l,(7):7 0 2 7 0 9 7 赵慧斌,李小群,孙玉芳改善L i n u x 核心可抢占性方法的研究与实现 J 计算机学报,2 0 0 4,(2):2 4 4 2 5 1 8 徐德民操作系统原理“l u x 篇 M 北京:国防工业出版社,2 0 0 4 2 5 2 2 8 3 9 张丽芬,刘美华操作系统原理教程 M 北京:电子工业出版社,2 0 0 4 2 7 7 3 1 0 责任编辑张惠民万方数据
限制150内