最近发现RAID6被越来越多的人提及,虽然早在1999年,Storage Technology公司就已经发布了iceberg RAID子系统,支持RAID6,但是由于各种原因,RAID6并未像它的弟弟RAID5,甚至RAID1那么流行。 为了不落伍,今天仔细看了RAID6的一些实现原理,特记录下来:
RAID6提供两级冗余,即阵列中的两个驱动器失败时,阵列仍然能够继续工作一般而言,RAID 6的实现代价要比其他级的R A I D高,这是因为RAID 6需要支持两级简约的操作,即不仅要支持数据的恢复,又要支持校验的恢复,这使RAID6控制器比其他级RAID更复杂和更昂贵。
RAID6的校验数据
当对每个数据块执行写操作时, RAID6做两个独立的校验计算,因此,它能够支持两个磁盘的失败。为了实现这个思想,目前基本上有两个已经接受的方法,尽管将来还会有其他方法出现: • 使用多种算法,如X O R和某种其他的函数。 • 在不同的数据分条或者磁盘上,使用排列的数据。RAID6的一维冗余
RAID6的第一种方法是用两种不同的方法计算校验数据。实现这个思想最容易的方法之一是用两个校验磁盘支持数据磁盘,第一个校验磁盘支持一种校验算法,而第二个磁盘支持另一种校验算法,使用两种算法称为P + Q校验。一维冗余是指使用另一个校验磁盘,但所包含的分块数据是相同的。 例如,P校验值可能由XOR函数产生,这样,Q校验函数需要是其他的某种操作,一个很有力的侯选者是Reed Solomon误差修正编码的变体,这个误差修正编码一般用于磁盘和磁带驱动器。假如两个磁盘失败,那么,通过求解带有两个变量的方程,可以恢复两个磁盘上的数据,这是一个代数方法,可以由硬件辅助处理器加速求解。一维校验RAID6的数据映射
下图图显示了一维RAID6实现的数据映射,它给出了两个不同的校验值,一个标志校验数据A函数,另一个标志校验数据B函数。为了避免关于RAID4的写开销,按照RAID5的方式,这两种数据分布于整个阵列。

一维RAID 6阵列的数据映射RAID 6的二维冗余
二维冗余基于这样一个概念:阵列可以逻辑地以矩阵的行和列安排。因此,数据的排列以行和列来表示,校验数据可作为阵列空间的正交矢量来计算。为了实现这个方法,每一个数据分块都属于两个正交(分离和独立)的分条,不存在将阵列中任何其他分条写入相同校验位置的可能性。 这种方法可简单地看作M×N的矩阵,M个校验磁盘需要N个校验计算, N个校验磁盘需要M个校验计算。这种安排需要校验磁盘的总数为M + N。当行和列数相等且阵列的大小增加时,这种类型的阵列的校验开销将减小。例如,一个3×3的9个磁盘的阵列有6个校验磁盘,校验开销占66%。然而,当阵列包含100个磁盘,按10×10配置时,需要20个校验磁盘,校验开销占20%。 二维方法的优点之一是可以利用同样的算法计算校验数据,这大大简化了用于简约功能操作的数学例程,如数据和校验的恢复。它既可以使用阵列管理软件中的单个程序,也可以使用同样的硬件辅助实现。二维RAID6阵列的数据映射 下图显示了二维RAID6 子系统的数据s映射,所显示的矩阵排列即磁盘排列。事实上,没有必要精确地遵从这个原则,也可以使用分区而不使用磁盘建立矩阵。并且,也没有一个如何构造矩阵的确定的规则。一般而言,不要将几排独立的阵列构造成矩阵,如果这样做的话,需要阵列具有完全相同的分区大小和分条深度。
而由属于同一个阵列的分区逻辑地构造矩阵将容易得多。

二维RAID 6阵列的数据映射