RAID6介绍

--Party 1

Rechard Luo

一、 RAID技术

RAID是由美国加州大学伯克利分校的D.A. Patterson教授在1988年提出的。RAID是Redundent Array of Inexpensive Disks的缩写,直译为“廉价冗余磁盘阵列”,也简称为“磁盘阵列”。后来RAID中的字母I被改作了Independent,RAID就成了“独立冗余磁盘阵列”,但这只是名称的变化,实质性的内容并没有改变。

RAID的级别包括RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6,以及在此之上的各种组合,其中具有容错功能的是RAID1、RAID5和RAID6。本文就以介绍各种容错功能的RAID系统,来讲讲RAID6诞生的历程。

二、 容错的RAID技术 2.1 RAID1

RAID 6 介绍 - Part 1_第1张图片

图-1 RAID1

RAID1就是大家常说的镜像系统,如图-1所示,它将数据分别写到源 (Source) 存储设备和镜像 (Mirror) 存储设备上,因此数据被保存了两份,从而使得即使源设备损坏,或者说源设备上的某快数据损坏,仍然还有镜像设备上的备份数据,从而提供了容错的特性,反之亦然。只有源设备和目标设备的数据同时损坏时,整个容错系统才汇报失败。

对于RAID1,因为源设备和镜像设备保存了同样的数据,所以其存储空间利用率为50%。

如果每个存储设备的故障率为p,那么整个RAID1其可用性为:

1- p * p = 1 – p2

2.2 RAID5

RAID 6 介绍 - Part 1_第2张图片

图-2 RAID5

RAID5采用计算异或 (XOR) 的方式来实现容错,也就是说对于发送下来的数据,采用条带 (stripe) 技术分块,并计算校验。如图-2所示,

P0 = 0⊕1⊕2, ⊕为异或运算

因此,即使其中的一个存储设备出现故障,也可以通过计算异或,得到相对应的数据,比如数据块0出现故障,可以采用如下方式得到它:

P0⊕1⊕2 = 0⊕1⊕2⊕1⊕2= 0⊕1⊕1⊕2⊕2 = 0

对于RAID5,如果由N个存储设备组成,由于要保存额外的校验数据,那么其存储空间利用率为:

(N-1)/N = 1 - 1/N

如果每个存储设备的故障率为p,只要任何两个存储设备出现故障,RAID5就不可用了,因此整个RAID5其可用性为

1- p * p = 1 – p2

2.3 RAID6

RAID 6 介绍 - Part 1_第3张图片

图-3 RAID6

RAID6采用双重校验的方法,如图-3所示。第一种校验,采用异或 (XOR) 方法,来计算P;另一种则为采用Reed-Solomon编码方式,来计算校验Q。从而使得即使RAID6损坏两个存储设备时,也能够完成正常的操作。

其计算公式为:

P0 = 0⊕1⊕2⊕3

Q0 = (K0⊙0)⊕(K1⊙1)⊕(K2⊙2)⊕(K3⊙3),

其中⊙ 为伽罗瓦域(Galois Field)计算操作,关于该计算的细节,在RAID6的技术原理中进行讲解。

对于RAID6,如果由N个存储设备组成,由于要保存两个额外的校验数据,那么其存储空间利用率为:

(N-2)/N = 1 - 2/N

如果每个存储设备的故障率为p,只要任何三个存储设备出现故障,RAID6就不可用了,因此整个RAID6其可用性为

1- p * p * p = 1 – p3

2.4 容错RAID的对比
 

RAID1

RAID5

RAID6

是否校验

保护能力

允许一个存储设备故障

允许一个存储设备故障

允许两个存储设备故障

性能

写操作时,无校验计算,但需写两个存储设备

写操作时,计算校验的性能影像

写操作时,双重计算校验的性能影响

存储空间利用率

50%

1- 1/N

1-2/N

可用性

1 – p2

1 – p2

1 – p3

表-1 容错RAID对比表

从表-1可以看出,相对于RAID1来说,当N>2时,其存储空间的利用率得到了提高;对于可用性来说,显然RAID6提供了更好的可用性,允许两个存储设备故障,这对于容错RAID来说,算的上是最重要的特性之一。

三、 RAID6特色

RAID6最大的特点就是通过二维异或校验 (Two dimensional XOR) ,从而使得允许两个存储设备出现故障的情况下,仍然能够正常的操作数据,在充分利用存储空间的基础上,大大的提高了RAID的容错能力;相比较于RAID5,RAID6技术是一种质的飞跃。

四、 RAID6优缺点

RAID5在掉一块盘时,不用停机还能保护数据。但是,如果掉两块盘,数据就会丢失。虽然掉两块盘比掉一块盘的可能性要小,但是当涉及到下面的几个原因,掉两盘的可能性还是会增大的:

A) SATA硬盘应用量的增长:SATA硬盘有低成本,大容量的好处,但是,其平均无故障时间(MTBF)比FC和SCSI硬盘的都短。这些硬盘使用率的增大,使同一时间掉两块盘的可能性变大了。

B) 容量大,重建时间过长:在一块硬盘中,如果容量越大,就意味着如果这块盘坏掉,需要重建数据的时间就越长。系统在执行重建任务时就要经受巨大的负载,并且很有可能因此损坏另一块盘或者是在长时间的重建过程中掉第二块盘。

C) 人为错误:当一块盘坏掉时,维护人员会用一块新盘来取代这个坏掉的盘。但一旦维护人员不小心拔错了硬盘,就会造成同时掉两块盘的状况,RAID数据将丢失。

D) 所用硬盘数量的增加,很大程度上提高了硬盘预期故障发生率:当盘阵中增加硬盘的数量时,很大程度上提高了硬盘预期故障发生率。在系统用备援硬盘恢复数据时,其余的硬盘也增加了故障发生率。因此系统内硬盘个数越多时,就越需要提升数据冗余的安全性。

E) 不过RAID6在计算校验时,需要消耗大量的时间来做计算;如果采用CPU来完成这个动作,那么它对CPU的占用率是相当高的。因此,为了提高RAID6的性能,设计了专门的硬件加速器来完成该操作。

总之,RAID6技术恰好提供了可同时损坏两块盘的容错度,很明显,数据存储急需RAID6 的广泛应用。