我听说过死亡磨砂。但是,可以禁用 ZFS 数据集中的校验和。如果是这样,对于不使用 ECC RAM 的系统来说,情况会更安全吗?
我没有想到 NAS 或类似的东西 - 更多的是带有单个驱动器的工作站部署,只是为了使用 ZFS 卷管理和快照(并且不需要fsck
)的好处。我什至不想使用冗余。
如果我禁用 ZFS 校验和,错误的内存位置是否仍会完全破坏我的存储?
答案1
我听说过死亡磨砂。
你应该读一下这个: http://jrs-s.net/2015/02/03/will-zfs-and-non-ecc-ram-kill-your-data/
除非系统中的内存绝对是垃圾,否则它几乎肯定会比磁盘出现更少的问题。
如果您的系统有 SSD 和“慢速”CPU,则计算校验和数据对性能的影响可以忽略不计。
我个人对此的看法是,除非您的 CPU 大部分时间都 100% 使用(有时甚至如此),否则最好让 ZFS 使用校验和。
我觉得这个话题有很多混乱。
有。不幸的是,我没有更好的答案。如果您在 Linux 上的 ZFS 邮件列表上询问这个问题,您将得到更详细的答案。
答案2
恕我直言。最好购买工作站主板和 ECC RAM。我也在我的服务器中使用它。它的价格几乎与优质的普通主板和内存相同。服务器主板也很棒,但价格翻倍或三倍,我买不起......
使用 BTRFS 的另一种选择,但对于非 ECC 内存来说它与 ZFS 一样糟糕,例如https://www.spinics.net/lists/linux-btrfs/msg59566.html办公室。如果您定期保存备份并且保持数据完全无位腐烂并不重要,那么您可以将 ZFS 或 BTRFS 与非 ECC RAM 一起使用。 AFAIK。 ZFS 使用 SHA1,BTRFS 使用 CRC32C 作为校验和。如果您有速度为 10Gbps (1200MB/s) 的新 SSD,那么由于校验和算法相对较慢,这些 SSD 在 ZFS 上更容易出现瓶颈。据我记得 SHA1 比 CRC32C 慢 8-10 倍左右,比 CRC32 慢 2 倍。对于硬盘来说这不是问题。 ZFS 对于位旋转检测稍好一些,因为 CRC32 远非无冲突。
据我了解,关闭校验和无法解决 ZFS 或 BTRFS 或任何文件系统的非 ECC 相关问题。它只能解决通过位腐烂检测它不会因失败而用腐烂的数据覆盖数据的问题。但正如您通过上面的 BTRFS 链接所看到的,不良的非 ECC 内存可能会杀死整个文件系统。因此,一些带有 bitrot 的文件并不是这里的真正问题。但是ofc。我不是该主题的专家,只是阅读了几(数百)篇文章......