迁移EXT4

http://fanli7.net/a/JAVAbiancheng/ANT/20101003/43604.html

級別: 中級

Roderick W. Smith ,顧問和作家

2008 年6 月02 日

Ext4 是眾多Linux? 文件系統中的最新版本,它將像以前的版本一樣重要和流行。作為Linux 系統管理員,您應該知道遷移到ext4 的優缺點和基本步驟。本文將介紹何時應採用ext4、如何在ext4 中使用傳統的文件系統維護工具以及如何充分利用該文件系統。

Ext4的功能

Linux 支持幾個不同的文件系統。這些文件系統中,一些是專用的網絡文件系統或為其他操作系統開發的文件系統,但絕大部分還是用作Linux本地文件系統—您可以將Linux根( / )和系統目錄放在這種文件系統裡。目前,這一類文件系統包括ext2、ext3、ReiserFS、XFS 和Journaled File System (JFS)。但是文件系統一直在不斷設計和開發中,新的文件系統也將陸續問世。

目前正在開發的最重要的Linux 文件系統是ext4 — 它是專門為Linux 開發的原始的擴展文件系統(ext 或extfs)的第四版。由於繼承了以前版本,ext4在不久的將來很可能會成為一個重要的Linux標准文件系統(可能標准文件系統)。

Ext4與ext3的對比

擴展文件系統(ext 或extfs)第四版產生的原因是開發人員在ext3 中併入了新的高級功能。但在實現的過程出現了幾個問題:

  • 一些新功能違背向後兼容性。
  • Ext3 代碼變得更加複雜並難以維護。
  • 這些更改使原本十分可靠的ext3 變得不可靠。

由於這些原因,從2006 年6 月份開始,開發人員決定把ext4 從ext3 中分離出來進行獨立開發。 Ext4 的開發工作從那時起開始進行,但大部分Linux 用戶和管理員都不怎麼注意這件事情。隨著2.6.19 內核在2006 年11 月的發布,ext4 第一次出現在主流內核裡,但是它當時還處於試驗階段(現在還是),因此很多人都忽視了它。

由於還處於開發階段,從2.6.24.4 內核開始,ext4 的功能列表就一直在變動。 Ext4 的當前和預期功能包括從ext3 發展而來的功能,見表1。


表1. Ext4的當前功能和未來功能使它超越了ext3 

功能 優勢
更大的文件系統 Ext3 最多只能容納32 TiB 的文件系統和2 TiB 的文件,根據使用的具體架構和系統設置,實際容量上限可能比這個數字還要低— 或許只能容納2 TiB 的文件系統和16 gibibyte(GiB )的文件。相反,Ext4的文件系統容量達到1024 pebibyte(PiB) ,或1 exbibyte(EiB),而文件容量則達到16 TiB。對一般的台式計算機和服務器而言,這可能並不重要,但對大磁盤陣列的用戶而言,這就非常重要了。
extent extent 是一種提高磁盤文件描述符效率的方法,它能夠減少刪除大型文件所需的時間等等。
持久性預分配 如果一個應用程序需要在實際使用磁盤空間之前對它進行分配,大部分文件系統都是通過向未使用的磁盤空間寫入0 來實現分配。而ext4 允許提前分配,無需進行上述操作,這能提高某些數據庫和多媒體工具的性能。
延遲分配 Ext4 能夠盡量延遲磁盤空間的分配,這能夠提高性能。
更多的子目錄 如果ext3 中一個目錄只能包含32,000 個子目錄還不能滿足您的需求,那麼不必擔心,因為ext4 取消了這一限制。
日誌checksum Ext4 給日誌數據添加了檢查和(checksum)功能,這能提高可靠性和性能。
在線磁盤整理 雖然ext3 一般不會受到碎片的影響,但是存儲在它裡面的文件多少會產生一些碎片。 Ext4 支持在線磁盤整理,這能夠改善總體性能。
恢復刪除文件 雖然這一功能尚未實現,但ext4 將支持恢復刪除文件。當文件被意外刪除時,此功能將極為有用。
更快的文件系統檢查 Ext4添加了新的數據結構,允許fsck在檢查中跳過磁盤中未使用的部分,因此加快了文件系統的檢查。
納秒級時間戳 大部分的文件系統(包括ext3)都包含有精確到秒的時間戳數據,而ext4 把精確度提高到了納秒。一些資料還表明ext4 的時間戳支持的日期達到2514 年4 月25 日,而ext3 只達到2038 年1 月18 日。

