1. Ext3文件系统兼容:原有的Ext3数据结构仍然照样保留,Ext4作用于新数据,整个系统因此也就获得了Ext4所支持的更大的容量

  2. 更大额文件系统和更大的文件:Ext3目前所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB的文件系统,16TB的文件(1EB=1024PB1PB=1024TB)。

  3. 无限数量的子目录。Ext3支持32000个子目录,Ext4不限制

  4. ExtentsExt3采用间接块映射,当操作大文件时,效率极其低下。比如一个100M的文件。在Ext3中要建立25600个数据块(每个块大小为4KB)的映射表。而Ext4则引入了现代文件系统中比较流行的extents概念,每个extent为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的25600个数据块中”,提高了不少效率

  5. 多块分配:写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”mballoc支持一次调用分配多个数据块。

  6. 延迟分配:Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

  7. 快速fsck 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。

  8. 日志校验:日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

  9. Ext4文件系统可以关闭日志,节省开销

  10. Ext4支持在线碎片整理,提供e4defrag工具进行个别文件或整个文件系统的碎片整理

  11. Ext4inode节点大小默认时256字节,而Ext3只有128字节

  12. 持久预分配:P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 APIlibc 中的 posix_fallocate()),比应用软件自己实现更有效率。

  13. 默认启用 barrier 盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入磁盘,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)

参考网址:http://zxboom.iteye.com/blog/383986