相容Ext3
正如 Ext3 成功之道在於和 Ext2 完全相容,Ext4 同樣相容 Ext3。 Ext3 的檔案系統被掛載成 Ext4,由 Ext3 升級至 Ext4 亦只是兩個簡單的命令,無需重新格式化檔案系統,無需移動舊檔案,完全無痛。
而 Ext4 的檔案系統如果沒有檔案使用 extent 方式存放,亦可以直接被掛載成 Ext3。
更大的文件系統和更大的文件。 较之Ext3 目前所支持的最大16TB 文件系统和最大2TB 文件,Ext4 分别支持1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及16TB 的文件。較之Ext3目前所支持的最大16TB文件系統和最大2TB文件,Ext4分別支持1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系統,以及16TB的文件。
無限數量的子目錄。 Ext3 目前只支持32,000 个子目录,而Ext4 支持无限数量的子目录。 Ext3目前只支持32,000個子目錄,而Ext4支持無限數量的子目錄。
Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。 Ext3採用間接塊映射,當操作大文件時,效率極其低下。 比如一个100MB 大小的文件,在Ext3 中要建立25,600 个数据块(每个数据块大小为4KB)的映射表。比如一個100MB大小的文件,在Ext3中要建立25,600個數據塊(每個數據塊大小為4KB)的映射表。 而Ext4 引入了现代文件系统中流行的extents 概念,每个extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的25,600 个数据块中”,提高了不少效率。而Ext4引入了現代文件系統中流行的extents概念,每個extent為一組連續的數據塊,上述文件則表示為“該文件數據保存在接下來的25,600個數據塊中”,提高了不少效率。
多塊分配。 当写入数据到Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个4KB 的块,写一个100MB 文件就要调用25,600 次数据块分配器,而Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。當寫入數據到Ext3文件系統中時,Ext3的數據塊分配器每次只能分配一個4KB的塊,寫一個100MB文件就要調用25,600次數據塊分配器,而Ext4的多塊分配器“multiblock allocator”(mballoc)支持一次調用分配多個數據塊。
延遲分配。 Ext3 的数据块分配策略是尽快分配,而Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。 Ext3的數據塊分配策略是盡快分配,而Ext4和其它現代文件操作系統的策略是盡可能地延遲分配,直到文件在cache中寫完才開始分配數據塊並寫入磁盤,這樣就能優化整個文件的數據塊分配,與前兩種特性搭配起來可以顯著提升性能。
快速fsck。 以前执行fsck 第一步就会很慢,因为它要检查所有的inode,现在Ext4 给每个组的inode 表中都添加了一份未使用inode 的列表,今后fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的inode 了。以前執行fsck第一步就會很慢,因為它要檢查所有的inode,現在Ext4給每個組的inode表中都添加了一份未使用inode的列表,今後fsck Ext4文件系統就可以跳過它們而只去檢查那些在用的inode了。
日誌校驗。 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。日誌是最常用的部分,也極易導致磁盤硬件故障,而從損壞的日誌中恢復數據會導致更多的數據損壞。 Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。 Ext4的日誌校驗功能可以很方便地判斷日誌數據是否損壞,而且它將Ext3的兩階段日誌機制合併成一個階段,在增加安全性的同時提高了性能。
“無日誌”(No Journaling)模式。 日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。日誌總歸有一些開銷,Ext4允許關閉日誌,以便某些有特殊需求的用戶可以藉此提升性能。
在線碎片整理。 尽管延迟分配、多块分配和extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。儘管延遲分配、多塊分配和extents能有效減少文件系統碎片,但碎片還是不可避免會產生。 Ext4 支持在线碎片整理,并将提供e4defrag 工具进行个别文件或整个文件系统的碎片整理。 Ext4支持在線碎片整理,並將提供e4defrag工具進行個別文件或整個文件系統的碎片整理。
inode相關特性。 Ext4 支持更大的inode,较之Ext3 默认的inode 大小128 字节,Ext4 为了在inode 中容纳更多的扩展属性(如纳秒时间戳或inode 版本),默认inode 大小为256 字节。 Ext4支持更大的inode,較之Ext3默認的inode大小128字節,Ext4為了在inode中容納更多的擴展屬性(如納秒時間戳或inode版本),默認inode大小為256字節。 Ext4 还支持快速扩展属性(fast extended attributes)和inode 保留(inodes reservation)。 Ext4還支持快速擴展屬性(fast extended attributes)和inode保留(inodes reservation)。
持久預分配(Persistent preallocation)。 P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 P2P軟件為了保證下載文件有足夠的空間存放,常常會預先創建一個與所下載文件大小相同的空文件,以免未來的數小時或數天之內磁盤空間不足導致下載失敗。 Ext4 在文件系统层面实现了持久预分配并提供相应的API(libc 中的posix_fallocate()),比应用软件自己实现更有效率。 Ext4在文件系統層面實現了持久預分配並提供相應的API(libc中的posix_fallocate()),比應用軟件自己實現更有效率。
默認啟用barrier。 磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写commit 记录,若commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。磁盤上配有內部緩存,以便重新調整批量數據的寫操作順序,優化寫入性能,因此文件系統必須在日誌數據寫入磁盤之後才能寫commit記錄,若commit記錄寫入在先,而日誌有可能損壞,那麼就會影響數據完整性。 Ext4 默认启用barrier,只有当barrier 之前的数据全部写入磁盘,才能写barrier 之后的数据。 Ext4默認啟用barrier,只有當barrier之前的數據全部寫入磁盤,才能寫barrier之後的數據。 (可通过"mount -o barrier=0" 命令禁用该特性。) (可通過"mount -o barrier=0"命令禁用該特性。)
使用 Ext4
在 GNU/Linux 中,管理 Ext4 檔案系統的工作主要使用 e2fsprogs 中的一系列工具。
格式化存儲裝置成為 Ext4 檔案系統 - 可以使用命令 mke2fs -T ext4 或 mkfs.ext4。
升級 ext2/ext3 檔案系統至 ext4
使用外部日誌 (external journal) - 可以增加檔案系統效能。
檢查檔案系統 - 可以使用命令 e2fsck 或 fsck.ext4。
設定常規檔案系統檢查
設定檔案系統的系統管理員保留空間 - Ext4 檔案系統預設保留 5% 的空間給系統管理員工作之用,這空間大小可以使用命令 tune2fs -m 或 tune2fs -r 改變。
設定錯誤處理方案 - 可以使用命令 tune2fs -e 改變。
顯示檔案系統標簽 - 可以使用命令 e2label。
改變檔案系統標簽 - 可以使用命令 e2label 或 tune2fs -L。
設定檔案系統 UUID - 可以使用命令 tune2fs -U。
|