遷移EXT4

来源:http://www.cnblogs.com/similarface/archive/2016/03/02/5235565.html
-Advertisement-
Play Games

http://fanli7.net/a/JAVAbiancheng/ANT/20101003/43604.html 級別: 中級 Roderick W. Smith ,顧問和作家 2008 年6 月02 日 Ext4 是眾多Linux? 文件系統中的最新版本,它將像以前的版本一樣重要和流行。作為Li


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包的一部分,因此需要單獨下載( 參考資料小節提供了鏈接)。



參考資料

學習 


獲得產品和技術 

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

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


討論 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先來點與標題不相關的: CLR支持兩種程式集:弱命名程式集和強命名程式集。 兩者的區別在於強命名程式集使用發佈者的公鑰和私鑰進行簽名。由於程式集被唯一性地標識,所以當應用程式綁定到強命名程式集時,CLR可以應用一些已知安全的策略。 程式集可以採用兩種方式部署:私有或者全局。弱命名程式集只能以私有方式
  • 錯誤狀況: 下麵內容來自網路,自己也另有補充 原因:在安裝Framework v4.0之後,再啟用IIS,導致Framework沒有完全安裝 解決辦法:開始->所有程式->附件->滑鼠右鍵點擊“命令提示符”->以管理員身份運行-> 32位的win7:%windir%\Microsoft.NET\Fr
  • ------------------------------------------------ 重點提示: 1、程式的註釋:單行註釋、多行註釋; ------------------------------------------------ 第1節 .Net學習路線及幾個容易混淆的概念 C#過程
  • 在我們的程式中,經常會有一些耗時較長的運算,為了保證用戶體驗,不引起界面不響應,我們一般會採用多線程操作,讓耗時操作在後臺完成,完成後再進行處理或給出提示,在運行中,也會時時去刷新界面上的進度條等顯示,必要時還要控制後臺線程中斷當前操作。 以前,類似的應用會比較麻煩,需要寫的代碼較多,也很容易出現異
  • 函數功能:該函數將指定的消息發送到一個或多個視窗。此函數為指定的視窗調用視窗程式,直到視窗程式處理完消息再返回。該函數是應用程式和應用程式之間進行消息傳遞的主要手段之一。 函數原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM
  • 完成Model中的findAll/updateAll/deleteAll/insert/update和delete方法~~
  • // 字串含中文 by Aone function IsIncludeChinese(Str: String): Boolean; var i: Integer; UCS4Str: UCS4String; begin Result := False; UCS4Str := UnicodeString
  • 如果要應聘高級開發工程師職務,僅僅懂得Java的基礎知識是遠遠不夠的,還必須懂得常用數據結構、演算法、網路、操作系統等知識。因此本文不會講解具體的技術,筆者綜合自己應聘各大公司的經歷,整理了一份大公司對Java高級開發工程師職位的考核綱要,希望可以幫助到需要的人。 當前,市面上有《Java XX寶典》
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...