Per*_*Per 5 linux filesystems repair btrfs
btrfs fi show 显示所有 btrfs 文件系统,但也有很多错误,例如:
父传输验证失败 109973766144 通缉 1823 找到 1821
文件系统仍然可以卸载和重新挂载。
lif*_*foo 11
btrfs-zero-log 文档明确指出它不是一个通用工具:
尽管许多人相信并在互联网上声明,btrfs-zero-log并不是一个通用的解决所有问题的工具。您通常不需要使用它。
因此,此工具只有一个用例:当您BTRFS: failed to read log tree在日志中看到该消息时。
usebackuprootLinux 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。
在网上冲浪时,我发现很多答案btrfs建议使用来清除“内部日志” btrfs-zero-log。我认为btrfsck可以提供帮助,但最终我发现了官方建议,即首先开始,btrfs scrub然后再采取其他行动!
btrfs scrub /path/to/mountpoint因此,如果您仍然可以挂载文件系统,请运行。也许它就像我的情况一样。
首先运行这个命令:
\nsudo btrfs rescue super-recover -v /dev/sda2
如果它告诉你\xe2\x80\x9cAll supers are valid, no need to recovery\xe2\x80\x9d,你需要运行以下命令来清除文件系统日志树:
\nsudo btrfs rescue zero-log /dev/sda2
现在您应该能够挂载Btrfs文件系统了。
| 归档时间: |
|
| 查看次数: |
11495 次 |
| 最近记录: |