我有一台运行 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
情况看来相似的到这个论坛帖子,其中短暂添加了新设备,然后将其删除,但情况并不完全相同。
我的问题是:
- 我可以采取哪些步骤将系统恢复到当前状态(也许通过删除丢失的环回设备),或者
- 如果不可能,我怎样才能恢复一些文件?
系统的大部分内容都已备份,但一些重要文件是在每日备份周期之间创建的,如果无法在此处恢复,则会丢失。