lnm*_*rer 5 filesystems btrfs corruption
我有一个 btrfs 文件系统,我已经清理了几次并发现了一些错误。如果我检查设备状态,我会看到我有 generation_errs:
$ sudo btrfs device stats /dev/nvme0n1p5
[/dev/nvme0n1p5].write_io_errs 0
[/dev/nvme0n1p5].read_io_errs 0
[/dev/nvme0n1p5].flush_io_errs 0
[/dev/nvme0n1p5].corruption_errs 0
[/dev/nvme0n1p5].generation_errs 3
Run Code Online (Sandbox Code Playgroud)
这些 generation_errs 是什么?有什么值得担心的吗?
FWIW,以下是清理后在内核日志中发现的错误消息:
5/22/16 12:00 AM BTRFS warning (device nvme0n1p5): checksum/header error at logical 343949312 on dev /dev/nvme0n1p5, sector 671776: metadata leaf (level 0) in tree 321435615232
5/22/16 12:00 AM BTRFS warning (device nvme0n1p5): checksum/header error at logical 343949312 on dev /dev/nvme0n1p5, sector 671776: metadata leaf (level 0) in tree 321376649216
5/22/16 12:00 AM BTRFS warning (device nvme0n1p5): checksum/header error at logical 343949312 on dev /dev/nvme0n1p5, sector 671776: metadata leaf (level 0) in tree 109330432
5/22/16 12:00 AM BTRFS warning (device nvme0n1p5): checksum/header error at logical 343949312 on dev /dev/nvme0n1p5, sector 671776: metadata leaf (level 0) in tree 109330432
5/22/16 12:00 AM BTRFS error (device nvme0n1p5): bdev /dev/nvme0n1p5 errs: wr 0, rd 0, flush 0, corrupt 0, gen 2
5/22/16 12:00 AM BTRFS error (device nvme0n1p5): unable to fixup (regular) error at logical 343949312 on dev /dev/nvme0n1p5
Run Code Online (Sandbox Code Playgroud)
在BTRFS维基词汇说,这大约是什么一代是:
一代
为每个事务更新的内部计数器。当一个元数据块被写入时(使用写时复制),当前生成被存储在块中,以便可以识别太新(因此可能不一致)的块。
另一个条目提到
在正常情况下,代号必须匹配。不匹配可能是由崩溃后丢失的写入引起的(即悬空块“指针”;软件错误,硬件错误),错误写入(块从未写入该位置;软件错误,硬件错误)。
它并没有告诉我太多,其他人也在问,例如这个邮件线程。
实际上,该线程中的最后一篇文章提到了一些有用的东西:“生成错误”是“表明块尚未写入”,这基本上与 Wiki 所说的相呼应。
因此,根据这些信息,我们可以得出一些结论:
该btrfs
文件系统不完全记录(用户端)从它的工具输出的解释(维基甚至说: “就目前来说,大部分信息存在于人们的头脑。”)
将元信息写入磁盘时出现了一些错误,是的,这可能表明存在问题。
通过回答这个问题,我希望有btfs
一位大师出现,并就“我该怎么办?”这个问题给你一个正确的答案。
您的下一个停靠点可能会询问btrfs
邮件列表,例如Wiki 中提到的那个(如果我是您,我现在会这样做)。