btrfs 无法从磁盘加载 qgroups,错误为 -2(内存不足)

btrfs 无法从磁盘加载 qgroups,错误为 -2(内存不足)

我的 OpenSUSE 分区使用 btrfs,空间不足。我从实时 Ubuntu USB 启动,将 Windows 分区中的部分空间重新分配给 Linux 分区。它成功缩小了 Windows 分区,但当它尝试移动/调整 Linux 分区大小时,btrfs check失败并出现以下错误:

root@ubuntu:~# btrfs check /dev/nvme0n1p5
Opening filesystem to check...
Checking filesystem on /dev/nvme0n1p5
UUID: 6afe1f98-2fc5-4dd7-a22f-0b9e2f514a71
[1/7] checking root items
[2/7] checking extents
[3/7] checking free space cache
cache and super generation don't match, space cache will be invalidated
[4/7] checking fs roots
[5/7] checking only csums items (without verifying data)
[6/7] checking root refs
[7/7] checking quota groups
ERROR: out of memory
ERROR: Loading qgroups from disk: -2
ERROR: failed to check quota groups
found 65546706944 bytes used, error(s) found
total csum bytes: 59958768
total tree bytes: 1668497408
total fs tree bytes: 1538752512
total extent tree bytes: 53886976
btree space waste bytes: 264382931
file data blocks allocated: 321153744896
 referenced 97287462912
extent buffer leak: start 300026445824 len 16384
extent buffer leak: start 300063735808 len 16384

如果我要求它专门检查配额组,我会得到:

# btrfs check -Q /dev/nvme0n1p5
Opening filesystem to check...
Checking filesystem on /dev/nvme0n1p5
UUID: 6afe1f98-2fc5-4dd7-a22f-0b9e2f514a71
Print quota groups for /dev/nvme0n1p5
UUID: 6afe1f98-2fc5-4dd7-a22f-0b9e2f514a71
ERROR: out of memory
ERROR: Loading qgroups from disk: -2
extent buffer leak: start 300026445824 len 16384
extent buffer leak: start 300063735808 len 16384

我已经尝试过重新平衡(这需要添加另一个设备,然后由于缺少可用空间而将其删除),,btrfs check --repairbtrfs check --init-extent-tree,但什么都没有任何变化。

重新平衡后,我只剩下足够的空间来删除​​一些 Docker 镜像并释放空间,但现在我仍然只有大约 5GB 的可用空间。

我在网上能找到的唯一相关内容是Bug 183471 - BTRFS 程序无法修复 btrfs qgroups,并出现内存不足消息,但对于 2016 年的那个错误报告没有进一步的评论。

我并不是 100% 反对重新安装 OpenSUSE,但如果可以修复,我宁愿不这样做。有什么建议吗?

答案1

这个问题已在回复中得到解决我在 OpenSUSE 论坛上的转帖

概括:

  1. 删除子卷以释放更多空间和/或减少现有的块数量
  2. 跑步btrfs balance
  3. btrfs check现在再次工作

相关内容