【问题标题】:fix btrfs "btrfs parent transid verify failed on ..."修复 btrfs “btrfs parent transid verify failed on ...”
【发布时间】:2017-09-28 15:03:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux filesystems repair btrfs


    【解决方案1】:

    小心 btrfs-zero-log

    btrfs-zero-log documentation 明确表示它不是通用工具:

    btrfs-zero-log 不是一个通用的解决一切问题的工具尽管互联网上有很多人相信和陈述。一般不需要使用。

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

    使用usebackuproot 修复 parent transid verify failed 错误

    3.2 Linux 内核 introduced in January 2012 recovery 选项。 然后,在 2016 年 5 月发布 4.6 版本,it was supersededusebackuproot。 有兴趣的也可以看the commit

    documentation 清楚地解释了它的作用:

    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.
    

    note in the official FAQ section 声明这是修复此“父 transid”错误的正确方法:

    如何从“parent transid verify failed”错误中恢复?

    例如:

    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
    

    如果可行,请在不使用只读命令的情况下重试:

    mount -t btrfs -o usebackuproot /dev/sda2 /sysroot
    

    如果这可行,您应该能够启动您的 Linux。

    【讨论】:

      【解决方案2】:

      上网发现很多answers建议使用btrfs-zero-log清除btrfs'内部日志。我认为btrfsck 可以提供帮助,但最终我发现了official recommendation,它首先只需启动btrfs scrub,然后再采取其他行动!

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

      【讨论】:

        【解决方案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 日更新:工作几天后,它又回到了原来的状态

        【讨论】:

        • 我遇到了一个非常相似的问题:RAID 10 中的 4HDD 带有 madm,BTRFS 文件系统(ubuntu 18.04,内核 4.18),通过 samba 访问。 dmesg 报告了很多与你的错误类似的错误,四分之一的文件无法打开(I/O error),btrfs scrub 失败并出现相同的错误代码。禁用 samba 服务并重新挂载文件系统可以解决所有问题。我现在将使用 ext4 而不是 btrfs 设置新的 NAS 配置,因为我不再信任这个文件系统。在这样的配置中与 nfs/samba 交互时似乎存在错误?!
        【解决方案4】:

        这里有类似/相同的问题:

        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
            #
        

        屏幕截图链接(无法上传): Screenshot

        似乎唯一的解决方案是通过

        将数据恢复到另一个磁盘
        btrfs restore /dev/sda4 /mnt/anotherdisk/folder
        

        .

        【讨论】:

        • 如果您将数据恢复到另一个磁盘,如何使旧驱动器(此处:/dev/sda4)再次可用?格式化?
        • 这是一个带有虚拟磁盘的虚拟机,所以我创建了一个新的虚拟磁盘。恢复也没有很好地恢复所有mysql文件,所以系统永远崩溃了。
        【解决方案5】:

        首先运行这个命令:

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

        如果它告诉你“所有超级都有效,不需要恢复”,你需要运行以下命令来清除文件系统日志树:

        sudo btrfs rescue zero-log /dev/sda2

        现在您应该可以挂载Btrfs 文件系统了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-30
          相关资源
          最近更新 更多