由於ext4 目前還處於開發階段,這個功能表還會有所變動。功能列表的一些功能在實際使用中不具備與ext3 的向後兼容性— 即可能無法使用ext3 文件系統類型的代碼掛載ext4 文件系統。但是ext4 保留了向前兼容性— 您可以像掛載ext4 文件系統一樣掛載ext3 文件系統。

ext4的使用對象

Ext4 最為顯著的改進是文件和文件系統的大小。因此,最可能需要ext4 的用戶是那些磁盤空間大小為幾個TB 的用戶。然而表1 中的功能列表還展示了其他一些吸引人的改進。例如,如果您的目錄帶有大量子目錄,或者要求時間戳的精確度小於一秒,您可能希望嘗試使用ext4。

因為ext4 目前處於試驗階段,要使用它就必須重新編譯內核,否則,使用ext4 時將會出現麻煩。事實上,ext4 處於試驗階段意味著只有希望為ext4 的開發做貢獻,或者非常渴望它的某些功能,這些情況下才有必要使用它。如果想在穩定的ext4 發布之前獲得可靠的大磁盤支持,可以考慮使用XFS 或JFS。

當然,ext4 不可能永遠處於試驗階段。它不久將成為一個穩定的文件系統。屆時,ext4 將像ext3 一樣成為所有用戶的最佳選擇,但需要注意幾個問題。首先,ext4 還存在一些獨有的bug,因此當首次發行ext4 穩定版時要多加註意。其次,使用ext4 可能導致一些老版本的工具無法訪問磁盤。這將涉及到緊急恢復工具,因此在確定您使用的工具支持ext4 之前不要進行更新。好的一面是,應該可以從ext3 順利遷移到ext4,如果需要保存現有數據,這將實現輕鬆的轉移。

 



回頁首



編譯和激活ext4支持

了解了這些內容,您大概想體驗一下ext4。但在體驗之前您必須重新編譯內核並添加必要的支持。我推薦使用最新的內核(撰寫本文時的最新版本為2.6.24.4)。先解壓縮內核源代碼並手動設置所有選項或複制舊版本內核的.config文件,接著輸入make oldconfig複製以前的設置,最後輸入首選配置命令(如make xconfig )查看內核選項。您將在主File Systems區域看到ext4選項, Ext4dev/ext4 extended fs support development (EXPERIMENTAL) (該名稱將來很可能會改變,尤其是宣布ext4穩定以後)。注意,必須查看General區域的Prompt for development and/or incomplete code/drivers選項,在這裡也能夠看到ext4選項。

選擇ext4支持之後,保存對內核的修改,通過輸入make編譯內核,並通過輸入make modules_install把模塊安裝為root 。然後將已編譯的內核(在arch/i386/boot或其他目錄下)複製到適當的位置(如/boot ),編輯GRand Unified Bootloader(GRUB)或Linux Loader(LILO)配置並重啟計算機。如果使用的是啟動RAM磁盤,在準備過程中還需用到實用程序mkinitrd 。

除了內核模塊之外,還要查看e2fsprogs的一個版本,它支持ext4文件系統的功能。您可以下載一個壓縮文件( 參考資料一節提供了相關的鏈接)或使用git ,如清單1所示。


清單1.通過git獲取最新版本的e2fsprogs的命令 

                
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
$ cd e2fsprogs
$ git checkout -b pu
Switched to a new branch "pu"
$ git branch 
master
* pu
$ git pull git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git pu

 

注意,您有可能需要使用發行版的包管理器安裝git 。這些工具有待進一步測試,因此不推薦在生產系統中使用,並且就目前而言,並沒有添加很多特別針對ext4 的工具。因此,您可能更喜歡使用隨發行版一起交付的stock e2fsprogs包。

e2fsprogs的編譯過程非常標準:將cd包解壓縮到生成的目錄,輸入./configure ,輸入make ,並輸入(作為root ) make install 。 這個過程將覆蓋發行版的常規e2fsprogs ,因此,只有確定要使用這些工具的最新(也可能是不穩定的)版本時,才執行此操作。

 



回頁首



把ext3遷移到ext4

當系統在ext4 的支持下啟動到內核時,您就可以使用新的文件系統了。為此,必須準備一個分區、獨立磁盤的冗餘陣列(RAID)設備或其他存儲空間。然後就可以把它用作ext4 文件系統並調整文件系統選項。

準備一個設備

