RAID系统的可靠性分析一个存储系统要达到一定的可靠性,则各单独的部分都需要达到一定的可靠度要求。在RAID系统中,系统的可靠性可分配到每个硬盘中,但是整个系统的可靠性并不是它们的总和。不同的阵列级别都有不同的分配模式,故有不同的性能和冗余。11、不同的RAID级别可靠性模型本文提供了在RAID中硬盘间关系的数学模型。使用这些模型,对不同的RAID类型对整个磁盘阵列的可靠性的影响进行了评估。虽然一个磁盘阵列中可以包含不同级别的RAID和不同容量的磁盘,但本文是以8个硬盘在同一阵列中并采用同一RAID级别为例。并假定使用的硬盘为100%使用率,并在3年以内的时间内可靠性为90%(本文以后的计算数据均为这3年内的可靠性)。2A、RAID0:数据条带RAID0即条带:将数据分为同等大小的数据块并分别放到不同的磁盘上。例如:一个150K的文件可被条带化为10个15K的数据块。一组条带化的磁盘对操作系统来说就是一个独立的逻辑盘。条带提供了一个低成本提高磁盘I/O性能的方法。但是RAID0不提供任何数据冗余,如果任何一个磁盘失效,所有的数据都会丢失。假设一个有6个硬盘的RAID0阵列,其可靠性的逻辑图如下图所示:ͼ1RAID0的可靠性框图所有的硬盘为串行,则其可靠性的数学模型为:nRRAIDSET=RHDDii=1如果每个硬盘在三年内的可靠性为90%,则8个硬盘的RAID0系统在三年类的可靠性为:8RRAIDSET=0.9=0.4305i=1即数据不会丢失的概率为43.05%。而且随着硬盘数量的增加,系统的可靠性急剧下降。3B、RAID1和RAID10:磁盘镜像和复制RAID1为磁盘镜像,即写到某个磁盘的数据都会被复制到另一个磁盘中。RAID1要求至少有两个硬盘组成一组,成为一个阵列组。例如:在有三个硬盘的阵列中,可以用第一和第二个硬盘数据镜像,而第三个硬盘做为热冗余(Hotspare)硬盘;有四个硬盘就可以分别创建两个RAID1...镜像可以提供数据冗余,并且可以改进读性能。在RAID1配置中,一个硬盘失效不会造成数据丢失。然而,如果在一个RAID1组中的两个硬盘都失效,则数据会丢失。其可靠性的逻辑图如下图所示:ͼ1RAID10的可靠性框图则其可靠性的数学模型为:RAID组数目Rarray=[(1-(1-RHDD1)(1-RHDD2)]i=1如有8个硬盘则:4Rarray=[(1-(1-0.9)(1-0.9)]=0.9606i=1说明在8个硬盘组成的RAID10在三年内不丢失数据的可靠性为96.06%,且随着磁盘数量增加可靠性下降,但相对不明显。磁盘复制就是考虑SCSI控制器的故障,将硬盘接到不同的SCSI通道上,考虑SCSI控制器的可靠性,则整个系统的可靠性相对较高。4C、RAID0+1:条带化镜像RAID0+1即在一个硬盘组中数据进行条带化,然后与另一个硬盘组进行镜像,它可以改进I/O性能和可靠性。如果一个硬盘组中的一个硬盘故障,则整个磁盘组数据丢失,但所有数据还会保存在另一个硬盘组中。但是剩下的硬盘组中又有一个硬盘故障则会导致数据丢失。其可靠性的逻辑图如下图所示:ͼ1RAID01的可靠性框图则其可靠性的数学模型为:Rarray=1-(1-RHDDn/2)2n为磁盘的个数如有8个硬盘则:Rarray=1-(1-0.94)2=88.17%说明在8个硬盘组成的RAID1在三年内不丢失数据的可能性为88.17%。并且随着磁盘数量的增加可靠性降低比较明显。同样条件下,RAID的可靠性比RAID10低,而且随着硬盘数量的增加差距越明显。5D、RAID5RAID5即在一个硬盘组中数据进行条带化,然后用一个硬盘的空间来存放这些条带数据的校验数据,并且将这些校验数据均匀分布在硬盘组的各个硬盘中。这样如果一个硬盘组中的一个硬盘故障,则可以通过在其他硬盘上的校验数据恢复该硬盘的数据。故一个硬盘故障不会影响硬盘组的数据,但多于一个硬盘故障则硬盘数据会全部丢失。ͼ1RAID5的可靠性框图RAID5的可靠性数学模型为:RArray=n×(1-RHdd)RHdd(n-1)+Rhddnn为磁盘个数如果有8个硬盘,则:RArray=8×(1-0.9)×0.97+0.98=81.31%可见RAID5的可靠性相比RAID10和RAID01较低,而且随着硬盘数量增加可靠性下降,但是RAID5硬盘利用率高(随着硬盘数量增加越来越高),故是比较常用的RAID级别。6E、RAID5+Hotspare为提高RAID5的可靠性,经常采用的方式是采用Hotspare,即给RAID5增加一块硬盘,当阵列中有一块硬盘故障后,这块硬盘可以自动加入到阵列中,保证阵列的完整性。这样阵列中要有3个或3个以上的硬盘故障才会有数据丢失(这里不考虑两个硬盘同时故障、过硬盘在重建阵列过程中故障等罕见情况)。其可靠性框图和RAID5相似,仅判决条件由(N-1)/N改为(N-2)/N。其可靠性数学模型为:RArray=n×(n-1)×(1-RHdd)2×RHdd(n-2)/2+n×(1-RHdd)RHdd(n-1)+Rhddnn为磁盘个数如果有8个硬盘,其中一个做Hotspare,则:RArray=8×(1-0.9)×0.97+0.98=96.19%可见采用Hotspare可以使阵列的可靠性得到较大的提高。但是因为Hotspare加入阵列时的重建过程等影响,实际的可靠性会低一些。72、各RAID级别可靠性的比较根据以上的分析,各RAID级别的可靠性随硬盘数量的变化如下图所示:故同样硬盘数量情况下,RAID10和RAID5+Hotspare可提供较高的可靠性,RAID5和RAID0的可靠性较低。结论:1、RAID10和RAID5+Hotspare可提供较高的可靠性,但考虑RAID5+Hotspare的机制较复杂,Hotspare正常加入到阵列中的概率等因素,RAID10的可靠性相对更高。但因硬盘利用率较低,故成本较高。2、RAID10和RAID01的成本完全相同,但可靠性相差很大,故不建议采用RAID01,如阵列卡支持应尽量采用RAID10。3、RAID5虽然成本低,但可靠性相对较低,特别是在阵列硬盘较多时,建议均增加Hotspare。4、随着硬盘数量的增加,各RAID级别的可靠性均明显下降,特别是RAID0、RAID5、RAID01,故在性能能满足的情况下,可采用尽量少的硬盘配置阵列(选用大容量的硬盘)。