btrfs 可以跟踪/避免坏块吗?

Tom*_*ale 14 badblocks btrfs

我有一个我不完全信任的硬盘,但仍然想使用(burstcoin 挖掘,如果我在文件中得到一个坏块,我只会损失几美分)。

我如何告诉 btrfs 将某些块标记为坏的(例如来自badblocks输出)?

如果我不能将块预先标记为坏块btrfs scrub,那么如果使用它们的文件被删除,将来是否会避免任何由 识别出的坏块?

Tom*_*ale 11

可悲的是没有。

btrfs 不会跟踪坏块,btrfs scrub也不会阻止下一个文件命中相同的坏块。

这个 btrfs 邮件列表帖子建议使用 ext4 with mkfs.ext4 -c(这“建立一个坏块列表,然后不会使用这些扇区”)。在 mdadm 3.1+ 上使用btrfs 和 RAID0的建议不起作用

看来,LVM不支持badblock再分配

解决方法是构建一个设备,排除已知的坏块:btrfs over dmsetup


btrfs 项目创意 wiki说:

未声明 — 还没有补丁 — 尚未在内核中

目前,btrfs 不跟踪坏块,即很可能丢失写入其中的数据的磁盘块。Btrfs 应该接受一个 badblocks 输出格式的列表,将它存储在一个新的 btree 中(或者可能在当前的范围树中,使用一个新标志),重新定位块包含的任何数据,并保留这些块以便它们不能被使用用于未来的分配。此外,当发现校验和错误时,可以教导清理来测试坏块。这将使擦洗更有用;校验和错误通常是由磁盘引起的,但是当scrub 检测到受影响的文件时,在备份场景中这提供了重新创建它们的机会,下一个重用坏块的文件只会开始出现错误。这两项将匹配 ext4 功能(通过 e2fsck 使用)。

如果状态发生变化,请发表评论,我会更新此答案。