备忘

EXT3
http://zh.wikipedia.org/zh-cn/Ext3

ext3,第三扩展文件系统,是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统。Stephen Tweedie在1999年2月的内核邮件列表[2]中,最早显示了他使用扩展的ext2,该文件系统从2.4.15版本的内核开始,合并到内核主线中[3]。

大小限制

ext3有一个相对较小的对于单个文件和整个文件系统的最大尺寸。这些限制依赖于文件系统的块大小;下面的表格总结了这些限制。
块尺寸     最大文件尺寸     最大文件系统尺寸

块尺寸 最大文件尺寸 最大文件系统尺寸
1KiB 16GiB 2TiB
2KiB 256GiB 8TiB
4KiB 2TiB 16TiB
8KiB 16TiB 32TiB

 

 

 

 

8KiB块,只能用于允许8KiB页面的架构(例如alpha)。

 

EXT4
http://zh.wikipedia.org/zh-cn/Ext4

ext4(第四扩展文件系统)文件系统是Linux系统下的日志文件系统,是ext3文件系统的后继版本。

ext4原始的开发目标是一系列的向下兼容ext3、移除其64位限制与提升其性能的延伸包[1]。然而,某些Linux开发者因稳定性原因而拒绝将这些延伸包应用在ext3上[2],并要求其作为ext3的分支,改名为ext4并另行开发,以免影响到目前的ext3用户。该要求被接受以后,ext3维护者西奥多·周(Theodore Ts'o)在2006年6月28日公开了ext4的开发计划[3]。

大型文件系统(大小限制)
    ext4文件系统可支持最高1 Exbibyte的分区区[4]与最大16 Tebibyte的文件

Extents
    ext4引进了Extent文件存储方式,以取代ext2/3使用的block mapping方式。Extent指的是一连串的连续实体block,这种方式可以增加大型文件的效率并减少分裂文件。ext4支持的单一Extent,在单一block为4KB的系统中最高可达128MB[1]。单一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-tree)索引功能。该功能已经实现于Linux核心2.6.23版。

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

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

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

最大i节点(并且之后作为文件和目录的最大数量)数目在文件系统创建时确定。如果V是卷的大小(字节数),则默认的i节点数量位V/213(或块的数量,以最小的为准),且最小为V'/223。绝大多数应用程序认为默认值已经足够了。