如果希望從簡單的入手,可以使用新版或舊版的e2fsprogs包(即mkfs.ext3mkfs.ext4 )附帶的工具格式化分區或其他設備。例如, mkfs.ext4 -j /dev/sda6準備了/dev/sda6分區以供使用。使用mkfs.ext4可以產生一個文件系統,並激活了很多特定於ext4的功能。

目前, e2fsprogs程序還沒有完全跟上內核文件系統的步伐。幸運的是,大部分內核驅動程序的功能都不需要對mkfs.ext4或其他實用程序進行特殊準備。當掛載文件系統時,將激活ext4 功能。如果要在大媒體上使用ext4, 就必須進行大膽的探索,確保記錄和報告所遇到的問題!

如果想把現有的ext2 或ext3 文件系統用作ext4 文件系統,也不難實現。只需要按照隨後描述的方法掛載設備即可。然而如果使用某些新的功能,如extent,該文件系統就不能和ext2 或ext3 的驅動程序一起使用。

使用ext4

要把一個設備用作ext4文件系統,就必須使用ext4dev文件系統類型代碼掛載它(當ext4變得穩定時,文件系統類型代碼將變為ext4 )。例如, mount -t ext4dev /dev/sda6 /mnt/point/mnt/point中把/dev/sda6掛載為ext4文件系統。這些都是ext4 的基本用法。注意,默認的掛載選項啟用了extent,這會導致文件系統在作為ext3 文件系統使用時變得不可用。如果您想嘗試一下ext4同時可以返回到ext3,則使用-o noextents選項禁用extent功能。

一旦掛載以後,可以像其他任何文件系統一樣使用ext4:複製文件、直接創建文件等等。除了遇到bug 或執行基準測試以外,您不會覺察到任何差別。

調整ext4性能選項

可以使用tune2fs程序調優ext4文件系統,與調優ext2或ext3文件系統的方式一樣。目前, tune2fs不提供任何特定於ext4的選項,但是可以使用標準的-O參數設置ext4選項,例如extent 。

當把文件系統掛載為ext4 時,內核開始使用特定於文件系統的功能,如extent。這樣做的結果是不能再把文件系統掛載為ext3 文件系統,至少會變得非常困難。

儘管把ext3 文件系統掛載為ext4 能夠實現特定於ext4 的功能,掛載本身並不把舊數據結構轉換為新的格式。例如,現有文件保持塊狀方式分配, 而不是使用extent 進行分配。因此,舊文件沒有從新功能獲得好處。然而,ext4的開發人員已經考慮到這種情況並且提供了一種解決辦法:可以使用( 正處於試驗階段的)e4defrag工具(隨後將介紹)轉換分配方式來利用extent功能。另一個新工具(尚不可用)將改變inode 的大小,使它變為新的格式。

 



回頁首



維護ext4文件系統

可以使用標準的e2fsprogs工具來維護ext4文件系統,例如使用tune2fs在創建文件系統之後調整選項,使用fsck.ext4執行文件系統檢查等等。這些程序在ext4 與ext3 之間沒有很大的差別。但是,如前面提到的一樣,ext4包含一些能夠提升fsck性能的增強功能。

除了這些工具以外,有一個新工具特別值得注意: e4defrag 。該程序能夠對已掛載的ext4 文件系統進行磁盤碎片整理。這能夠提高性能,尤其是文件系統空間快要用完的時候。同時,這也有利於將ext2/3 樣式的分配轉換為基於extent 的ext4 樣式的分配,因此能夠提高曾經作為ext3 文件系統的文件系統的性能。不幸的是, e4defrag還不是標準的e2fsprogs包的一部分,因此需要單獨下載( 參考資料小節提供了鏈接)。



參考資料

學習 

  • 您可以參閱本文在developerWorks全球站點上的英文原文 。 

  • 參見主要的ext4 wiki獲得額外的信息和鏈接。 

  • 可以在developerWorks Linux專區找到更多針對Linux開發人員的參考資料。瀏覽最流行的文章和教程 。 

  • 在developerWorks上查看所有Linux技巧和Linux教程 。 

  • 隨時關注developerWorks技術活動和網絡廣播 。 


獲得產品和技術 

  • 訂購SEK for Linux ,共含兩張DVD,包含來自DB2?、Lotus?、Rational?、Tivoli?和WebSphere?的針對Linux的最新IBM試用軟件。 

  • 使用可從developerWorks直接下載的IBM試用軟件構建您的下一個Linux開發項目。 


討論 

    • 通過新developerWorks空間中的blog、論壇、podcast和社區主題加入developerWorks社區 。

你可能感兴趣的:(迁移EXT4)