我有一个 2 磁盘 CentOS 7 机器构建,我需要数据完整性/位腐烂保护。我怎样才能实现这个目标?
根据我的阅读,btrfs、zfs 和 DM-Integrity 似乎不是选项。
- Btrfs 不是一个选项,因为 RHEL 和 CentOS 将弃用 btrfs。
- RHEL/CentOS 本身不支持 ZFS,并且 RH 将来也不打算支持它。此外,2018 年 4 月 ZFSonLinux 的数据损坏错误对于该实现来说并不是一个好兆头。
- DM-Integrity 不是一个选项,因为内核版本较旧,而且据我所知在 CentOS 上不可用。
- 看来使用 md(在 4 个分区上)的 RAID6 不是选项,因为据我所知它不会计算每次读取的校验和。根据这个答案无论如何,磨砂膏可能无法正确修复。
注意 选择 CentOS 是为了稳定性和长期支持。
答案1
mdadm RAID 不计算(慢)且不正确(可靠),但可以用来检测(检查后mismatch_cnt!= 0)。如果您确实使用 mdadm(出于其他原因)并运行强制检查(出于明显的原因),请使其在邮件报告中包含mismatch_cnt。 (也不要忘记智能监控,不要等待更换有坏扇区或重新分配扇区的驱动器......)
这样,如果任何单个磁盘上发生位腐烂,您至少会收到一些有关它的通知。我多年来一直像这样监控我的 RAID,但从未发生过这种情况(除了被要求测试功能本身时)。
因此,我认为 bitrot 不是一个常见问题(在硬件级别)。
每个驱动器内部都使用校验和,这就是它检测读取错误的方式。如果驱动器在读取时获取到错误的数据,它不会返回该数据,而是会报告错误。通常这就足够了。
然后还有一种特殊的位腐烂,没有任何文件系统可以帮助您解决。这是软件首先写入损坏数据的时候。就像脑残的照片管理器一样,它会更改它找到的每张照片的 exif 数据。文件将被损坏,但校验和反位腐文件系统会很高兴地告诉你:是的,这就是我被告知要写入的数据,并且校验和检查出来了,那又如何呢?
此时,您需要一个备份系统来校验文件并检测更改的文件,并且不会使用相同数据的新/损坏版本删除/替换完整数据,以便您可以返回到完整数据。如果它可以向您发送有关已更改文件的报告,并且您会注意到您的整个图片集是否都在其中,即使您不记得更改了它们,那就太好了。
哎呀,有些东西应该默认安装为只读......但没有人这样做,因为这很麻烦。