ext4 引入了大量新功能,但最重要的是与 ext3 的向后和向前兼容性,以及在时间戳上的改进。这些改进立足于提高未来的 Linux 系统的性能。
向后和向前兼容性
由于 ext3 是 Linux 上最受欢迎的文件系统之一,因此应该能够轻松迁移到 ext4。为此,ext4 被设计为在 extent 方面具有向后和向前兼容性(参见图 1)。ext4 与 ext3 是向前兼容的,这样就可以将 ext3 文件系统挂载为 ext4 文件系统。为了充分利用 ext4 的优势,必须实现文件系统的迁移,以转换和利用新的 ext4 格式。您还可以将 ext4 挂载为 ext3(向后兼容),但前提是 ext4 文件系统不能使用区段(将在性能小节对其进行讨论)。
图 1. ext4 的向后和向前兼容性
除了兼容性特性之外,您还可以逐步地将 ext3 文件系统迁移到 ext4。这意味着没有移动的旧文件可以保留 ext3 格式,但新的文件(或已被复制的旧文件)将采用新的 ext4 数据结构。您可以通过这种方式在线将 ext3 文件系统迁移到 ext4 文件系统。
提高时间戳分辨率和扩展范围
令人惊讶的是,ext4 之前的扩展文件系统的时间戳都是以秒为单位的。这已经能够应付大多数设置,但随着处理器的速度和集成程度(多核处理器)不断提升,以及 Linux 开始向其他应用领域发展(比如高性能计算),基于秒的时间戳已经不够用。ext4 设计时间戳时考虑到未来的发展,它将时间戳的单位提升到纳秒。ext4 给时间范围添加了两个位,从而让时间寿命再延长 500 年。
伸缩性
文件系统未来发展的一个重要方面就是伸缩性,即根据需求进行伸缩的能力。ext4 以多种方式现实了强大的伸缩性,它的伸缩性超越了 ext3,并且在文件系统元数据管理方面开辟了新领域。
突破文件系统的限制
ext4 的一个明显差别就是它支持更大的文件系统、文件和子目录。ext4 支持的最大文件系统为 1 EB(1000 PB)。虽然根据今天的标准这个文件系统已经非常巨大,但存储空间的消费会不断增长,因此 ext4 必须考虑到未来的发展。ext4 支持最大 16 TB 的文件(假设由 4KB 的块组成),这个容量是 ext3 的 8 倍。
最后,ext4 也扩展了子目录的容量,将其从 32KB 扩展到无穷大。这是极端情况,我们还需要考虑文件系统的层次结构,因为它的最大存储容量为 1 EB。此外,目录索引也优化为类似于散列 B 树结构,因此尽管限制更加多,但 ext4 支持更快的查找。