Linux Ext4檔案系統的優點介紹

chenfeng發表於2016-01-14

更大的檔案系統和更大的檔案

Ext3檔案系統最多隻能支援32TB的檔案系統和2TB的檔案,根據使用的具體架構和系統設定,實際容量上限可能比這個數字還要低,即只能容納2TB的檔案系統和16GB的檔案。而Ext4的檔案系統容量達到1EB,而檔案容量則達到16TB,這是一個非常大的數字了。對一般的桌上型電腦和伺服器而言,這可能並不重要,但對於大型磁碟陣列的使用者而言,這就非常重要了。

更多的子目錄數量

Ext3目前只支援32000個子目錄,而Ext4取消了這一限制,理論上支援無限數量的子目錄。

更多的塊和i-節點數量

Ext3檔案系統使用32位空間記錄塊數量和i-節點數量,而Ext4檔案系統將它們擴充到64位。

多塊分配

當資料寫入到Ext3檔案系統中時,Ext3的資料塊分配器每次只能分配一個4KB的塊,如果寫一個100MB的檔案就要呼叫25600次資料塊分配器,而Ext4的多塊分配器“Multiblock Allocator(MBAlloc)”支援一次呼叫分配多個資料塊。

永續性預分配

如果一個應用程式需要在實際使用磁碟空間之前對它進行分配,大部分檔案系統都是透過向未使用的磁碟空間寫入0來實現分配,比如P2P軟體。為了保證下載檔案有足夠的空間存放,常常會預先建立一個與所下載檔案大小相同的空檔案,以免未來的數小時或數天之內磁碟空間不足導致下載失敗。而Ext4在檔案系統層面實現了持久預分配並提供相應的API,比應用軟體自己實現更有效率。

延遲分配

Ext3的資料塊分配策略是儘快分配,而Ext4的策略是儘可能地延遲分配,直到檔案在緩衝中寫完才開始分配資料塊並寫入磁碟,這樣就能最佳化整個檔案的資料塊分配,顯著提升效能。

盤區結構

Ext3檔案系統採用間接對映地址,當操作大檔案時,效率極其低下。例如,一個100MB大小的檔案,在Ext3中要建立25600個資料塊(以每個資料塊大小為4KB為例)的對映表;而Ext4引入了盤區概念,每個盤區為一組連續的資料塊,上述檔案可以透過盤區的方式表示為“該檔案資料儲存在接下來的25600個資料塊中”,提高了訪問效率。

新的i-節點結構

Ext4支援更大的i-節點。之前的Ext3預設的i-節點大小128位元組,Ext4為了在i-節點中容納更多的擴充套件屬性,預設i-節點大小為256位元組。另外,Ext4還支援快速擴充套件屬性和i-節點保留。

日誌校驗功能

日誌是檔案系統最常用的結構,日誌也很容易損壞,而從損壞的日誌中恢復資料會導致更多的資料損壞。Ext4給日誌資料新增了校驗功能,日誌校驗功能可以很方便地判斷日誌資料是否損壞。而且Ext4將Ext3的兩階段日誌機制合併成一個階段,在增加安全性的同時提高了效能 。

支援“無日誌”模式

日誌總歸會佔用一些開銷。Ext4允許關閉日誌,以便某些有特殊需求的使用者可以藉此提升效能。

預設啟用Barrier

磁碟上配有內部快取,以便重新調整批次資料的寫操作順序,最佳化寫入效能,因此檔案系統必須在日誌資料寫入磁碟之後才能寫Commit記錄。若Commit記錄寫入在先,而日誌有可能損壞,那麼就會影響資料完整性。Ext4檔案系統預設啟用Barrier,只有當Barrier之前的資料全部寫入磁碟,才能寫Barrier之後的資料。

線上碎片整理

儘管延遲分配、多塊分配和盤區功能可以有效減少檔案的碎片,但碎片還是不可避免會產生。Ext4支援線上碎片整理,並將提供e4defrag工具進行個別檔案或整個檔案系統的碎片整理。

支援快速fsck

以前的檔案系統版本執行fsck時很慢,因為它要檢查所有的i-節點,而Ext4給每個塊組的i-節點表中都新增了一份未使用i-節點的列表,所以Ext4檔案系統做一致性檢查時就可以跳過它們而只去檢查哪些在使用的i-節點,從而提高了速度。

支援納秒級時間戳

Ext4之前的擴充套件檔案系統的時間戳都是以秒為單位的,這已經能夠應付大多數設定,但隨著處理器的速度和整合程度(多核處理器)不斷提升,以及Linux開始向其他應用領域發展,它將時間戳的單位提升到納秒。
Ext4給時間範圍增加了兩個位,從而讓時間壽命在延長500年,Ext4的時間戳支援的日期到2514年4月25日,而Ext3只達到2038年1月18日。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-1976341/,如需轉載,請註明出處,否則將追究法律責任。

相關文章