47 Linux中的文件系统.ppt

上传人:qwe****56 文档编号:70278642 上传时间:2023-01-18 格式:PPT 页数:23 大小:243.50KB
返回 下载 相关 举报
47 Linux中的文件系统.ppt_第1页
第1页 / 共23页
47 Linux中的文件系统.ppt_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《47 Linux中的文件系统.ppt》由会员分享,可在线阅读,更多相关《47 Linux中的文件系统.ppt(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、4.7 Linux4.7 Linux中的文件系统中的文件系统4.7.1 4.7.1 虚拟文件系统虚拟文件系统VFSVFS传统的UNIX类操作系统只支持一种类型的文件系统。Linux内核使用的是虚拟文件系统(VFS)体系结构。虚拟文件系统VFS是一个接口。该接口能够使本地的多种文件系统甚至远程的文件系统共存于同一台计算机上。虚拟文件系统的英文全称是:Virtual File system Switch,直译为虚拟文件系统开关,通常都习惯使用它的英文缩略词VFS来表示虚拟文件系统。1.1.虚拟文件系统的设计思路虚拟文件系统的设计思路 用户发出一个写系统调用时,内核的文件系统要做以下工作:首先要打开

2、文件对象,得到该文件的文件描述符。在进行规定的检查之后从文件表项中得到指向内存inode的指针。给索引节点inode上锁,然后检测i节点的i_mode域,确定文件的类型是普通文件还是字符设备文件或者是块设备文件,以便确定下一步要进行的操作。假定用户访问的是特殊设备(如块设备),此时系统用保存在该i节点中的主设备号为索引,找到存放在块设备开关表中的对该块设备进行操作的函数指针向量。由指针向量得到对该块设备进行标准操作的底层设备驱动程序,对用户的写请求进行处理。任务结束后,解锁i节点并返回到用户进程。2.2.虚拟文件系统虚拟文件系统VFSVFS框架框架 在文件系统中定义的VFS属于面向对象理论中的

3、抽象基类,从这个基类中可以派生出不同的子类,以支持多种文件系统。VFS只代表内核中的一个文件系统,而VFS的inode节点代表内核中的一个文件。它们只存在于内存中。在系统启动初始化时建立,关机则消亡。因此说VFS不是一个物理的文件系统,称它为虚拟文件系统是比较确切的。目前Linux内核支持的文件系统已多达十种以上。以后还会支持更多类型的文件系统。因为在VFS的支持下,开发商以及中小用户可以不断地加入新的文件系统。4.7.2 Linux4.7.2 Linux虚拟文件系统的数据结构虚拟文件系统的数据结构 第一个虚拟文件系统首先在1986年由Sun公司开发成功,并使用在Sun OS操作系统中。Lin

4、ux的VFS对多种类型的文件系统提供更为广泛的支持,主要包括:基于磁盘的各类文件系统 网络文件系统 殊的文件系统 基于磁盘的文件系统通常被存放在硬盘、软盘或者是CD-ROM中。Linux内核管理本地磁盘分区可用的存储空间,在2.4版本以前是EXT2文件系统。在2.4版本以后,又开发了EXT3文件系统。EXT3在EXT2的基础上增加了日志功能。所以本章在介绍EXT2文件系统之后,又介绍了EXT3文件系统的日志功能。如前所述,虚拟文件系统是由面向对象的思想发展而来,而面向对象理论中的抽象基类实际上就是在文件系统中引入了一个通用的文件模型,由这个文件模型派生出来的子类支持所有的文件系统。由于Linu

5、x的编码一开始就没有采用面向对象的程序设计语言C+,而是用C语言编程实现面向对象技术,所以其基类是由一个中心数据结构和一组全局实函数和虚函数以及宏组成。因此在中心数据结构中有指向另外一个结构的指针,在这个结构中定义了一组指向虚函数的指针。从而把基类与子类连接起来,以便访问相应文件系统的函数和数据。Linux虚拟文件系统的通用文件模型由下列代表对象类型的数据结构组成:超级块数据结构(superblock object):存放已安装文件系统的相关信息。索引节点数据结构(inode object):存放一个具体文件的所有信息。文件数据结构(file object):存放打开文件与进程之间进行交互的有

6、关信息。这类信息是进程访问文件时所使用的。目录项数据结构(dentry object):保存目录项与对应文件进行链接的所有信息。4.7.3 4.7.3 对虚拟文件系统的管理对虚拟文件系统的管理内核通过VFS使用一个具体的文件系统之前,必须首先对这个文件系统进行注册和安装。注册发生在:系统启动时;把某个文件系统作为一个内核模块进行安装时。在这两种情况下都需要进行注册。只有当完成对某个文件系统的注册,内核才能使用这个具体文件系统的各种操作函数,将这个文件系统安装在系统的目录树上。1.文件系统注册链表 2.文件系统安装注册链表 3.根文件系统的安装 4.7.4 EXT24.7.4 EXT2文件系统文

7、件系统Linux内核使用EXT2文件系统作为它的根文件系统。EXT2是一个可扩展的、功能较强大的文件系统 EXT2文件系统是在Linux内核启动时作为根文件系统自动安装的。1.EXT2对物理磁盘的组织 2.EXT2减少碎片的方案 3.EXT2对磁盘块的分配原则将一个目录下的所有i节点存放在同一个柱面组内。这样可以连续访问一个目录中的所有i节点。为了使磁盘上的数据均匀分布,将子目录放在父目录不同的柱面组内。尽量将文件数据与该文件的i节点放在相同的柱面组中。在为物理磁盘块排序时,应该考虑到连续两次访问磁盘时,磁盘旋转的最佳位置。由于磁盘是在运动中读写数据的,所以在连续两次访问的间隙,已经有至少一个

8、扇区或者磁盘块从磁头下走过。最佳旋转位置就是下一次访问磁盘时,所需要读写的磁盘块正好在磁头下方,这样就可以节省寻道和定位的时间,提高系统性能。一般将要跳过的磁盘块数目叫做旋转延迟因子。4.7.5 EXT24.7.5 EXT2磁盘重要数据结构磁盘重要数据结构对于上面所述的物理磁盘组织,可以得到它在内核中逻辑磁盘空间的映像。图5.22显示了该逻辑磁盘的排列情况。EXT2将一个逻辑分区分成若干个块组(block group)。一个分区在逻辑上可以看成是块组的线性数组。每个块组的内容也在图4.23中给出。超级块超级块组描述符表组描述符表数据块位数据块位图图索引节点索引节点位图位图索引节点索引节点表表数

9、据区数据区启动区启动区块组块组0块组块组1块组块组2块组块组N图图4.23 EXT2逻辑磁盘的排列情况逻辑磁盘的排列情况根据一个分区的大小和块的尺寸可以计算出一个分区有多少个块组。计算公式如下:N=S/(8*b*b)其中,N是一个分区的块组总数;S是该分区的总存储容量;b是以字节为单位的块大小。这个计算公式说明一个分区共有多少块主要是受限于数据块位图,因为块位图必须存放在一个单独的块中。一个数据块共有8*b位,它能覆盖的一个块组的存储空间就是8*b*b个字节。1.EXT21.EXT2的目录项数据结构的目录项数据结构现代操作系统通过目录将文件名和该文件在磁盘上的存储位置联系起来。因此目录在文件系

10、统中的重要性非同寻常。目录是包含有文件和子目录项列表的特殊文件。2.EXT22.EXT2的磁盘的磁盘i i节点结构节点结构像其它UNIX文件系统一样,EXT2文件系统中的每一个文件也对应一个描述它的磁盘数据结构,这个结构被称为磁盘索引节点,即inode节点。磁盘索引节点中含有文件长度、文件位置、文件的所有者、创建时间、上次存取时间以及许可权等诸多有关该文件的信息。在EXT2中相对索引节点号在磁盘上的地址,可以根据块组号和它在索引节点表中的相对位置计算出来。如果用I表示索引节点号,用C表示块组索引节点总数,用N表示I索引节点号所在块组号,而用A表示块组内的相对偏移量,则有如下计算公式:I/C=Q

11、+R(4-1)N=Q(4-2)A=I N*C(4-3)在4-1式中的商(Q+R)是把商的整数部分与小数部分分开表示的,Q表示整数部分,而R表示小数部分。商的整数部分就是该索引节点号所在的块组号,如式4-2所示。而余数乘以块组索引节点的总数所得的积,就是该索引节点号在这个块组中的相对地址。3.EXT23.EXT2磁盘上的超级块磁盘上的超级块在EXT2文件系统中,每个块组中都含有一个数据结构相同的超级块,内核只将第0号块组的超级块读入内存缓冲区。其它块组的超级块只作为备份。描述磁盘上EXT2超级块的数据结构是struct EXT2_super_block。源代码见include/linux/EXT

12、2_fs.h文件。4.EXT24.EXT2的组描述符的组描述符EXT2文件系统用struct EXT2_group_desc数据结构来描述每个块组的使用情况。这个数据结构叫做组描述符。这个组描述符表和超级块一样在每个块组中都有备份。当文件系统因某种原因崩溃时,可以从任意还未损坏的其它块组中获得超级块和块组的描述符信息,迅速恢复文件系统。在内存的struct EXT2_sb_info数据结构中,成员s_group_desc就是指向在磁盘缓冲区中存放的块组描述符的指针。5.EXT25.EXT2的块位图和索引节点位图的块位图和索引节点位图在每个块组中使用了两个块来分别记录本组内各个数据块的使用情况和

13、i节点的使用情况,这两个块分别称为数据块位图和inode位图。其中数据块位图中的每一位代表一个数据块,该位为1,表示所代表的数据块正在使用;为0,则表示该数据块空闲。inode块位图用来记录本组内索引节点的使用情况,其中每一位为1,则相应的节点块被占用,否则表示空闲。显然在对EXT2文件系统进行操作时离不开这两个块位图。6.EXT26.EXT2的内核组织的内核组织 EXT2文件系统的磁盘组织和内核组织并不完全相同。这主要是因为使用磁盘和内存的考虑角度不同。对于磁盘上存储的数据结构来说,主要是考虑如何节省磁盘空间;而对于内存中存储的数据结构来说,主要是考虑系统运行的效率和性能。4.7.6 EXT

14、34.7.6 EXT3文件系统文件系统 Linux 2.4内核版本的发布带来了使用更多种新文件系统的可能性,这种新文件系统是指日志式文件系统。它包括Reiser FS文件系统、SGI的xfs文件系统、IBM的jfs文件系统以及其它文件系统。以EXT2文件系统为基础加上日志支持的新版本就是EXT3文件系统,它和EXT2文件系统在硬盘布局上是完全一样的,其差别仅仅是EXT3文件系统在硬盘上多出了一个特殊的journal inode(可以理解为一个特殊文件),用来记录文件系统的日志,这种文件系统叫做日志文件系统(journaling file system)。日志文件系统比传统的文件系统安全,因为它

15、用独立的日志文件跟踪磁盘内容的变化。就像关系型数据库(RDBMS),日志文件系统可以用事务处理的方式,提交或撤销文件系统的变化。1.1.关于日志式文件系统关于日志式文件系统日志式文件系统在强调数据完整性的企业级服务器中有着重要的需求,是文件系统发展的方向。日志式文件系统的思想来自于如Oracle等大型数据库。数据库操作往往是由多个相关的、相互依赖的子操作组成,任何一个子操作的失败都意味着整个操作的无效性,对数据库数据的任何修改都要回复到操作以前的状态。日志式文件系统就是仿照了类似技术而开发的。2.EXT22.EXT2文件系统的不足文件系统的不足EXT2文件系统的设计者主要是从提高文件系统的效率

16、和性能角度去考虑问题。Linux先写入文件的内容,然后等到空闲的时候才写入文件的元数据。如果在写入文件内容之后、写入文件元数据之前突然断电,文件系统就会处于不一致的状态。EXT2文件系统会运行一个叫做“fsck”(file system check)的程序,扫描整个文件系统,试图恢复损坏的元数据信息。3.3.日志文件系统的工作原理日志文件系统的工作原理 日志文件系统的设计思想是跟踪文件系统的变化而不是文件系统的内容。4.EXT34.EXT3日志文件系统的具体实现日志文件系统的具体实现EXT3是在Stephen Tweedie博士的领导下设计开发的。EXT3被设计成EXT2的升级版本,尽可能为用

17、户从EXT2文件系统向EXT3文件系统迁移提供方便。EXT3在EXT2的基础上加入了记录元数据的日志功能,努力保持向前和向后的兼容性。因为EXT3最大的优点是向下兼容EXT2,而且EXT3还支持异步日志。5.EXT35.EXT3文件系统的额外开销文件系统的额外开销EXT3文件系统为保障文件安全要增加额外的系统开销。每一次更新磁盘节点,大多数的“日志”操作的写同步,这样就需要更多的磁盘I/O操作。系统管理员必须回答一个新的问题:为了有一个更安全的文件系统值不值得牺牲一部分系统性能?没有必要把“/usr”目录放在日志文件系统上,因为“/usr”目录大部分是只读操作。但是,可以考虑把“/var”或包含e-mail spool文件的目录放在日志文件系统上。幸运的是,在Linux系统中可以根据需要混合使用这些文件系统。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com