Linux

當需要檢查和修復巨大的文件系統時如何避免停機

  • September 23, 2019

我正在研究建構和執行大型儲存伺服器(必須執行 Linux)的方法.

假設您在數百個使用者使用的單個傳統 Linux 文件系統(EXT4、XFS)上有許多 TB 的數據,但係統突然報告了它的一致性/損壞問題,或者您知道機器最近在骯髒的方式和文件系統損壞很可能。

使文件系統離線並執行文件系統檢查很容易需要數小時/數天的停機時間,因為 EXT4 和 XFS 在正常執行時都無法執行檢查和修復;文件系統需要首先離線。

Linux 如何避免 EXT4/XFS 的這個弱點?如何建構大型儲存伺服器而無需使其離線數小時進行維護?

由於使用了數據/元數據一致性檢查,我已經閱讀了很多關於 ZFS 及其可靠性的資訊。是否可以在不離線的情況下執行一致性檢查並修復 ZFS 文件系統?其他一些新的文件系統或磁碟上數據的其他一些組織會更好嗎?

我正在考慮的另一種選擇是將數據數組劃分為許多(數百個)分區,每個分區都有自己獨立的文件系統,並修復應用程序以知道使用所有這些分區。然後,當需要檢查其中一個時,只需要使那個下線。不是一個完美的解決方案,但總比沒有好。

這個問題有完美的解決方案嗎?

粗略的現實是,遺留文件系統不太適合多 TB 卷。例如,RedHat 推薦EXT4 文件系統不大於 50 TB;時間fsck是限制因素之一。

XFS 的狀態更好,這既是由於速度更快xfs_repair(與舊的相比xfs_check),也是由於正在進行的項目添加了線上清理

EXT4、XFS 和其他文件系統(不包括 BTRFS)可以通過拍攝主卷的快照並fsck針對快照而不是主文件系統本身執行來線上檢查。這將在不需要停機的情況下擷取任何嚴重錯誤,但它顯然需要在文件系統下安裝一個捲管理器(具有快照功能)。附帶說明一下,這是 RedHat 預設使用 LVM 的主要原因之一。

也就是說,最知名和最可靠的具有線上清理功能的文件系統顯然是 ZFS:它從一開始就被設計為有效地支持非常大的陣列,並且它的線上清理工具非常有效。如果有的話,它有相反的問題:它缺少離線 fsck,這對於糾正一些罕見的錯誤類很有用。

引用自:https://serverfault.com/questions/985145