ext與xfs文件系統比較與總結

        最近在複習linux知識,複習到了磁盤管理,如今對各類經常使用文件系統作個總結。如下內容主要參考自百度百科。
node


        centos7.0開始默認文件系統是xfs,centos6是ext4,centos5是ext3
linux


1.EXT2簡介算法


    EXT2第二代擴展文件系統英語:second extended filesystem,縮寫爲 ext2),是LINUX內核所用的文件系統。它開始由Rémy Card設計,用以代替ext,於1993年1月加入linux核心支持之中。ext2 的經典實現爲LINUX內核中的ext2fs文件系統驅動,最大可支持2TB的文件系統,至linux核心2.6版時,擴展到可支持32TB。其餘的實現包括GNU Hurd,Mac OS X (第3方),Darwin (第3方),BSD。ext2爲數個LINUX發行版的默認文件系統,如DebianRed Hat Linux等。   
centos

        其單一文件大小與文件系統自己的容量上限與文件系統自己的簇大小有關,在通常常見的 x86 電腦系統中,簇最大爲 4KB, 則單一文件大小上限爲 2048GB, 而文件系統的容量上限爲 16384GB。緩存

        但因爲目前核心 2.4 所能使用的單一分割區最大隻有 2048GB,實際上能使用的文件系統容量最多也只有 2048GB。安全

        至於Ext3文件系統,它屬於一種日誌文件系統,是對ext2系統的擴展。它兼容ext2,而且從ext2轉換成ext3並不複雜。
服務器


    Ext2文件系統具備如下通常特色:多線程

一、當建立Ext2文件系統時,系統管理員能夠根據預期的文件平均長度來選擇最佳的塊大小(從1024B——4096B)。例如,當文件的平均長度小於幾千字節時,塊的大小爲1024B是最佳的,由於這會產生較少的內部碎片——也就是文件長度與存放塊的磁盤分區有較少的不匹配。另外一方面,大的塊對於 大於幾千字節的文件一般比較合合適,由於這樣的磁盤傳送較少,於是減輕了系統的開銷.
app

二、當建立Ext2文件系統時,系統管理員能夠根據在給定大小的分區上預計存放的文件數來選擇給該分區分配多少個索引節點。這能夠有效地利用磁盤的空間。負載均衡

三、文件系統把磁盤塊分爲組。每組包含存放在相鄰磁道上的數據塊和索引節點。正是這種結構,使得能夠用較少的磁盤平均尋道時間對存放在一個單獨塊組中的文件並行訪問。

四、在磁盤數據塊被實際使用以前,文件系統就把這些塊預分配給普通文件。所以當文件的大小增長時,由於物理上相鄰的幾個塊已被保留,這就減小了文件的碎片。

五、支持快速符號連接。若是符號連接表示一個短路徑名(小於或等於60個字符),就把它存放在索引節點中而不用經過由一個數據塊進行轉換。

    

    Ext2還包含了一些使它既健壯又靈活的特色:

一、文件更新策略的謹慎實現將系統崩潰的影響減到最少。咱們只舉一個例子來體現這個優勢:例如,當給文件建立一個硬連接時,首先增長磁盤索引節點中 的硬連接計數器,而後把這個新的名字加到合適的目錄中。在這種方式下,若是在更新索引節點後而改變這個目錄以前出現一個硬件故障,這樣即便索引節點的計數 器產生錯誤,但目錄是一致的。所以,儘管刪除文件時沒法自動收回文件的數據塊,但並不致使災難性的後果。若是這種處理的順序相反(更新索引節點前改變目 錄),一樣的硬件故障將會致使危險的不一致,刪除原始的硬連接就會從磁盤刪除它的數據塊,但新的目錄項將指向一個不存在的索引節點。若是那個索引節點號以 後又被另外的文件所使用,那麼向這個舊目錄的寫操做將毀壞這個新的文件。

二、在啓動時支持對文件系統的狀態進行自動的一致性檢查。這種檢查是由外部程序e2fsck完成的,這個外部程序不只能夠在系統崩潰以後被激活,也 能夠在一個預約義的文件系統安裝數(每次安裝操做以後對計數器加1)以後被激活,或者在自從最近檢查以來所花的預約義時間以後被激活。

