我们在重建 RAID5 阵列中的故障磁盘时遇到了热备用磁盘故障。看起来,我们确实因此丢失了一些数据,至少存储托架在某些块上出现了 I/O 读取错误。
问题是:为什么重建不能从下一个可用的热备用驱动器(不止一个)重新开始?
让我想想:假设一个 5 磁盘 RAID5 + 热备盘:
- 所有磁盘完好无损,所有数据都在那里,并且奇偶校验也在那里,以防万一。
- 一个磁盘发生故障,剩余 4 个磁盘的奇偶校验用于重建热备用上发生故障的第 5 个磁盘。
- 在重建期间,
- 可以从奇偶校验计算出故障磁盘上初始块的读取次数
- 同时,其中一个块被修改:为了考虑到这一点,其余 4 个磁盘上的奇偶校验必须更改(更新的块必须重写到热备用上,以防它已经被写入,因此必须存在某种更改的块位图)
- 当磁盘 1-4 上的数据发生变化时,每次都必须重写热备用磁盘上的奇偶校验信息
现在,如果热备用磁盘在重建过程中出现故障,我们仍然有来自 4 个磁盘的数据 + 奇偶校验信息,这将允许使用新的热备用磁盘并重新开始。
我现在唯一能想到的就是没有足够的内存来存储非常大的更改块位图(以防重建期间有大量写入)。
我忘了什么?(我还没有尝试实现它:-P)
答案1
呃,没关系。最初的假设是错误的:热备用磁盘没有发生故障,但 RAID 组中的另一个磁盘在重建过程中发生故障。
该阵列尽可能长时间地保持磁盘处于活动状态,但不可避免地会丢失一些扇区(单奇偶校验磁盘阵列上的双重奇偶校验错误)。