1.2 Linux 的主要檔案系統

SUSE Linux Enterprise Server 提供了各種檔案系統可供選擇。本節包含有關這些檔案系統的工作方式及其優點的綜覽。

請記住,沒有一種檔案系統能夠完美適合所有類型的應用程式,這點非常重要。每一種檔案系統都有自己特殊的優、缺點,必須考慮在內。此外,即使是最頂級的檔案系統,也無法取代合理的備份策略。

本節中使用的資料完整性資料一致性這兩個詞彙,並不表示使用者空間資料 (應用程式寫入其檔案中的資料) 的一致性。這項資料是否一致必須由應用程式本身控制。

重要: 除非在本節中特別指明,否則設定或變更分割區以及檔案系統所需的一切步驟,都可以使用 YaST 來執行。

1.2.1 Ext2

Ext2 的起源要回到 Linux 歷史的古早年代。它的前輩 - 延伸檔案系統,是在 1992 年 4 月落實並整合至 Linux 0.96c。延伸檔案系統已經過多次修改,而到了 Ext2,成為多年來最受歡迎的 Linux 檔案系統。若建立了檔案系統的記錄,因其復原快速,Ext2 就顯得不再那麼重要了。

提供了簡短的 Ext2 功能摘要,可協助您瞭解為什麼它過去是 (目前在某些領域依然是) 很多 Linux 使用者非常喜愛的 Linux 檔案系統。

穩固性和速度

Ext2 經過多次改良和密集測試,已經算是老前輩了。這可能是為什麼人們通常稱它堅如磐石的原因所在。在檔案系統無法完全取消掛接而導致系統中斷後,e2fsck 會開始分析檔案系統資料。中繼資料會進入一致性狀態,而待處理的檔案或資料區塊會寫入指定的目錄 (稱為 lost+found)。與日誌檔案系統相比,e2fsck 會分析整個檔案系統,不只是中繼資料最近修改的位元而已。這比檢查日誌檔案系統的記錄資料,要花費更多時間。按照檔案系統大小,此程序會花半小時或更長的時間。因此,不要為任何需要高可用性的伺服器選擇 Ext2。不過,因為 Ext2 不會維護日誌,而且使用相當少的記憶體,因此有時候比其他檔案系統較快速一些。

升級容易

因為 Ext3 是以 Ext2 程式碼為基礎,而且共用它的磁碟上格式和中繼資料格式,所以從 Ext2 升級至 Ext3 十分容易。

1.2.2 Ext3

Ext3 是由 Stephen Tweedie 設計。不像其他所有下一代檔案系統,Ext3 不依循全新的設計原則。它是以 Ext2 為基礎。這兩個檔案系統彼此關係十分密切。Ext3 檔案系統可以輕易地建立在 Ext2 檔案系統的最上層。Ext2 和 Ext3 最重要的差別是 Ext3 支援日誌處理。簡而言之,Ext3 提供三個主要優點:

可輕易從 Ext2 升級,並具有很高的可靠性

Ext3 以 Ext2 的程式碼做為強大的基礎,因此可以成為眾人喝采的下一代檔案系統。在 Ext3 中完美融合了 Ext2 的可靠性和穩固性特點,同時具備記錄檔案系統的優點。不像轉換至其他日誌檔案系統 (例如 ReiserFS、JFS 或 XFS) 那麼冗長乏味 (備份整個檔案系統,然後從頭建立),轉換至 Ext3 只是數分鐘的事。它還非常安全,因為從頭開始重新建立整個檔案系統,並不能確保萬無一失。考慮一下等候升級至記錄檔案系統的現有 Ext2 系統數量,您可以輕易瞭解為什麼 Ext3 對很多系統管理員都具有一定重要性。從 Ext3 降級至 Ext2 就和升級一樣容易。只要乾淨取消掛載 Ext3 檔案系統,然後重新掛載成 Ext2 檔案系統就可以了。

