我看到人们推荐 RAID 10 而非 RAID 5 用于数据库,因为 RAID 10 提供更好的性能和更好的从硬件故障中恢复的机会。
这让我很困惑,因为我认为使用 RAID 5 的目的更多的是奇偶校验,允许检测和纠正写入错误以确保数据的完整性。我的理解是 RAID 10 无法从写入错误中恢复。即,如果某个位有错误,它将与镜像驱动器中的位相反,因此将无法分辨哪个位是有错误的位,哪个是正确的位。
但是,我尝试在使用 raid 5 与 raid 10 检测“写入错误”的方法进行谷歌搜索,看看是否有人涵盖了这一点,结果却空手而归。
这一切都是我在脑子里编出来的吗?
RAID 5 阵列能否使用 3 奇偶校验位检测写入错误并从中恢复?或者直到读取数据并且奇偶校验指示错误时才进行检测?
如果 RAID 10 阵列有写入错误,它是否能够确定哪个镜像位是错误的?即驱动器指示该特定位的读取失败,或者它是否只是看到位不匹配并且由于没有奇偶校验而无法确定哪个出错了?
我看到一些关于由读取错误触发的重建的讨论。直到稍后读取数据时才会检测到写入错误吗?换句话说,是否发生了写入器错误,但错误数据会一直存在,直到很晚才读取数据并且奇偶校验指示错误。这是否是您在重建期间面临其他读取错误风险的原因,因为您可能正在写入大量有错误的数据,但直到下次读取数据时才会检测到错误?
我想澄清一下,磁带备份没有解决上述问题。如果您有一个数据完整性非常重要的场景,并且您无法检测到写入错误,那么如果您正在备份的数据已经有错误,那么世界上所有的磁带备份都无济于事。
我相信您担心的情况是驱动器未报告写入失败的情况。这是驱动器的严重故障,因此制造商努力确保它永远不会发生。存储堆栈建立在终端存储设备将报告读写错误的假设之上。
我见过一些专业系统在写入后立即执行读取以确保数据确实被提交,但不是在过去 10 年中。
为了回答您的问题,两个 RAID 都没有比另一个更好地处理所述错误。
它们的不同之处在于处理设备报告的写入错误。R5 以供应商特定的方式响应;它可以使用奇偶校验重新提交最近的写入。对于 R1,可以假设没有返回写入错误的镜像对是正确的,并且一个块从好成员复制到坏成员。
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |