我一直在查看我的 raid 设置,我开始真正讨厌 raid 1。在驱动器发生故障时,您不知道另一个驱动器上的数据是否正确。如果一个驱动器读取 1,而另一个驱动器读取 0,而没有发生故障,该怎么办?您如何知道哪个驱动器是正确的?
当然,你可以使用 raid 6,但至少需要 4 个驱动器。我认为你只需 2 个驱动器就可以完成同样的操作。
我想出了几个突袭级别,但是为什么它们不存在?
- 在单个驱动器上进行 RAID,也使用前向纠错,如 par2
- 与 #1 类似,但也是镜像(现在您可以确保在发生故障时数据是正确的)
这需要一些定制硬件来快速执行 par2 计算。此外,由于它是 par2,对于您添加到阵列的每个驱动器,par2 文件可以越来越小,因为冗余量是 par2 文件总大小的总和。请参阅此内容以了解有关 par2 的更多信息:http://www.quickpar.org.uk/AboutPAR2.htm
答案1
您只需要一个 ZFS 镜像。您可以根据 COW 和恒定校验和保证数据的一致性。
答案2
如果问题是“为什么不能使用具有纠错功能的单个驱动器进行 RAID”,答案就在 RAID(独立磁盘冗余阵列)的“R”中……磁盘故障时没有冗余。RAID 并非旨在防止数据损坏(就像 par2 一样),而是旨在防止磁盘故障。具有 par2 的单个磁盘发生磁盘故障会将纠错校验和与数据一起降低,导致数据完全丢失。
答案3
根据定义,RAID 不能在单个驱动器上完成,因为 RAID 是“独立磁盘冗余阵列”或“廉价磁盘冗余阵列”,具体取决于你问谁。
合适的 RAID 控制器不会将不同的数据写入每个驱动器。当数据写入一个磁盘时,也会写入另一个磁盘。如果一个磁盘不接受写入,则应将该块标记为坏块。如果磁盘仍然不可用,则应将其标记为故障。
正如 smearp 所写,RAID 并非旨在防止数据问题。它是一种硬件冗余解决方案。
答案4
你说得对:如果双方意见不一致,那么用镜子很难知道哪一方是正确的。
RAID 也存在类似的问题:奇偶校验不一致。如果某个数据块损坏,您希望能够从奇偶校验中重建数据 — 但如果奇偶校验块损坏了怎么办?当驱动器发生故障时,匹配的重建块中的数据将受损。
跨多个扇区的块的强校验和可以提供帮助:如果数据块校验和失败但奇偶校验块校验和成功,您可以放心地重建数据块。但是,强校验和本身并不能保证:如果驱动器错过了整个块的写入,它仍会保留其最后的验证校验和,尽管它已经过期。
在为企业存储供应商工作了十年之后,我不再抱有幻想:RAID 比看上去要难得多。基本故障模式(如整个驱动器丢失)很容易解决。但要解决更隐蔽的故障模式(如驱动器丢弃写入或将其放在错误的位置),则需要付出更多的努力和经验。
最后:RAID6 至少需要三个驱动器因为它的设计可以承受两个驱动器同时发生故障。它还可以保护您免受更常见的介质错误问题(阻止完整的 RAID5 重建)。