【IT168 专稿】廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks,RAID)是将一堆磁盘通过相关的技术连接起来,构成逻辑上的空间。RAID可以使诸多磁盘驱动器同时传输数据,在逻辑上它们又是一个磁盘驱动器,用RAID可以使单个的磁盘驱动器提高数倍的速率。因此,RAID技术正在变成支持文件共享、邮件交换和web服务器等关键性服务的计算机系统所必备的一项标准功能。
磁盘阵列根据RAID控制器采用的工作模式和算法不同有不同的级别,因而具有不同的可靠性和性能。目前,常用的磁盘阵列有RAID0、RAID1、RAID0+1、RAID3、RAID5、RAID6和RAID10等。这里将分析其中的RAID0,RAID3和RAID10三种磁盘阵列的可靠度。
一、磁盘阵列可靠度模型和可靠性值
1、磁盘阵列可靠度模型
一个磁盘阵列可以有包含多个不同的RAID级和磁盘容量,为简化模型,这里仅讨论基于8个相同RAID级硬盘驱动器组成的磁盘阵列,所有计算均假设在百分之百运转情况下3年内可靠性可以达到0.90的40 GB硬盘驱动器。
2、RAIDO的可靠性值
磁盘阵列RAID0的结构图如图1所示,图中的磁盘阵列RAID0由8个磁盘组成,因此磁盘阵列的可靠性值就是每一个单独的硬盘驱动器的可靠性的乘积。
由图l可知,1个磁盘阵列RAID0的可靠性值
RRAIDSET=
根据前面的假设,一个单独的硬盘驱动器的可靠性值RHDD是0.9,则8个磁盘组成的RAID0磁盘阵列的可靠性值
RRAIDSET=
计算表明,在3年内没有任何数据损失的可能性是43%,而发生数据损失的可能性是:
100%-43%=57% RAID3属于并行访问磁盘阵列,其结构如图2所示。在RAID3中,使用了专门的磁盘存放所有的校验值,并把数据分散到剩余的磁盘上,因而RAID3需要至少3块盘阵来运行。
RAID3是使用专门校验盘的并行访问,其性能优势依赖于缓存技术和更高的磁盘转速。整个RAID 3系统只需要一个校验盘,就可以使硬盘的利用率提高。 图2中,配置了n块硬盘驱动器的RAID3的可靠性值
RRAIDSET= 因此,当配置了3块盘阵(共有8个相同RAID级硬盘驱动器,1个作为奇偶校验硬盘,7个作为数据盘)时,可靠性值
RRAIDSET= 计算表明,3年内没有任何数据损失的可能性是81%。因此,发生数据损失的可能性是:
100%-81%=l9%
RAID3可以承受在由n个硬盘驱动器组成的磁盘阵列中的一个硬盘发生故障,例如:如果奇偶校验硬盘发生故障,其余用作存储数据用的硬盘不会被影响,但是冗余信息将丢失,如果其中一个数据硬盘发生故障,RAID控制器使用剩余的数据硬盘,并且奇偶校验硬盘重新计算丢失的数据,系统性能将有稍微的降低直到发生故障的硬盘驱动器被恢复,但是不会有数据丢失。如果在发生故障的硬盘恢复以前另一个硬盘发生故障,那么RAID组件内的所有的数据将会丢失。
4、RAID10的可靠性值
RAID 10的结构如图3所示,图中RAID 10是将RAID l的镜像功能和RAID 0的数据分割功能混合了起来,因此RAID 10需要至少4块硬盘驱动器(2块作为镜像盘,2块作为数据盘)来运行。
其中数据是在被镜像的驱动器组之间分割,当一个硬盘驱动器在重建的时候,RAID 10系统将比奇偶校验RAID系统的性能更好,这是因为丢失的数据不是从奇偶校验信息来重新获得,而是从其余的驱动器上拷贝得到的。
图3中,RAID lO的一组阵列的可靠性值
RRAIDSET= 当RAID lO分成4组时,
LetRdiskset=P(AB∪CD∪AD∪CB)
因此,1个RAID lO磁盘组的分组如下:
每次l组:+P(AB)十P(CD)十P(AD)+P(CD)
每次2组:-P(ABCD)-P(ABD)-P(ABC)-P(BCD)-P(ACD)-P(ABCD)
每次3组:+P(ABCD)+P(ABCD)+P(ABCD)+P(ABCD)
每次4组:-P(ABCD)
RRAIDSET=[P(AB)+P(CD)+P(AD)+P(CD)-P(ABCD)-P(ABD)-P(ABC)-P(BCD)-P(ACD)-P(ABCD)+P(ABCD)+P(ABCD)+P(ABCD)+P(ABCD)-P(ABCD)]
将相同项相抵消,得到RAID 10的可靠性值
RRAIDSET=[P(AB)+P(CD)+P(AD)+P(CD)-P(ABD)-P(ABC)-P(BCD)-P(ACD)+P(ABCD)]
RRAIDSET=[0.8100+0.8100+0.8100+0.8100-0.7290-0.7290-0.7290-0.7290+ RRAIDSET =(O.9800)2=0.9604
计算表明,在3年内没有任何数据损失的可能性是96%,发生数据损失的可能性是:
100%-96%=4%
在RAID 10磁盘阵列中,在镜像组里有一个硬盘驱动器发生故障不会导致任何数据丢失,只要每一个镜像组里有一个活动的驱动器,所有的数据就仍然是可用的,如果一个镜像组里的2个硬盘驱动器都发生了故障,那么所有的数据都会丢失。
RAID 10的可靠性值是每组可靠性值之和,即:
1个盘的可靠性值0.9,2个串联盘(如P(AB))的可靠性值为:0.92=O.810O;3个串联盘(如P(ABD))的可靠性值为:0.93 =0.729O;4个串联盘(如P(ABCD))的可靠性值为:0.94=
计算表明,一个RAID l0的磁盘组的可靠性值是0.980,对于一个由8块硬盘组成的RAID l0的可靠性值(也就是说包括2个RAID l0磁盘组),其可靠性值是两组盘阵可靠性值的乘积,即:
二、磁盘阵列可靠度对比
将设计的模型在进行测试,对比数据如表l所示。
表1 RAID可靠性值比较
8块盘
|
3年内无任何数据
损失可能性(%)
|
3年内发生数据
损失的可能性(%)
|
RAID 0
|
42.8
|
57.2
|
RAID 3
|
80.9
|
19.1
|
RAID 10
|
95.8
|
4.2
|
三、结论
磁盘阵列有着广泛的应用,但它却又往往是整个网络存储系统安全运行的瓶颈,它的可靠性的量化计算越来越受到关注,因为有了量化的数结论和分析基本一致,由8块盘组成的RAID组可靠性据,就能为深层次地认识事物本质提供科学的依据,为多方案的优化比较奠定基础,进而做出正确的决定。
这里得出RAID0、RAID 3和RAIDlO三种磁盘阵列基于标准模型的可靠性值,其中RAIDlO比相应其他RAID的容量更大,可靠性更佳。研究磁盘阵列的可靠性值,提出可靠性值的量化计算公式,在磁盘阵列理论研究和实际的开发应用中都具有重要意义。