可靠性和效能

其他日誌檔案系統,有些會依照僅中繼資料日誌方法。這表示您的中繼資料會始終維持一致的狀態,但這並不能自動保證檔案系統資料本身的一致性。Ext3 的設計是妥善管理中繼資料和資料二者。管理的程度可以自定。在 data=journal 模式啟用 Ext3,可提供最大的安全性 (資料整合性),不過因為中繼資料和資料是記錄為日誌,所以系統速度會減慢。較新的方法是使用 data=ordered 模式,這樣可以確定資料和中繼資料整合性,不過僅限中繼資料使用日誌處理。檔案系統驅動程式會收集所有對應至某一中繼資料更新的所有資料區塊。更新中繼資料前,這些資料區塊會寫入硬碟。如此一來便可以達到中繼資料和資料的一致性,不會犧牲效能。第三個要使用的選項是 data=writeback,允許在其中繼資料已經提交至日誌後,將資料寫入主要檔案系統。一般認為此選項的效能最好。不過,它可以允許在損毀和復原舊資料後,重新顯示舊資料,同時又維護內部檔案系統整合性。Ext3 使用 data=ordered 選項做為預設值。

將 Ext2 檔案系統轉換成 Ext3

若要將 Ext2 檔案系統轉換為 Ext3,請執行下列步驟:

  1. root 使用者身分執行 tune2fs -j 來建立 Ext3 日誌。

    這樣會以預設參數建立 Ext3 日誌。

    若要指定日誌的大小以及存放它的設備,請執行 tune2fs -J,不要同時使用需要的日誌選項 size=device=。如需 tune2fs 程式的詳細資訊,請參閱 tune2fs 線上文件。

  2. root 使用者身分編輯檔案 /etc/fstab,將為對應分割區指定的檔案系統類型從 ext2 變更為 ext3,然後儲存變更。

    這可確保 Ext3 檔案系統會被識別為 Ext3 檔案系統。完成的變更會在下次啟動時生效。

  3. 若要開機設定為 Ext3 分割區的根目錄檔案系統,請在 initrd 中加入模組 ext3jbd

    1. root 身分編輯 /etc/sysconfig/kernel,將 ext3jbd 新增至 INITRD_MODULES 變數,然後儲存變更。

    2. 執行 mkinitrd 指令。

      這樣就可以建置新的 initrd,並準備使用。

  4. 重新啟動系統。

1.2.3 Oracle Cluster File System 2

OCFS2 為日誌式檔案系統,專為叢集設定量身訂做。與標準的單節點檔案系統 (例如 Ext3) 不同,OCFS2 可管理數個節點。OCFS2 允許透過共用儲存分佈檔案系統,例如 SAN 或多重路徑設定。

OCFS2 設定中的每個節點都可以同時讀取和寫入所有資料。這要求 OCFS2 可以識別業集,也就是說 OCFS2 必須包含一種方法,用於確定叢集的組成節點,及確認這些節點是否實際存在,是否可以使用。為計算叢集的成員,OCFS2 包含了節點管理員。為監看叢集中節點的可用性,OCFS2 包含了簡易的活動訊號實作。為避免各種節點直接存取檔案系統而產生的問題,OCFS2 還包含了分散式鎖定管理員。節點間的通訊由 TCP 訊息系統處理。

OCFS2 包含的主要功能與優點為︰

  • 中繼資料快取與日誌記錄

  • 對資料庫檔案提供非同步且直接 I/O 支援,以加強資料庫效能

  • 支援高達 4 KB 的多區塊大小 (各磁碟區可具有不同的區塊大小),磁碟區的最大大小為 16 TB

  • 跨節點資料檔案一致性

  • 支援高達 255 個叢集節點

如需有關 OCFS2 更深入詳盡的資訊,請參閱《高可用性儲存基礎結構管理指南》

1.2.4 ReiserFS

