RAID级别的介绍与选择依据

时间:2011-08-04 09:37来源:www.jdcok.com 作者:RAID数据恢复

  RAID在市场上的的应用,已经不是新鲜的事儿了,很多人都大略了解RAID的基本观念,以及各个不RAIDLEVEL的区分。但是在实际应用面,我们发现,有很多使用者对于选择一个合适的RAIDLEVEL,仍然无法很确切的掌握,尤其是对于RAID0+1(10),RAID3,RAID5之间的选择取舍,更是举棋不定。下面将针对RAID0+1/10、RAID3以及RAID5的工作原理和特性,作一些分析和比较,以列出这些不同RAID阶层所适合的应用,对使用者能有原则性的帮助。

  RAID条带“striped”的存取模式

  在使用数据条带(DataStripping)的RAID系统之中,对成员磁盘驱动器的存取方式,可分为两种:并行存取ParalleledAccess独立存取dependentAccessRAID2和RAID3是采取并行存取模式。RAID0、RAID4、RAID5及RAID6则是采用独立存取模式。

  平行存取模式

  并行存取模式支持里,是把所有磁盘驱动器的主轴马达作精密的控制,使每个磁盘的位置都彼此同步,然后对每一个磁盘驱动器作一个很短的I/O数据传送,如此一来,从主机来的每一个I/O指令,都平均分布到每一个磁盘驱动器。为了达到并行存取的功能,RAID中的每一个磁盘驱动器,都必须具备几乎完全相同的规格:转速必须一样;磁头搜寻速度AccessTime必须相同;Buffer或Cache的容量和存取速度要一致;CPU处理指令的速度要相同;I/OChannel的速度也要一样。总而言之,要利用并行存取模式,RAID中所有的成员磁盘驱动器,应该使用同一厂牌,相同型号的磁盘驱动器。RAID数据恢复

  并行存取的基本工作原理

  假设RAID中共有四部相同规格的磁盘驱动器,分别为磁盘驱动器A、B、C和D,我们在把时间轴略分为T0、T1、T2、T3和T4:

  T0:RAID控制器将第一笔数据传送到A的Buffer,磁盘驱动器B、C和D的Buffer都是空的,在等待中;

  T1:RAID控制器将第二笔数据传送到B的Buffer,A开始把Buffer中的数据写入扇区,磁盘驱动器C和D的Buffer都是空的,在等待中;

  T2:RAID控制器将第三笔数据传送到C的Buffer,B开始把Buffer中的数据写入扇区,A已经完成写入动作,磁盘驱动器D和A的Buffer都是空的,在等待中;

  T3:RAID控制器将第四笔数据传送到D的Buffer,C开始把Buffer中的数据写入扇区,B已经完成写入动作,磁盘驱动器A和B的Buffer都是空的,在等待中;

  T4:RAID控制器将第五笔数据传送到A的Buffer,D开始把Buffer中的数据写入扇区,C已经完成写入动作,磁盘驱动器B和C的Buffer都是空的,在等待中;

  如此一直循环,一直到把从主机来的这个I/O指令处理完毕,RAID控制器才会受处理下一个I/O指令。重点是在任何一个磁盘驱动器准备好把数据写入扇区时,该目的扇区必须刚刚好转到磁头下。同时RAID控制器每依次传给一个磁盘驱动器的数据长度,也必须刚刚好,配合磁盘驱动器的转速,否则一旦发生miss,RAID性能就大打折扣。并行存取RAID的最佳应用并行存取RAID之架构,以其精细的马达控制和分布之数据传输,将数组中每一个磁盘驱动器的性能发挥到最大,同时充分利用StorageBus的频宽,因此特别适合应用在大型、数据连续的档案存取应用,例如:影像、视讯档案服务器

  数据仓储系统

  多媒体数据库

  电子图书馆

  印前或底片输出档案服务器

  其它大型且连续性档案服务器

  由于并行存取RAID架构之特性,RAID控制器一次只能处理一个I/O要求,无法执行Overlapping的多任务,因此非常不适合应用在I/O次数频繁、数据随机存取、每笔数据传输量小的环境。同时,因为并行存取无法执行Overlapping的多任务,因此没有办法"隐藏"磁盘驱动器搜寻?zseek?{的时间,而且在每一个I/O的第一笔数据传输,都要等待第一个磁盘驱动器旋转延迟?zrotationallatency?{,平均为旋转半圈的时间,如果使用一万转的磁盘驱动器,平均就需要等待50usec。所以机械延迟时间,是并行存取架构的最大问题。

  独立存取模式

  相对于并行存取模式,独立存取模式并不对成员磁盘驱动器作同步转动控制,服务器数据恢复www.jdcok.com其对每个磁盘驱动器的存取,都是独立且没有顺序和时间间格的限制,同时每笔传输的数据量都比较大。因此,独立存取模式可以尽量地利用overlapping多任务、TaggedCommandQueuing等等高阶功能,来"隐藏"上述磁盘驱动器的机械时间延迟Seek和RotationalLatency。由于独立存取模式可以做overlapping多任务,而且可以同时处理来自多个主机不同的I/ORequests,在多主机环境如Clustering,更可发挥最大的性能。独立存取RAID的最佳应用由于独立存取模式可以同时接受多个I/ORequests,因此特别适合应用在数据存取频繁、每笔数据量较小的系统。例如:

  在线交易系统或电子商务应用

  多使用者数据库

  ERM及MRP系统

  小文件之文件服务器

  一般常用的RAID阶层,分别是RAID0、RAID1、RAID3、RAID4以及RAID5,再加上二合一型RAID0+1或称RAID10。我们先把这些RAID级别的优、缺点做个比较:

  RAID级别相对优点相对缺点

  RAID0存取速度最快没有容错

  RAID1完全容错成本高

  RAID3写入性能最好没有多任务功能

  RAID4具备多任务及容错功能Parity磁盘驱动器造成性能瓶颈

  RAID5具备多任务及容错功能写入时有overhead

  RAID0+1/RAID10速度快、完全容错成本高

  接下来,我们分别针对RAID3、RAID5以及RAID0+1/RAID10作深入的讨论。

  RAID3特点与应用

  RAID3是将数据先做XOR运算,产生ParityData后,在将数据和ParityData以并行存取模式写入成员磁盘驱动器中,因此具备并行存取模式的优点和缺点。进一步来说,RAID3每一笔数据传输,都更新整个Stripe即每一个成员磁盘驱动器相对位置的数据都一起更新,因此不会发生需要把部分磁盘驱动器现有的数据读出来,与新数据作XOR运算,再写入的情况发生这个情况在RAID4和RAID5会发生,一般称之为Read、Modify、WriteProcess,我们姑且译为为读、改、写过程。因此,在所有RAID级别中,RAID3的写入性能是最好的。RAID3的ParityData一般都是存放在一个专属的ParityDisk,但是由于每笔数据都更新整个Stripe,因此,RAID3的ParityDisk并不会如RAID4的ParityDisk,会造成存取的瓶颈。RAID3的并行存取模式,需要RAID控制器特别功能的支持,才能达到磁盘驱动器同步控制,而且上述写入性能的优点,以目前的Caching技术,都可以将之取代,因此一般认为RAID3的应用,将逐渐淡出市场。RAID3以其优越的写入性能,特别适合用在大型、连续性档案写入为主的应用,例如绘图、影像、视讯编辑、多媒体、数据仓储、高速数据撷取等等。

  RAID4特点与应用

  RAID4是采取独立存取模式,同时以单一专属的ParityDisk来存放ParityData。RAID4的每一笔传输Strip资料较长,而且可以执行OverlappedI/O,因此其读取的性能很好。但是由于使用单一专属的ParityDisk来存放ParityData,因此在写入时,就会造成很大的瓶颈。因此,RAID4并没有被广泛地应用。

  RAID5特点与应用

  RAID5也是采取独立存取模式,但是其ParityData则是分散写入到各个成员磁盘驱动器,因此,除了具备OverlappedI/O多任务性能之外,同时也脱离如RAID4单一专属ParityDisk的写入瓶颈。但是,RAID5在做资料写入时,仍然稍微受到"读、改、写过程"的拖累。由于RAID5可以执行OverlappedI/O多任务,因此当RAID5的成员磁盘驱动器数目越多,其性能也就越高,因为一个磁盘驱动器再一个时间只能执行一个Thread,所以磁盘驱动器越多,可以Overlapped的Thread就越多,当然性能就越高。但是反过来说,磁盘驱动器越多,数组中可能有磁盘驱动器故障的机率就越高,整个数组的可靠度,或MTDL(MeanTimetoDataLoss)就会降低。由于RAID5将ParityData分散存在各个磁盘驱动器,因此很符合XOR技术的特性。例如,当同时有好几个写入要求发生时,这些要写入的数据以及ParityData可能都分散在不同的成员磁盘驱动器,因此RAID控制器可以充分利用OverlappedI/O,同时让好几个磁盘驱动器分别作存取工作,如此,数组的整体性能就会提高很多。基本上来说,多人多任务的环境,存取频繁,数据量不是很大的应用,都适合选用RAID5架构,例如企业档案服务器、WEB服务器、在线交易系统、电子商务等应用,都是数据量小,存取频繁的应用。RAID0+1RAID10RAID0+1/RAID10,综合了RAID0和RAID1的优点,适合用在速度需求高,又要完全容错。RAID0和RAID1的原理很简单,合起来之后还是很简单,我们不打算详细介绍,倒是要谈谈,RAID0+1到底应该是RAID0overRAID1,还是RAID1overRAID0,也就是说,是把多个RAID1做成RAID0,还是把多个RAID0做成RAID1?RAID0overRAID1假设我们有四台磁盘驱动器,每两台磁盘驱动器先做成RAID1,再把两个RAID1做成RAID0,这就是RAID0overRAID1:(RAID1)A=DriveA1+DriveA2(Mirrored)

  (RAID1)B=DriveB1+DriveB2(Mirrored)

  RAID0=(RAID1)A+(RAID1)B(Striped)RAID1overRAID0假设我们有六台磁盘驱动器,每两台磁盘驱动器先做成RAID0,再把两个RAID0做成RAID1,这就是RAID0overRAID1:(RAID0)A=DriveA1+DriveA2(Striped)

  (RAID0)B=DriveB1+DriveB2(Striped)

  RAID1=(RAID1)A+(RAID1)B(Mirrored)在这种架构之下,如果(RAID0)A有一台磁盘驱动器故障,(RAID0)A就算毁了,当然RAID1仍然可以正常工作;如果这时(RAID0)B也有一台磁盘驱动器故障,(RAID0)B也就算毁了,此时RAID1的两磁盘驱动器都算故障,整个RAID1资料就毁了。因此,RAID0OVERRAID1应该比RAID1OVERRAID0具备比较高的可靠度。所以我们建议,当采用RAID0+1/RAID10架构时,要先作RAID1,再把数个RAID1做成RAID0。

移动硬盘数据恢复 www.jdcok.com
 

 


RAID级别的介绍与选择依据 www.jdcok.com/anli/5/580.html
------分隔线----------------------------
分享到: