Ext4文件系统的特色

        Ext4文件系统(第四扩展文件系统)是Linux系统下的日志文件系统,是Ext3文件系统的后继版本。
Ext4原始的开发目标是一系列的向下兼容Ext3、移除其64位限制与提升其性能的延伸包。然而,某些Linux开发者因稳定性原因而拒绝将这些延伸包应用在Ext3上,并要求其作为Ext3的分支,改名为Ext4并另行开发,以免影响到目前的Ext3用户。该要求被接受以后,Ext3维护者曹子德(Theodore Ts'o)在2006年6月28日公开了Ext4的开发计划。

大型文件系统

        Ext4文件系统可支持最高1 Exbibyte的分区与最大16 Tebibyte的文件。

Extents

        Ext4引进了Extent文件存储方式,以取代Ext2/3使用的block mapping方式。Extent指的是一连串的连续实体block,这种方式可以增加大型文件的效率并减少分裂文件。Ext4支持的单一Extent,在单一block为4KB的系统中最高可达128MB。单一inode中可存储4笔Extent;超过四笔的Extent会以Htree方式被索引。

向下兼容

        Ext4向下兼容于Ext3与Ext2,因此可以将Ext3和Ext2的文件系统挂载为Ext4分区。由于某些Ext4的新功能可以直接运用在Ext3和Ext2上,直接挂载即可提升少许性能。
Ext3文件系统可以部分向上兼容于Ext4(也就是说Ext4文件系统可以被挂载为Ext3分区)。然而若是使用到Extent技术的Ext4将无法被挂载为Ext3。

预留空间

        Ext4允许对一文件预先保留磁盘空间。目前大多数文件系统做到这点的方式是直接产生一个填满0的文件;Ext4和XFS可以使用Linux核心中的一个新的系统调用“fallocate()”取得足够的预留空间。

延迟取得空间

        Ext4使用一种称为allocate-on-flush的方式,可以在数据将被写入磁盘(sync)前才开始取得空间;大多数文件系统会在之前便取得需要的空间。这种方式可以增加性能并减少文件分散程度。

突破32000子目录限制

        Ext3的一个目录下最多只能有32000个子目录。Ext4的子目录最高可达64000,且使用“dir_nlink”功能后可以达到更高(虽然父目录的link count会停止增加)。为了避免性能受到大量目录的影响,Ext4默认打开Htree(一种特殊的B树)索引功能。该功能已经实现于Linux核心2.6.23版。

日志校验和

        Ext4使用校验和特性来提高文件系统可靠性,因为日志是磁盘上被读取最频繁的部分之一。这个特性还有一个好处就是可以安全地避免日志处理时磁盘I/O的等待,而稍微提高一些性能。日志校验和的技术源于威斯康辛大学的一篇名为IRON File Systems的研究论文(见第六节 transaction checksums校验和处理)

在线磁盘整理

        对于在线磁盘整理工具有许多草案,但是这些草案都没有被包含在主流的内核当中。即使Ext4包含有许多避免磁盘碎片的技术,但是磁盘碎片还是难免会在一个长时间使用过的文件系统中存在。Ext4将会有一个具有磁盘整理功能的工具。

快速文件系统检查

        Ext4将未使用的区块标记在inode当中,这样可以使诸如e2fsck之类的工具在磁盘检查时将这些区块完全跳过,而节约大量的文件系统检查的时间。这个特性已经在2.6.24版本的Linux内核中实现。

转载自维基百科

你可能感兴趣的:(Linux)