三、支持不可變(immutable)的文件(不能修改、刪除和改名)和僅追加(append-only)的文件(只能把數據追加在文件尾)。

四、既與Unix System V Release 4(SVR4)相兼容,也與新文件的用戶組ID的BSD語義相兼容。在SVR4中,新文件採用建立它的進程的用戶組ID;而在BSD中,新文件繼承包含它 的目錄的用戶組ID。Ext2包含一個安裝選項,由你指定採用哪一種語義。

即便Ext2文件系統是如此成熟、穩定的程序,也還要考慮引入另外幾個負面特性。目前,一些負面特性已新的文件系統或外部補丁避免了。另一些還僅僅處於計劃階段,但在一些狀況下,已經在Ext2的索引節點中爲這些特性引入新的字段。


    最重要的一些特色以下:

    塊片(block fragmentation)

        系統管理員對磁盤的訪問一般選擇較大的塊,由於計算機應用程序經常處理大文件。所以,在大塊上存放小文件就會浪費不少磁盤空間。這個問題能夠經過把幾個文件存放在同一塊的不一樣片上來解決。

透明地處理壓縮和加密文件

這些新的選項(建立一個文件時必須指定)將容許用戶透明地在磁盤上存放壓縮和(或)加密的文件版本。

    邏輯刪除

        一個undelete選項將容許用戶在必要時很容易恢復之前已刪除的文件內容。

    日誌

        日誌避免文件系統在被忽然卸載(例如,做爲系統崩潰的後果)時對其自動進行的耗時檢查。

        實際上,這些特色沒有一個正式地包含在Ext2文件系統中。有人可能說Ext2是這種成功的犧牲品;直到幾年前,它仍然是大多數Linux發佈公司採用的首選文件系統,天天有成千上萬的用戶在使用它,這些用戶會對用其餘文件系統來代替Ext2的任何企圖產生質疑。

        Ext2中缺乏的最突出的功能就是日誌,日誌是高可用服務器必需的功能。爲了平順過渡,日誌沒有引入到Ext2文件系統;可是,咱們在後面 「Ext3文件系統」中會討論,徹底與Ext2兼容的一種新文件系統已經建立,這種文件系統提供了日誌。不真正須要日誌的用戶能夠繼續使用良好而老式的Ext2文件系統,而其餘用戶可能採用這種新的文件系統。如今發行的大部分系統採用Ext3做爲標準的文件系統。


    Ext2文件系統格式

    The Second Extended File System(ext2)文件系統是Linux系統中的標準文件系統,是經過對Minix的文件系統進行擴展而獲得的,其存取文件的性能極好。

    在ext2文件系統中,文件由inode(包含有文件的全部信息)進行惟一標識。一個文件可能對應多個文件名,只有在全部文件名都被刪除後,該文件纔會被刪除。此外,同一文件在磁盤中存放和被打開時所對應的inode是不一樣的,並由內核負責同步。

    ext2文件系統採用三級間接塊來存儲數據塊指針,並以塊(block,默認爲1KB)爲單位分配空間。其磁盤分配策略是儘量將邏輯相鄰的文件分配到磁盤上物理相鄰的塊中,並儘量將碎片分配給儘可能少的文件,以從全局上提升性能。ext2文件系統將同一目錄下的文件(包括目錄)儘量的放在同一個塊組中,但目錄則分佈在各個塊組中以實現負載均衡。在擴展文件時,會盡可能一次性擴展8個連續塊給文件(以預留空間的形式實現)。



        ext3和ext4的最大區別在於,ext3在fsck時須要耗費大量時間(文件越多,時間越長),而ext4在fsck時用的時間會少很是多

        ext4是第四代擴展文件系統(英語:Fourth EXtended filesystem,縮寫爲ext4)是linux系統下的日誌文件系統,是ext3文件系統的後繼版本
        ext4的文件系統容量達到1EB,而文件容量則達到16TB,這是一個很是大的數字了。對通常的臺式機和服務器而言,這可能並不重要,但對於大型磁盤陣列的用戶而言,這就很是重要了。
        ext3目前只支持32000個子目錄,而ext4取消了這一限制,理論上支持無限數量的子目錄



