是否有一个文件系统可以像raid5一样维护额外的ECC数据,但在文件系统中制作一个容错的单个外部驱动器?

是否有一个文件系统可以像raid5一样维护额外的ECC数据,但在文件系统中制作一个容错的单个外部驱动器?

通常,要创建容错或损坏修复文件系统,您可以使用多个驱动器和 raid 5,或除 raid 0 之外的任何内容。

还有很多方法可以制作容错存档文件,例如 dar 等。

我正在寻找一种方法,使单个外部 SSD 更安全,防止来自扩展的无电源存储的位腐烂,但否则将驱动器用作普通驱动器,只需在需要时像任何其他文件系统一样安装和读/写文件。仅仅“当我想要的时候”有时可能会相隔数年。

“正常”并不意味着可以在 Windows 和 Mac 上使用。仅 Linux 就可以了。

答案1

首先,很高兴知道大多数现代 HDD 已经具有内部 ECC 机制(https://en.wikipedia.org/wiki/Hard_disk_drive#Error_rates_and_handling)。它不会取代 RAID 5,但很高兴知道它的存在。我建议积极监控一些关键的 SMART 属性,主要是 #5、#187、#188、#197 和 #198(https://www.backblaze.com/blog/hard-drive-smart-stats/)。

至于文件系统,我猜你正在寻找的是一个支持数据清理的FS(https://en.wikipedia.org/wiki/Data_scrubbing)。 ZFS 可以做到这一点(https://docs.oracle.com/cd/E19253-01/819-5461/gbbxi/index.html

[编辑]来自https://www.45drives.com/community/articles/zfs-best-practices/

ZFS 清理是处理可怕的位腐烂的最佳方法。每次 ZFS 读取一个块时,它都会将该块与其校验和进行比较,然后在需要时自动修复它。然而,可能有一些数据写入 ZPool,然后很长一段时间都不会被再次读取。

幸运的是,这些数据不会自动受到位腐烂的保护。这就是我们进行数据清理的原因。最好的做法是每月至少安排一次磨砂,有些人可能想经常这样做,甚至每周一次,尽管这并不是完全必要的。虽然您仍然可以在清理期间使用 ZPool,但您可能希望将这些安排在下班时间或停机时间,因为虽然它不是太密集,但它确实会处理磁盘上的一些 IO。

答案2

@ChennyStar提及ZFS,但还有其他可能更好或更简单的选择(ZFS 可以是重的电梯正确使用)

Btrfs 和 ZFS 可以做到这一点,也许还有其他的

  • BtrFS支持多种哈希函数以保证数据完整性,其中一些函数(如 SHA256)还可用于重复数据删除。很棒的文件系统,但不如生产系统的 Ext4 等成熟。
  • XFS仅支持元数据的 crc32 校验和
  • 外部4仅支持元数据的 crc32 校验和,但需要启用它Ext4 元数据校验和
  • ZFS支持多种不同的哈希算法,支持重复数据删除,以及多种数据冗余模式,包括单盘、多盘。虽然它的学习曲线有点陡峭,但它非常成熟。

DIY,也许更简单

您还可以考虑将自己的 cron 作业等写入sha256所有文件,并跟踪它们的状态,并提醒您出现问题。你甚至可以它固定在类似的东西上外部4通过使用扩展属性像这样:setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" file.txt- 或者简单地将其保存在某个地方的 txt 文件中。这样您就可以完全控制检查哪些文件及其行为。您可以通过获取文件并复制它来测试此机制,然后损坏一点并看看会发生什么。破坏一位(这在 CLI 中很难做到):

a=$(xxd -b -l 1 -seek 3 -p <original_important_file>);b=1;echo -e "\x$((${a}^${b}))" | dd of=<corrupted_important_file> bs=1 seek=3 count=1 conv=notrunc

我从以下来源获取并调整了这个脚本@Kantium的回答

相关内容