ZFS 可以检测静默数据损坏(或“位腐烂”);通过适当的镜像或raidz
设置,它也可以修复此类损坏。因此,是否可以将磁盘拆分为两个(或更多)分区,vdev
从这两个分区创建镜像,然后使用另一个分区的副本修复任何损坏?如果可以,是否还有其他注意事项或问题需要考虑?(一个问题是,这种设置无法防止实际硬件故障,这是 RAID 设置的常见需求。)
答案1
是的,技术上。但是,完全没有必要这样做。ZFS 已经通过名为 的数据集属性更有效地解决了这个问题copies
。设置copies=2
将导致 ZFS 对所有写入的文件数据进行额外的硬件级复制,然后专门用于防止位衰减。(请注意,这不具有追溯力:如果在创建数据集时未设置该属性,它将仅适用于写入的数据后属性已设置)。
答案2
ZFS 会对每个块进行校验,因此它可以在没有镜像的情况下检测到无声损坏。但镜像会让它纠正它,前提是 zfs 不会同时使两个分区失败。
出于多种原因,将两个镜像的一半放在同一张磁盘上在我看来是一个糟糕的主意。
它会使您的性能减半甚至更糟,可能更糟,因为它会迫使您的磁盘在每次读写块时都发生抖动。它会使驱动器磨损增加一个数量级。它不会提高可靠性。如果磁盘出现错误,两个分区都可能同时脱机。它会将您的可用空间减半而没有任何好处。这是假设 zfs 不会直接拒绝该配置。通常镜像会提高读取性能——但这不会。