2.xfs簡介
        xfs是一種很是優秀的日誌文件系統,它是SGI公司設計的。xfs被稱爲業界最早進的、最具可升級性的文件系統技術
        xfs是一個64位文件系統,最大支持8EB減1字節的單個文件系統,實際部署時取決於宿主操做系統的最大塊限制。對於一個32位Linux系統,文件和文件系統的大小會被限制在16TB
        xfs在不少方面確實作的比ext4好,ext4受限制於磁盤結構和兼容問題,可擴展性和scalability確實不如xfs,另外xfs通過不少年發展,各類鎖的細化作的也比較好

        XfS文件系統是SGI開發的高級日誌文件系統,XFS極具伸縮性,很是健壯。所幸的是SGI將其移植到了Linux系統中。在linux環境下。目前版本可用的最新XFS文件系統的爲1.2版本,能夠很好地工做在2.4核心下。


    特性:

    主要特性包括如下幾點:

    數據徹底性

    採用XFS文件系統,當意想不到的宕機發生後,首先,因爲文件系統開啓了日誌功能,因此你磁盤上的文件再也不會意外宕機而遭到破壞了。不論目前文件系統上存儲的文件與數據有多少,文件系統均可以   根據所記錄的日誌在很短的時間內迅速恢復磁盤文件內容。

    傳輸特性

    XFS文件系統採用優化算法,日誌記錄對總體文件操做影響很是小。XFS查詢與分配存儲空間很是快。xfs文件系統能連續提供快速的反應時間。筆者曾經對XFS、JFS、Ext三、ReiserFS文件系統進行過測試,XFS文件文件系統的性能表現至關出衆。

    可擴展性

    XFS 是一個全64-bit的文件系統,它能夠支持上百萬T字節的存儲空間。對特大文件及小尺寸文件的支持都表現出衆,支持特大數量的目錄。最大可支持的文件大 小爲263 = 9 x 1018 = 9 exabytes,最大文件系統尺寸爲18 exabytes。

XFS使用高的表結構(B+樹),保證了文件系統能夠快速搜索與快速空間分配。XFS可以持續提供高速操做,文件系統的性能不受目錄中目錄及文件數量的限制。

    傳輸帶寬

    XFS 能以接近裸設備I/O的性能存儲數據。在單個文件系統的測試中,其吞吐量最高可達7GB每秒,對單個文件的讀寫操做,其吞吐量可達4GB每秒。

規範

    容量

XFS是一個64位文件系統,最大支持 8exbibytes 減1字節的單個文件系統,實際部署時取決於宿主操做系統的最大塊限制。對於一個32位Linux系統,文件和文件系統的大小會被限制在 16tebibytes。


    文件系統日誌

    日誌文件系統是一種即便在斷電或者是操做系統崩潰的狀況下保證文件系統一致性的途徑。XFS對文件系統元數據提供了日誌支持。當文件系統更新時,元數據會在實際的磁盤塊被更新以前順序寫入日誌。XFS的日誌被保存在磁盤塊的循環緩衝區上,不會被正常的文件系統操做影響。XFS日誌大小的上限是64k個塊和128MB中的較大值,下限取決於已存在的文件系統和目錄的塊的大小。在外置設備上部署日誌會浪費超過最大日誌大小的空間。XFS日誌也能夠被存在文件系統的數據區(稱爲內置日誌),或者一個額外的設備上(以減小磁盤操做)。

XFS的日誌保存的是在更高層次上描述已進行的操做的「邏輯」實體。相比之下,「物理」日誌存儲每次事務中被修改的塊。爲了保證性能,日誌的更新是異步進行的。當系統崩潰時,崩潰的一瞬間以前所進行的全部操做能夠利用日誌中的數據重作,這使得XFS能保持文件系統的一致性。XFS在掛載文件系統的同時進行恢復,恢復速度與文件系統的大小無關。對於最近被修改但未徹底寫入磁盤的數據,XFS保證在重啓時清零全部未被寫入的數據塊,以防止任何有可能的、由剩餘數據致使的安全隱患(由於雖然從文件系統接口沒法訪問這些數據,但不排除裸設備或裸硬件被直接讀取的可能性)。

        分配組

        XFS文件系統內部被分爲多個「分配組」,它們是文件系統中的等長線性存儲區。每一個分配組各自管理本身的inode和剩餘空間。文件和文件夾能夠跨越分配組。這一機制爲XFS提供了可伸縮性和並行特性——多個線程和進程能夠同時在同一個文件系統上執行I/O操做。這種由分配組帶來的內部分區機制在一個文件系統跨越多個物理設備時特別有用,使得優化對下級存儲部件的吞吐量利用率成爲可能。


    原生備份/恢復工具

    XFS提供了 xfsdump 和 xfsrestore 工具協助備份XFS文件系統中的數據。xfsdump 按inode順序備份一個XFS文件系統。與傳統的UNIX文件系統不一樣,XFS不須要在dump前被卸載;對使用中的XFS文件系統作dump就能夠保證鏡像的一致性。這與XFS對快照的實現不一樣,XFS的dump和restore的過程是能夠被中斷而後繼續的,無須凍結文件系統。xfsdump 甚至提供了高性能的多線程備份操做——它把一次dump拆分紅多個數據流,每一個數據流能夠被髮往不一樣的目的地。不過到目前爲止,Linux還沒有完成對多數據流dump功能的完整移植。


    原子磁盤配額

    XFS的磁盤配額在文件系統被初次掛載時啓用。這解決了一個在其它大多數文件系統中存在的一個競爭問題:要求先掛載文件系統,但直到調用quotaon(8)以前配額不會生效。


性能考慮    :

    寫入屏障

    XFS文件系統默認在掛載時啓用「寫入屏障」的支持。該特性會一個合適的時間沖刷下級存儲設備的寫回緩存,特別是在XFS作日誌寫入操做的時候。這個特性的初衷是保證文件系統的一致性,具體實現卻因設備而異——不是全部的下級硬件都支持緩存沖刷請求。在帶有電池供電緩存的硬件RAID控制器提供的邏輯設備上部署XFS文件系統時,這項特性可能致使明顯的性能退化,由於文件系統的代碼沒法得知這種緩存是非易失性的。若是該控制器又實現了沖刷請求,數據將被沒必要要地頻繁寫入物理磁盤。爲了防止這種問題,對於可以在斷電或發生其它主機故障時保護緩存中數據的設備,應該以 nobarrier 選項掛載XFS文件系統。


    日誌的放置

    XFS文件系統建立時默認使用內置日誌,把日誌和文件系統數據放置在同一個塊設備上。因爲在全部的文件系統寫入發生前都要更新日誌中的元數據,內置日誌可能致使磁盤競爭。在大多數負載下,這種等級的競爭很是低以致於對性能沒有影響。但對於沉重的隨機寫入負載,好比在忙碌的數據塊服務器上,XFS可能由於這種I/O競爭沒法得到最佳性能。另外一個可能提升這個問題的嚴重性的因素是,日誌寫入被要求以同步方式提交——它們必須被徹底寫入,以後對應實際數據的寫入操做才能開始。

若是確實須要最佳的文件系統性能,XFS提供了一個選項,容許把日誌放置在一個分離的物理設備上。這隻須要很小的物理空間。分離的設備有本身的I/O路徑,若是該設備能對同步寫入提供低延遲的路徑,那麼它將給整個文件系統的操做帶來顯著的性能提高。SSD,或帶有寫回緩存的RAID系統是日誌設備的合適候選,它們能知足這種性能要求。不事後者在遭遇斷電時可能下降數據的安全性。要啓用外部日誌,只須以 logdev 選項掛載文件系統,並指定一個合適的日誌設備便可。


    缺點

    XFS文件系統沒法被收縮。

    歷史上XFS上的元數據操做曾比其它文件系統都慢,表現爲在刪除大量小文件時性能糟糕。該性能問題是被Red Hat的XFS開發者Dave Chinner在代碼中定位到的。使用一個叫「延遲記錄」的掛載選項能夠成數量級地提高元數據操做的性能。該選項幾乎把日誌整個存在內存中。Linux內核主線版本2.6.35中做爲一個試驗性特性引入了這個補丁,在2.6.37中使它成爲了一個穩定的特性,並計劃在2.6.39中把它做爲默認的日誌記錄方法。早期測試顯示在有少許線程的環境中其性能接近EXT4,在大量線程的環境下超過了EXT4 。

相關文章
相關標籤/搜索