1、每一个 RAID 级别都有不同的分布模式,其系统的可靠性也有所不同,并影响系统的性能和冗余度。因此,准确分析 RAID 系统的可靠性或容错能力,有助于建设投资少、可靠性高的存储系统。 何谓可靠性? 可靠性在理论上讲是概率问题。 一套系统从投入使用开始,连续运行一段时间后会出现故障,通过维修或更换部件后再投入运行;第二次连续运行一段时间后,可能又出现故障设 Ti 为运行时间,ti 为停运时间,T 表示平均运行时间,它是 T1、 T2Tn的代数平均值,t 表示平均停运时间,它是 t1、t 2tn的代数平均值。如果令 R 为可靠性,则 RT/(Tt)。设 F为故障率,则 F=t/(Tt),且 R+F
2、=1。 为分析方便,本文仅讨论由相同的 RAID 级和相同容量的硬盘驱动器组成的磁盘阵列,并且假设硬盘驱动器在 100%运行情况下,3 年内的可靠性 r 为 0.95。 RAID 及其可靠性 RAID 是利用若干硬盘驱动器加上控制器按一定的组合方式组成的一个大容量、快速响应和高可靠的存储子系统。硬盘驱动器的不同组合方式形成了不同级别的 RAID 阵列。 1RAID 0数据分割 RAID 0 通过 2 个以上的硬盘驱动器组成一个磁盘阵列,读入和写出的数据流被分割为大小相同的块或条,然后平均分配给各硬盘驱动器来完成传输。虽然组成 RAID 的磁盘条(Stripe Block)被显示为同一逻辑磁盘,
3、但实际却由几个硬盘驱动器并行处理,使整个系统的性能大大提高。RAID 0 阵列的实际容量为 Mn(M 为硬盘驱动器的容量,n 为硬盘驱动器的数量,下同),磁盘利用率为 100。 RAID 0 在所有 RAID 级别中效率最高,但却是惟一不具有容错性的。由于它将数据分成块存储在不同的硬盘驱动器内,从而极大地增加了数据的安全隐患,且这种隐患随着系统中硬盘驱动器总数量的增多而加大,因为如果其中有一个硬盘驱动器中的数据被破坏,整个数据就不能被正确读出了。显然,系统的可靠性值就是每一个单独硬盘驱动器可靠性的乘积,即 R=rn,对于 12 块相同硬盘驱动器组成的 RAID 0 阵列,有 R=0.9512=
4、54。 2RAID 1磁盘镜像 如果说 RAID 0 是追求性能而放弃可靠性的话,那么,RAID 1 正好相反,它是追求可靠性而放弃性能的一种解决方案。其做法就是通过磁盘镜像使所有在给定硬盘驱动器上写入的数据都被复制到另一个硬盘驱动器上。RAID 1 至少由 2 个硬盘驱动器组成,其实际容量为 Mn/2,磁盘利用率为 50。 在 RAID 1 中,2 个硬盘驱动器组成一个镜像对,在一对镜像盘中,如果 1 个发生错误不会损失任何数据,因为数据可以从镜像盘中恢复。但如果 2 个硬盘驱动器都发生了错误,数据则将丢失。 2 个硬盘驱动器组成的 RAID 1 阵列其可靠性计算如下: 1 个硬盘驱动器出现
5、错误的概率为 1-r,2 个同时出现错误的概率为(1-r)(1-r),则有 R1-(1-r)(1-r)r(2-r)。 对于 n(n 为 2 的倍数)个硬盘驱动器组成的 RAID 1 阵列,每 2 个硬盘驱动器组成一组,共有 n/2 组,则 R(r(2-r) n/2 。 12 块相同硬盘驱动器组成的 RAID 1 阵列,其可靠性为 R=(0.95(2-0.95)12/2= 99。 3RAID 0+1带镜像的数据分割 RAID 0+1 结合了前两种方式的优点。它在具有 RAID 0 的高性能的同时也具有 RAID 1的冗余和镜像能力。在该模式下,数据被分割到一个磁盘组,然后被镜像到另一个磁盘组上,
6、从而导致了良好的输入、输出性能和较高的可靠性。RAID 01 阵列的实际容量为Mn/2,磁盘利用率为 50。RAID 0+1 至少由 4 个硬盘驱动器构成。其主要缺点是价格昂贵。 在 RAID 0+1 中,如果一个磁盘组的所有硬盘驱动器出现了错误,该磁盘组的数据将会丢失,不过所有数据都可以从镜像磁盘组中恢复。但是,如果剩余的磁盘组(镜像)的任何一个硬盘驱动器在第一个磁盘组数据被恢复之前出现了错误,那么所有的数据都会丢失。 在 n(n 为 2 的倍数)个硬盘驱动器组成的 RAID 01 阵列中,将硬盘分成 2 组,每组n/2 个硬盘。类似 RAID 1 的计算,有 R1-(1-r)(1-r),其
7、中 r为每组的可靠性。类似 RAID 0 的计算,有 rr n/2,则 R1-(1-r n/2)(1-rn/2)r n/2 (2- rn/2)。 对于 12 块相同硬盘驱动器组成的 RAID 01 阵列,R =0.9512/2(2-0.95 12/2 )93。 4RAID 10镜像分割 RAID 10(或称 RAID 10)与 RAID 01 不同,它是用硬盘驱动器先组成 RAID 1 阵列,然后在 RAID 1 阵列之间再组成 RAID 0 阵列。RAID 10 模式同 RAID 0+1 模式一样具有良好的数据传输性能,但却比 RAID 0+1 具有更高的可靠性。RAID 10 阵列的实际容
8、量为Mn/2,磁盘利用率为 50。RAID 10 也需要至少 4 个硬盘驱动器构成,因而价格昂贵。 RAID 10 的可靠性同 RAID 1 一样,但由于 RAID 10 硬盘驱动器之间有数据分割,因而数据传输性能优良。 5RAID 3带有奇偶校验的比特级的数据分割 在 RAID 3 中,RAID 控制器将计算奇偶(错误修正)信息,并且将它存储到指定的奇偶校验用硬盘驱动器。而数据则被分割成字节或比特大小的块,存储到剩余的硬盘驱动器上。RAID 3 提供了较高的数据传输速率,但写入时所需的时间长,因为对每一个写入操作都需要计算奇偶校验信息,并写入奇偶校验用硬盘驱动器。RAID 3 阵列至少需要
9、3 块硬盘驱动器,其实际容量为 M(n-1),磁盘利用率为(n-1)/n 。 在由 n 个硬盘驱动器组成的 RAID 3 磁盘阵列中,如果有一个硬盘驱动器出现故障,数据不会丢失;如果奇偶校验硬盘驱动器出现故障,存储的数据不会丢失,但冗余将丢失;如果一个数据硬盘驱动器出现了故障,RAID 控制器使用剩余的数据盘和奇偶校验盘重新计算丢失的数据,系统性能将有稍微的降低,直到出现错误的硬盘驱动器被修复。但如果出现错误的硬盘驱动器被修复以前又出现了错误,那么 RAID 3 阵列中的所有数据将会丢失。 其可靠性的推导如下: 3 个硬盘驱动器均正常的概率为 r3,其中 2 个硬盘驱动器正常、1 个故障的概率
10、为C32r2(1-r),于是有 Rr 33r 2(1-r) 。 对于 n 个硬盘驱动器组成的 RAID 3 阵列,则类似有 Rr nC nn-1rn-1(1-r)r n-1(n-r(n-1)。 对于由 12 块相同硬盘驱动器组成的 RAID 3 阵列,有: R =0.95 (12-1)(12-0.95(12-1)=88。 6RAID 5带有奇偶校验分割的数据分割 RAID 5 与 RAID 3 很相似,不同之处在于 RAID 5 的奇偶校验信息也同数据一样被分割保存到所有的硬盘驱动器,而不是写入一个指定的硬盘驱动器,从而消除了单个奇偶校验硬盘驱动器的瓶颈问题。RAID 5 磁盘阵列的性能比 R
11、AID 3 有所提高,但仍然需要至少 3块硬盘驱动器。其实际容量为 M(n-1),磁盘利用率为(n-1)/n 。 由 3 块硬盘驱动器组成的 RAID 5 磁盘阵列如图 5 所示。 与 RAID 3 一样,在 RAID 5 阵列中,当一个硬盘驱动器发生错误时,所有的数据仍然是可用的,丢失的数据将从剩余的硬盘驱动器和奇偶校验信息中重新计算得到,但当 2 个以上的硬盘驱动器同时出现失败,则所有数据将会丢失。 RAID 5 的可靠性与 RAID 3 相同。 各种 RAID 级别的磁盘阵列性能比较 对于由 12 块硬盘驱动器组成的不同 RAID 阵列,其可靠性期望值见附表。 这些可靠性期望值显示了使用镜像的 RAID 阵列比使用奇偶校验的 RAID 阵列更可靠。表现良好的当属 RAID 10,一个分割和镜像的混合体,具有在三年内没有任何数据丢失的最高可能性为 99,而 RAID 0 因为不使用镜像,它丢失数据的可能性最高为 46。当然,在实际应用中,为选择合适的 RAID 阵列,应综合考虑 RAID 阵列的可靠性、数据传输性能、组建成本,以及磁盘阵列的用途和应用环境等因素。