raid6介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RAID 6 介绍
一、 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
图-1 RAID1
RAID1就是大家常说的镜像系统,如图-1所示,它将数据分别写到源 (Source) 存储设备和镜像 (Mirror) 存储设备上,因此数据被保存了两份,从而使得即使源设备损坏,或者说源设备上的某快数据损坏,仍然还有镜像设备上的备份数据,从而提供了容错的特性,反之亦然。
只有源设备和目标设备的数据同时损坏时,整个容错系统才汇报失败。
对于RAID1,因为源设备和镜像设备保存了同样的数据,所以其存储空间利用率为50%。
如果每个存储设备的故障率为p,那么整个RAID1其可用性为:
1- p * p = 1 – p2
2.2 RAID5
图-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
图-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 容错RAID对比表
从表-1可以看出,相对于RAID1来说,当N>2时,其存储空间的利用率得到了提高;对于可用性来说,显然RAID6提供了更好的可用性,允许两个存储设备故障,这对于容错RAID来说,算的上是最重要的特性之一。
三、 RAID6特色
RAID6最大的特点就是通过二维异或校验 (Two dimensional XOR) ,从而使得允许两个存储设备出现故障的情况下,仍然能够正常的操作数据,在充分利用存储空间的基础上,大大的提高了RAID的容错能力;相比较于RAID5,RAID6技术是一种质的飞跃。
四、 RAID6优缺点
RAID5在掉一块盘时,不用停机还能保护数据。
但是,如果掉两块盘,数据就会丢失。
虽然掉两块盘比掉一块盘的可能性要小,但是当涉及到下面的几个原因,掉两盘的可能性还是会增大的:
A) SATA硬盘应用量的增长:SATA硬盘有低成本,大容量的好处,但是,其平均无故障时间(MTBF)比FC和S CSI硬盘的都短。
这些硬盘使用率的增大,使同一时间掉两块盘的可能性变大了。
B) 容量大,重建时间过长:在一块硬盘中,如果容量越大,就意味着如果这块盘坏掉,需要重建数据的时间就越长。
系统在执行重建任务时就要经受巨大的负载,并且很有可能因此损坏另一块盘或者是在长时间的重建过程中掉第二块盘。
C) 人为错误:当一块盘坏掉时,维护人员会用一块新盘来取代这个坏掉的盘。
但一旦维护人员不小心拔错了硬盘,就会造成同时掉两块盘的状况,RAID数据将丢失。
D) 所用硬盘数量的增加,很大程度上提高了硬盘预期故障发生率:当盘阵中增加硬盘的数量时,很大程度上提高了硬盘预期故障发生率。
在系统用备援硬盘恢复数据时,其余的硬盘也增加了故障发生率。
因此系统内硬盘个数越多时,就越需要提升数据冗余的安全性。
E) 不过RAID6在计算校验时,需要消耗大量的时间来做计算;如果采用CPU来完成这个动作,那么它对CPU 的占用率是相当高的。
因此,为了提高RAID6的性能,设计了专门的硬件加速器来完成该操作。
总之,RAID6技术恰好提供了可同时损坏两块盘的容错度,很明显,数据存储急需RAID6 的广泛应用。
一、XOR校验
XOR算法,最基本的bit运算法则为:
1⊕1 = 0, 0⊕0=0, 1⊕0=1;
因此,会衍生出如下的byte运算法则,对于byte数据M来说:
M⊕M=0, M⊕0=M;
从而如果P为数据块X,Y,Z计算的XOR 值,也就说P =X⊕Y⊕Z时;当X数据块不可用时,可以通过P,Y,Z来得到它,也就是
X =P⊕Y⊕Z =(X⊕Y⊕Z) ⊕Y⊕Z=X⊕(Y⊕Y) ⊕(Z⊕Z)
这就是基于XOR运算的RAID5能够允许一个存储设备故障的根本原因。
二、P+Q校验
2.1 多个块同时写
图-1 同时写多个块的P+Q校验
对于RAID6需要计算双重校验,第一重校验和RAID5一样,采用XOR校验,从上面的讲解可知,异或运算法则比较简单,所以可以设计专门的硬件来完成;在Intel的IOP33x处理器上就有专门的硬件模块,XOR应用加速器(Application Accelerator with XOR),它专门处理异或运算,将CPU解放出来,从而提高整个系统的性能。
如图-1,同时写多个数据块时,P = D0⊕D1⊕D2⊕D3,只需告诉XOR应用加速器D0, D1, D2, D3在内存的位置,它就可以自动的完成XOR计算得到P。
对于第二重校验,需要采用基于伽罗瓦域(Galois Field)计算操作的Reed- Solomon编码,也就是说在计算Q时,会引入一个系数Ki,如图-1所示:
Q =(K0⊙D0)⊕(K1⊙D1)⊕(K2⊙D2)⊕(K3⊙D3)
同样,由于RAID6采用了更为复杂的算法,因此可以设计专门的硬件来完成RAID6计算,In tel的IOP333上就有RAID6应用加速器(Application Accelerator for RAID6);它和XO
R应用加速器一样,只需要知道数据D0,D1,D2,D3在内存中的位置,它就可以自动完成R AID6的计算。
2.1 只写一个块
图-2 写一个块的P+Q校验
当系统只需要写一个数据块时,如果把所有的其他相关的数据块都读取出来计算校验,是比较耗费计算资源的。
如图-2所示,此时先把需要写的块D0new对应的旧数据D0old读取,同时还有对应的Pold和Dold读取出来,从而可以得到如下公式:
Pnew =Pold ⊕(D0new ⊕D0old)
= (D0old⊕D1⊕D2⊕D3)⊕(D0new ⊕D0old)
= D0new⊕D1⊕D2⊕D3
Qnew =Qold ⊕Kx ⊙(D0new⊕D0old)
=(K0⊙D0)⊕(K1⊙D1)⊕(K2⊙D2)⊕(K3⊙D3)⊕Kx⊙(D0new⊕D0old)
=(K0⊙D0)⊕(K1⊙D1)⊕(K2⊙D2)⊕(K3⊙D3)⊕K0⊙(D0new⊕D0old)
=(K0⊙D0)⊕(K1⊙D1)⊕(K2⊙D2)⊕(K3⊙D3)
⊕(K0⊙D0new)⊕(K0⊙D0old)
= (K1⊙D1)⊕(K2⊙D2)⊕(K3⊙D3)⊕(K0⊙D0new)
= (K0⊙D0new)⊕(K1⊙D1)⊕(K2⊙D2)⊕(K3⊙D3)
显然,通过上述只操作P和Q达到更新写一个块的数据,更为简洁高效。
三、里德--所罗门(Reed-Solomon)编码
Reed-Solomon编码,是欧文.里德(Irving Reed)和格斯.所罗门(Gus Solomon)于1960年发布的一种纠错编码,它是最大距离可分码(MDS码,Maximu m Distance Separable C ode)的一种类型;表示为RS(n,k),其中n表示每个码字(codeword)符号的总数,k表示每个码字(codeword)中数据符号的总数
图-3 RS码字
其中2t =n –k,对于RAID6来说2t=2,所以它能修复两个磁盘损坏;如果符号(symbol)的长度为s,那么码字的长度n=2s –1。
Reed-Solomon编码将会用到伽罗瓦域(GF)运算法则,对于采用byte长度为Symbol,其最大码字长度为n =28–1=255,所以它此时支持2 55个磁盘,其中253个为数据盘,剩下2个为校验盘,下面对该运算进行详细讲解。
四、伽罗瓦域(Galois Field)运算
它包括+,-,×, ÷四种运算,其中+,-操作和XOR运算一样,表示为⊕;而×表示为乘以基数a,表示为⊙;同样,÷定义为,若A=C÷B,则C=A⊙B。
表-1 十进制运算和伽罗瓦域运算对比
因此,可以得到GF(8)在产生多项式X8+ X4+X3+X2+1情况下的表:
表-2多项式X8+ X4+ X3+X2+1的GF(8)表
从而得到该多项式GF(8)的运算表为:
表-3 GF(8)运算表
对应GF(8)的逆运算表GF-1(8)为
表-3 GF-1(8)运算表
从而,在GF运算将通过查表完成,如
2⊙8 = gfilog [gflog[2] +gflog[8] ] =gfilog[1+3] = gfilog[4] =0x10
五、RAID6的数据恢复
5.1 P、Q故障
5.2 P与数据盘故障
5.3 Q与数据盘故障
5.4 两个数据盘故障
四、计算校验与性能关系
内容
一、硬件方案
图-1 IOP333模块图
由于RAID6要计算P+Q两层校验,如果全部由CPU来处理该计算,显然相当影响系统性能;因此可以设计专门的硬件模块来完成校验计算,比如Intel就专门设计了Xscale IOP芯片,来处理存储应用,下面就以IOP333为例进行讲解。
IOP333是基于ARM架构的处理器,它支持多功能设备,最有特色的是加入了应用加速器单元(Application Accelerator Unit),如图-1中红框部分。
该模块主要完成校验计算,如图-2所示:
图-2 应用加速器模块图
它通过其控制寄存器,提供给系统软件操作AAU的接口;而其中的数据队列、布尔运算单元,以及填充/不填充单元来处理数据,并通过总线接口单元来和整个系统总线进行数据的交换和传输。
很多RAID厂商都采用Xscale来设计硬件RAID,从而提供高性能、高可靠性的存储产品。
二、软件方案
除了上述的硬件解决方案之外,在Linux下的MD (Linux下的Software RAID)也支持软件的RAID6解决方案,它通过系统CPU来完成RAID6的P+Q校验计算,从而会影响到系统性能;但是通过和Linux下的存储模块紧密结合,并采用一定的优化策略,它也可以达到一定的性能需求,满足大部分的应用。
目前,MD已经被放到大部分2.6.x系列内核中,并提供和RAID5类似的一些算法,如:
a) 左对称算法(LEFT_SYMMETRIC);
b) 左不对称算法(LEFT_ASYMMETRIC);
c) 右对称算法(RIGHT_SYMMETRIC);
d) 右不对称算法(RIGHT_ASYMMET RIC);
通过下面图-3和图-4进行对比。
图-3 左对称和左不对称算法
通过图-3的对比,可以看出在左对称和左不对称中,D3的存放位置是有差别的。
也就是说,在左对称时D3是立即放在校验数据后的那个磁盘中,而左不对称是还是放在整个RAID的第一个逻辑磁盘中。
图-4 右对称和右不对称算法
右对称和左对称的最大差别就是在于P和Q校验的存放位置,通过对比图-3和图-4很容易找到两者的差别。
而对称与不对称仍然采用上面图-3中的数据放置原理。
MD驱动是集成到Linux内核的一个模块,管理员可以通过mdad m应用程序来进行管理和配置。
三、前景分析
RAID技术是为了防止存储系统因为磁盘故障而丢失数据而研发出来的。
和RAID 5不同的是R AID 6有两份检验数据,可以保证同一RAID组中两块磁盘同时出现故障而不丢失数据。
然而,在RAID组中第二块磁盘出现故障需要重建两块磁盘时,RAID6控制器的性能就大打折扣,这就限制了RAID6系统的可用性,导致了一些厂商放弃了对RAID6控制器的使用。
RAID 6性能受损是因为RAID6 技术采用双重奇偶校验技术以确保在两个磁盘驱动器同时都出现故障的时候系统运行不中断,而RAID6控制器一次只能运算一个校验位。
RAID 6系统已经问世有一段时间了,DataDirect Networks声称在过去10个月中售出的R AID6系统的容量已经超过20PB。
其他厂商,比如Adaptec、Promise Technology、High Point Technologies都在最近推出了RAID6系统。
另外,Dot Hill、Infortrend、SGI、Xyratex也表示即将推出RAID6系统
但是也有不少厂商对RAID6提出异议,尤其是主流厂商。
EMC在昨天发布的产品里没有RAI D6支,EMC认为其他的高可用性功能,比如metaLUNs、媒介扫描、故障隔离、更好的容灾恢复,都比RAID6能带来更多好处。
不足为奇,HDS采用了与EMC不同的策略。
HDS公司的Tagm aStore全线存储系统可以支持RAID 6。
HDS CTO Hu Yoshida说,对于公司来说,利用低成本高性能的SATA硬盘如同生命线一样重要。
四、总结
被称为双重奇偶的RAID-6技术并不是一种新技术,它在理论上已经出现了大约20年。
然而,直到最近,RAID-6技术才得到了实际应用,这多亏了功能更加强大的RAID处理器。
迄今为止,RAID-6通过SATA技术在现实世界中获得了巨大成功。
存储行业分析专家表示,未来的12~18个月将会出现SATA用户的采纳高峰期。
主要被用在中低端市场的高容量500GB和750GB的SATA磁盘,使RAID-6技术的使用变得更加必要。
SATA磁盘的可靠性不高,经常发生双磁盘故障,并且驱动器本身也用于保持更多的数据,使得双磁盘故障潜在的更加具有破坏性
高性能的SATA驱动器应用于近线的以及入门层面的存储之中,这也意味着即使没有第二磁盘的故障,一个单独故障的修复状态也将对第二平台之上的数据产生损坏,专家说。
驱动器本身的规模可以导致它比较长的改造时间,并且单一系统的性能也会出现一定的问题;意味着该系统将长时间的比较脆弱,直到第二故障的出现。
然而,厂家们如今提供了RAID-6的计划方案,例如Overland公司,Adaptec公司以及Nex san公司,它们也都改为应用Reed-Solomon运算法则,这就使得双重奇偶可以通过在RAID 团组中的每一个磁盘上使用一次输入输出而进行计算,这样以来,六个磁盘就只需要最少的六次输入输出。
其他的厂家中,最著名的是NetApp,它正在改变其包裹中的存储控制的方法,并读出磁盘中的数据以减少RAID-6输入输出负载。
NetApp公司正在使用它的WAFL系统以将双奇偶数据安置于磁盘平台之上,从而RAID计算期间它可以更加简易的被控制者进行访问。
Overland通过一种称为DriveAlive的功能特色进入RAID-6领域之中,这是一种热交换的特色,当队列底盘中的一个磁盘刀片被取出来用于例行维护的时候,例如替换一个驱动器盘片,这时候它可以对整体的改造模式进行了延迟。
DriveAlive减少了重建模式下的性能问题,而这主要通过减少事件数量而实现的,在此队列完全进入了重建模式。