Filesystems

BTRFS 餘額已完成,但仍顯示以“單一”模式儲存的數據

  • January 15, 2017

我有三個驅動器(8TB、4TB、3TB)。最初,我在 8TB 驅動器上創建了一個 btrfs 分區並將我的所有數據複製到那裡。我使用 btrfs device add 添加了 4TB 和 3TB 驅動器,然後進行了余額轉換:

btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

現在平衡完成了,但它仍然在原始驅動器上以“single”和“DUP”模式顯示一些數據。這是來自的輸出btrfs fi usage /mnt/btrfs

Overall:
   Device size:          13.37TiB
   Device allocated:          4.62TiB
   Device unallocated:        8.75TiB
   Device missing:          0.00B
   Used:              4.60TiB
   Free (estimated):          4.98TiB  (min: 4.38TiB)
   Data ratio:               1.76
   Metadata ratio:           2.00
   Global reserve:      512.00MiB  (used: 0.00B)

Data,single: Size:645.00GiB, Used:645.00GiB
  /dev/mapper/8TB   645.00GiB

Data,RAID1: Size:1.98TiB, Used:1.98TiB
  /dev/mapper/3TB   551.00GiB
  /dev/mapper/4TB     1.44TiB
  /dev/mapper/8TB     1.98TiB

Metadata,RAID1: Size:8.00GiB, Used:3.84GiB
  /dev/mapper/4TB     8.00GiB
  /dev/mapper/8TB     8.00GiB

Metadata,DUP: Size:7.00GiB, Used:6.41GiB
  /dev/mapper/8TB    14.00GiB

System,DUP: Size:8.00MiB, Used:400.00KiB
  /dev/mapper/8TB    16.00MiB

Unallocated:
  /dev/mapper/3TB     2.19TiB
  /dev/mapper/4TB     2.19TiB
  /dev/mapper/Seagate_Archive_8TB-btrfs       4.37TiB

問題:

  1. 是否有任何數據儲存在多個磁碟上?那麼,換句話說,如果一個磁碟發生故障,是否會有任何數據失去?如果是這樣,我怎樣才能將這個揮之不去的“單一”儲存數據強制轉換為 RAID1?
  2. 假設“single”和“DUP”數據儲存是不必要的,現在一切都已轉換為raid,有什麼辦法可以清除它們嗎?

編輯:這是一些系統資訊:

uname -a 
Linux 4.8.0-0.bpo.2-amd64 #1 SMP Debian 4.8.11-1~bpo8+1 (2016-12-14) x86_64 GNU/Linux
btrfs --version
btrfs-progs v4.9

我還應該提到這台電腦在平衡期間重新啟動,當它重新啟動時,我根本無法安裝 btrfs 卷(它只會掛起)。我嘗試了許多不同的掛載參數(skip-param、recovery),唯一可行的是將它以只讀方式掛載(使用-o ro)。在經歷了很多挫折之後,我使用 Antergos live USB 啟動,它上面有最新的核心和 btrfs progs,並且安裝沒有問題。我暫停了自動啟動的平衡操作,然後重新啟動到 Debian,它沒有問題地安裝,所以我再次恢復了平衡。

在 btrfs irc 使用者的幫助下,我能夠回答問題 (1)。它似乎與重新啟動和不成功的掛載嘗試無關(仍然不確定那是什麼)。相反,儲存為“單個”的 645GB 數據似乎是在啟動 raid1 轉換後添加到 btrfs 卷的數據。btrfs fi usage因此,在假設所有數據在轉換後都儲存為 raid1 之前檢查輸出似乎是個好習慣。此外,“軟”過濾器將允許您重新平衡未根據目標配置文件儲存的數據,例如我執行:

btrfs balance start --bg -mconvert=raid1,soft /mnt/btrfs
btrfs balance start --bg -dconvert=raid1,soft /mnt/btrfs

(根據使用者在 btrfs irc 論壇上的建議,先對元數據進行平衡,然後對數據進行平衡),這是在將剩餘數據轉換為 raid1 的過程中。

此外,要回答問題 (2),答案是可能會在 raid1 文件系統中以一些“單個”塊結束,但它們的使用率應該為 0。如果發生這種情況,您可以通過執行清理它們

btrfs balance start -dusage=0 -musage=0 /mnt/btrfs

(請參閱btrfs 常見問題解答

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