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

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

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

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

如果我无法将块预先标记为坏块,btrfs scrub那么将来如果删除使用它们的文件,是否可以避免由 标识的任何坏块?

答案1

可悲的是没有。

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

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

看起来LVM 不支持坏块重新分配

解决方法是构建一个排除已知不良块的设备:通过 dmsetup 进行 Btrfs


btrfs 项目想法 wiki说:

未声明 — 尚无补丁 — 尚未进入内核

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

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

答案2

这就是我想解决这个限制的方法。一个不完美的解决方案。

  1. 创建不带日志记录的 ext4 作为文件系统(标记有坏块)
  2. 在 ext4 之上创建 btrfs 文件映像。
  3. 使用循环设备挂载 btrfs 映像。

预计可能会产生一些轻微的额外开销。

相关内容