Ext3文件系统的前身是Ext2。Ext2的设计者主要考虑的是文件系统性能方面的问题,而在写入文件内容的同时,并没有写入文件的元数据(和文件有关的信息,例如权限、所有者及创建和访问时间)。换句话说,Linux先写入文件的内容,然后等到空闲的时候才写入文件的元数据。如果出现文件内容已经写入,但在写入文件的元数据之前系统突然断电,就可能造成文件系统处于不一致的状态。在一个有大量文件操作的系统中,出现这种情况会导致很严重的后果。
Ext3是Ext2的升级版本,它在Ext2的基础上加入了记录元数据的日志功能,努力保持向前和向后的兼容性,也就是在保有目前Ext2的格式之下再加上日志功能。和Ext2相比,Ext3提供了更佳的安全性。
Ext系列的文件系统是基于UFS文件系统而设计的,所以它们具有UFS的很多特性,Ext3也同样跟UFS有许多相似之处,下面首先谈一谈Ext3文件系统的结构特点。
①Ext3文件系统所在区域首先被划分为一个个的块(Block),每个块大小都是一样的,但是对于不同的Ext3文件系统,块的大小可以有区别。典型的块大小是1024字节、2048字节或者4096字节。这个大小在创建文件系统的时候被决定,它可以由系统管理员指定,也可以由文件系统的创建程序根据硬盘分区的大小,自动选择一个较合理的值。
②块是文件系统中数据的分配单元,每个块都有一个唯一的编号,第一个块的编号为0,然后依次往后编,0号块起始于文件系统的开始扇区。
③Ext3文件系统的块被组合在一起分成几个大的块组(Block Group),每个块组中块数是相同的,不过,由于文件系统的总扇区数并不一定是块组所包含扇区数的整数倍,这将导致最后一个块组的大小与其他块组不同,也就是说文件系统的最后一个块组往往会小于其他块组。
④每个块组都相对应一个块组描述符(Group Descriptor),这些块组描述符统一放在文件系统的前部,对块组进行管理。
⑤Ext3文件系统用i-节点描述文件的时间信息、大小、块指针等信息;用目录项描述文件名和节点号,通过节点号就能访问其节点信息了。
⑥在文件系统的头部,是超级块,用以描述文件系统的综合信息。