將 btrfs 設備添加到 raid1 陣列,增加總大小
我有一個 btrfs 陣列,在 raid 1 中包含兩個 2TB 磁碟。我的空間不足,我想添加兩個 3TB 磁碟。最終設置將是 2x2TB+2x3TB 驅動器。一個驅動器故障冗餘對我來說就足夠了(數據也在其他地方備份)。
我不確定如何繼續:btrfs wiki清楚地說明瞭如何添加新設備,但我不確定這最終會如何看待可用磁碟空間。我最終會得到:
- 2TB 空間,4x 冗餘或
- 具有 2 倍冗餘的 4TB 空間或
- 別的東西?
根據一些研究(例如這個答案),我認為結果應該是 2,這就是我想要的。它是否正確?
另一種可能性是我切換到raid 10設置,如果可以使用不同大小的磁碟。如果這是可取的,我應該如何在不臨時將數據託管在外部儲存上的情況下這樣做?
2TB 空間,4x 冗餘或
來自官方 wiki 的引用詳細解釋了它:
“…… btrfs 首先將所有設備組合到一個儲存池中,然後在創建文件數據時複製這些塊。
RAID-1 目前被定義為“不同設備上所有數據的 2 個副本”。
這與 MD-RAID 和 dmraid 不同……”
— 僅 2 份。
另一種可能性是我切換到raid 10設置,如果可以使用不同大小的磁碟。
再次閱讀相同的來源:“……
RAID-10 建立在這些定義之上。
每個條帶被拆分為恰好 2 個 RAID-1 集,並且這些 RAID-1 集被寫入正好 2 個設備(因此最少 4 個設備)。具有 6 × 1 TB 設備的 btrfs RAID-10 卷將產生 3 TB 可用空間和 2 個所有數據的副本。……”
如果不將數據臨時託管在外部儲存上,我應該怎麼做?
這一切都在“轉換”段落中進行了解釋——從
btrfs balance
掛載點開始,並指定數據和元數據所需的配置文件。簡單地調整他們的例子,它變成了這樣:
btrfs balance start -dconvert=raid10 -mconvert=raid10 /…mntPoint…
我想在您將兩個新磁碟添加到該池中之後不需要中間
balance
- 添加本身不會重新平衡,只有新寫入的數據會使用其他設備。因此,這很簡單:為您喜歡的任何佈局添加並開始平衡。結論
從理論上講,您將獲得最佳結果,因為“ btrfs 首先將所有設備組合到一個儲存池中”
實踐
在比方說尺寸小得多的環回設備上使用設置來測試所有這些將非常簡單。
一個警告
儘管 Btrfs 變得相當成熟,但我聽說與非 RAID-like 模式相比,多設備支持仍然不夠強大。我建議首先在環回設備上嘗試上述轉換*,即使它會成功,至少在其他地方備份最重要的數據*。
另外,表達我自己的觀點,我會說我更喜歡將這樣的設置轉換為傳統的 LVM-2 而不是 LSR(Linux 軟體 RAID 又名 MD),這將使您能夠創建邏輯子卷以供以後與 Btrfs 一起使用或任何其他所需的FS。