是否可以使用相同的磁碟將 btrfs RAID5 轉換為 RAID6 而不會遺失資料?

是否可以使用相同的磁碟將 btrfs RAID5 轉換為 RAID6 而不會遺失資料?

如果有足夠的可用磁碟空間,使用相同的磁碟,而不交換數據,如何將現有的 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

RAID6 - 維基百科

  • 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.wiki.kernel.org

btrfs 平衡「轉換」連結範例(已更新):

btrfs balance start -dusage=90 -dconvert=raid6 -mconvert=raid6 /mnt

-dusage 是資料區塊平衡的使用閾值。

-dconvert 用於數據

-mconvert 用於元數據

/mnt 是安裝 BTRFS 磁碟區的位置。您無法在未安裝的情況下執行此操作。

btrfs 資料和/或元資料可以是:

  1. 單身的
  2. 突襲0
  3. 突襲01
  4. 突襲1
  5. 突襲5
  6. 突襲6
  7. 突襲1c3
  8. 突襲1c4

可以使用暫停、恢復、取消或取得狀態的命令。

btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt

注意事項

  1. 根據驅動器上的資料量,平衡需要時間。
  2. 平衡可能會失敗並損壞陣列和/或將其置於不穩定的唯讀模式。
  3. 轉換前備份資料。
  4. 確保您運行的是最新的穩定 Linux 核心。

相關內容