2008年(8065)
分类: 服务器与存储
2008-12-03 10:57:30
在经过多年的沉寂之后,RAID 6技术随着大容量ATA硬盘的广泛采用又重新引起了业界的重视。相对于RAID 5来说,用户对RAID 6的了解比较少,根据HDS的技术白皮书《采用RAID-6技术,增强数据保护》改编成此文与大家共享。为了较为完整地说明问题,编者保留了一些与具体产品配置相关的内容。
RAID 5是在存储系统中广泛采用的数据保护技术。该技术是通过把应用数据分成数段,连同这些数据段的校验信息写入一组磁盘来实现的。如果其中有个磁盘出现了故障,就会利用其余的磁盘中的数据和检验信息把故障盘中的数据恢复到热备盘中以保证数据不会丢失。这样RAID 5就存在一种风险,如果在数据重建的过程中,RAID组中的第二块硬盘出现故障,就会出现数据丢失。
以前,两块盘同时坏的情况是小概率事件,几乎不可能发生。但是近来随着光纤(FC)盘和SATA盘的容量和密度不断增加,使得RAID 5的重建时间也不断增加。这样两块盘同时坏的概率也增加了,在企业级存储上,这种风险必须得到重视。
为了应对这种情况,存储厂商的RAID 6技术就是可以保证两块盘同时出故障而不会丢失数据的新技术。日立数据系统(HDS)公司的TagmaStore全线存储系统除了支持RAID 5,RAID 1技术以外还可以支持RAID 6保护技术,提供给用户多种保护方式的选择。
RAID 6技术背景和简介
RAID技术是为了防止存储系统因为磁盘故障而丢失数据而研发出来的。该技术把数据和校验信息分布到一组盘中(RAID组),当有盘坏的时候,丢失的那部分数据可以通过其他盘上的数据和校验信息计算恢复。这样就增强了存储系统的可靠性。
HDS公司的TagmaStore全线存储系统可以支持RAID 0,RAID 1,RAID 5和RAID 6技术,所以HDS的存储系统不但可以提供更好的可靠性,而且也可以比以往的存储系统有更出色的性能。
HDS的高端存储系统一般以4个磁盘为一个组,称为Array Group,而一个RAID组则包含一个或者多个Array Group。例如:RAID 1(镜像)可以是2D + 2P或者4D + 4P的配置,也就是说2块数据盘,2块镜像盘,或者4块数据盘和4块镜像盘的配置。RAID 5(带校验的条带化)可以是3D + 1P的配置,其中3块数据盘,1块检验盘,或者是7D + 1P的配置,其中7块数据盘,1块检验盘的配置。实际上,RAID 5的数据和校验都是条带化后分散在RAID组中的各个磁盘中的。
RAID-1提供了最高的可靠性,一块盘上的数据都镜像到RAID组中的另外一块磁盘上。但是这种方式对磁盘的利用率不高,只有一半的磁盘空间能够存放数据,存放同样的数据要多买一倍的磁盘。RAID 5改善了利用率的问题,但是因为要计算校验信息而使得写性能有所下降。HDS TagmaStore系列存储中的模块化产品也能支持RAID 0技术(没有校验的条带化),RAID 0技术有很好的性能表现,但是RAID 0没有冗余保护功能,RAID组中任何一块磁盘的损坏都会造成数据的丢失。因此HDS只在中端模块化阵列的光纤盘上支持RAID 0技术,在SATA盘上不支持RAID 0,同时HDS建议用户不要在关键数据上采用RAID 0技术。
当采用RAID 1或者RAID 5技术的时候,如果其中有个磁盘出现了故障,就会利用RAID组中其余的磁盘中的数据和检验信息把故障盘中的数据恢复到热备盘中以保证数据不会丢失。工程师用新盘替换坏掉的磁盘,这时候存储系统会把热备盘中的数据拷贝回新换上的盘中(HDS的WMS/AMS中端模块化存储可以支持不回拷)。当回拷完成后,系统又回到了正常工作状态,可以再次抵御磁盘故障。
如今磁盘的容量和密度一再变大,出现了300GB的光纤盘和500GB的SATA盘,每个盘中存放的数据比以往大了很多,磁盘故障影响的数据量也跟着增加。这样从磁盘故障,到磁盘系统恢复正常状态的时间也会比以往长很多,这个过程中同一个RAID组里面第二块磁盘出现故障而导致数据丢失的可能性也变大。
为了防止两块磁盘故障而引起的数据丢失,HDS TagmaStore存储系统现在支持RAID 6(6D + 2P)。和RAID 5相似的是,RAID 6采用了校验数据,和RAID 5不同的是RAID 6有两份检验数据,可以保证同一RAID组中两块磁盘同时故障而不丢失数据。
RAID 6(6D + 2P)原理
和RAID 5相似,RAID 6(6D + 2P)根据条带化的数据生成校验信息,条带化数据和校验数据一起分散存储到RAID组的各个磁盘上。在图1中,D0,D1,D2,D3,D4和D5是条带化的数据,P代表校验数据,Q是第二份校验数据。
图1:RAID 6(6D + 2P)根据条带化的数据生成校验信息,条带化数据和校验数据一起分散存储到RAID组的各个磁盘上
RAID 6校验数据生成公式(P和Q):
P的生成用了异或
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q的生成用了系数和异或
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D0~D5:条带化数据
A0~A5:系数
XOR:异或
*:乘
在RAID 6中,当有1块磁盘出故障的时候,利用公式1恢复数据,这个过程是和RAID 5一样的。而当有2块磁盘同时出故障的时候,就需要同时用公式1和公式2来恢复数据了。
在图1中,各系数A0~A5是线性无关的系数,在D0,D1,D2,D3,D4,D5,P,Q中有两个未知数的情况下,也可以联列求解两个方程得出两个未知数的值。这样在一个RAID组中有两块磁盘同时坏的情况下,也可以恢复数据。
上面描述的是校验数据生成的算法。其实RAID 6的核心就是有两份检验数据,以保证两块磁盘同时出故障的时候,也能保障数据的安全。
数据分布
如图2所示,通过条带化,把应用数据和校验数据打散到一个RAID组的8个磁盘中,可以充分保证读写性能和数据的安全性。
图2:RAID 6的数据分布
RAID 6可以保证同一个RAID组中两块磁盘故障的情况下的数据安全。
RAID 6的数据恢复
从1块磁盘故障中恢复数据
当有1块磁盘出故障的时候,利用公式1恢复数据,这个过程不需要Q这部分校验数据,如图3所示,这个过程是和RAID 5一样的。
图3:在RAID 6(6D + 2P)中恢复D3数据,展示了存放D3数据的盘出现故障的恢复过程
公式:D3 = D0 XOR D1 XOR D2 XOR P XOR D4 XOR D5
从2块磁盘故障中恢复数据
当同时有2块磁盘故障的时候,需要同时用到公式1和公式2来恢复数据,如图4所示。
图4:在RAID 6(6D + 2P)中恢复D3和D4数据,展示了存放D3和D4数据的盘出现故障的恢复过程
公式1和公式2:
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D3和D4由解以上两个联立的方程得出结果
各种RAID类型之间的比较
空间的利用率
表1表明了在RAID 1、RAID 5和RAID 6下有多少磁盘空间是可以给用户数据使用的。
表1:不同RAID类型的磁盘利用率比较
性能之间的比较
表2表明了在足够磁盘数据的情况下各种RAID类型的性能比较,RAID 1 (2D + 2D)作为基准(100%)。
表2:不同RAID类型的性能比较
比较RAID 5 (7D + 1D)和RAID 6 (6D + 2D)随机写
如表2中所示,RAID 6在增加了可靠性的同时,牺牲了部分随机写性能。在随机写操作中,在同样多的磁盘的RAID组中,RAID 6所花费的时间是RAID 5的的1.5倍。每次RAID 5 (7D + 1D)进行一次随机写操作,实际上产生了4个I/O:读老的应用数据,读老的校验数据,写新的应用数据和写新的校验数据(P)。而RAID 6做同样一个随机写操作,实际上需要6个I/O,读老的用户数据,读老的校验数据P,读老的校验数据Q,写新的用户数据,写新的校验数据P,写新的校验数据Q。这样就造成了RAID 5 (7D + 1D)和RAID 6 (6D + 2D)随机写的33%性能差异。
RAID选择中的注意事项
在选择采用何种RAID类型的时候,必须注意以下事项:
用户数据需要多少空间
校验带来的磁盘空间损失
应用的性能要求
在磁盘故障时,磁盘的重建时间
随着用户数据的不断增长,用户采用大容量磁盘的可能性也与日俱增,但是在使用大容量硬盘的时候,必须要考虑过长的重建时间而引起的数据丢失风险。在某些情况下,数据重建会非常困难或者对系统性能的冲击会很大,如:大交易量,大量写操作的数据库应用,建议采用RAID 6技术,这样可以给用户数据带来更好的保护。
总结
RAID 5技术是很多存储系统数据保护的基础。但是采用RAID 5技术需要承担在第一块故障盘重建的过程中,第二块磁盘发生故障而导致数据丢失的风险。而RAID 6技术的推出使得数据可以在两块磁盘同时故障的情况下也不会丢失。