Linux

將 mkfs.btrfs 與 raid10 一起使用時的磁碟順序

  • December 6, 2019

我需要用 btrfs 創建一個 raid10 陣列。襲擊將由 btrfs 直接處理(不是 mdadm),因為我相信它為 btrfs 層提供了更多資訊來檢測和處理故障(我說的對嗎?)。

所以,這很容易:到處都有大量的文件。我只需要使用:

mkfs.btrfs -m raid10 -d raid10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

等一下:我明確地從不同的製造商那裡購買了兩套驅動器,因為. 所以我需要知道如何mkfs.btrfs將驅動器分組到集群中。

所以,如果我使用上面的命令範例,我會得到一個

  • (RAID0 over (/dev/sdb + /dev/sdc RAID1) 和 (/dev/sdd + /dev/sde RAID1)),或
  • (RAID0 over (/dev/sdb + /dev/sdd RAID1) 和 (/dev/sdc + /dev/sde RAID1)),
  • 或者,正如我開始懷疑的那樣,以上都不是,raid10 配置文件只是保證每個塊在兩個不同的驅動器上複製,但是驅動器的選擇有點隨機(因為顯然 raid10 btrfs 允許奇數個驅動器,它的行為肯定不像普通的突襲 10)。

這在文件中不是很清楚,包括在相應的手冊頁中。

所以我查了一下,確實,BTRFS raid10 配置文件實際上並不像普通的raid 10。所有驅動器都被平等對待,raid 1 的底層集群沒有組合成一個大的raid 10。

BTRFS 提供的保證,使它看起來像普通的 raid 10,是保證每條數據存在於兩個不同的驅動器上,因此文件系統將在單個驅動器發生故障時倖存下來。與正常 raid 10 相比,它沒有提供的是,如果兩個驅動器發生故障,您很可能已經失去了文件系統,而如果兩個故障驅動器位於不同的集群中,則正常 raid 10 可以繼續存在。

因此,驅動器來自兩個不同的製造商這一事實並沒有真正為 BTRFS raid10 增加任何價值。

但是,好處是(引自SysAdmin 指南):

RAID 分組中的塊不一定總是分配給相同的設備。這允許 Btrfs 在不同大小的塊設備上進行數據複製,並且仍然盡可能多地使用原始空間。使用 RAID-1 和 RAID-10,每個字節的數據只寫入兩個副本,而不管文件系統上實際使用了多少塊設備。

因此,不同尺寸的設備可以以比正常突襲更靈活的方式使用。

另外,我意識到,從 4 個磁碟的陣列開始,BTRFS raid1 和 raid10 配置文件之間似乎沒有太大區別。兩者似乎在可靠性和靈活性方面提供完全相同的保證。我能找到的唯一區別是,使用 raid10,“數據在磁碟之間進行負載平衡”。不管這究竟意味著什麼,它只是提供了額外的性能(這讓我質疑為什麼你想要一個帶有 4 個或更多磁碟的 raid1,但我離題了)。

引用自:https://unix.stackexchange.com/questions/555732