Linuxkernel 自2.6.28開始正式支持新的文件系統(tǒng)Ext4。Ext4是Ext3的改進(jìn)版,修改了Ext3中部分重要的數(shù)據(jù)結(jié)構(gòu),而不僅僅像Ext3對Ext2那樣,只是增加了一個日志功能而已。Ext4可以提供更佳的性能和可靠性,還有更為豐富的功能:
[color="#3333ff"]
1.與[color="#3333ff"]
Ext3兼容。執(zhí)行若干條命令,就能從Ext3在線遷移到Ext4,而無須重新格式化磁盤或重新安裝系統(tǒng)。原有Ext3數(shù)據(jù)結(jié)構(gòu)照樣保留,Ext4作用于新數(shù)據(jù),當(dāng)然,整個文件系統(tǒng)因此也就獲得了Ext4所支持的更大容量。
[color="#3333ff"]
2.更大的文件系統(tǒng)和更大的文件。較之Ext3目前所支持的最大16TB文件系統(tǒng)和最大2TB文件,Ext4分別支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系統(tǒng),以及16TB的文件。
[color="#3333ff"]
3.無限數(shù)量的子目錄。Ext3目前只支持32,000個子目錄,而Ext4支持無限數(shù)量的子目錄。
[color="#3333ff"]
4.Extents。Ext3采用間接塊映射,當(dāng)操作大文件時,效率極其低下。比如一個100MB大小的文件,在Ext3中要建立25,600個數(shù)據(jù)塊(每個數(shù)據(jù)塊大小為4KB)的映射表。而Ext4引入了現(xiàn)代文件系統(tǒng)中流行的extents概念,每個extent為一組連續(xù)的數(shù)據(jù)塊,上述文件則表示為“該文件數(shù)據(jù)保存在接下來的25,600個數(shù)據(jù)塊中”,提高了不少效率。
[color="#3333ff"]
5.多塊分配。當(dāng)寫入數(shù)據(jù)到 Ext3文件系統(tǒng)中時,Ext3的數(shù)據(jù)塊分配器每次只能分配一個4KB的塊,寫一個100MB文件就要調(diào)用25,600次數(shù)據(jù)塊分配器,而Ext4的多塊分配器“multiblockallocator”(mballoc)支持一次調(diào)用分配多個數(shù)據(jù)塊。
[color="#3333ff"]
6.延遲分配。Ext3的數(shù)據(jù)塊分配策略是盡快分配,而Ext4和其它現(xiàn)代文件操作系統(tǒng)的策略是盡可能地延遲分配,直到文件在cache中寫完才開始分配數(shù)據(jù)塊并寫入磁盤,這樣就能優(yōu)化整個文件的數(shù)據(jù)塊分配,與前兩種特性搭配起來可以顯著提升性能。
[color="#3333ff"]
7.快速[color="#3333ff"]
fsck。以前執(zhí)行fsck第一步就會很慢,因為它要檢查所有的inode,現(xiàn)在Ext4給每個組的inode表中都添加了一份未使用inode的列表,今后fsckExt4 文件系統(tǒng)就可以跳過它們而只去檢查那些在用的inode了。
[color="#3333ff"]
8.日志校驗。日志是最常用的部分,也極易導(dǎo)致磁盤硬件故障,而從損壞的日志中恢復(fù)數(shù)據(jù)會導(dǎo)致更多的數(shù)據(jù)損壞。Ext4的日志校驗功能可以很方便地判斷日志數(shù)據(jù)是否損壞,而且它將Ext3的兩階段日志機(jī)制合并成一個階段,在增加安全性的同時提高了性能。
[color="#3333ff"]
9.“無日志”([color="#3333ff"]
NoJournaling)模式。日志總歸有一些開銷,Ext4允許關(guān)閉日志,以便某些有特殊需求的用戶可以借此提升性能。
[color="#3333ff"]
10.在線碎片整理。盡管延遲分配、多塊分配和extents能有效減少文件系統(tǒng)碎片,但碎片還是不可避免會產(chǎn)生。Ext4支持在線碎片整理,并將提供e4defrag工具進(jìn)行個別文件或整個文件系統(tǒng)的碎片整理。
[color="#3333ff"]
11.inode 相關(guān)特性。Ext4支持更大的inode,較之Ext3默認(rèn)的inode大小128字節(jié),Ext4為了在inode中容納更多的擴(kuò)展屬性(如納秒時間戳或inode版本),默認(rèn)inode大小為256字節(jié)。Ext4還支持快速擴(kuò)展屬性(fastextended attributes)和inode保留(inodesreservation)。
[color="#3333ff"]
12.持久預(yù)分配([color="#3333ff"]
Persistentpreallocation)。P2P軟件為了保證下載文件有足夠的空間存放,常常會預(yù)先創(chuàng)建一個與所下載文件大小相同的空文件,以免未來的數(shù)小時或數(shù)天之內(nèi)磁盤空間不足導(dǎo)致下載失敗。Ext4在文件系統(tǒng)層面實現(xiàn)了持久預(yù)分配并提供相應(yīng)的API(libc中的posix_fallocate()),比應(yīng)用軟件自己實現(xiàn)更有效率。
[color="#3333ff"]
13.默認(rèn)啟用[color="#3333ff"]
barrier。磁盤上配有內(nèi)部緩存,以便重新調(diào)整批量數(shù)據(jù)的寫操作順序,優(yōu)化寫入性能,因此文件系統(tǒng)必須在日志數(shù)據(jù)寫入磁盤之后才能寫commit記錄,若commit記錄寫入在先,而日志有可能損壞,那么就會影響數(shù)據(jù)完整性。Ext4默認(rèn)啟用barrier,只有當(dāng)barrier之前的數(shù)據(jù)全部寫入磁盤,才能寫barrier之后的數(shù)據(jù)。(可通過"mount-o barrier=0" 命令禁用該特性。)
Ext4隨Linuxkernel 2.6.28 正式發(fā)布已有數(shù)周,一直苦于找不到測試用的磁盤,正巧年前Intel送來幾塊SSD測試樣品,這兩天就順帶把SSD也測了。測試所使用的Linux內(nèi)核版本為2.6.28.2,測試工具為IOzone3.318。
IOzone
測試命令為:
time/opt/iozone/bin/iozone -a -s 4G -q 256 -y 4>|/root/ext4-iozone-stdout.txt
上述命令的說明如下:
AutoMode
File size set to 4194304 KB
Using Maximum Record Size 256KB
Using Minimum Record Size 4 KB
Command line used:/opt/iozone/bin/iozone -a -s 4G -q 256 -y 4
Output is inKbytes/sec
Time Resolution = 0.000001 seconds.
Processor cachesize set to 1024 Kbytes.
Processor cache line size set to 32bytes.
File stride size set to 17 * record size.
測試結(jié)果除了表明IntelSSD 的讀寫速度快得令人咋舌之外,還可以說明Ext4的各方面性能都超過了上一代Ext3,甚至在大多數(shù)情況下,比沒有日志功能的Ext2還要快出不少:
注:
1.關(guān)于IOzone測試方法,參考BenMartin 的文章:
IOzonefor filesystem performance benchmarking
2.關(guān)于Ext4的相關(guān)內(nèi)容,參考KernelNewbies 專頁:
http://kernelnewbies.org/Ext4
自上面的測試報告發(fā)布以來,社會各界紛紛來電來函,給出了“Ext4我看行”,“Ext4牛牛?!?,“用了Ext4,嘿,還真對得起這塊盤”,“Ext4,碎片去無蹤,性能更出眾”等等熱情洋溢的評論,兄弟我深受鼓舞。在對Ext4頗不低俗的性能進(jìn)行表揚(yáng)的同時,人民群眾還提出了新的要求,希望看到與現(xiàn)有同類文件系統(tǒng)性能橫向比拼的結(jié)果。為了滿足廣大群眾的熱切需求,今天做了Ext2、Ext3、Ext4、XFS、JFS、ReiserFS和Btrfs的全面性能測試,對比結(jié)果如下:
[color="#000000"]本次測試所使用的Linuxkernel 版本為2.6.29-rc3,文件系統(tǒng)性能測試工具為IOzone3.318。
[color="#000000"]從測試結(jié)果可以看出,Ext4的綜合性能位居現(xiàn)有文件系統(tǒng)之首,JFS、ReiserFS在讀性能方面亦有不俗表現(xiàn)。Btrfs的小塊數(shù)據(jù)讀寫性能與平均水平相差甚遠(yuǎn),是導(dǎo)致其本次測試總時間超出平均時間兩倍的主要原因。較之其它成熟的文件系統(tǒng),Btrfs投入生產(chǎn)系統(tǒng)運(yùn)作可能尚需時日。
[color="#000000"]至于一小撮不明真相別有用心的群眾提出還要測NTFS、Vfat、MSDOS等“文件系統(tǒng)”,恕時間有限,不予受理。