EXT3文件系统
EXT2和EXT3是许多Linux操作系统发行版本的默认文件系统。EXT基于UFS,是一种快速、稳定的文件系统。
随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了;其中EXT2文件系统是非日志式文件系统,这在关键行业的应用是一个致命的弱点,EXT3文件系统弥补了这一缺点。
EXT3文件系统是直接从EXT2文件系统发展而来,目前EXT3文件系统已经非常稳定可靠。它完全兼容EXT2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是EXT3日志文件系统初始设计的初衷。
Ext3文件系统属于一种日志文件系统,是对Ext2系统的扩展。Ext3系统兼容Ext2文件系统,二者之间的相互转换并不复杂。 Ext2是 GNU/Linux 系统中标准的文件系统,其簇快取层的优良设计使得Ext2系统存取文件的性能非常好,尤其是针对中小型的文件更显优势。 Ext3是一种日志式文件系统,日志文件系统比传统的文件系统安全,因为它用独立的日志文件跟踪磁盘内容的变化。就像关系型数据库(RDBMS),日志文件系统可以用事务处理的方式,提交或撤消文件系统的变化。由于文件系统都有快取层参与运作,不使用时必须将文件系统卸下,以便将快取层的资料写回磁盘中。因此每当系统要关机时,必须将其所有的文件系统全部关闭后才能进行关机。 如果在文件系统尚未关闭前就关机 (如停电) 时,下次重开机后会造成文件系统的资料不一致,所以这时必须做文件系统的重整工作,将不一致与错误的地方修复。然而这一重整的工作是相当耗时的,特别是容量大的文件系统,而且也不能百分之百保证所有的资料都不会流失。 为了克服此问题,便出现了所谓的日志式文件系统 (Journal File System) 。此类文件系统最大的特色是,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。 由于资料的写入动作包含许多的细节,如改变文件标头资料、搜寻磁盘可写入空间、一个个写入资料区段等等,每一个细节进行到一半若被中断,就会造成文件系统的不一致,因而需要重整。 然而在日志式文件系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回溯并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。
EXT3日志文件系统的特点
1、 高可用性
系统使用了EXT3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复EXT3文件系统的时间只要数十秒钟。
2、 数据的完整性:
EXT3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。在保证数据完整性方面,EXT3文件系统有两种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。
3、 文件系统的速度:
尽管使用EXT3文件系统时,有时在存储数据时可能要多次写数据,但是从总体上看来,EXT3比EXT2的性能还要好一些。这是因为EXT3的日志功能对磁盘的驱动器读写头进行了优化。所以文件系统的读写性能较之EXT2文件系统并来说,性能并没有降低。
4、 数据转换
由EXT2文件系统转换成EXT3文件系统非常容易,只要简单地键入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。另外,EXT3文件系统可以不经任何更改,而直接加载成为EXT2文件系统。
5、 多种日志模式
EXT3有多种日志模式,一种工作模式是对所有的文件数据及metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录(data=journal模式);另一种工作模式则是只对metadata记录日志,而不对数据进行日志记录,也即所谓data=ordered或者data=writeback模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。
Ext3磁盘数据结构
除了硬盘分区中的第一块作为引导块所保留,不受Ext3文件系统管理以外,其余部分分成块组(blockgroup),每个快组的分布下图所示,由于内核尽可能把属于一个文件的数据块存放在同一块中,所以组块减少了文件碎片。块组中的每块包含下列信息:
超级块:文件系统超级快块的一个拷贝
组描述符:一组块组描述符的拷贝
数据块位图:一个数据块位图
索引节点位图:一组索引节点
索引节点表:一个索引节点位图
数据块:存放文件数据
Ext3 Inode
在Ext3文件系统中inode是基本块;文件系统中的每个文件与目录由唯一的inode来描叙。每个数据块组的Ext3 inode被保存在inode表中, 同时还有一个位图被系统用来跟踪已分配和未分配的inode。图2给出了Ext3 inode的格式,它包含以下几个域:
mode:它包含两类信息;inode描叙的内容以及用户使用权限。Ext3中的inode可以表示一个文件、目录、符号连接、块设备、字符设备。
Owner Information :表示此文件或目录所有者的用户和组标志符。文件系统根据它可以进行正确的存取。
Size :以字节计算的文件尺寸。
Timestamps :inode创建及最后一次被修改的时间。
Datablocks:指向此inode描叙的包含数据的块指针。前12个指针指向包含由inode描叙的物理块, 最后三个指针包含多级间接指针。例如两级间接指针指向一块指针,而这些指针又指向一些数据块。这意味着访问文件尺寸小于或等于12个数据块的文件将比访问大文件快得多。