如何恢复这个 btrfs 错误?

Sib*_*bbo 5 btrfs rescue

我有一个无法再挂载的 btrfs 文件系统。我重置了计算机,启动后一个 Java 进程崩溃了,显示了一个核心转储,堆栈上有很多 btrfs 内容。在那之后,计算机基本上无法使用,因为启动过程不再起作用。

因此,由于计算机本身无法使用,我决定使用 Ubuntu 14.04 桌面光盘“拯救”文件系统。

我试过了btrfs rescure chunk-recover,它问我是否应该重建块树。我回答是。现在,它似乎完全破碎了。无法再挂载 FS,现在btrfs check输出如下所示:

root@ubuntu:/dev# btrfs check /dev/mapper/encrypted 
checksum verify failed on 20971520 found B89CA074 wanted EDB30E17
checksum verify failed on 20971520 found B89CA074 wanted EDB30E17
checksum verify failed on 20971520 found B89CA074 wanted EDB30E17
checksum verify failed on 20971520 found B89CA074 wanted EDB30E17
Csum didn't match
Couldn't read chunk root
Couldn't open file system
Run Code Online (Sandbox Code Playgroud)

尝试挂载会出现此错误:

[90746.734393] btrfs: device fsid ee55dbb6-e359-42cc-bf76-9973ed5cf4ff devid 1 transid 6036 /dev/dm-0
[90746.844751] btrfs: device fsid ee55dbb6-e359-42cc-bf76-9973ed5cf4ff devid 1 transid 6036 /dev/dm-0
[91441.004757] btrfs: device fsid ee55dbb6-e359-42cc-bf76-9973ed5cf4ff devid 1 transid 6036 /dev/mapper/encrypted
[91441.006465] btrfs: disk space caching is enabled
[91441.008592] btrfs: dm-0 checksum verify failed on 20971520 wanted EDB30E17 found B89CA074 level 0
[91441.009034] btrfs: dm-0 checksum verify failed on 20971520 wanted EDB30E17 found B89CA074 level 0
[91441.009065] btrfs: failed to read chunk root on dm-0
[91441.025106] btrfs: open_ctree failed
Run Code Online (Sandbox Code Playgroud)

我尝试btrfs check使用--repair,--init-csum-tree--init-extent-tree,但没有任何改变。

小智 4

您的校验和不匹配。这不好。

如果您尚未解决此问题,您可以尝试升级 btrfs-tools 并使用 btrfs check --fix-crc ,它应该可以解决您的校验和问题。您可能想首先获取元数据的 btrfs 映像。