




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ext2 文件系统微型化改造 ext2 文件系统微型化改造 计算机应用技术 研究生 王 娟 指导教师 张 钟 澍 ext2(第二代扩展文件系统)是早期 gnu/linux 操作系统标准文件系统,是 一个功能强大、 易扩展的、 性能上进行了全面优化的、 支持长文件名的文件系统。 它是 linux 文件系统类型中使用最多的格式, 在速度和 cpu 利用率上都有较为突 出的优点。它很好地继承了 unix 文件系统的主要特色,如普通文件的三级索引 结构、目录文件的树型结构和把设备作为特别文件等。目前最新的 linux 版本支 持 ext3 文件系统, 它和 ext2 文件系统在硬盘布局上是一样的, 其差别仅是 ext3 文件系统在硬盘上多出了一个特殊的索引节点(可以理解为一个特殊文件), 用来 记录文件系统的日志。 目前,linux 的应用已经从以个人用户为主体,迅猛地向产业化方向发展。 随着成熟的内核 2.6 版本的推出,linux 这一通用操作系统集成了大量的应用程 序和硬件配置,系统变得越来越庞大。但 linux 的微内核结构使其应用不仅仅限 于桌面和服务器, 在嵌入式系统中更具潜力。 嵌入式系统是用来控制或监视机器、 装置或工厂等的大规模系统的设备, 它是面向用户、 面向产品、 面向特定应用的。 然而文件系统是操作系统一个重要的组成部分, 因此我们首先对文件系统进行微 型化改造。 随着嵌入式系统技术的飞速发展, 在 linux 的内核裁减方面已经取得了令人 注目的成绩,但在文件系统微型化方面的研究还仍然停留在做一些功能的删除, 没有深入到内部的结构。 本文首先介绍了 ext2 文件系统的发展历史,并且阐述了文件系统对操作系 统的重要性;其次对 linux 操作系统的 vfs 文件系统和 ext2 文件系统进行详细 分析, 着重介绍了 ext2 文件系统的数据结构, 以及对文件/目录基本操作的实现。 最后,根据 ext2 文件系统的原理,编写了一个类 ext2 文件系统在实现 文件系统基本功能的前提下,最大限度的压缩和裁减,使其容量尽可能小,完成 了对 ext2 文件系统的微型化,完善了linux 操作系统原理文件系统部分实 验平台,也为文件系统的安全性研究提供一个精巧的运行平台,同时为实时系统 和嵌入式系统的研究做准备。 关键词:关键词:linux;文件系统;ext2;虚拟文件系统;微型化;文件系统实验 minimization on ext2 file system development major: computer application graduate: wang juan advisor: zhang zhongshu ext2(the second extend file system) is gnu and linux standard file system in early years. it is a strong file system, which has many functions and high performance. it is easy to extend and support long filename.ext2 file system is the file system format which the linux operating system uses mostly. it is much outstanding from the speed aspect and the percent of using cpu. it inherits primary features of unix file system, such as tree structure of directory files. now the newest linux version support ext3 file system, the distribution of ext3 file system is same as the ext2 file system, the only difference is the journal feature, to record the file system log. nowadays, linux operation system application has developed from personal pc to industrialization rapidly. as linux 2.6 version has been released with strong kernel, linux operation system is very currency, which also integrated many application process and hardware configuration, the operating system became more and more powerful. but the micro-kernel structure of linux operating system is not also used in application, desktop and the server, but also has potential in embedded operating system. embedded operating system is to control and monitor the machines, equipments or a large scale of devices in factory. it is faced to users, product and special application. file system is one of the most important parts in operating system, so we minimized it first! although in the field of cut the kernel of linux has achieved a compelling success, in the field of file system, all the research also stayed as cutting some files, not going into the inside structure. this paper first introduced the history and development of ext2 file system, and proved the importance of file system to operating system; then it expatiated in detail about the virtual file system and extend file system, and introduced the data structure of ext2 file system, showed the implement of some operates. at the last, minimize the ext2 file system based on the ext2 principles. to make an ext2-like file system and implement the basic operation, and try minimizing it at best. the file system will provide an ingenious platform for research of file system security and the course of operating system, and it also prepared for the research of real system and embedded system. key words: linux; file system; ext2;virtual file system; minimize; 第 43 页 共 44 页 声 明 声 明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果, 也不包含为获得成都信息工程学院或其他教 育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示谢意。 本学位论文成果是本人在成都信息工程学院就读期间在导师的指导下取得 的,论文成果归成都信息工程学院所有,特此声明。 作者签字: 指导教师签字: 第 1 页 共 44 页 第第 1 章章 绪言绪言 1.1 研究背景 1.1 研究背景 计算机技术的飞速发展正在引发新的一轮世界性技术革命, 在经济发展越来 越全球化,科技创新越来越国际化,知识经济已见端倪的今天,计算机技术发展 更加迅猛。因此,处于这样一个高科技迅猛发展的今天,学习计算机技术就显得 非常重要了。在计算机技术的众多科目中,操作系统原理是一门非常重要的专业 基础课和实践性很强的技术课。文件系统是操作系统的一个重要组成部分,然而 庞大且错综复杂的ext2文件系统源代码并不能使学生很好地理解文件系统的原 理,为了解决这一矛盾,我们对ext2文件系统进行了微型化,使学生能通过实验 掌握文件系统的工作机理,理解ext2文件系统的主要数据结构。 linux操作系统由于其开源、稳定、免费、安全等特点,成为当今研究领域 的主流操作系统,在研究、工业、教学等各方面都占有较大的份额,而ext2文件 系统作为linux操作系统标准的标准文件系统,功能非常强大,但在应用中,如 嵌入式、教学等领域并不需要其所有的功能,再加上由于linux操作系统的不断 完善,其代码量也在不断增大,随之ext2文件系统的代码也日渐庞大,占用大量 的磁盘资源,所以更不适用于现今发展迅猛的嵌入式系统,因此需要对ext2文件 系统进行微型化改造。 ext2文件系统是一个可扩展的、高性能的、支持长文件名的文件系统,它又 被称为二级扩展文件系统。尽管从red hat 7.2版本以后,将ext3文件系统作为 linux操作系统的标准文件系统。ext3具有许多优点。它被设计得极易部署。它 基于稳固的 ext2文件系统代码,并继承了一个很好的fsck工具。 但ext3文件系统很大程度上是基于ext2的,与ext2文件系统相比,其最大的 不同就在于其日志技术。为什么后来选择ext3文件系统作为linux操作系统的标 准文件系统呢?主要有四个原因: 高效性、 数据完整性、 高速、 易转换。 由于ext3 文件系统的日志记录功能经过了特别地设计,很好的确保了数据的完整性;在系 统非正常关闭时,也节约了大量文件系统自检的时间;另外在存储过程中,有三 种模式供用户选择,存储速度比ext2文件系统有一定地提高;要将ext2文件系统 转换成ext3文件系统,用tune2fs命令,就可以在数据不变的情况下完成ext2文 件系统向ext3文件系统的转换。但是,这4个ext3文件系统的特点在做文件系统 微型化时,实现起来会增加文件系统的复杂度和存储速度,并且意义并不大。微 型化的目标是实现一个类unix文件系统的文件系统, 因此选择ext2文件系统作为 第 2 页 共 44 页 模板。 1.1.1 linux 操作系统在现实中的应用 1.1.1 linux 操作系统在现实中的应用 linux 操作系统现已成为具有生命力的新兴的操作系统, 不只因为它是完 全免费的, 事实上, linux 操作系统的确稳定、富有竞争力,linux 操作系统已 逐渐成为各公司服务器的首选操作系统, 许多公司也用它作为邮件服务器或是 www 服务器linux 还被用于其他各种网络应用领域, 如dns、路由和防火墙越来 越多的公司和厂商倾向于在高端使用linux 操作系统。 为什么 linux 操作系统这么风靡全球?主要是其拥有开放、安全、可靠、廉 价、对硬件的强大支持等优势。linux 的内核设计非常精巧,分成进程调度、内 存管理、进程间通信、文件系统和网络接口五大部分,其独特的模块机制可以根 据用户的需要,实时地将某些模块插入到内核或从内核中移走。这些特性使得 linux 系统内核可以根据需要裁剪得非常小巧,很适合于嵌入式系统的需求。 1.1.2 ext2 微型化的重要性 1.1.2 ext2 微型化的重要性 要问构成一个“操作系统”的最重要的部件是什么,那就莫过于进程管理和 文件系统了。事实上,有些操作系统(如一些“嵌入式”系统)可能有进程管理 而没有文件系统;而另一些操作系统(msdos)则有文件系统而没有进程管理。 可是,要是二者都没有,那就称不上是一个“操作系统”了。ext2 作为 linux 原标准文件系统,对于 linux 操作系统的重要性,自然不言而喻。 一方面,文件系统也是操作系统中最直观的部分,因为用户可以通过文件和 操作系统交互,操作系统也必须为计算机提供数据计算、数据存储的功能。这些 数据也是通过文件系统存储在介质上, 而操作系统按照自己的数据格式管理这些 文件。 另一方面,文件系统是操作系统安全的核心。在 linux 操作系统中,所有的 事物都是文件。linux 中的基本文件类型有正规文件、目录、特殊文件、链接、 sockets 等等。这些不同类型的文件以一个分层的树结构进行组织,以一个叫 “root”的目录为起始位置( “/” ) 。整个就是一个文件系统。每个文件对应一个 索引节点,记录了文件的一些基本属性。 linux 里的一切事物都是文件,这就意味着在一般情况下,程序完全可以像 对待文件那样对待磁盘文件、串行口、打印机以及其他设备,但在网络方面有些 例外,用户基本上可以使用文件接口控制 linux 系统中所有的设备,具有很高的 性能。 ext2 文件系统是 linux 操作系统的标准的文件系统,它很好地继承了 unix 文件系统的主要特色,如普通文件的三级索引结构、目录文件的树型结构和把设 第 3 页 共 44 页 备作为特别文件等特点, 是一个可扩展的、 高性能的、 支持长文件名的文件系统, 它又被称为二级扩展文件系统。另外,它在速度和 cpu 利用率上较为突出,得益 于其簇快取层的优良设计,它存取文件的性能极好,对于中、小型的文件更显示 出优势。 这几年, 嵌入式系统的发展非常讯猛, 由于 linux 拥有开源、 免费、 可裁剪、 可靠等特点,越来越多的嵌入式系统使用 linux 作为其使用的操作系统。嵌入式 系统主要是解决一个特定的问题而设计, 因此一个嵌入式 linux 系统一定需要按 照硬件和上层用户应用的需求做多方面的裁减和优化。 然而文件系统又是操作系 统的重要组成部分,同时,也是占有资源最多的一个模块,因此需要做特别的裁 减和优化,文件系统优化的目标一方面是要减小它的规模,因为不论从静态还是 动态上分析,文件系统在核心中所占的比例都比较大。另一方面是要简化它的功 能,因为在台式机系统中,文件系统的功能繁杂和全面,但有些功能在嵌入式应 用或操作系统原理课程实验中并不是必需的。因此,文件系统的微型化改造 最终目标是裁减出一个正好能够满足上层应用需求的文件系统。 1.2 研究现状研究现状 1.2.1 linux 的发展 1.2.1 linux 的发展 hello everybody out there using minixim doing a (free) operating system在 1991 年的八月,网络上出现了一篇以此为开篇话语的帖子 这是一个芬兰的名为 linus torvalds 的大学生为自己开始写作一个类似 minix,可运行在 386 上的操作系统寻找志同道合的合作伙伴。 1991 年 10 月 5 日,linus torvalds 在新闻组 comp.os.minix 发布了大约有 一万行代码的 linux v0.01 版本。 到了 1992 年,大约有 1000 人在使用 linux, 1993 年,大约有 100 余名程序员参与了 linux 内核代码编写/修改工作,其中核 心组由 5 人组成,此时 linux 0.99 的代码有大约有十万行,用户大约有 10 万左 右。 1994 年 3 月,linux1.0 正式发布,当时是按照完全自由免费的协议发布, 随后正式采用 gpl 协议。至此, linux 的代码开发进入良性循环。很多系统管 理员开始在自己的操作系统环境中尝试 linux,并将修改的代码提交给核心小 组。由于拥有了丰富的操作系统平台,因而 linux 的代码中也充实了对不同硬 件系统的支持,大大的提高了跨平台移植性。 1995 年,此时的 linux 可在 intel、digital 以及 sun sparc 处理器上运 行了,用户量也超过了 50 万。1996 年 6 月,linux 2.0 内核发布,此内核有大 约 40 万行代码,并可以支持多个处理器。此时的 linux 已经进入了实用阶段, 第 4 页 共 44 页 全球大约有 350 万人使用。1998 年是 linux 迅猛发展的一年。1 月,小红帽高级 研发实验室成立,同年 red hat 5.0 获得了 infoworld 的操作系统奖项。4 月 mozilla 代码发布,成为 linux 图形界面上的王牌浏览器。之后,red hat 宣布 商业支持计划,网络了多名优秀技术人员开始商业运作。多家厂商开始使用 linux 操作系统开发自己的产品,linux 获得了商业认可, 1998 年可说是 linux 与商业接触的一年。 1999 年 3 月, 第一届 linuxworld 大会的召开, 象征 linux 时代的来临。ibm、compaq 和 novell 宣布投资 red hat 公司,以前一直对 linux 持否定态度的 oracle 公司也宣布投资。五月,sgi 公司宣布向 linux 移植其先 进的 xfs 文件系统。对于服务器来说,高效可靠的文件系统是不可或缺的,sgi 的慷慨移植再一次帮助了 linux 确立在服务器市场的专业性。7 月 ibm 启动对 linux 的支持服务和发布了 linux db2,从此结束了 linux 得不到支持服务的历 史,这可以视作 linux 真正成为服务器操作系统一员的重要里程碑。 2000 年 11 月,intel 与 xteam 合作,推出基于 linux 的网络专用服务器,此举结束了在 linux 单向顺应硬件商硬件开发驱动的历史。 2001 年 12 月 red hat 为 ibm s/390 大型计算机提供了 linux 解决方案,从此结束了 aix 孤单独行无人伴的历史。 2002 年是 linux 企业化的一年。2 月,微软公司迫于各洲政府的压力,宣布扩大 公开代码行动,这可是 linux 开源带来的深刻影响的结果。3 月,内核开发者宣 布新的 linux 系统支持 64 位的计算机。 2003 年 1 月,nec 宣布将在其手机中使 用 linux 操作系统,代表着 linux 成功进军手机领域。2004 年 3 月 sgi 宣布成 功实现了 linux 操作系统支持 256 个 itanium 2 处理器。六月的统计报告显示在 世界 500 强超级计算机系统中,使用 linux 操作系统的已经占到了 280 席,抢占 了原本属于各种 unix 的份额。 目前,linux 的应用已经从以个人用户为主体,迅猛地向产业化方向发展。 随着成熟的内核 2.6 版本的推出,linux 这一通用操作系统集成了大量的应用程 序和硬件配置,系统变得越来越庞大,目前 linux 内核的最新版本是 , 系统更是庞大,支持 intel、alpha、ppc、sparc、ia-64 、arm、mips、amiga、 atari 和 ibm s/390 等,还支持 32 位大文件系统。而在 intel 平台上,物理内 存最大支持可以达到 64gb。 加强对 ide 和 scsi 硬件系统的支持, 并增强了对 usb 设备和 3d 加速卡的支持。但 linux 的微内核结构使其应用不仅仅限于桌面和服 务器,在嵌入式系统中更具潜力。 linux 在中国登陆的时间不长,但是国内软件市场上已经掀起了一股股 linux 热潮,linux 甚至被公认为是我国软件产业发展的一个契机。经过几年的 努力, 我国在 linux 技术和产品方面取得了长足的进步, 无论是内核技术的采用, 还是对软、硬件平台的支持,都基本做到了与国际同步。中国是世界上 it 产业 第 5 页 共 44 页 发展最快的国家之一,中国的 linux 产业也紧跟世界,正以迅猛的速度发展,在 服务器、桌面和嵌入式操作系统领域,linux 所占份额都在增加,尤其是嵌入式 领域,其发展速度是惊人的。 linux 内核的裁减主要在嵌入式领域。由嵌入式 linux 行业主要厂商之一 lineo 推出的 embedix,是根据嵌入式应用系统的特点重新设计的 linux 发行版 本。embedix 提供了超过 25 种 linux 系统服务,包括 web 服务器等。系统需求 最小 8m 内存,3m 只读内存或闪存。embedix 基于 linux2.2 核心,并已经成功地 移植到了 iintelx86 和 powerpc 处理器系列上。由美国网虎公司推出的 xlinux, 号称是世界上最小的嵌入式 linux 系统,核心只有 143k 字节,而且还在不断减 小。 可见,在 linux 的内核裁减方面已经取得了令人注目的成绩,但在文件系统 方面的研究还仍然停留在做一些功能模块的删除,没有深入到内部的结构。 1.2.2 ext2 文件系统的发展历史 1.2.2 ext2 文件系统的发展历史 linux 是一种类 unix 操作系统。minix 的文件系统有两个重要的限制:其文 件名最长不能超过 14 个字符且块地址最多只能存放 16 位整数(2 个字节) ,因此 最大的文件不超过 64mb。 linux 开发者为了使 linux 操作系统能在两个操作系统之间共享磁盘,而不 需要重新设计一个文件系统,linus torvalds 决定在 linux 中实现支持 minix 文 件系统。minix 文件系统是一种有效的、免费的软件。但是 minix 文件系统在设 计时,受到了时代的局限,因此具有一些限制。所以人们开始思考并在 linux 上 努力实现一个新的文件系统。为了解决这些限制,并把它们加入新的 linux 内核 中,于是提出了虚拟文件系统。虚拟文件系统层最初是由 chris provenzano 写 的,之后由 linus torvalds 编写并将其集成到 linux 内核中。 在 vfs 被集成到内核后,一个新的文件系统扩展文件系统(ext) 在1992年4月被正式加入到linux 0.96c版本中。 这个新的文件系统解除了minix 的两个大的限制,新的文件系统最大支持 2g 磁盘,文件名或目录名最多由 255 个 字符组成。它是 minix 文件系统的升级,但仍然存在不少的问题,如不支持数据 时间戳的修改等问题。这一文件系统使用链接表来追踪空闲块和空闲的 inode, 这也使此文件系统产生了一些负面影响:一旦此文件系统使用过,这些链接表就 会变得混乱,而且文件系统也变得支离破碎。 对于上述问题, 1993年1月的alpha版本中出现了两个新的文件系统xia 文件系统和第二代扩展文件系统(ext2) 。xia 文件系统主要基于 minix 文件系统 内核代码, 在之前的文件系统上增加了一些新的改进。 它基本上提供了长文件名、 支持大磁盘和 3 个时间戳的特性。另一方面,ext2 文件系统在 ext 文件系统的基 第 6 页 共 44 页 础上,进行代码重组和许多改进。它在思想上进行了前所未有的演变,并为以后 的改进留下很大的空间。 当这两个文件系统首次发布时,它们的特点基本上一样。但 xia 文件系统在 设计时的着重于小型化,因此 xia 文件系统比 ext2 文件系统更稳定。但之后由 于 ext2 文件系统修复了一些 bug,实现并集成了一些新的特性,ext2 文件系统 现在已经非常稳定,成为了 linux 操作系统的标准文件系统。 综上所述,linux 最早的文件系统是 minix 文件系统,它所受限制很大而且 性能低下,其文件名最长不能超过 14 个字符且最大的文件不超过 64mb。第一个 专门为linux设计的文件系统扩展文件系统ext虽然比minix文件系统有所改进, 但仍然存在很多问题;1993 年扩展文件系统第二版 ext2 被设计出来并添加到 linux 中。ext2 文件系统是 linux 中使用最普遍的文件系统,它拥有最快的速度 和最小的 cpu 占用率,ext2 既可以用于标准的块设备,也可应用在软盘等移动存 储器上。linux 最新的文件系统是 ext3,ext3 是一种日志式文件系统,ext3 文 件系统是直接从 ext2 文件系统发展而来,它已经非常稳定可靠,而且完全兼容 ext2 文件系统。从 red hat linux 7.2 发布版本开始,linux 默认的文件系统为 ext3 文件系统。 另外,在操作系统教学方面,目前在国内高校在讲授操作系统原理课程 时,实验环境大多在 dos 或 unix 下练习一些操作系统的使用技巧。这样的实验 环境和效果使用学生既不能利用现有的内核生成一个令自己较满意的操作系统, 更不清楚操作系统的资源管理的主要过程, 也就不用说试图自己改变系统中的部 分算法及资源分配方式了。 在如何解决这个问题上,美国人 a.s.tanenbaum 是位先驱,由他编写的教学 “操作系统”minix 在很长一段时间里较好地解决了这一问题。然而,随着 计算机系统的体系结构的变化,元器件以及相应软件的飞速发展,早年开发出的 minix 在很多方面已经不能适应今天的“操作系统”教学的需要了。 在当今计算机科学相对发达的国度,人们也已经认识到了这方面的问题,他 们开发出适合他们自己教学用的操作系统osp、baci、nachos、toyos 等, 其中 osp、baci 是基于裸机的操作实验系统,而 nachos、toyos 是基于模拟器的 操作实验系统。但是一个全新的、支持基于 intel x86 计算机的操作系统教学实 验系统至今仍很少,即一个教学专用的实验系统比较少。 1.2.3 linux 文件系统微型化的方法 1.2.3 linux 文件系统微型化的方法 最近十年,linux系统得到了迅速的发展,这既得益于它的自由软件属性和 稳定、高效、健壮的内核,也与linux是一个高性能的网络操作系统密不可分。 在嵌入式系统、网络防火墙、路由器中linux系统正在被广泛应用。linux系统庞 第 7 页 共 44 页 大, 对于redhat7.2, 缺省安装有1000m多。 对于特定的应用, 许多程序是无用的, 安装后不仅增加了硬盘空间占用,而且会带来安全性问题。以下几种裁减方法是 比较可行的。 1)定制安装法。在安装时选择需要的软件,选择custom方式,根据需求选中 选择每一个需要的软件包,就能够详细的裁减linux,在为防火墙定制时经过这 样安装占用硬盘空间250m。很显然这种方法需要安装人员对linux软件包非常熟 悉。 2)虽然经过以上定制安装可以实现一定的裁减, 但对于特定的应用仍然有许 多无用的软件包,此时应再使用rmp命令“rpm qail”查看所有的软件包信息, 对于无用的包使用命令“rpm e软件包”卸载(注意有些包因为存在其它包的关 系依赖去不掉),最后卸载rmp工具。经过这样卸载安装占用硬盘空间120m多。 3)手工裁减法。对于一个安装包,有些文件有用,有些无用,这时要手工删 除无用的文件,例如usrman、usrshare文档,之后重新编译内核,最后 剩余约50m多。这时的系统基本保持linux原貌,如系统运行级别、启动方式、用 户管理、日志系统、系统必要的服务、文件系统等等。现有的电子盘已经可以装 下60m的数据。 4)软件法。最近几年出现了一些专门针对linux裁剪的软件,如busybox工 具箱。 5)diy。在定制linux的过程中,要充分利用linux源代码的可编译和模块化 的特点,根据功能需要,定制高度简洁的系统。既可以利用成熟的busybox进行 开发,缩短开发周期;也可以用diy的方式,自己从源代码进行开发,充分满足 需求。 1.3 研究目标和研究内容研究目标和研究内容 1.3.1 研究目标 1.3.1 研究目标 ext2 文件系统的微型化,并不是源代码的删删减减,而是在分析其工作原 理后,自己设计编写一个类 ext2 文件系统,保留原 ext2 文件系统主要的功能, 是一个比真正文件系统简单得多,而又能基本体现文件系统理论的程序,其设计 并实现的类 ext2 文件系统,将用于本科操作系统原理实验平台中,给学生 一个直观简单的文件系统的概念,更好地理解文件系统的原理和机制。限于精力 和实际项目需要,本文主要针对以下几个目标展开研究工作: 1) 分析 ext2 文件系统的结构。 2) 研究 ext2 文件系统与 vfs 的关系。 第 8 页 共 44 页 3) 了解当前 linux 系统微型化的方法。 4) 设计针对改造后的文件系统用于操作系统原理的课程实验平台。 1.3.2 研究内容 1.3.2 研究内容 在这4个研究目标中, 第一个和第二个目标是做铺垫工作, 只有在搞清了ext2 本身的实现机理,才有可能对其作裁减或修改工作;第三个目标主要是获得理论 和方法上指导,了解当前的一个研究现状,以便能够把握方向理清技术路线,对 自己以后的工作有一定的指导作用;第四个目标则是根据项目的需求,设计完成 ext2 的微型化改造。针对上面的研究目标,将分阶段、分模块开展研究工作,本 文中主要研究工作如下: 1) 分析 ext2 内核主要模块结构,研究分析相关部分的源代码,理清各个数 据结构之间的关系,掌握文件系统核心功能的实现机制与实现方法; 2) 研究实现 linux 微型化和构件化的相关理论,完成配置内核,主要关注 文件系统的裁剪工作,能使裁减后的内核正常启动; 3) 根据项目需求拟订需求分析,设计完成一个类 ext2 文件系统,并能用于 操作系统原理课程实验平台。 1.4 论文结构论文结构 本文共分为五个章节,结构如下: 第 1 章,绪言。主要介绍课题研究背景、研究现状以及 ext2 文件系统微型 化在现实应用中的重要性。 第 2 章,文件系统概述及 linux 微型化的方法。首先阐述什么是文件系统, 在操作系统中的作用以及实现方法,之后进一步阐述 ext2 文件系统对于 linux 系统的重要性,最后介绍 linux 微型化的方法。 第 3 章,ext2 文件系统。介绍分析 ext2 文件系统,首先给出一个概述,再 具体分析其数据结构和各主要功能实现的方法和机制。 第 4 章,文件系统实验平台。介绍本课题设计的文件系统特点、需求分析 及主要实现技术。 第 5 章,结束语。对本文及毕业设计期间工作的总结,分析设计和实现的 这一文件系统的优缺点,并指出该课题进一步的研究思路及后续工作展望。 第 9 页 共 44 页 第 2 章 linux 文件系统概述 第 2 章 linux 文件系统概述 2.1 关于文件系统关于文件系统 在操作系统中,文件系统这个术语往往既被用来描述磁盘中的物理布局;另 外,文件系统也被用来描述内核中的逻辑文件结构;还有些时候说“文件系统” 负责管理用户读写文件这时所说的“文件系统”往往描述操作系统中的“文 件管理系统” ,也就是文件子系统。 文件系统概念本身就囊括众多概念,几乎可以说在操作系统中自内存管理、 系统调度到 i/o 系统、设备驱动等各个部分都和文件系统联系密切,有些部分和 文件系统甚至未必能明确划分, 所以不能只知道文件系统是系统中数据的存储结 构,一定要全面认识文件系统在操作系统中的角色,才能具备自己开发新文件系 统的能力。 2.1.1 文件系统的体系结构 2.1.1 文件系统的体系结构 我们先抛开 linux 文件系统的实例,而来看看操作系统中文件系统的普遍体 系结构,从而增强对文件系统的理论认识。下面以软件组成的结构图的方式描述 文件系统所涉及的内容。 图 2.1 文件系统体系结构层次图 图 2.1 文件系统体系结构层次图 针对各层做以简要分析: 1) 首先我们来分析最低层设备驱动层,该层负责与外设通讯。文件系 统都需要和存储设备打交道,而系统操作外设离不开驱动程序。所以内 核对文件的最后操作行为就是调用设备驱动程序完成从主存(内存)到 用户程序 访问方法 逻辑 i/o 基础 i/o 监督 物理 i/o 设备驱动 第 10 页 共 44 页 辅存(磁盘)的数据传输。 2) 设备驱动层的上一层是物理 i/o 层,该层主要作为计算机外部环境和系 统的接口,负责系统和磁盘交换数据块。它要知道数据块在磁盘中存储 位置,也要知道文件数据块在内存缓冲中的位置,另外它不需要了解数 据或文件的具体结构。 3) 再上层是基础 i/o 监督层,该层主要负责选择文件 i/o 需要的设备,调 度磁盘请求等工作,另外分配 i/o 缓冲和磁盘空间也在该层完成。 4) 倒数第二层是逻辑 i/o 层,该层允许用户和应用程序访问记录。它提供 了通用的记录(record)i/o 操作,同时还维护基本文件数据。 5) 和用户最靠近的是访问方法层,该层提供了一个从用户空间到文件系统 的标准接口,不同的访问方法反映了不同的文件结构,也反映了不同的 访问数据和处理数据方法。 2.1.2 文件处理流程 2.1.2 文件处理流程 对比上面的层次图再来分析一下数据流的处理过程,加深对文件系统的理 解。 假如用户或应用程序操作文件(创建/删除) ,首先需要通过文件系统给用户 空间提供的访问方法层进入文件系统, 接着由使用逻辑 i/o 层对记录进行给定操 作, 然后记录将被转化为文件块, 等待和磁盘交互。 这里有两点需要考虑: 第一, 磁盘管理(包括再磁盘空闲区分配文件和组织空闲区) ;第二,调度块 i/o 请求 这些由基础 i/o 监督层的工作。 再下来文件块被物理 i/o 层传递给磁盘驱动 程序,最后磁盘驱动程序真正把数据写入具体的扇区。至此文件操作完毕。 数据表现形式在文件操作过程中也经历了几种变化: 在用户访问文件系统看 到的是字节序列,而在字节序列被写入磁盘时看到的是内存中文件块(在缓冲 中) ,在最后将数据写入磁盘扇区时看到的是磁盘数据块。 本文所说的实现文件系统主要针对内核中的逻辑文件结构 (但其它相关的文 件管理系统和文件系统磁盘存储格式也必须了解) ,图 2.2 是数据处理流图,指 明了逻辑文件系统主要功能和在操作系统中所处的地位。 第 11 页 共 44 页 图 2.2 文件系统操作流程 2.2 ext2 文件系统与文件系统与 ext3 文件系统的主要区别文件系统的主要区别 ext2 文件系统是早期 linux 操作系统的标准文件系统。由于 linux 应用领 域越来越广,早期 ext2 文件系统在某些方面,就暴露出了设计的缺陷。ext3 是 一种日志文件系统,是对 ext2 系统的扩展。它兼容 ext2,并且从 ext2 转换成 ext3 并不复杂。ext3 文件系统与 ext2 文件系统相比,除了可以处理超过 2g 大 小的文件,其最大的不同,就在于它保存了文件系统使用的日志。 先来了解 ext2 文件系统崩溃恢复机制:当前一次写操作完成后,下一次写 操作才能进行,这种被称为“同步元数据更新”的机制,减少了崩溃发生时造成 的丢失数据的数量,并能有一些崩溃后的数据恢复功能。当崩溃发生后,可以很 容易地确定哪些数据丢失了。在重新启动后,系统会调用文件系统工具 fsck 来 扫描,试图恢复损坏的元数据信息。由于 ext2 文件系统保存有冗余的元数据信 息的备份,因此一般来说不大可能出现数据完全丢失。系统会计算出被损坏的数 据的位置,然后或通过恢复冗余的元数据信息,或者直接删除被损坏或是元数据 信息损毁的文件。所以,要检测的文件系统越大,检测过程费时就越长。由于 linux 操作系统开始用于大型服务器中越来越重要的应用,因此就越来越不能容 忍长时间的当机时间。于是引入了 ext3 日志文件系统。ext3 文件系统使用“日 志”技术,借用了如 oracle 等大型数据库的思想,能够更好地保证数据完整性、 用户程序 i/o 调度层 系统调用 文件系统接口 物理存储布局管理 设备驱动 逻辑文件系统 用户程序 i/o 调度层 文件系统接口 物理存储布局管理 设备驱动 磁盘设备 逻辑文件系统 第 12 页 共 44 页 安全性,实现灾难性恢复,使用独立的日志文件跟踪磁盘内容的变化。这种技术 允许撤销对文件系统做的改变将日志中的数据覆盖, 或者在发生崩溃时恢复 数据将镜像拷贝到文件系统中。 相对于 ext2 文件系统,ext3 文件系统主要有四个优点:有效性、数据完整 性、高速、易转换。ext3 文件系统比 ext2 文件系统拥有更大的吞吐量,存储速 度也较快。ext3 提供三种日志模式给用户选择: 1) data=journal:可以日志所有的 data 和 metadata 档案; 2) data=ordered:仅日志 metadata 档案,不含 data 档案,但 data=ordered 会使 metadata 指向有效的 data; 3) data=writeback: 仅日志 metadata 档案,不含 data 档案,但 data=writeback 会使档案系统维持一致性,不过系统不正常关机后,旧 有资料会出现在档案中。 第 13 页 共 44 页 第 3 章 ext2 文件系统第 3 章 ext2 文件系统 3.1 文件系统基本概念文件系统基本概念 linux 的文件系统的是从 minix 文件系统的基本概念衍生出来的:由索引节 来的代表文件、目录。 每一个文件都由一个 inode 的数据结构表示。这个称为索引结点,每个索引 节点描述了一个文件的属性:文件类型、权限、文件的拥有者、时间戳、大小、 指向数据块的指针。分配给此文件的数据块地址存储在索引节点中,当用户请求 文件 i/o 操作时,内核代码利用当前数据块号码的偏移量作为一个索引,在块地 址表中读写物理块。 图 3.1 索引节点的物理块指针数组图 3.1.1 目录 3.1.1 目录 目录是一个分层的数据结构,每个目录包含其下的文件和子目录。目录作为 一个特殊文件被实现。实际上一个目录是由 ext2_dir_entry 结构组成的列表文 件。每个 entry 结构又包含一个索引节点号和文件名。当查找文件的时候,先与 目录中的名字匹配,再在目录中获取索引节点号。 为了减少磁盘空间的浪费, ext2_dir_entry 这个结构是可变长的。 但是它还 有一定的长度方面的限制:一是文件名最长只能为 255 个字符;二是尽管文件名 第 14 页 共 44 页 可以不限(255 个字符之内) ,但系统自动将之变为 4 的整数倍,不足的地方用 0 填充。目录中还有两个特殊的子目录: “.”和“.” ,分别代表当前目录和父目 录。它们是无法删除的,其作用就是用来进行相对路径的查找。 图 3.2 目录结构 3.1.2 链接 3.1.2 链接 ext2 文件系统实现了链接这一个概念,即多个文件名都可以分配一个索引 节点。链接是对另一个文件的“引用” ,分为两种硬链接和符号链接。硬链 接是磁盘上某物理文件的第二名称。在创建目录项时增加一个简单的链接,其索 引节点号指向索引节点,之后再增加此 inode 的链接数;当删除一个链接时,比 如当一个用户使用 rm 命令删除一个文件时,系统会减少这个文件的链接数,如 果链接数减为 0 时,系统会回收对此文件索引节点的分配空间。 硬链接有两方面的限制: 1) 不允许用户给目录创建硬链接。因为这可以把目录树变为环形图,从而 就不能通过名字定位一个文件。 2) 只有在同一文件系统中的文件之间才能创建链接。这带来比较大的限 制。因为现代 unix 系统可能包含了多种文件系统,这些文件系统位于 不同的磁盘/分区,用户也许无法知道它们之间的物理划分。 为了克服这些限制,引入另一种类型的链接符号链接。它是以“路径” 来表示另一个文件,就像 windows 操作系统的“快捷方式”或 macintosh 操作系 统的“别名” 。创建一个新的符号链接时,文件系统会抽出目标文件的目录部分, 并在那个目录下创建一个与目标文件相同名字的符号链接类型的新项; 若删除原 文件,符号链接将因为指向不存在路径而变得无效。由于一个符号链接并不指向 索引节点,没有硬链接的限制,那么它就很能在跨文件系统中实现符号链接。符 号链接能指向任意类型的文件,甚至是不存在的文件。但是,符号链接要占用一 些磁盘空间,来分配它们的索引节点和数据块,这也造成了额外的开销来转换索 第 15 页 共 44 页 引节点,因为当系统遇到一个符号链接时要重新对名字进行编译。 3.1.3 设备特殊文件 3.1.3 设备特殊文件 unix 类操作系统都是基于文件概念的,文件是以字符序列而构成的信息载 体。linux 操作系统中的设备同样也被作为一个特殊文件来存储。这种特殊文件 不占用文件系统的空间,只是设备驱动的一个接入点。 根据设备驱动程序的基本特性, 设备文件分为两种类型: 字符文件和块文件。 前者允
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025二手房屋买卖三方合同含房屋交易风险评估及防范措施
- 2025版电动三轮车技术专利许可及转让合同范本
- 2025年广东省广州市从化区中考二模数学试题及答案
- 2025版石材铺装劳务合同范本引领石材工程新潮流
- 2025版员工劳动合同革命:一张纸劳动合同方案
- 2025年度能源行业销售代表劳动合同
- 2025年度高级公寓私人租赁合同
- 2025年度养老产业项目信托借款合同
- 2025年汽车售后服务质量保证合同规范
- 2025短租房租赁合同(含智能家居系统及家电维修)
- 2024年公安机关理论考试题库500道附参考答案【基础题】
- 阿尔茨海默病药物治疗指南(2025)解读
- 心脏永久起搏器植入术病人护理查房
- 粮油保管员(高级)职业技能鉴定参考试题(附答案)
- GB/T 196-2025普通螺纹基本尺寸
- 新课标下初高中数学教学的衔接研究
- 2024-2025学年人教版二年级体育下册全册教案
- 2025年初升高高中自主招生考试化学试卷试题(含答案详解)
- 劳务施工施工方案
- 新部编版五年级语文上册第八单元课件
- 中国急性缺血性卒中诊治指南(2023)解读
评论
0/150
提交评论