1、毕业设计文献综述 计算机科学与技术 EXT2 文件系统跟踪程序的设计与实现 一、 前言部分 写作目的: 介绍在 Linux 系统背景下对第二扩展文件系统( EXT2)相关知识的了解,并且介绍了其他几种主流的 Linux 文件系统的优势与不足。熟悉 EXT2 文件系统的应用,以加深对 EXT2文件系统这方面知识的理解,为文件系统跟踪程序的开发提供一定的启发性和指导性。 相关概念: Linux 操作系统 ,是一套自由使用 ( 一般可以免费使用)和自由传播的类 Unix 操作系统 。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约、全世界都能自由使用的 U
2、nix 兼容产品。 而所谓的文件系统,就是在 操作系统中负责管理和存储文件信息的软件机构。文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件系统是对 文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件 等。 其中 The Second Extended File System(ext2)文件系统是 Linux 系统中的标准文件系统 14,是通过对 Minix 的文件系统进行扩展而得到的,其存取文件的性能极好。
3、 在 ext2 文件系统中,文件由 inode(包含文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被 删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的 inode 是不同的,并由内核负责同步。 ext2 文件系统采用三级间接块来存储数据块指针,并以块( block,默认为 1KB)为单位分配空间 14。其磁盘分配策略是尽可能将逻辑相邻的文件分配到磁盘上物理相邻的块中,并尽可能将碎片分配给尽量少的文件,以从全局上提高性能。 ext2 文件系统将同一目录下的文件(包括目录)尽可能的放在同一个块组中,但目录则分布在各个块组中以实现负载均衡。在扩展文
4、件时,会尽量一次性扩展 8 个连续块给文件(以预留空间的形式 实现)。 一、磁盘组织 在 ext2 系统中,所有元数据结构的大小均基于 “ 块 ” ,而不是 “ 扇区 ” 。块的大小随文件系统的大小而有所不同。而一定数量的块又组成一个块组,每个块组的起始部分有多种多样的描述该块组各种属性的元数据结构。 ext2 文件系统中对各个结构的定义都包含在原始的 include/linux/ext2_fs.h 文件中。 1、 超级块 8 每个 ext2 文件系统都必须包含一个超级块,其中存储了该文件系统的大量基本信息,包括块的大小、每块组中包含的块数等。同时,系统会对超级块进行备份,备份被存放 在块组的
5、第一个块中。超级块的起始位置为其所在分区的第 1024 个字节,占用 1KB 的空间。 2、 块组描述符 一个块组描述符用来描述一个块组的属性。块组描述符组由若干块组描述符组成,描述了文件系统中所有块组的属性,存放于终极块所在块的下一个块中。 3、 块位图和 inode 位图 块位图和 inode 位图的每一位分别指出块组中对应的那个块或 inode 是否被使用。 4、 inode 表 inode 表用于跟踪定位每个文件,包括位置、大小等(但不包括文件名),一个块组只有一个 inode 表。 5、 数据块 数据块中存放文件的内容,包括目录表、扩展属性、符号链接等。 二、目录结构 在 ext2
6、文件系统中,目录是作为文件存储的。根目录总是在 inode 表的第二项,而其子目录则在根目录文件的内容中定义。 三、 文件扩展属性 文件的属性大多数是位于该文件的 inode 结构中的标准属性,也还包含其他一些扩展属性(与系统中所有的 inode 相关,通常用于增加额外的功能)。 inode 的 i_file_acl 字段中保存扩展属性的块的块号。属性头部项位于属性块的起始位置,其后为属性入口项,而属 性值能根据属性入口项找到所在位置。 二、主题部分 Linux 是一种类 Unix操作系统, 它最初是以 Minix为基础开发的,所以早期的 Linux引进的是 Minix文件系统 8。但是 Mi
7、nix有 两个重要的限制:其文件名最长不能超过 14 个字符且块地址最多只能存放 16 位整数( 2 个字节),因此最大的文件不超过 64MB。为了解决这些限制,并把它们加入新的 Linux内核中,于是提出 VFS(虚拟文件系统 )。 VFS最初是由 Chris Provenzano编写 ,然后被 Linus Torvalds的改写整合嵌入 Linux内核。 VFS使得 Linux可以支持多个不同的文件系统,每个表示一个 VFS 的通用接口。由于软件将 Linux 文件系统的所有细节进行了转换 ,所以 Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。Linux 的虚拟文件系统允
8、许用户同时能透明地安装许多不同的文件系统。 在 VFS被加人内核,并于 1992年 4月开发出了第一个专门为 Linux设计的文件系统被称为扩展文件系统 (Extended File System)或 EXT,被正式加入到 Linux0.96c版本中 8。在性能上比 Minix有了较大的提 高,解除了 Minix的两个大的限制,如文件名最多可以使用 256个字符,文件最大长度可达 2GB8,但是 EXT文件系统仍存在不少的问题,如处理速度不如 Minix,不支持数据时间 戳的修改等问题 。 这一文件系统使用链接表来追踪空闲块和空闲的 inode,这也使此文件系统产生了一些负面影响:一旦此文件系
9、统被使用过,这些链接表就会变得混乱,而且文件系统也变得支离破碎。 对于上述问题, 1993年 1月的 alpha版本中出现了两个新的文件系统 XIA文件系统和第二代扩展文件系统( EXT2)。 XIA文件系统主要基于 MINIX 文件系统内核代码,在之前的文件系统上增加了一些新的改进。它基本上提供了长文件名、支持大磁盘和 3个时间戳的特性。 EXT2 文件系统在 EXT文件系统的基础上,进行代码重组和许多改进 13。它在思想上进行了前所未有的演变,并为以后的改进留下很大的空间。当这两文件系统首次发布时,它们的特点基本上一样。但 XIA文件系统在设计时着重于小型化,因此 XIA 文件系统比 EX
10、T2 文件系统更稳定。但是随着文件系统被广泛使用, EXT2 文件系统逐渐地修复了一些 BUG,越来越多的新功能也被添加上去了,集成了一些新的特性。现 在 EXT2文件系统已经非常稳定,并成为 Linux 操作系统的标准文件系统。 EXT2在速度和 CPU利用率上较为突出,既可以用于标准的块设备,也可应用在软盘等移动存储器上。 EXT2是 GNU/Linux系统中标准的文件系统。它存取文件的性能极好,对于中、小型的文件更显示出优势。 EXT2可以坚持 256B的长文件名,其单一文件大小和文件系统本身的容量上限与文件系统本身的簇大小有关。但是, EXT2也存在一些问题。由于它的设计者主要考虑的是
11、文件系统性能方面的问题,而在写入文件内容的同时,并没有写入文件的meta-data(和文件有关的信息,例如权限、所有者、创造和访问时间) 10。 随着 Linux 系统的不断发展,所支持的文件系统也在迅速扩充,特别是 Linux2.4 内核正式的推出,出现了大量的文件系统 8。在 2001 年之前, EXT2 一直是 Linux 的标准文件系统。之后,选择就比较多了:兼容 EXT2 的 EXT3, ReiserFS。 SGI 公司移植到 Linux 的 XFS文件系统, IBM 开发的 JFS。鉴于种种原因,从 Red Hat Linux7.2 发布版本开始, Linux 默认的文件系统为 E
12、XT3 文件系统。 EXT3 直接从 EXT2 文件 系统发展而来,它不仅继承了 EXT2的全部优点,还在可用性、完整性、速度和易于迁移四个方面表现突出。 EXT3 还采用了日志技术,在系统突然发生故障的情况下,可以大大提高文件系统的可靠性。 而 EXT3 最大的缺点是没有现代文件系统所具有的能提高文件数据处理速度和解压的高性能,另外使用EXT3 文件系统时要注意硬盘限额问题 9。 于是便催生了 EXT4。 EXT4 在性能、伸缩性和可靠性方面进行了大量的改进,并引用了很多新的技术(如:使用区段( EXTENT)来管理块和块管理相关的特性 延迟分配技术等),还改进了对大文件的访 问效率,在使用
13、 4KB 大小的数据块时, EXT4 可以支持的最大文件系统为 1EB。 2.6.28 内核发布时, ext4 结束了开发版,开始接受用户的使用。似乎 ext4 就将成为 Linux 文件系统的代名词。然而当您阅读很多有关 ext4 的文章时,会发现都不约而同地提到了 Btrfs,并认为 ext4 将是一个过渡的文件系统。 ext4 的作者 Theodore Tso 也盛赞 Btrfs 并认为 Btrfs 将成为下一代 Linux 标准文件系统。 Oracle, IBM, Intel 等厂商也对 Btrfs 表现出了极大的关 注,投入了资金和人力。 在 Kevin Bowling 看来, ex
14、t2/3 等文件系统属于“古典时期”。文件系统的新时代是2005 年由 Sun 公司的 ZFS 开创的。 ZFS 代表“ last word in file system”,意思是此后再也不需要开发其他的文件系统了。 ZFS 的确带来了很多崭新的观念,对文件系统来讲是一个划时代的作品。 如果比较 Btrfs 的特性,将会发现 Btrfs 和 ZFS 非常类似。也许我们可以认为 Btrfs就是 Linux 社区对 ZFS 所作出的回应。从此往后在 Linux 中也终于有了一个可以和 ZFS 相媲美 的文件系统。 由此可见, Linux文件系统从诞生到现在,在不到半个世纪的时间里,已形成了坚实的理
15、论基础广泛的应用领域,吸引越来越多的研究者加入。 EXT扩展文件系统是一个专门为 Linux 设计的文件系统,从 Ext1发展到 Ext4。并在实践应用中充分证明了它是一个设计合理、性能稳定、功能强大的文件系统,值得我们不断地去学习和研究应用。 三、 总结部分 文件系统是 Linux 操作系统的重要组成部分, Linux 文件具有强大的功能。文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有 Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中,我们应注重这方面的研究。 几种主流文件系统中, Ext扩展文件系统是一个专门为 Linux
16、 设计的文件系统,从 Ext1发展到 Ext4。并在实践应用中充分证明了它是一个设计合理、性能稳定、功能强大的文件系统,值得我们不断地去学习和研究应用。 其中 EXT2 是 Linux 的一个可扩展的、功能强大的文件系统,是所有 Linux 发布版的基础。本文也较为详细地介绍了 Linux操作系统和文件系统的发展历程及未来趋势和 Ext2文件系统内部的数据结构及 其对其性能稳定性有所介绍。 设计和实现 EXT2文件系统的跟踪程序也显得有必要。 回顾历史,立足现实,展望未来。今后随着信息技术的发展和 Linux 系统应用领域的逐步增加,以及数据存储量的日益膨胀, Linux 文件系统必然面对超大
17、存储容量和超快读写速度的挑战,导致文件系统产品的差异化发展将逐步明显,对此要求也愈加强烈。 四、参考文献 1 任爱华等 . 操作系统实验指导 M. 北京:清华大学出版社, 2004. 2 卢军 . Linux0.01 内核分析与操作系统设计 创造你自己的操作系统 M.北京: 清华大学 出版社, 2004. 3(美) Bruce Molay 著,杨宗源等译 .Unix/Linux 编程实践教程 M. 北京:清华大学出版社, 2004. 4 怀石工作室 .Linux 上的 C 编程 M.北京:中国电力出版社, 2001. 5 杜华 .Linux 编程技术详解 M.北京:人民邮电出版社, 2007.
18、 6 童 永清 .Linux C 编程实战 M. 北京:人民邮电出版社, 2008. 7 (美 )Behrouz A.Forouzan, Richard F.Gilberg 著,彭松虎 译 .Unix 和 Shell 程 序设计 权威教程 M. 北京:清华大学出版社, 2003. 8 徐德民 .操作系统原理 Linux 篇 M.北京:国防工业出版社, 2004. 9 刘胤杰,岳浩等 . Linux 操作系统教程 M.北京:机械工业出版社, 2005. 10 逯燕玲,解文彬等 .Linux 操作系统 M.北京:机械工业出版社, 2007. 11 王俊伟 ,吴俊海 . L i n u x标准教程 M .北京 :清华大学出版 ,. 12 曹聪 , 范廉明 . 操作系统原理与分析 M. 北京 : 科学出版社 ,2003. 13 罗宇 ,邹鹏 ,吴刚 .操作系统 M.北京 :电子工业出版社 ,2003. 14 Abraham Silberschatz 等 .操作系统概念(第六版 影印版) M.北京: 高等教育出版社, John Wiley & Sons,Inc, 2002. 15BrianCarrier. File System Forensic AnalysisM.Crawfordsville:Addison-Wesley,2005.