Linux Kernel 2.6.28 正式納入 Ext4,作為 Ext3 的演進版本,Ext4 不僅相容現有 Ext3 磁碟格式,更在元資料結構、分配演算法、擴展性上實現質的飛躍。本文從 13 個核心維度深度對比,並提供線上遷移實戰步驟與效能基準測試建議。
| 特性 | Ext3 | Ext4 | 提升幅度/說明 |
|---|---|---|---|
| 最大檔案系統容量 | 16 TB | 1 EB (1,048,576 TB) | 65,536 倍 |
| 最大單一檔案大小 | 2 TB | 16 TB | 8 倍 |
| 子目錄數量上限 | 32,000 | 無限制 (40 億+) | 突破目錄項限制 |
| 區塊映射機制 | 間接區塊映射 | Extents (連續區塊) | 大檔案 metadata 減少 90%+ |
| 多區塊分配器 | 單區塊 (4KB/次) | mballoc (批次分配) | 寫入系統呼叫減少 99% |
| 延遲分配 | 立即分配 | Delayed Allocation | 減少碎片、優化寫入合併 |
| fsck 速度 | 掃描所有 inode | 跳過未使用 inode 表 | 大型檔案系統快 10~50 倍 |
| 日誌校驗 | 無 | Journal Checksum | 偵測日誌損壞、避免二次災難 |
| 無日誌模式 | 不支援 | 支援 mount -o noload | 特定場景 (資料庫/暫存) 提升 20%+ |
| 線上碎片整理 | 不支援 | e4defrag 檔案/系統級 | 無需離線維護 |
| Inode 大小 | 128 bytes (固定) | 256 bytes (預設可調) | 容納納秒時間戳、擴展屬性、版本 |
| 持久預分配 | 不支援 | posix_fallocate()/fallocate() | P2P/串流下載預留空間零碎片 |
| Barrier 預設開啟 | 否 | 是 | 確保日誌寫入順序、防止斷電資料不一致 |
# 1. 卸載檔案系統 (或以唯讀掛載)
umount /dev/sdb1
# 2. 啟用 Ext4 新特性
tune2fs -O extents,uninit_bg,dir_index,has_journal /dev/sdb1
# 3. 執行 fsck 修正元資料
fsck -pf /dev/sdb1
# 4. 掛載為 ext4
mount -t ext4 /dev/sdb1 /mnt
# 5. 更新 /etc/fstab
/dev/sdb1 /mnt ext4 defaults,noatime 0 2
# 6. 將既有檔案轉換為 extent 格式 (可選,離線執行)
e4defrag -c /mnt
e4defrag /mnt
注意:遷移後舊檔案仍為間接映射,新寫入檔案才使用 extent。執行 e4defrag 可逐步轉換既有檔案。
# 隨機讀寫 4K (模擬資料庫/虛擬機)
fio --name=randrw --ioengine=libaio --rw=randrw --bs=4k --size=10G \
--numjobs=4 --iodepth=32 --runtime=300 --group_reporting \
--filename=/mnt/test.img --direct=1
# 循序寫入 1M (模擬備份/串流)
fio --name=seqwrite --ioengine=libaio --rw=write --bs=1M --size=50G \
--numjobs=1 --iodepth=16 --runtime=300 --group_reporting \
--filename=/mnt/test.img --direct=1
關鍵指標對比:IOPS、延遲百分位 (p99/p99.9)、頻寬、CPU 使用率。
noatime,nodiratime 減少 atime 寫入;資料庫場景可評估 data=writeback (需權衡一致性)。dir_index (HTree) 已優化目錄查找至 O(log n),配合 inode_size=256 表現優於 Ext3。e4defrag -c 檢查碎片度 > 30% 時執行整理;監控 /sys/fs/ext4/<dev>/lifetime_write_kbytes 評估 SSD 壽命。
需要 >16TB 檔案系統或 >2TB 單檔? → 是 → Ext4 (或 XFS/Btrfs)
否
高併發小檔案 (郵件/快取/原始碼)? → 是 → Ext4 (dir_index + noatime)
否
資料庫/虛擬機映像 (大檔案隨機 IO)? → 是 → Ext4 (extents + delayed alloc) 或 XFS
否
一般用途 / 根分區 / /home? → Ext4 (穩定、相容、工具鏈成熟)
Ext4 以成熟穩定、向前相容、工具鏈完善 (e2fsprogs)、社群支援龐大等優勢,持續佔據 Linux 預設檔案系統主流地位。理解其內部機制與調優參數,能為儲存架構決策提供堅實依據。
Linux 建置撥號伺服器完整實作 (RedHat + mgetty + pppd)
MySQL Windows 安裝失敗五大經典錯誤與解決方案完整指南
Linux SVN 指令完整速查表:從 Checkout 到分支合併
VMware Shared Folders 實現 Windows 宿主機與 Linux 客體機檔案互傳完整設定
在 Motorola Defy 手機上安裝 Arch Linux ARM 完整教程
VirtualBox 安裝與虛擬機創建圖文教程:從零構建 Linux 實驗環境