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个数据块的文件将比访问大文件快得多。