以一起数据灾难谈RAID0+1及RAID1+0

  近日,遇到一例4块盘SCSI RAID0+1的数据恢复,由4块36G SCSI组成。客户称是做了两组RAID1。出故障后,RAID状态里3块盘OFFLINE。
    按我的理解,这个应该是两组逻辑盘(分别做的RAID1),那即使是3块盘OFFLINE,也应该有一组逻辑盘是可以正常工作的。但客户用装在别的硬盘上的WINDOWS访问此阵列时,也无法识别阵列的逻辑盘。这样的话,很多就解释不通了,只能仔细分析了。
    拿下硬盘,单独接在SCSI适配器上,进入系统,无异常,可以识别出4块物理硬盘。分析,无明显RAID信息区域,之后,对4块盘做比较,结论是1、3号盘及2、4号盘每组都有相同性,但后面有大量不一致数据。1号盘及2号盘里有分区表,每个分区表里的描述都大约指出原逻辑盘分区总和大约68G。据此,可知有以下三种情况:
    1、两组RAID0,但1、3号及2、4号均有部分完全相同的数据,应该可以排除。
    2、RAID1+0(即两两做RAID1,再做RAID0,这种安全级别高,客户是集成商做的,可能性最大),一段时间内,两组RAID1中先后都有一块硬盘离线(此后就相当于RAID0,再不能提供任何冗余)。再后来,又有一块硬盘离线,系统崩溃。这种情况非常符合RAID里的表现。
    3、RAID0+1(即两两做RAID0,再做RAID1,这种不太好,推断可能性不大)
    根据分析后,发现除1、3组成的RAID,无任何错误,认为应该是对了。重组数据。直接写回RAID,系统正常可以启动。文件访问也正常。
    本来以为已经完美解决了。结果很短的时间内收到客户电话,称数据严重滞后,是两年前的东西。
    一细想,大悟。
    真实的情况应该是:用户做了RAID0+1,结果组成RAID1中的其中一组RAID0中有一块盘离线(应该为1或3),导致整个RAID0离线(两块离线了),之后一直以单RAID0的方式工作(想起来竟然两年有余,汗!),直到最近,剩下的一组RAID0中有一块盘离线,RAID彻底瘫痪。用户使用的RAID卡为ADAPTEC的0通道RAID卡,比较低端,无法安全缓冲数据,最后离线时,因数据部分未写入等原因导致文件系统一致性有问题。
    重新组织3及5号盘,修正错误,数据100%恢复成功。
 
    此案例中突显RAID0+1及RAID1+0的安全差别,细细说说吧。
    RAID0+1:
    结构为,两块以上(含两块)硬盘先做条带(RAID0),组成相同的两组一级逻辑盘。再将两组逻辑盘做镜像(RAID1)。如下图:
以一起数据灾难谈RAID0+1及RAID1+0
    RAID0+1的冗余性(安全性):只要有一块盘出错,它所在的RAID0就会整体离线,只能靠最外层的RAID1的冗余来支撑。实际上,只能允许一块盘出错,这样如果在4块以上的硬盘盘阵中,安全性实际会差得多。
    利用率:1/2
    效率:读与写均可以实现N/2(N为硬盘总数)的理论带宽
    实现:容易,控制器无需强劲处理能力,通常也无需大缓冲。
 
    RAID1+0:
    结构为,两块以上硬盘先做镜像(RAID1),组成相同的两组或两组以上一级逻辑盘。再将两组(或两组以上)逻辑盘做条带(RAID0)。如下图:
以一起数据灾难谈RAID0+1及RAID1+0
    RAID1+0的冗余性(安全性):只要有一块盘出错,它所在的RAID1中不会有问题,所以每组RAID1中都允许有一块盘离线。安全性:损坏两块盘崩溃的机会只有2/(N-1)。
    利用率:1/2
    效率:读与写均可以实现N/2(N为硬盘总数)的理论带宽
    实现:容易,控制器无需强劲处理能力,通常也无需大缓冲。
 
上述分析,可以明显看到,RAID1+0比RAID0+1的安全级别会高很多,其他参数却相同。所以,需要安全级别高的场合下,一定要选择RAID1+0。实际上,RAID0+1是华而不实的结构,很少会有它的适用场合。本文提及的案例,如果用户使用的是RAID1+0,出故障的概率便会低得多了。




本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/40400,如需转载请自行联系原作者
上一篇:前端学习的心路历程


下一篇:概率论快速学习02:概率公理