6

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

父 transid 验证失败 109973766144 想要 1823 找到 1821

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

4

5 回答 5

7

当心 btrfs-zero-log

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

btrfs-zero-log并不是一个通用的修复一切的工具尽管许多人在互联网上相信和陈述。您通常不需要使用它。

这个工具只有一个用例:当你有BTRFS: failed to read log tree日志时。

修复父 transid 验证失败的错误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。

于 2021-03-22T12:25:17.320 回答
4

在网上冲浪时,我发现很多答案建议btrfs使用btrfs-zero-log. 我认为btrfsck可能会有所帮助,但最终我发现了官方建议,即先开始一个btrfs scrub,然后再采取其他行动!

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

于 2017-09-28T15:06:46.057 回答
3

我遇到了类似的情况:

  1. 日志充满了parent transid verify failed on 109973766144 wanted 1823 found 1821
  2. dmesg充满了BTRFS info (device sda): no csum found for inode 16485445 start 73728BTRFS warning (device sda): csum failed ino 16485465 off 36864 csum 2268363541 expected csum 0

我的系统配置

  1. 具有 3 个 nfs 共享的 NAS
  2. BTRFS 文件系统
  3. Rockstor 操作系统

  4. RAID 10 设置

附加信息

  1. btrfs 挂载变为只读

  2. btrfs-scrub 失败了ERROR: scrubbing /dev/md124p2 failed for device id 1: ret=-1, errno=5

我通过删除 nfs 导出解决了它。从 /etc/export/ 然后重新安装卷,瞧一切都好了

2018 年 1 月 29 日更新:工作几天后,它又回到了原来的状态

于 2018-01-22T13:47:09.010 回答
0
于 2021-10-14T14:09:59.243 回答
0

类似/相同的问题:

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

.

于 2020-08-19T15:48:13.870 回答