如果有足夠的可用磁碟空間,使用相同的磁碟,而不交換數據,如何將現有的 RAID5(單奇偶校驗)btrfs 設定轉換為雙奇偶校驗 RAID6 配置?
基本上,應該只是刪除一個磁碟並保留一個冗餘驅動器,以便 btrfs 重新分配剩餘驅動器上的所有內容並重新添加該刪除的磁碟?
那麼推薦的流程是什麼呢?
我在想一些類似的事情
btrfs device delete /dev/sdx /mnt/fs
btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs
btrfs device add /dev/sdx /mnt/fs
我是否需要刪除並添加磁碟,或者我可以直接轉換設定嗎? IE
btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs
答案1
https://www.howtoforge.com/a-beginners-guide-to-btrfs-p2
這聲稱假設您有足夠的可用空間,您可以更改正在運行的陣列上的 raid 等級。確保您運行的是最新的穩定 Linux 核心。
範例(來自連結): btrfs Balance start -dconvert=raid1 -mconvert=raid1 /mnt
-dconvert 用於數據
-mconvert 用於元檔案(你想要複製它,相信我)
/mnt 是安裝 BTRFS 磁碟區的位置。你可以在未安裝的情況下執行此操作,但我還沒有嘗試過,而且我想保持誠實。
您有 raid0、raid1、raid5 和 raid6。如果你有足夠的可用空間,我相信對於 raid6 來說它是 n-2 或驅動器數量 [可用空間] 減 2。不過,使用 BTRFS,您可以少花點錢,而是使用數據來進行測量。如果您儲存少量數據,則可以使用少於可接受數量的磁碟機來實現類似於 raid6 的功能。可能,但不建議。
另請注意,這將需要一段時間,具體取決於驅動器上有多少資料。平衡失敗的可能性也很小,要么徹底殺死陣列,要么將其置於不穩定的唯讀模式。一如既往,保留備份。
答案2
- RAID5 需要 3 個以上磁碟機(n),空間效率為 1-1/n
- RAID6 需要 4 個以上磁碟機(n),空間效率為 1-2/n
1 TiB 陣列的總空間(大約)以及從 RAID5 -> RAID6 的變化 (%):
- 4 個 250GiB ~ 1 TiB -> RAID5 ~ 768 GiB -> RAID6 ~ 512 GiB -> -50%
- 5 x 200GiB ~ 1 TiB -> RAID5 ~ 819.2 GiB -> RAID6 ~ 614.4 GiB -> -25%
- 6 個 170GiB ~ 1 TiB -> RAID5 ~ 853.3 GiB -> RAID6 ~ 682.6 GiB -> -20%
假設您有足夠的可用空間和驅動器,則可以更改正在運行的陣列上的 raid 等級。
- 不要刪除或移除最終陣列中所需的任何驅動器
- 透過刪除 -> 新增 -> 轉換,你將獲得「雙重」平衡
- 在移除/刪除期間,元資料和資料區塊將重新分配到剩餘驅動器,然後您新增一個驅動器,當您轉換為 RAID6 時,該驅動器將需要再次平衡。
如果您需要添加驅動器,請在平衡/轉換之前將其全部添加。
btrfs device add /dev/sdc /mnt
btrfs device add /dev/sdd /mnt
btrfs 平衡「轉換」連結範例(已更新):
btrfs balance start -dusage=90 -dconvert=raid6 -mconvert=raid6 /mnt
-dusage 是資料區塊平衡的使用閾值。
-dconvert 用於數據
-mconvert 用於元數據
/mnt 是安裝 BTRFS 磁碟區的位置。您無法在未安裝的情況下執行此操作。
btrfs 資料和/或元資料可以是:
- 單身的
- 突襲0
- 突襲01
- 突襲1
- 突襲5
- 突襲6
- 突襲1c3
- 突襲1c4
可以使用暫停、恢復、取消或取得狀態的命令。
btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt
注意事項
- 根據驅動器上的資料量,平衡需要時間。
- 平衡可能會失敗並損壞陣列和/或將其置於不穩定的唯讀模式。
- 轉換前備份資料。
- 確保您運行的是最新的穩定 Linux 核心。