正式說來,2.4 核心版本的重要功能之一,ReiserFS,自其 6.4 版以來早已被 2.2.x SUSE 核心當作核心修補程式使用。ReiserFS 是由 Hans Reiser 與 Namesys 開發團隊所設計。ReiserFS 已經證實是 Ext2 的強大替代方案。其重要優點是磁碟空間使用率佳,磁碟存取效能好,當機復原快,以及使用資料記錄確保可靠性。

更佳的磁碟空間利用

在 ReiserFS 中,所有資料皆按照名為 B*-平衡樹的結構整理。樹狀結構提供更佳的磁碟空間利用,因為小的檔案可以直接儲存在 B* 樹葉節點,而不是儲存在別處,而且只維護實際磁碟位置的指標。此外,未以 1 或 4 kB 的區塊配置儲存體,而是按需要的正確大小。另一項優點則依賴 inode 的動態配置。這樣會使得檔案系統比傳統的檔案系統更有彈性,例如在 Ext2,inode 密度必須在檔案系統建立期間指定。

更佳的磁碟存取效能

至於小的檔案,檔案資料和 stat_data (inode) 資訊兩者通常儲存在一起。它們可以使用單一磁碟 I/O 作業來讀取,這表示您只需要存取一次磁碟,便能擷取所有需要的資訊。

快速損毀復原

使用日誌來追蹤最新的中繼資料變更,只要幾秒便能檢查檔案系統,即使很大的檔案系統也沒問題。

透過資料日誌的可靠性

ReiserFS 還支援資料記錄和排序資料模式,此模式類似Ext3 中簡述的概念。預設模式為 data=ordered,這個模式可以確保資料和中繼資料的完整性,但是日誌僅適用中繼資料。

1.2.5 XFS

1990 年代早期,SGI 開始對原先要當成 IRIX OS 的檔案系統 XFS 進行研發。XFS 隱含的目標是建立高效能 64 位元記錄檔案系統,以滿足嚴格的計算挑戰。XFS 對於操控大型檔案以及執行高階硬體,具備良好功能。不過,XFS 還是有一個缺點。和 ReiserFS 一樣,XFS 專注於中繼資料完整性,而不重視資料的完整性。

以下是 XFS 主要功能的快速回顧,這些正是為什麼它在高階計算中比其他記錄檔案系統更具競爭力的證明。

透過使用配置群組取得的高擴充性

建立 XFS 檔案系統時,檔案系統所屬的區塊設備,會分割成 8 或更多等同大小的線性區域。這些稱為配置群組。每一個配置群組管理自己的 inode 以及可用的磁碟空間。事實上,配置群組可以看成是檔案系統中的檔案系統。因為配置群組彼此各自獨立,所以核心可以同時處理一個以上的配置群組。此功能是 XFS 具備優良延展性的關鍵。當然,獨立配置群組的概念也符合多處理器系統的需求。

透過有效磁碟空間管理取得高效能

可用空間和 inode 是由配置群組裡面的 B + 樹處理。使用 B+ 樹可大大增強 XFS 的效能和延展性。XFS 使用延遲配置,透過將程序分為兩個部分來處理配置。待處理的交易會儲存在 RAM 並保留適當的空間。XFS 仍然沒有決定資料儲存的確切位置 (在檔案系統區塊中)。此決策會盡量延緩至最後時刻。部分暫時資料永遠不會儲存至磁碟,因為當 XFS 決定了其實際儲存位置時,它早已過時了。採用這種方式,XFS 將增加寫入效能並減少檔案系統片段。因為比起其他檔案系統,延遲配置會導致較少的寫入事件,這樣在寫入過程中若是發生當機就會導致較嚴重的資料遺失。

預先配置來避免檔案系統零散化

寫入資料至檔案系統前,XFS 會保留 (預先配置) 檔案需要的可用空間。因此,可大幅降低檔案系統零散化。因為檔案的內容是分佈在檔案系統中,所以效能就會提高。