在我成功地将 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
当我无法挂载文件系统时,如何删除子卷、调整大小、平衡?
答案1
发生第一个错误是因为安装时没有足够的空间用于自动平衡。要跳过自动平衡,我可以安装
mount -o skip_balance /dev/sda /mnt
注意挂载选项skip_balance
。
要调整/增加文件系统大小,我必须使用
btrfs fi resize 1:max /mnt
btrfs fi resize 2:max /mnt
其中 1 和 2 是 中列出的设备 ID (devid) btrfs fi show /mnt
,fi
是 的缩写filesystem
,max
是最大大小的特殊关键字。您也可以使用 例如250G
代替max
。
请注意,由于某种原因,该方法btrfs fi resize max /mnt
不起作用。可能是因为硬盘容量不同。
谢谢你,卡米尔!