linux 修复btrfs“btrfs parent transid verify failed on ...”

3hvapo4f  于 2023-04-20  发布在  Linux
关注(0)|答案(5)|浏览(496)

btrfs fi show显示所有btrfs文件系统,但也有很多错误,如:
109973766144上的父transid验证失败需要1823找到1821
文件系统仍然可以卸载和重新装载。

djmepvbi

djmepvbi1#

小心btrfs-zero-log

btrfs-zero-log documentation明确指出它不是一个通用的工具用途:
btrfs-zero-log不是一个通用的修复一切的工具尽管许多人相信并在互联网上声明。你通常不需要使用它。
因此,此工具只有一个用例:当您在日志中看到BTRFS: failed to read log tree消息时。

修复usebackuprootparent transid verify failed 错误

3.2 Linux内核在2012年1月引入了recovery选项。然后,在2016年5月的4.6版本中,它被usebackuproot取代。如果你感兴趣,你也可以看到提交。
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.

官方FAQ部分中的一条注解指出,这是修复此“parent transid”错误的正确方法:
如何从“父传输验证失败”错误中恢复?
例如:
parent transid verify failed on 29360128 wanted 1486656 found 1486662
如果后两个数字(wanted 1486656和found 1486662)靠得很近(彼此相差20以内),则安装
-o ro,usebackuproot
可能会有帮助。如果只读挂载成功,请在不使用ro选项的情况下重试,以进行读写挂载。

如果usebackurooot不起作用,则FS在当前状态下基本上无法使用当前工具恢复。您应该使用btrfs restore刷新备份,然后从中恢复。

使用命令

这些命令只是Fedora安装中失败的btrfs磁盘的示例。
第一次尝试只读模式:

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

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

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

现在,如果该命令正常工作,您应该能够 Boot Linux。

4jb9z9bj

4jb9z9bj2#

在网上我发现了很多answers建议使用btrfs-zero-log来清除btrfs的内部日志。我以为btrfsck可以帮助,但最终我发现了official recommendation,这是***首先只是启动一个btrfs scrub***,然后再采取其他行动!
所以如果你还能挂载文件系统的话,就运行btrfs scrub /path/to/mountpoint吧,也许它的工作原理和我的例子一样。

hfwmuf9z

hfwmuf9z3#

首先运行以下命令:
sudo btrfs rescue super-recover -v /dev/sda2
如果它告诉你 “所有supers都是有效的,不需要恢复”,你需要运行以下命令来清除文件系统日志树:
sudo btrfs rescue zero-log /dev/sda2
现在您应该能够挂载Btrfs文件系统了。

bwntbbo3

bwntbbo34#

我遇到了类似的情况:
1.logs 已满,包含parent transid verify failed on 109973766144 wanted 1823 found 1821
1.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

  1. BTRFS文件系统
    1.操作系统
  2. RAID 10设置

其他信息

  1. btrfs挂载变为只读
  2. btrfs-scrub在ERROR: scrubbing /dev/md124p2 failed for device id 1: ret=-1, errno=5上失败
    我解决了这个问题,删除nfs导出,即从/etc/export/,然后重新安装卷,瞧,一切都变得ok

**更新2018年1月29日:**工作几天后,它完全恢复到相同的状态

ih99xse1

ih99xse15#

类似/相同的问题:
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

.

相关问题