




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4 7Linux中的文件系统 4 7 1虚拟文件系统VFS传统的UNIX类操作系统只支持一种类型的文件系统 Linux内核使用的是虚拟文件系统 VFS 体系结构 虚拟文件系统VFS是一个接口 该接口能够使本地的多种文件系统甚至远程的文件系统共存于同一台计算机上 虚拟文件系统的英文全称是 VirtualFilesystemSwitch 直译为虚拟文件系统开关 通常都习惯使用它的英文缩略词VFS来表示虚拟文件系统 1 虚拟文件系统的设计思路 用户发出一个写系统调用时 内核的文件系统要做以下工作 首先要打开文件对象 得到该文件的文件描述符 在进行规定的检查之后从文件表项中得到指向内存inode的指针 给索引节点inode上锁 然后检测i节点的i mode域 确定文件的类型是普通文件还是字符设备文件或者是块设备文件 以便确定下一步要进行的操作 假定用户访问的是特殊设备 如块设备 此时系统用保存在该i节点中的主设备号为索引 找到存放在块设备开关表中的对该块设备进行操作的函数指针向量 由指针向量得到对该块设备进行标准操作的底层设备驱动程序 对用户的写请求进行处理 任务结束后 解锁i节点并返回到用户进程 2 虚拟文件系统VFS框架 在文件系统中定义的VFS属于面向对象理论中的抽象基类 从这个基类中可以派生出不同的子类 以支持多种文件系统 VFS只代表内核中的一个文件系统 而VFS的inode节点代表内核中的一个文件 它们只存在于内存中 在系统启动初始化时建立 关机则消亡 因此说VFS不是一个物理的文件系统 称它为虚拟文件系统是比较确切的 目前Linux内核支持的文件系统已多达十种以上 以后还会支持更多类型的文件系统 因为在VFS的支持下 开发商以及中小用户可以不断地加入新的文件系统 4 7 2Linux虚拟文件系统的数据结构 第一个虚拟文件系统首先在1986年由Sun公司开发成功 并使用在SunOS操作系统中 Linux的VFS对多种类型的文件系统提供更为广泛的支持 主要包括 基于磁盘的各类文件系统 网络文件系统 殊的文件系统基于磁盘的文件系统通常被存放在硬盘 软盘或者是CD ROM中 Linux内核管理本地磁盘分区可用的存储空间 在2 4版本以前是EXT2文件系统 在2 4版本以后 又开发了EXT3文件系统 EXT3在EXT2的基础上增加了日志功能 所以本章在介绍EXT2文件系统之后 又介绍了EXT3文件系统的日志功能 如前所述 虚拟文件系统是由面向对象的思想发展而来 而面向对象理论中的抽象基类实际上就是在文件系统中引入了一个通用的文件模型 由这个文件模型派生出来的子类支持所有的文件系统 由于Linux的编码一开始就没有采用面向对象的程序设计语言C 而是用C语言编程实现面向对象技术 所以其基类是由一个中心数据结构和一组全局实函数和虚函数以及宏组成 因此在中心数据结构中有指向另外一个结构的指针 在这个结构中定义了一组指向虚函数的指针 从而把基类与子类连接起来 以便访问相应文件系统的函数和数据 Linux虚拟文件系统的通用文件模型由下列代表对象类型的数据结构组成 超级块数据结构 superblockobject 存放已安装文件系统的相关信息 索引节点数据结构 inodeobject 存放一个具体文件的所有信息 文件数据结构 fileobject 存放打开文件与进程之间进行交互的有关信息 这类信息是进程访问文件时所使用的 目录项数据结构 dentryobject 保存目录项与对应文件进行链接的所有信息 4 7 3对虚拟文件系统的管理 内核通过VFS使用一个具体的文件系统之前 必须首先对这个文件系统进行注册和安装 注册发生在 系统启动时 把某个文件系统作为一个内核模块进行安装时 在这两种情况下都需要进行注册 只有当完成对某个文件系统的注册 内核才能使用这个具体文件系统的各种操作函数 将这个文件系统安装在系统的目录树上 1 文件系统注册链表2 文件系统安装注册链表3 根文件系统的安装 4 7 4EXT2文件系统 Linux内核使用EXT2文件系统作为它的根文件系统 EXT2是一个可扩展的 功能较强大的文件系统EXT2文件系统是在Linux内核启动时作为根文件系统自动安装的 1 EXT2对物理磁盘的组织2 EXT2减少碎片的方案3 EXT2对磁盘块的分配原则 将一个目录下的所有i节点存放在同一个柱面组内 这样可以连续访问一个目录中的所有i节点 为了使磁盘上的数据均匀分布 将子目录放在父目录不同的柱面组内 尽量将文件数据与该文件的i节点放在相同的柱面组中 在为物理磁盘块排序时 应该考虑到连续两次访问磁盘时 磁盘旋转的最佳位置 由于磁盘是在运动中读写数据的 所以在连续两次访问的间隙 已经有至少一个扇区或者磁盘块从磁头下走过 最佳旋转位置就是下一次访问磁盘时 所需要读写的磁盘块正好在磁头下方 这样就可以节省寻道和定位的时间 提高系统性能 一般将要跳过的磁盘块数目叫做旋转延迟因子 4 7 5EXT2磁盘重要数据结构 对于上面所述的物理磁盘组织 可以得到它在内核中逻辑磁盘空间的映像 图5 22显示了该逻辑磁盘的排列情况 EXT2将一个逻辑分区分成若干个块组 blockgroup 一个分区在逻辑上可以看成是块组的线性数组 每个块组的内容也在图4 23中给出 图4 23EXT2逻辑磁盘的排列情况 根据一个分区的大小和块的尺寸可以计算出一个分区有多少个块组 计算公式如下 N S 8 b b 其中 N是一个分区的块组总数 S是该分区的总存储容量 b是以字节为单位的块大小 这个计算公式说明一个分区共有多少块主要是受限于数据块位图 因为块位图必须存放在一个单独的块中 一个数据块共有8 b位 它能覆盖的一个块组的存储空间就是8 b b个字节 1 EXT2的目录项数据结构现代操作系统通过目录将文件名和该文件在磁盘上的存储位置联系起来 因此目录在文件系统中的重要性非同寻常 目录是包含有文件和子目录项列表的特殊文件 2 EXT2的磁盘i节点结构像其它UNIX文件系统一样 EXT2文件系统中的每一个文件也对应一个描述它的磁盘数据结构 这个结构被称为磁盘索引节点 即inode节点 磁盘索引节点中含有文件长度 文件位置 文件的所有者 创建时间 上次存取时间以及许可权等诸多有关该文件的信息 在EXT2中相对索引节点号在磁盘上的地址 可以根据块组号和它在索引节点表中的相对位置计算出来 如果用I表示索引节点号 用C表示块组索引节点总数 用N表示I索引节点号所在块组号 而用A表示块组内的相对偏移量 则有如下计算公式 I C Q R 4 1 N Q 4 2 A I N C 4 3 在4 1式中的商 Q R 是把商的整数部分与小数部分分开表示的 Q表示整数部分 而R表示小数部分 商的整数部分就是该索引节点号所在的块组号 如式4 2所示 而余数乘以块组索引节点的总数所得的积 就是该索引节点号在这个块组中的相对地址 3 EXT2磁盘上的超级块 在EXT2文件系统中 每个块组中都含有一个数据结构相同的超级块 内核只将第0号块组的超级块读入内存缓冲区 其它块组的超级块只作为备份 描述磁盘上EXT2超级块的数据结构是structEXT2 super block 源代码见include linux EXT2 fs h文件 4 EXT2的组描述符 EXT2文件系统用structEXT2 group desc数据结构来描述每个块组的使用情况 这个数据结构叫做组描述符 这个组描述符表和超级块一样在每个块组中都有备份 当文件系统因某种原因崩溃时 可以从任意还未损坏的其它块组中获得超级块和块组的描述符信息 迅速恢复文件系统 在内存的structEXT2 sb info数据结构中 成员s group desc就是指向在磁盘缓冲区中存放的块组描述符的指针 5 EXT2的块位图和索引节点位图 在每个块组中使用了两个块来分别记录本组内各个数据块的使用情况和i节点的使用情况 这两个块分别称为数据块位图和inode位图 其中数据块位图中的每一位代表一个数据块 该位为1 表示所代表的数据块正在使用 为0 则表示该数据块空闲 inode块位图用来记录本组内索引节点的使用情况 其中每一位为1 则相应的节点块被占用 否则表示空闲 显然在对EXT2文件系统进行操作时离不开这两个块位图 6 EXT2的内核组织 EXT2文件系统的磁盘组织和内核组织并不完全相同 这主要是因为使用磁盘和内存的考虑角度不同 对于磁盘上存储的数据结构来说 主要是考虑如何节省磁盘空间 而对于内存中存储的数据结构来说 主要是考虑系统运行的效率和性能 4 7 6EXT3文件系统 Linux2 4内核版本的发布带来了使用更多种新文件系统的可能性 这种新文件系统是指日志式文件系统 它包括ReiserFS文件系统 SGI的xfs文件系统 IBM的jfs文件系统以及其它文件系统 以EXT2文件系统为基础加上日志支持的新版本就是EXT3文件系统 它和EXT2文件系统在硬盘布局上是完全一样的 其差别仅仅是EXT3文件系统在硬盘上多出了一个特殊的journalinode 可以理解为一个特殊文件 用来记录文件系统的日志 这种文件系统叫做日志文件系统 journalingfilesystem 日志文件系统比传统的文件系统安全 因为它用独立的日志文件跟踪磁盘内容的变化 就像关系型数据库 RDBMS 日志文件系统可以用事务处理的方式 提交或撤销文件系统的变化 1 关于日志式文件系统 日志式文件系统在强调数据完整性的企业级服务器中有着重要的需求 是文件系统发展的方向 日志式文件系统的思想来自于如Oracle等大型数据库 数据库操作往往是由多个相关的 相互依赖的子操作组成 任何一个子操作的失败都意味着整个操作的无效性 对数据库数据的任何修改都要回复到操作以前的状态 日志式文件系统就是仿照了类似技术而开发的 2 EXT2文件系统的不足 EXT2文件系统的设计者主要是从提高文件系统的效率和性能角度去考虑问题 Linux先写入文件的内容 然后等到空闲的时候才写入文件的元数据 如果在写入文件内容之后 写入文件元数据之前突然断电 文件系统就会处于不一致的状态 EXT2文件系统会运行一个叫做 fsck filesystemcheck 的程序 扫描整个文件系统 试图恢复损坏的元数据信息 3 日志文件系统的工作原理 日志文件系统的设计思想是跟踪文件系统的变化而不是文件系统的内容 4 EXT3日志文件系统的具体实现EXT3是在StephenTweedie博士的领导下设计开发的 EXT3被设计成EXT2的升级版本 尽可能为用户从EXT2文件系统向EXT3文件系统迁移提供方便 EXT3在EXT2的基础上加入了记录元数据的日志功能 努力保持向前和向后的兼容性 因为EXT3最大的优点是向下兼容EXT2 而且EXT3还支持异步日志 5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游景区空地租赁及旅游产品开发合同
- 2025年草书符号训练题库及答案
- 动物疫病防控科技创新的策略及实施路径
- 2025年5G网络在智慧交通中的应用与挑战报告
- 伸缩门的施工方案
- 钳工专业知识试题及答案
- 第四节 生态工程在环境保护中的应用说课稿-2025-2026学年高中生物北师大版2019选择性必修2 生物与环境-北师大版2019
- 专题25.2随机事件的概率(原卷版)
- 合规专业面试题及答案
- 专业知识和实务试题及答案
- 酿酒系统安全培训课件
- 全套课件-食品营养学-王莉
- 2018年全国成人高考专升本政治试题答案
- htri手册HTRIExchanger使用手册
- 灭火器每月定期检查及记录表
- 卡西欧PRO-TREK-PRW-6000使用手册-基础操作
- 小学英语外研版5A Unit2 They sell many different things Module 2部优课件
- 档案职称考试培训练习题汇总(带答案)
- 9.10.11有机、酸碱一般排-盛剑
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- 热学教学课件全套电子教案汇总整本书课件最全教学教程完整版教案(最新)
评论
0/150
提交评论