ext4是linux
檔案系統
的 一次革命。在很多方面,ext4相對於ext3的進步要遠超過ext3相對於ext2的進步。ext3相對於 ext2的改進主要在於日誌方面,但是ext4相對於ext3的的改進是更深層次的,是檔案系統資料結構方面的優化。乙個高效的、優秀的、可靠的和極具特 點的檔案系統就此誕生。
相容性任何ext3檔案系統都可以輕鬆的遷移到ext4檔案系統,你只需要在唯讀模式下執行幾條命令即可。這就意味著你完全可以不格式化硬碟、不重灌作業系統、不重灌軟體環境,就能夠順利的公升級到ext4檔案系統。這種公升級方法不會損害到你硬碟上的資料和資料,因為ext4僅會在新的資料上使用,而基本不會改動原有資料。
更大的檔案系統/檔案大小
ext3支援最大16tb的檔案系統,2tb的檔案大小。ext4將支援最大1eb的檔案系統,16tb的檔案大小。
1eb=1024pb=1024*1024tb=1024*1024*1024gb
上述這個特性是由於ext4採用了48位定址。有人會問,為什麼不是64位呢?因為就目前的開發進展來看,實現64位定址存在一些技術限制,但是ext4已經在考慮這個問題了,在不久的將來,ext4將實現完全的64位支援。
子目錄可擴充套件性
目前的ext3中,單個目錄下的子目錄數目的上限是32000個。而在ext4中打破了這種限制,可以建立無限多個子目錄。
extents
傳統的類unix檔案系統,比如ext3,都是使用乙個間接資料塊對映表來記錄每乙個資料塊的分配情況的。但是這種機制對於超大檔案的儲存是 有缺陷 的,特別是當對超大檔案進行刪除和截斷操作時。對映表會對每乙個資料塊進行記錄,而乙個超大檔案將占有很多的資料塊,因此造成對映表將變得無比臃腫,難於 維護。ext4引入了乙個新的概念,叫做「extents」。乙個extents是乙個位址連續的資料塊的集合。比如乙個100mb的檔案將被分配給乙個 單獨的extents,這樣就不用像ext3那樣新增25600個資料塊的記錄(乙個資料塊是4kb)。而超大型檔案會被分解在多個extents裡。
extents的實現提高了檔案系統的效能,減少了檔案碎片。
多塊分配
在ext3中,「將新的資料寫入磁碟的哪些空閒塊」是由塊分配器來控制的。但是ext3的塊分配器存在一定缺陷,那就是它一次只能夠分配乙個資料塊 (4kb),這就意味著,如果系統需要向磁碟中寫入100mb的資料,那麼需要呼叫塊分配器25600次,而且由於塊分配器無法獲知總的分配塊數,所以也 無法對分配空間和分配位置進行優化。
在ext4中,使用了「多塊分配器」,即一次呼叫可以分配多個資料塊,這種機制提高了系統的效能,而且使得分配器有了充足的優化空間。
延遲分配
延遲分配(delayed allocation)是一項僅僅少數現代檔案系統才具有的優秀特性,比如xfs、zfs、btrfs(better fs)以及reiser4。它能夠盡可能的積累更多的資料塊再分配出去,相對比,傳統的檔案系統則會盡快的將資料塊分配出去,如ext3,reiser3 等。
這項特性會和extents特性以及多塊分配特性相結合,使得磁碟io效能得到顯著提高。
更快速的fsck
在ext3中,fsck本身是個速度很慢的操作,因為它要檢查檔案系統裡的每乙個「i節點」。但是,ext4會維護乙個未使用的「i節點」表,在進行 fsck操作時,會跳過錶中節點,只檢查正在使用中的i節點。這種機制使得fsck的效率提高為原有ext3檔案系統的2到20倍。不過,你要注意到一 點,那就是這個未使用的i節點表是由fsck來維護的,而不是由ext4,因此你必須要首先執行一次fsck來生成,這樣,在下次再執行fsck時才可以 享受提速。(雖然表是由fsck來維護的,但你還是需要從ext3公升級到ext4才能夠享受這項功能)
日誌校驗
目前的ext4檔案系統是第乙個穩定版本,整個的開發進度和發布計畫都被放緩了,就是為了保證使用者可以享受到「和使用ext3同等級」的穩定。
乙個非常重要的事情是,目前還沒有ext4 grub。更準確的說,就是目前沒有grub支援ext4。換句話說,就是你目前的發行版本的grub不支援ext4。目前我們的grub2正在開發之 中,在ubuntu和debian發行版中已經有了grub2的grub-pc軟體包了,但是目前官方仍沒有宣布正式支援。在google soc中也包含了乙個開發版本,且發布了相關補丁。你可以試用一下,你自己選擇嘍。
在你的發行版本的下乙個新版本之中,可能會有相關的支援出現。所以安全起見,盡量保持你的/boot目錄為ext3檔案系統型別。
警告歸警告,轉換到ext4其實是件很容易的事情,如下方法均可:
1 建立乙個全新的ext4檔案系統。
這是最簡單的方法,你只需要公升級你的e2fsprogs到ext4,並且使用mkfs.ext4命令建立檔案系統即可。
2 從ext3遷移到ext4。
你需要使用tune2fs命令和fsck命令,並且當前檔案系統需要被解除安裝才可以。執行命令
tune2fs -o extents,uninit_bg,dir_index /dev/yourfilesystem
此後,你務必執行fsck命令,否則ext4將無法掛載你的新檔案系統。在fsck過程中,可能會有一些error需要你的確認。你可以考慮使用 -p選項,來告訴fsck你想要的是「automatic repair」,即fsck -pf /dev/yourfilesystem
3 使用ext4來掛載乙個ext3檔案系統。
你可以使用mount -t ext4 /dev/yourpartition /mnt來將乙個ext3檔案系統用ext4來掛載,但你將享受不到那些需要改變磁碟格式才可以享受得到的特性,比如extents。你可以享受到的只有 那些不需要改變磁碟格式即可享受得到的特性,比如多塊分配、延遲分配等。我們當然不建議您這麼做,因為ext4的優秀特性,您將無法體會….
over~
翻譯/aleng@chinaunix
本文翻譯並改進自謝謝原文作者的精彩評析。
ext4檔案系統綜述
從本篇部落格起,我們開始研究現代檔案系統ext4,說其現代是因為其相比傳統檔案系統,有著更現代化的設計。這些先進的特性體現在本文所要敘述的以下方面。ext4是linux檔案系統的一次革命。在很多方面,ext4相對於ext3的進步要遠超過ext3相對於ext2的進步。ext3相對於 ext2的改進主要...
剖析ext4檔案系統
簡介 第 4 個擴充套件檔案系統,即 ext4 是下一代的日誌檔案系統,它與上一代檔案系統 ext3 是向後相容的。儘管 ext4 目前還不是標準檔案系統,但它將成為大部分下一代 linux 發行版的預設檔案系統。了解 ext4,以及它為什麼將成為您最喜歡的新檔案系統。linux 核心的每次發行都伴...
EXT4檔案組織 EXT4檔案系統詳解2
ext4 檔案系統是從 ext2 和 ext3 上發展而來的,這裡我們來分析它們是如何將乙個檔案的內容組織起來,從而在磁碟上 拼湊出乙個檔案 出於對ext4檔案系統相容性的考慮,我們嘗試在先從ext2檔案系統的檔案組織方式說起。ext2檔案節點定義 ext2 檔案節點變數有點多,我們需要關注i bl...