Btrfs 文件系统平衡后不可用

Btrfs 文件系统平衡后不可用

我有一台运行 Debian 10 Buster(测试)的计算机,内核版本:

Linux (none) 4.14.0-3-amd64 #1 SMP Debian 4.14.13-1 (2018-01-14) x86_64 GNU/Linux

根文件系统是具有单个设备的 Btrfs。

最近,我遇到了文件系统变得不平衡的问题,我按照以下步骤操作马克的博客重新平衡事物。我的系统太满了,我必须按照“Balance 无法运行,因为文件系统已满”下的步骤进行操作,包括创建一个 3GB 文件并将dd其作为循环设备添加到 btrfs 文件系统中。这使得它能够成功地达到平衡。

但是,我忘记在重新启动之前删除循环设备。重新启动后,我会进入 initramfs 提示符,并显示以下错误:

BTRFS error: failed to read chunk tree: -5
BTRFS error: open_ctree failed 

这是btrfs filesystem show

bytenr mismatch, want=167954300928
Label: none uuid: <uuid>
             Total devices 2 FS bytes used 91.58GiB
             devid      1 size 151.03GiB used 111.04GiB path /path/to/device
             *** Some devices missing

btrfs check返回:

bytenr mismatch, want=167954300928, have=0

尝试部分挂载文件系统以删除丢失的环回设备,mount -o degraded,ro /path/to/device /mnt返回:

BTRFS error: failed to read block groups: -5
BTRFS error: open_ctree failed

唯一的其他信息dmesg是它抱怨 id 2 的设备丢失。

运行btrfs rescue chunk-recover返回:

Scanning: DONE in dev0
open with broken chunk error
Chunk tree recovery failed

尝试从文件系统恢复btrfs restore /path/to/device /mnt会导致:

bytenr mismatch, want=167954300928, have 0
Could not open root, trying backup super
bytenr mismatch, want=167954300928, have 0
Could not open root, trying backup super
ERROR: superblock bytenr 274877906944 is larger than device size 162164375552
Could not open root, trying backup super

情况看来相似的这个论坛帖子,其中短暂添加了新设备,然后将其删除,但情况并不完全相同。

我的问题是:

  1. 我可以采取哪些步骤将系统恢复到当前状态(也许通过删除丢失的环回设备),或者
  2. 如果不可能,我怎样才能恢复一些文件?

系统的大部分内容都已备份,但一些重要文件是在每日备份周期之间创建的,如果无法在此处恢复,则会丢失。

相关内容