RAID 5 检测到写入错误?

RAID 5 检测到写入错误?

我看到有人推荐数据库使用 RAID 10 而不是 RAID 5,因为 RAID 10 具有更好的性能并且有更好的从硬件故障中恢复的机会。

这让我很困惑,因为我认为使用 RAID 5 的目的更多的是奇偶校验,允许检测和纠正写入错误以确保数据的完整性。我的理解是 RAID 10 无法从写入错误中恢复。也就是说,如果某个位有错误,它将与镜像驱动器中的位相反,因此无法分辨哪个位是错误的,哪个是正确的。

然而,我尝试使用 raid 5 与 raid 10 检测“写入错误”来谷歌搜索,看看是否有人涉及这一点,但一无所获。

这一切都是我瞎编的吗?

RAID 5 阵列能否使用 3 个奇偶校验位检测并恢复写入错误?还是直到读取数据并且奇偶校验指示错误时才进行检测?

如果 RAID 10 阵列发生写入错误,它能否确定镜像位中的哪个位发生错误?即驱动器指示该特定位读取失败,还是它只是看到位不匹配,并且由于没有奇偶校验,因此无法确定哪个位发生错误?

我看到一些关于由读取错误触发重建的讨论。写入错误是否直到稍后读取数据时才被检测到?换句话说,写入错误是否发生了,但错误数据只是停留在那里,直到可能很晚读取数据并且奇偶校验指示错误时才出现。这就是为什么您在重建期间面临获得额外读取错误的风险,因为您可能会写入大量有错误的数据,但直到下次读取数据时才会检测到这些错误?

我想澄清的是,磁带备份不能解决上述问题。如果您的情况是数据完整性非常重要,并且您无法检测到写入错误,那么如果您备份的数据已经存在错误,那么世界上所有的磁带备份都对您没有帮助。

答案1

我相信你担心的情况是写入失败的情况驱动器没有报告。这是驱动器的严重故障,因此制造商努力确保它永远不会发生。存储堆栈建立在终端存储设备将报告读取和写入错误的假设之上。

我曾看到一些专业系统在写入之后立即执行读取以确保数据确实已被提交,但过去 10 年内并未出现过。

回答您的问题,两种 RAID 处理所述错误的效果都不太好。

它们的不同之处在于处理设备报告的写入错误。R5 以特定于供应商的方式做出响应;它可以重新提交具有奇偶校验计算的最新写入。对于 R1,可以假设未返回写入错误的镜像对是正确的,并且一个块从好成员复制到坏成员。

答案2

除非 RAID 供应商执行某种校验和过程,否则两者都无法记录写入错误。RAID 是为了防止磁盘故障。在 RAID 5 中,当更换磁盘时,奇偶校验信息用于重建丢失的数据。在 RAID 10 中,当更换磁盘时,数据是从配对磁盘复制的。

至于 RAID 10 是否可以支持更多磁盘故障,这取决于哪个磁盘第二个发生故障。RAID 10 基本上是一堆 RAID 1 阵列的条带。如果第二个发生故障的磁盘是第一个发生故障的磁盘的配对磁盘(如果第一个磁盘由于数据热点而发生故障,则可能会发生这种情况),那么当第二个磁盘发生故障时,您将丢失所有数据,因为条带现在已损坏。而 RAID 5 中任何磁盘作为第二个磁盘发生故障,您就会丢失阵列。

无论哪种情况,都必须将任何不能丢失的数据备份到磁带上。

相关内容