真假RAID6

Rechard Luo

随着RAID6的越来越流行,越来越火,市场对其的关注多也越来越多;同时,也出现了其他一些能够支持两个磁盘故障的RAID技术,比如RAID5E,RAID5EE,以及RAID10和RAID01,这里暂且称呼它们为假RAID6。它和真RAID6技术到底有何差别,有什么优劣势,下面将一一道来。

一、RAID5E & RAID5EE

RAID-5E和RAID5EE是被经常提起的支持2个磁盘故障的技术,它被广泛应用到IBM的产品中,它到底是如何实现,包含什么样的功能,下面就来解开它神秘的面纱,读者可以参考如下文档获得更多的技术细节:

http://www.snia.org/tech_activities/ddftwg/DDFTrial-UseDraft_0_45.pdf

1.1 RAID5E

真假RAID6_第1张图片

图-1 RAID5E

RAID-5E,是在RAID5中每个 Extent (它是在IBM主机中用于创建RAID的单位) 的后面加入了热备用空间 (Hot Space,如图-1中Extent尾部的HS0,HSr,HSp等) 。如Extent0故障,那么其他剩余Extents的热备份空间将会被用来重建和重新分配数据,并保证剩下的Extents为RAID5的一部分。从而使得即使一个Extent故障,也能马上有热备用磁盘来替换它,并重建RAID5,从而又带来容错力;从而达到所说的支持两个磁盘故障。

但是,它所能容忍的并不是任何两个磁盘同一时刻故障,可以将它看作RAID5和在线热备用磁盘(online hot spare drives)的变体。它将I/O操作时的数据分布到所有磁盘,包括热备用磁盘;从而减少了每个磁盘的带宽,带来更高的效率。然而,这也就意味着热备用磁盘不能够被多个阵列共享。

在RAID5E中,没有专用的热备用磁盘,就像RAID5中没有专门的校验磁盘一样,热备用数据块是分布到所有的磁盘中;从而,对于10个磁盘的RAID5E,每个磁盘的80%被用于存储数据,10%用于存储校验,10%用于热备用。

1.2 RAID5EE

真假RAID6_第2张图片

图-2 RAID5EE

RAID5EE和RAID5E类似,只是热备用空间被分布在各个Extents中,就像RAID5的检验数据那样分散布置一样;如过某个Extent故障,那么剩余Extent中的热备用空间(如图-2中的HS0, HS1, HS2等),将会被立即用于重建数据,并保证它成为原来RAID5的一部分,从而达到所说的支持两个磁盘故障。

同RAID5E相比,它不是把热备用空间放到每个Extent的尾部,而是分布在数据块其中,它也不允许任何两个磁盘同一时刻故障。不过,RAID5EE在进行热替换时,其寻址可能会更加方便和灵活。

二、RAID10 & RAID01

关于RAID10和RAID01的对比,往往各有微辞,也引起过广泛的争论;下面,通过相关图示进行对比和解释。读者可以参考如下连接获得更多的技术细节:

http:///wiki/RAID

2.1 RAID10

真假RAID6_第3张图片

图-4 RAID10

RAID10是RAID1和RAID0的组合运用,它第一层为RAID1模式,第二层为RAID0模式,从而结合了两者的优点,提供了新的特性,如图-4所示。如果在下层RAID1中的某个磁盘出现故障,并不会影响数据的读取;然而,如果出现故障的磁盘没有被替换,那么那个剩下的磁盘将会成为单点故障;但是,如果该单点故障的磁盘再次损坏,那么整个阵列存储的数据将会丢失;因此RAID10能支持的并不是任意两个磁盘故障,如图-4中:

a) Disk0和Disk1不能同时损坏,否则数据不能正常读取;

b) Disk2和Disk3不能同时损坏,否则数据也不能正常读取;

RAID10常被应用到高负载的数据库中,因为它不需要进行校验计算,所以能够进行高速的I/O处理,带来更好的性能。

2.2 RAID01

真假RAID6_第4张图片

图-5 RAID01

RAID01和RAID10类似,只不过它先做RAID0,然后再利用RAID1来完成两层RAID的设置;当某个RAID0中的一个磁盘损坏,那么损坏的数据将被转换到另一组RAID0;如图-5所示,当在不同RAID0组中的两个磁盘同时故障时,也会导致该RAID01失效;但是它却没有RAID10那么强健(robust),如:

a) Disk0和Disk2不能同时故障,此时两个RAID0都故障,数据不能读取;

b) Disk0和Disk3不能同时故障,此时两个RAID0都故障,数据不能读取;

c) Disk1和Disk2不能同时故障,此时两个RAID0都故障,数据不能读取;

d) Disk1和Disk3不能同时故障,此时两个RAID0都故障,数据不能读取;

显然,比起RAID10,RAID01导致故障的组合更多;其实,从数据存储的逻辑位置来看,RAID01和RAID10基本是一样,如果在设计过程中,加入智能识别的能力,两者可以达到一样的强健性。

三、RAID6

真假RAID6_第5张图片

图-3 RAID6

关于RAID6技术讲解的文章很多,它通过P+Q的双重校验技术,采用基于伽罗瓦域(Galois Field)计算的里德-所罗门(Reed-Solomon)编码,从而允许任意两个磁盘同时故障。

四、对比、分析与总结
 

RAID5

&RAID5EE

RAID01

&RAID10

RAID6

容错能力

某两个盘故障

某两个盘同时故障

任意两个盘同时故障

是否需要校验

P校验

无校验

P+Q校验

性能

一层校验影响,性能中

无校验影响,性能好

两层校验影响,性能差

存储空间利用率

(N-2)/N

50%

(N-2)/N

表-1 各种RAID对比表

由上表可见,RAID6提供了高可靠性,但是随之而来的却是性能的影响;RAID5E和RAID5EE结合了RAID5和热备用技术,在某种程度上支持两个磁盘故障,其容错能力相对与RAID5和RAID6之间,不过它也需要计算校验;而RAID01和RAID10可以某两个盘同时故障,其容错能力相对RAID6较弱,不过它不需要校验,从而带来了更好的性能,但是其存储空间的利用率不高。

针对以上不同真假RAID6的技术特性,各厂商也采取了不同的策略。比如,HDS就宣称支持RAID6;而EMC认为RAID10也能满足需求,并且还有其他的存储技术来达到高可靠性,因此目前还不支持RAID6;而IBM则对RAID5E和RAID5EE支持较多,用它来满足高性能的需求;对于中低端应用,比如SATA阵列,由于SATA磁盘的平均故障间隔时间(Mean Time To Failure, MTTF)的影响,大部分都支持RAID6。

总之,不管是真RAID6还是假RAID6,它们都有各自的特色,以及对应的应用领域;用户可以根据自己的环境、功能和预算,选择合适的技术,来满足自己的需求。