btrfs fi show
显示所有 btrfs 文件系统,但也显示很多错误,例如:
父 transid 验证失败 109973766144 想要 1823 找到 1821
文件系统仍然可以卸载和重新安装。
btrfs fi show
显示所有 btrfs 文件系统,但也显示很多错误,例如:
父 transid 验证失败 109973766144 想要 1823 找到 1821
文件系统仍然可以卸载和重新安装。
btrfs-zero-log 文档明确指出它不是通用工具:
btrfs-zero-log并不是一个通用的修复一切的工具,尽管许多人在互联网上相信和陈述。您通常不需要使用它。
这个工具只有一个用例:当你有BTRFS: failed to read log tree
日志时。
usebackuproot
2012 年 1 月推出的3.2 Linux 内核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.
官方常见问题解答部分中的注释指出,这是修复此“父 transid”错误的正确方法:
如何从“父 transid 验证失败”错误中恢复?
例如:
parent transid verify failed on 29360128 wanted 1486656 found 1486662
如果后两个数字(想要的 1486656 和找到的 1486662)靠得很近(彼此相距大约 20),则安装
-o ro,usebackuproot
可能会有所帮助。如果只读挂载成功,则在没有
ro
选项的情况下重试,进行读写挂载。如果 usebackuproot 不起作用,那么 FS在其当前状态下使用当前工具基本上是不可恢复的。您应该使用 btrfs restore 来刷新您的备份,然后从它们中恢复。
这些命令只是 Fedora 安装中出现故障的 btrfs 磁盘的示例。
/dev/sda2
用您的设备和/sysroot
挂载点替换
首先尝试只读模式:
mount -t btrfs -o ro,usebackuproot /dev/sda2 /sysroot
如果可行,请在不使用 readonly 命令的情况下重试:
mount -t btrfs -o usebackuproot /dev/sda2 /sysroot
如果这可行,您应该能够启动您的 Linux。
在网上冲浪时,我发现很多答案建议btrfs
使用btrfs-zero-log
. 我认为btrfsck
可能会有所帮助,但最终我发现了官方建议,即先开始一个btrfs scrub
,然后再采取其他行动!
因此,btrfs scrub /path/to/mountpoint
如果您仍然可以挂载文件系统,请运行。也许它就像我的情况一样。
我遇到了类似的情况:
parent transid verify failed on 109973766144 wanted 1823 found 1821
BTRFS info (device sda): no csum found for inode 16485445 start 73728
和BTRFS warning (device sda): csum failed ino 16485465 off 36864 csum 2268363541 expected csum 0
我的系统配置
Rockstor 操作系统
RAID 10 设置
附加信息
btrfs 挂载变为只读
btrfs-scrub 失败了ERROR: scrubbing /dev/md124p2 failed for device id 1: ret=-1, errno=5
我通过删除 nfs 导出解决了它。从 /etc/export/ 然后重新安装卷,瞧一切都好了
2018 年 1 月 29 日更新:工作几天后,它又回到了原来的状态
类似/相同的问题:
parent transid verify failed on 29605888 wanted 50 found 46
对我来说,btrfs 不再可安装,所以btrfs scrub
没有选择。我/etc/exports
的也是空的。
我试过了btrfsck --init-extent-tree /dev/sda4
,但我仍然得到错误。
...
btrfs check(main+0x82)[0x411ba2]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f8210fab555]
btrfs check[0x411ca8]
Aborted
#
链接到屏幕截图(无法上传): 屏幕截图
似乎唯一的解决方案是将数据恢复到另一个磁盘
btrfs restore /dev/sda4 /mnt/anotherdisk/folder
.