Btrfs

BTRFS:無法掛載:errno=-28 沒有剩餘空間(替換/平衡後)

  • January 25, 2021

在我成功地將 RAID1 池的較小磁碟替換為較大的磁碟後,我無法再從池中掛載文件系統(僅使用-o ro)。

mount /dev/sda /mnt

以只讀方式安裝並dmesg | grep BTRFS顯示:

BTRFS info (device sda): disk space caching is enabled
BTRFS info (device sda): has skinny extents
BTRFS info (device sda): checking UUID tree
BTRFS info (device sda): balance: resume -dusage=90 -musage=90 -susage=90
BTRFS info (device sda): relocating block group 170456317952 flags system|raid1
BTRFS info (device sda): relocating block group 1104150528 flags data|raid1
BTRFS info (device sda): found 1 extents
BTRFS info (device sda): relocating block group 30408704 flags metadata|raid1
BTRFS: Transaction aborted (error -28)
BTRFS: error (device sda) in __btrfs_free_extent:3106: errno=-28 No space left
BTRFS info (device sda): forced readonly
BTRFS: error (device sda) in btrfs_run_delayed_refs:2209: errno=-28 No space left
BTRFS info (device sda): 1 enospc errors during balance
BTRFS info (device sda): balance: ended with status: -30

實際磁碟(sda、sdb)足夠大:

# fdisk -l /dev/sd{a,b}*
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
[...]
Disk /dev/sdb: 465.76 GiB, 500107862016 bytes, 976773168 sectors
[...]

# btrfs fi df /mnt
Data, RAID1: total=147.04GiB, used=147.02GiB
System, RAID1: total=8.00MiB, used=48.00KiB
Metadata, RAID1: total=1.00GiB, used=458.84MiB
GlobalReserve, single: total=181.53MiB, used=0.00B

無法掛載文件系統時,如何刪除子卷、調整大小、平衡?

發生第一個錯誤是因為安裝時沒有足夠的空間進行自動平衡。要跳過自動平衡,我可以安裝

mount -o skip_balance /dev/sda /mnt

注意 mount 選項skip_balance

要調整/增加文件系統大小,我必須使用

btrfs fi resize 1:max /mnt
btrfs fi resize 2:max /mnt

其中 1 和 2 是列出的設備 id (devid) btrfs fi show /mntfi是 的縮寫filesystemmax是最大尺寸的特殊關鍵字。您也可以使用 eg250G而不是max.

請注意,btrfs fi resize max /mnt由於某種原因,它不起作用。也許是因為硬碟驅動器的容量不同。

謝謝你,卡米爾!

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