关于RAID 6的功能,以上所有答案均不正确。RAID6算法与RAID 5一样,逐字节运行,如果任何一个驱动器上的单个字节损坏,即使驱动器未指示任何错误,它也可以被检测和纠正。有关此算法的详细说明,请参见
https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf
为了执行此检查,还必须将奇偶校验P和Q驱动器与数据驱动器一起读取。如果计算出的奇偶校验P'和Q'相同且没有驱动器错误,则分析可以查明哪个驱动器不正确,然后更正数据。
此外,如果驱动器标识是针对不存在的驱动器(例如,如果只有15个驱动器,则为驱动器137),则说明一个字节以上的驱动器正在提供损坏的数据,表示发生了不可纠正的错误错误。当集合中的驱动器少于256个时,每个字节的检测概率很高,并且由于一个块中有很多字节,因此每个块的概率很高。同样,如果RAID块中所有字节的驱动器标识不一致,则不止一个驱动器正在提供损坏的数据,通常一个驱动器可能会拒绝这种情况,但是只要所有驱动器标识均有效,则该块不一定需要被拒绝。
进行此校正所需的时间比通常的验证时间长,但是只需要在校正子(P和Q)计算显示错误时执行即可。
尽管如此,我还没有检查mdadm代码来确定是否处理了单字节损坏。我知道mdadm在每月扫描中报告RAID6综合症错误,但是从错误消息中尚不清楚它们是否已得到纠正-它不会停止驱动器阵列,也不会在消息中标识任何特定的驱动器。