RAID 10 和RAID 01 (RAID 1+0 和RAID 0+1)

关于RAID10和RAID01的问题,我其实很是纠结,因为网上现有的资料和我教科书上的说法是完全相反的,我也不知道该信谁。姑且按照公认的比较权威的维基百科的说法来吧。不过我考试的时候还是照着书上的来了,毕竟考试时书才是王道。

RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜射再用三个建RAID 0,那么坏一个硬盘便会有三个硬盘脱机。因此,RAID 10远较RAID 01常用,零售主板绝大部份支持RAID 0/1/5/10,但不支持RAID 01。

raid10.png

raid01.png

上面的资料参考了维基百科,页面传送。下面的资料参考了存储人生的一篇文章,页面传送

##RAID 01 VS RAID 10

性能与可用空间始终是相同的。从数据存储的逻辑位置来看,在正常的情况下RAID01和RAID10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。而当有磁盘出现故障时,这两种情况下,在读的性能上面也将不同,RAID10的读性能将优于RAID01。

最主要的区别是容错性。RAID 01容错性要差一点,因为只有2组RAID 0来保护。RAID 10由于有多组RAID 0,虽然每个组只有2块盘,因此可以允许3块盘同时坏掉的情况。我们可以计算RAID 01与RAID 10允许坏2块盘与3块盘的情况,故障率RAID10是低于RAID01的。 raid10可以损坏任意一块磁盘,而整体的数据仍然是可用的.我们暂且说这个系统的冗余度为2.而raid01只允许损坏特定的一块磁盘.左边的raid0中有一块盘损坏,此时左边的raid0便没有作用了.所有的io会切到右边的raid0,而这个时候,只能允许左边剩余的盘损坏,如果右边任何一块盘损坏的话,则整体数据将不可用,所以这个系统冗余度就变成了1.

以下讨论disk failure 的 case

####Case 1. 任何一个硬盘损坏

RAID 0+1 : 另一个 stripe 可继续工作, 但本身成为 SPOF.
RAID 1+0 : 两个 segments 均可继续运作, 所以无 SPOF 的 concern. (胜)

####Case 2. 每个 stripe/segment 各损坏一个硬盘

RAID 0+1 : 每个 stripes 都无法继续运作.
RAID 1+0 : 每个 segments 均可继续运作, 所以无 SPOF 的 concern. (胜)

####Case 3. 同一个 stripe/segment 损坏两个硬盘

RAID 0+1 : 另一个 stripe 可继续运作, 但本身成为 SPOF.
RAID 1+0 : 若损坏的两个,属于同一mirror set, 则无法继续运作(败);若属于不同 mirror set, 则两个 segments 均可继续运作, 所以无 SPOF 的 concern. (胜)

综合以上分析, RAID 1+0 不是在所有的情況下, 它的 reliability 都优于 RAID 0+1, 但是在大部分的情況, RAID 1+0 的 reliability 是优于 RAID 0+1 的. 所以 RAID 0+1 适用于对 performance 的需求高于 reliability 的环境;RAID 1+0 则相反。

另外在 recovery 的情況, RAID 0+1 要重新 mirror 整个 stripe; 而 RAID 1+0 只要重新 mirror 一个硬盘即可。

RAID 10 和RAID 01 (RAID 1+0 和RAID 0+1)

关于RAID10和RAID01的问题,我其实很是纠结,因为网上现有的资料和我教科书上的说法是完全相反的,我也不知道该信谁。姑且按照公认的比较权威的维基百科的说法来吧。不过我考试的时候还是照着书上的来了,毕竟考试时书才是王道。 Continue reading “RAID 10 和RAID 01 (RAID 1+0 和RAID 0+1)”