修复 btrfs“b​​trfs 父传输验证失败...”

Per*_*Per 5 linux filesystems repair btrfs

btrfs fi show 显示所有 btrfs 文件系统,但也有很多错误,例如:

父传输验证失败 109973766144 通缉 1823 找到 1821

文件系统仍然可以卸载和重新挂载。

lif*_*foo 11

当心 btrfs-zero-log

btrfs-zero-log 文档明确指出它不是一个通用工具:

尽管许多人相信并在互联网上声明,btrfs-zero-log并不是一个通用的解决所有问题的工具。您通常不需要使用它。

因此,此工具只有一个用例:当您BTRFS: failed to read log tree在日志中看到该消息时。

修复父 transid 验证失败错误usebackuproot

Linux 3.2 内核于 2012 年 1 月引入了recovery选项。然后,在 2016 年 5 月发布的 4.6 版本中,usebackuproot. 如果您有兴趣,还可以查看提交。

文档清楚地解释了它的作用:

usebackuproot
nousebackuproot

    (since: 4.6, default: off)

    Enable autorecovery attempts if a bad tree root is found at mount time.
    Currently this scans a backup list of several previous tree roots and
    tries to use the first readable. This can be used with read-only mounts as well.

    Note: This option has replaced recovery.
Run Code Online (Sandbox Code Playgroud)

官方常见问题解答部分中的注释指出,这是修复此“parent transid”错误的正确方法:

如何从“父级 transid 验证失败”错误中恢复?

例如:

parent transid verify failed on 29360128 wanted 1486656 found 1486662

如果后两个数字(想要 1486656,找到 1486662)靠得很近(彼此相差大约 20 以内),则安装

-o ro,usebackuproot

可能有帮助。如果只读挂载成功,则在不使用该ro选项的情况下重试读写挂载。

如果 usebackuproot 不起作用,那么使用当前工具基本上无法将 FS 恢复到当前状态。您应该使用 btrfs 恢复来刷新您的备份,然后从它们恢复。

使用命令

这些命令只是 Fedora 安装中出现故障的 btrfs 磁盘的示例。替换/dev/sda2为您的设备和/sysroot安装点

首先尝试只读模式:

mount -t btrfs -o ro,usebackuproot /dev/sda2 /sysroot
Run Code Online (Sandbox Code Playgroud)

如果有效,请在不使用 readonly 命令的情况下重试:

mount -t btrfs -o usebackuproot /dev/sda2 /sysroot
Run Code Online (Sandbox Code Playgroud)

现在,如果该命令运行正常且没有错误,那么您应该能够启动 Linux。


Per*_*Per 5

在网上冲浪时,我发现很多答案btrfs建议使用来清除“内部日志” btrfs-zero-log。我认为btrfsck可以提供帮助,但最终我发现了官方建议,即首先开始,btrfs scrub然后再采取其他行动!

btrfs scrub /path/to/mountpoint因此,如果您仍然可以挂载文件系统,请运行。也许它就像我的情况一样。


W.M*_*.M. 5

首先运行这个命令:

\n

sudo btrfs rescue super-recover -v /dev/sda2

\n

如果它告诉你\xe2\x80\x9cAll supers are valid, no need to recovery\xe2\x80\x9d,你需要运行以下命令来清除文件系统日志树:

\n

sudo btrfs rescue zero-log /dev/sda2

\n

现在您应该能够挂载Btrfs文件系统了。

\n

  • 尽管上面的其他命令不起作用,但该命令对我有用。该命令找到了两个好的超级和一个坏的超级。在我确认文件系统确实是 BTRFS 后,它继续恢复 1 个坏超级。之后,我就能够成功启动了。 (2认同)