兩個物理驅動器上的 btrfs:md raid 10 或 btrfs raid 1
所以我有兩個新的 (4TB) 驅動器,它們注定用作桌面系統的主記憶體儲。主要要求是冗餘和可靠性。次要考慮因素是數據讀取速度和可維護性,尤其是在驅動器故障的情況下。
由於此問題範圍之外的原因,選擇的文件系統將是 BTRFS。
我無法決定的是,是在“far 2”配置中創建一個MD raid 10 陣列,頂部是非 raided BTRFS,還是將 BTRFS 中包含的 raid 1 功能用於元數據和文件內容。
任何一個選項都將滿足冗餘要求,並且 BTRFS 包含在 Linux 核心中並且沒有標記為實驗性的事實讓我確信它可能足夠可靠,尤其是在潛在的數據損壞方面(我將其寫為核心 4.10.3剛剛發布)。
到目前為止,我還沒有找到任何專門涵蓋此設置的性能數據。雖然每個設置的管理細節都不同,但我不認為維護兩者的複雜性有很大差異 - 但我說的是到目前為止沒有 btrfs 經驗(但有 md)。
我目前更喜歡 md10 而不是 btrfs raid 1,因為它是raid 10,只能在兩個磁碟上執行,並且與 md1 相比具有明顯的性能優勢。但是,btrfs raid 1 的底層架構與 md1 不同,因為它僅保證每個數據集的兩個副本,即使在具有兩個以上磁碟的設置上也是如此,而不是每個磁碟的完整鏡像。
現在的問題是,這種數據分配自由是否已經以某種方式實現,即 btrfs raid 1 的速度比 md1 有所提高,使其性能與 md10 相當?是否有我應該考慮的配置選項?
第二個問題是,將 raid 架構集成到文件系統本身是否會帶來任何好處?
然後當然我想听聽我關於冗餘、可靠性和可維護性的任何假設是否不正確。
一般來說,在可預見的未來,MD 的表現將優於 BTRFS。BTRFS 目前將寫入序列化到多個設備,並且對於給定的 read() 呼叫僅從一個設備中讀取。
不過,就數據安全而言,您最好使用 BTRFS 進行複製而不是 MD 或 LVM2。由於 BTRFS 完成了內部塊校驗和,它可以在您進行讀取呼叫時判斷數據是否良好,如果不是,它會自動回退到另一個副本,它會正確選擇一個好的副本擦洗時以每個塊為基礎進行塊。
綜上所述,到目前為止,我發現的最佳選擇實際上是在兩個 MD 或 LVM2 RAID0 卷之上以 raid1 模式使用 BTRFS。雖然它的性能不如 MD RAID10 上的 ext4 或 XFS,但它的性能仍然比 BTRFS raid10 實現或在相同設備上在 MD RAID10 上執行單個 BTRFS 設備好得多,並提供相同的數據安全性保證。不幸的是,這確實需要四個設備。