2024年4月12日发(作者:)

磁盘阵列(disk array)可以有效的提高存储系统的可靠性和性能,同时也存在显著的

缺点,那就是由于多个设备(磁盘)同时使用,导致了可靠性降低(从概率的角度来讲:

N个设备的可靠性是一个设备的1/N)。

RAID(Redundant array of inexpensive disk)就是为了解决这个问题而产生的,

RAID通过给磁盘阵列增加冗余磁盘提高了磁盘阵列的可靠性。所谓冗余磁盘,即该磁盘不

用于存放实际数据,而用来存放一些冗余信息,而这些冗余信息可用来在必要的时候进行

有效数据恢复,从而增加磁盘阵列的可靠性,翻译成中文应该叫廉价磁盘冗余阵列。

在RAID6出现之前,RAID已经有了从RAID0~RAID5六个版本。那么我们已经有了

这么多的RAID方式,提供了相当级别的可靠性保护,为什么我们还需要RAID6?在这里,

我们这里先比较研究一下几种比较有代表性的RAID方式:

磁盘冗余家族概览

目前应用最广泛,支持设备最多的RAID方式主要是RAID0,RAID1和RAID5

(1)无冗余(RAID0):RAID0实际上不能算做真正的RAID技术,它只是实现了磁盘

阵列存放数据的带状分布。虽然提高了大规模数据访问的性能,但是RAID0并没有冗余容

错的功能,因为它本身并无冗余,所以可以说这里的RAID0是个误称

(2)镜像(RAID1):RAID1同样实现了数据的带状分布,与RAID0所不同的是,在数

据写入一个磁盘的时候,同时在另一个磁盘做相应的镜象。因此,RAID1虽然有数据容错

功能,但是其对磁盘的利用率实在比较底,仅为50%。

数据分布示意图(以4块磁盘组成的阵列为例):

注释:其中d1,d2等表示存放的数据,d1’, d2’分别表示了数据d1和d2的备份。

(3)奇偶校验(RAID5):相对于RAID1比较,RAID5也是仅仅实现了单个磁盘的冗余

纠错功能,但是却大大提高了磁盘的有效利用率。以RAID5(4D+P)为例子来讲,使用

4块磁盘存放数据位,使用1块磁盘存放校验位。其基本原理是这样的:根据条带化的数

据4D(使用四位数据)生成一位的校验信息,存放在第五块磁盘中。

生成P校验位的公式一般是这样的:

P = D1 ⊕ D2 ⊕ D3 ⊕ D4

P为校验位,D1~D4分别代表四个数据位,⊕表示异或操作。

可以看到,当D1,D2,D3,D4中其余的一个数据丢失的时候,可以利用其余的三

个数据位和校验位P进行恢复,具体的恢复公式如下:

例如,当D1丢失的时候,D1 = D2 ⊕ D3 ⊕ D4 ⊕ P

同时可以看到,当两快磁盘出现故障的时候,RAID5无法恢复。