运行btrfs check显示几个类似这样的错误(总共 13 个):
checksum verify failed on 369098752 wanted 0x0000000000000000000000000000000000000000000000000000000000000000 found 0x6290e6592047ec80140a1252d31a8ba8a33a34cf578b5c8c4a081706b9416fa6
Run Code Online (Sandbox Code Playgroud)
所有想要的校验和都是零,这显然很可疑。
运行后,btrfs scrub我在元数据中纠正了 13 个错误,在数据块中纠正了多个不可纠正的错误(通过从备份恢复受影响的文件来修复)。
但是,btrfs check再次运行会显示相同的 13 个校验和错误。
我有两个问题:错误中的数字指的是什么?所有提及此问题的搜索结果都没有答案。我的猜测是它是一个逻辑地址,但是btrfs inspect-internal logical-resolve number /path给出了ERROR: logical ino ioctl: No such file or directory,而且它显然也不是一个索引节点(dmesg 实际上明确地将这些数字称为逻辑地址,指向元数据叶子,但它没有指定哪种类型)。
第二个问题,我可以对这些校验和做什么?所有 btrfs 问题都可以通过运行立即得到解答,btrfs check --init-csum-tree但我的理解是这将完全重置 csum 树,我想首先了解问题到底出在哪里。
文件系统信息:
[root@ls-fedora ArchiMedia]# btrfs filesystem usage .
Overall:
Device size: 27.28TiB
Device allocated: 12.02TiB
Device unallocated: 15.27TiB
Device missing: 0.00B
Used: 11.84TiB
Free (estimated): 15.44TiB …Run Code Online (Sandbox Code Playgroud) btrfs ×1