一、磁盘阵列概述
磁盘阵列是廉价磁盘冗余阵列的冗余阵列。RAID技术通过不同的方式将单个磁盘组合在一起,形成一个逻辑硬盘,从而提高磁盘读取性能和数据安全性。不同的组合由RAID级别标识。RAID技术是由加州大学伯克利分校的D.A .帕特森教授于1988年提出的。作为一种高性能、可靠的存储技术,它在今天得到了广泛的应用。
第二,RAID级别
随着RAID技术的不断发展,现在从RAID 0到RAID 5有6种明确的标准RAID级别。另外还有6、7、10RAID 1和RAID 0的组合)、01RAID 0和RAID 1的组合)、30RAID 3和RAID 0的组合)、50RAID 0和RAID 5的组合)等。不同的RAID级别代表不同的存储性能、数据安全性和存储成本。将引入以下RAID级别:0、1、2、3、4、5、6、01和10。
1、RAID0
RAID0也称为条带,它将数据划分为写入通道阵列的一定大小顺序的磁盘。RAID0可以并行执行读写操作,可以充分利用总线带宽。理论上讲,由n个磁盘组成的RAID0系统的读写性能是单个磁盘的n倍。并且磁盘空间的存储效率最高100%)。RAID 0有一个明显的缺陷:不提供数据冗余保护,一旦数据损坏,就无法恢复。
当读取性能高但存储的数据不重要时,使用RAID0。
2、RAID1
RAID1成为镜像,将数据完整一致地写入工作磁盘和镜像磁盘,因此其磁盘空间利用率为50%,写入数据时时间会有影响,但读取数据时没有影响。RAID0提供了最佳的数据保护。一旦工作磁盘出现故障,系统会自动从镜像磁盘读取数据,不会影响用户的工作。
RAID1应该用在非常重视数据保护的应用中。
3、RAID2
RAID2称为纠错汉明磁盘阵列。在阵列中,2N个磁盘第1、第2、第4、第6.)用作检查磁盘,其余磁盘用于存储数据。磁盘越多,校验磁盘的比率越小。RAID2在大数据存储的情况下性能很高,但实际应用却很少。
4、RAID3
RAID3使用一个硬盘作为校验盘,其他磁盘作为数据盘,数据按位或字节交替访问每个数据盘。不同磁盘上同一条带的数据通过异或校验,校验值写入校验磁盘。在完整状态下读取时,RAID3系统不会对性能产生任何影响。读取性能与RAID0一致,但提供数据容错。但是,写入时性能会大大下降,因为每次写入操作,即使数据磁盘上的数据块发生了变化,也必须根据同一条带中的所有数据重新计算校验值,并将其写入校验磁盘。写入操作包括写入数据块、读取同一带中的数据块、计算校验值和写入校验值。
当RAID3中的数据磁盘损坏时,不会影响用户读取数据。如果读取的数据块恰好在损坏的磁盘上,系统需要读取同一频段的所有数据块,然后根据校验值重建数据,这会影响系统性能。
RAID3的校验盘在系统接受大量写操作时容易形成性能瓶颈,因此适用于web系统、信息查询等读取操作量较大的应用或连续大数据流的应用如非线性编辑)。
5、RAID4
RAID4与RAID3基本相同。区别在于分条方法不同。RAID4以块的形式存储数据,因此写入操作只涉及两个磁盘,数据磁盘和校验磁盘,提高了系统的IO性能。然而,面对随机分散的写操作,单个校验磁盘往往成为性能瓶颈。
6、RAID5
RAID5的机制与RAID3类似,但数据校验的信息均匀分布在阵列的每个磁盘上,因此在并发写操作时不存在校验磁盘的性能瓶颈。阵列磁盘上有数据和数据检查信息。当数据盘损坏时,系统可以根据同一频段的其他数据块和相应的校验信息,对损坏的数据进行重建。
RAID 5可以理解为RAID 0和RAID 1之间的折衷。RAID 5可以为系统提供数据安全,但安全程度低于RAID1,磁盘空间利用率高于RAID1。RAID 5的数据读取速度与RAID 0相似,但多了一个奇偶校验信息,数据写入速度比单个磁盘稍慢。同时,由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率高于RAID 1,存储成本相对较低。
当数据盘损坏时,RAID5的情况与RAID3类似。因为需要重构数据,所以性能会受到影响。
7、RAID6
RAID 6提供两级冗余,即如果阵列中的两个驱动器出现故障,阵列可以继续工作。一般来说,R A I D 6的实现成本最高,因为RAID 6不仅支持数据的恢复,还支持校验的恢复,这使得RAID 6控制器比其他级别的RAI ID更加复杂和昂贵。
检查RAID 6的数据:
写入每个数据块时,RAID 6会进行两次独立的验证计算,因此可以支持两个磁盘的故障。目前,实现这一思想基本上有两种公认的方法:1)使用各种算法,如X O R等一些函数;2)在不同的数据条带化或磁盘上,制作
用排列的数据。
RAID 6的一维冗余:
RAID 6的第一种方法是用两种不同的方法计算校验数据。实现这个思想最容易的方法之一是用两个校验磁盘支持数据磁盘,第一个校验磁盘支持一种校验算法,而第二个 磁盘支持另一种校验算法,使用两种算法称为P + Q校验。一维冗余是指使用另一个校验磁盘,但所包含的分块数据是相同的。例如,P校验值可能由X O R函数产生,这样,Q校验函数需要是其他的某种操作,一个很有力的侯选者是Reed Solomon误差修正编码的变体,这个误差修正编码一般用于磁盘和磁带驱动器。假如两个磁盘失败,那么,通过求解带有两个变量的方程,可以恢复两个磁盘 上的数据,这是一个代数方法,可以由硬件辅助处理器加速求解。
8、RAID10
RAID10是RAID1和RAID0的结合,也称为RAID(0+1),先做镜像然后做条带化,既提高了系统的读写性能,有提供了数据冗余保 护,RAID10的磁盘空间利用率和RAID1是一样的,为50%。RAID10适用于既有大量的数据需要存储,有对数据安全性有严格要求的领域,比如金 融,证券等。
9、RAID01
RAID01也是RAID0和RAID1的结合,但它是对条带化后的数据进行镜像。但与RAID10 不同,一个磁盘的丢失等同于整个镜像条带的丢失,所以一旦镜像盘失败,则存储系统成为一个RAID-0 系统(即只有条带化)。RAID01的实际应用非常少。
存储基础知识(四):RAID技术(下)
各种RAID级别比较
在各个raid级别中,使用最广泛的是raid0,raid1,raid10,raid5。
RAID-0,将数据分成条带顺序写入一组磁盘中。RAID-0 不提供冗余功能,但是它却提供了卓越的吞吐性能,因为读写数据是在一组磁盘中的每个磁盘上同时处理的,吞吐性能远远超过单个磁盘的读写。
RAID-1,每次写操作都将分别写两份到数据盘和校验盘上,每对数据盘和校验盘成为镜像磁盘组。也可使用并发的方式来读数据时,提高吞吐性能。如果镜像 磁盘组中某个磁盘出错,则数据可以从另外一块磁盘获得,而不会影响系统的性能,然后,使用一块备用磁盘将健康磁盘中的数据复制出来然后这两块磁盘又组成新 的镜像组。
RAID1/0,即RAID1 与RAID0 的结合,既做镜像又做条带化,数据先镜像再做条带化。这样数据存储既保证了可靠性,又极大地提高了吞吐性能。
RAID-0/1 也是RAID0 与RAID1 的结合,但它是对条带化后的数据进行镜像。但与RAID10 不同,一个磁盘的丢失等同于整个镜像条带的丢失,所以一旦镜像盘失败,则存储系统成为一个RAID-0 系统(即只有条带化)。
RAID-5 是将数据校验循环分散到各个磁盘中,它像RAID-0 一样将数据条带化分散写到一组磁盘中,但同时它生成校验数据做为冗余和容错使用。校验磁盘包含了所有条带的数据的校验信息。RAID-5 将校验信息轮流地写入条带磁盘组的各个磁盘中,即每个磁盘上既有数据信息又同时有校验信息,RAID-5 的性能得益于数据的条带化,但是某个磁盘的失败却将引起整个系统的下降,这是因为系统将在承担读写任务的同时,重新构建和计算出失败磁盘上的数据,此时要 使用备用磁盘对失败磁盘的数据重建恢复整个系统的健康。
从一个普通应用来讲,要求存储系统具有良好的IO性能同时也要求对数据安全做好保护工作,所以raid10和raid5应该成为我们重点关注的对象。下面从IO性能,数据重构及对系统性能的影响,数据安全保护等方面,结合磁盘现状来分析两种技术的差异。
IO的性能:
读操作上raid10和raid5是相当的,RAID-5 在一些很小数据的写操作(如比每个条带还小的小数据)需要2 个读、2 个写,还有2 个XOR 操作,对于单个用户的写操作,在新数据应用之前必须将老的数据从校验盘中移除,整个的执行过程是这样:读出旧数据,旧数据与新数据做XOR,并创建一个即 时的值,读出旧数据的校验信息,将即时值与校验数据进行XOR,最后写下新的校验信息。为了减少对系统的影响,大多数的RAID5 都读出并将整个条带(包括校验条带)写入缓存,执行2 个XOR 操作,然后发出并行写操作(通常对整个条带),即便了进行了上述优化,系统仍然需要为这种写操作进行额外的读和XOR操作。小量写操作困难使得RAID- 5 技术很少应用于密集写操作的场合,如回滚字段及重做日志。当然,也可以将存储系统的条带大小定义为经常读写动作的数据大小,使之匹配,但这样会限制系统的 灵活性,也不适用于企业中其它的应用。对于raid10,由于不存在数据校验,每次写操作只是单纯的执行写操作。应此在写性能上raid10要好于 raid5。
数据重构:
对于raid10,当一块磁盘失效时,进行数据重构的操作只是复制一个新磁盘,如果假定磁盘的容量为250G,那么复制的数据量为250G。对于 raid5的存储阵列,则需要从每块磁盘中读取数据,经过重新计算得到一块硬盘的数据量,如果raid5是以4+1的方式组建,每块磁盘的容量也为 250G,那么,需要在剩余的4个磁盘中读出总共是1000G的数据量计算得出250G的数据。从这点来看,raid5在数据重构上的工作负荷和花费的时 间应该远大于raid10,负荷变大将影响重构期间的性能,时间长意味再次出现数据损坏的可能性变大。
数据安全保护:
raid10系统在已有一块磁盘失效的情况下,只有出现该失效盘的对应镜像盘也失效,才会导致数据丢失。其他的磁盘失效不会出现数据丢失情况。Raid5系统在已有一块磁盘失效的情况下,只要再出现任意的一块磁盘失效,都将导致数据丢失。
从综合来看,raid10和raid5系统在出现一块磁盘失效后,进行数据重构时,raid5需耗费的时间要比raid10长,同时重构期间系统负荷上 raid5要比raid10高,同时raid5出现数据丢失的可能性要比raid10高,因此,数据重构期间,raid5系统的可靠性远比raid10来 的低。Raid5在磁盘空间率用率上比raid10高,raid5的空间利用率是(N-1)/ N (N为阵列的磁盘数目),而raid10的磁盘空间利用率仅为50%。但是结合磁盘来考虑,今天的硬盘厂商所生产的ATA或SATA硬盘的质量已经可以承 担企业级的应用,并且,容量的增加幅度相当大,目前已经可以实现单个磁盘400G的存储容量。SCSI硬盘由于要求高转速而使用小直径盘片,容量的增加相 对缓慢。ATA磁盘相对SCSI磁盘拥有成本也要小很多。
因此,在采用价格昂贵的FC或SCSI硬盘的存储系统中,对于预算有限同时数据安全性要求不高的场合可以采用RAID5方式来折中;其他应用中采用大容量 的ATA或SATA硬盘结合raid10,既降低了raid10的为获得一定的存储空间必须采用双倍磁盘空间的拥有成本,又避免了raid5相对 raid10的各种缺点。在企业应用中,raid10结合SATA磁盘意味着一个更好的选择。