Btrfs

BTRFS 在 RAID1 模式下添加了一個新設備,如何刪除它?

  • December 21, 2019

我的磁碟空間不足,所以我像往常一樣清理了舊快照。這一次,df -h /堅持顯示“沒有可用空間”,同時btrfs fi df /顯示幾個 GB 的空間,所以我決定執行btrfs balance.

btrfs balance由於“空間不足”錯誤而失敗,我搜尋了網路並定向到此部落格文章,該文章建議通過臨時添加一個能夠執行的小型設備(甚至是 USB 隨身碟)來解決此問題btrfs balance,然後在完成後將其刪除。

我將 pendrive 添加到我的 rootfs:

btrfs dev add /dev/sdc1 /

沒有顯示錯誤,現在我有一些可用空間。我跑btrfs balance了,當它完成後,我試圖移除 pendrive:

sudo btrfs dev del /dev/sdc1 /
ERROR: error removing device '/dev/sdc1': unable to go below two devices on raid1

BTRFS 以某種方式決定將 RAID1 配置文件中的驅動器用於元數據和系統數據:

$ sudo btrfs fi usage / 
Overall:
   Device size:         864.53GiB
   Device allocated:        857.05GiB
   Device unallocated:        7.48GiB
   Device missing:          0.00B
   Used:            830.28GiB
   Free (estimated):         24.93GiB  (min: 21.23GiB)
   Data ratio:               1.00
   Metadata ratio:           2.00
   Global reserve:      512.00MiB  (used: 0.00B)

Data,single: Size:828.01GiB, Used:810.56GiB
  /dev/mapper/masa-root     828.01GiB

Data,RAID1: Size:2.02GiB, Used:2.01GiB
  /dev/mapper/masa-root       2.02GiB
  /dev/sdc1       2.02GiB

Data,DUP: Size:2.00GiB, Used:1.94GiB
  /dev/sdc1       4.00GiB

Metadata,RAID1: Size:2.97GiB, Used:131.61MiB
  /dev/mapper/masa-root       2.97GiB
  /dev/sdc1       2.97GiB

Metadata,DUP: Size:7.50GiB, Used:5.78GiB
  /dev/mapper/masa-root      15.01GiB

System,RAID1: Size:32.00MiB, Used:128.00KiB
  /dev/mapper/masa-root      32.00MiB
  /dev/sdc1      32.00MiB

Unallocated:
  /dev/mapper/masa-root       1.97GiB
  /dev/sdc1       5.51GiB

如何正確移除此臨時設備?

來自man btrfs device

刪除設備

設備移除必須滿足配置文件約束,否則命令會失敗。例如:

$ btrfs device remove /dev/sda /mnt
  ERROR: error removing device '/dev/sda': unable to go below two devices on raid1

為了刪除設備,您需要在這種情況下轉換配置文件:

$ btrfs balance start -mconvert=dup -dconvert=single /mnt
$ btrfs device remove /dev/sda /mnt

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