认识
磁盘阵列 RAID
一、功能
1 对磁盘高速存取(提速): RAID将普通硬盘组成一个磁盘阵列,在主机写入数据,RAID控制器把主机要写入的数据分解为多个数据块,然后并行写入磁盘阵列;主机读取数据时,RAID控制器并行读取分散在磁盘阵列中各个硬盘上的数据,把它们重新组合后提供给主机。由于采用并行读写操作,从而提高了存储系统的存取系统的存取速度。
2 扩容
3 数据冗余
二、分类
RAID可分为级别0到级别6,通常称为:RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6。
RAID0:RAID0并不是真正的RAID结构,没有数据冗余,RAID0连续地分割数据并并行地读/写于多个磁盘上。因此具有很高的数据传输率,但RAID0在提高性能的同时,并没有提供数据可靠性,如果一个磁盘失效,将影响整个数据。因此RAID0不可应用于需要数据高可用性的关键应用。
RAID1:RAID1通过数据镜像实现数据冗余,在两对分离的磁盘上产生互为备份的数据。RAID1可以提高读的性能,当原始数据繁忙时,可直接从镜像中读取数据。RAID1是磁盘阵列中费用最高的,但提供了最高的数据可用率。当一个磁盘失效,系统可以自动地交换到镜像磁盘上,而不需要重组失效的数据。
RAID2:从概念上讲,RAID2同RAID3类似,两者都是将数据条块化分布于不同的硬盘上,条块单位为位或字节。然而RAID2使用称为“加重平均纠错码”的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂。因此,在商业环境中很少使用。
RAID3:不同于RAID2,RAID3使用单块磁盘存放
奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。如果奇偶盘失效,则不影响数据使用。RAID3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。
RAID4:同RAID2和RAID3一样,RAID4和RAID5也同样将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,成为写操作的瓶颈。在商业应用中很少使用。
RAID5:RAID5没有单独指定的奇偶盘,而是交叉地存取数据及奇偶校验信息于所有磁盘上。在RAID5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID5更适合于小数据块,随机读写的数据。RAID3与RAID5相比,重要的区别在于RAID3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
RAID6:RAID6与RAID5相比,增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高。即使两块磁盘同时失效,也不会影响数据的使用。但需要分配给奇偶校验信息更大的磁盘空间,相对于RAID5有更大的“写损失”。RAID6的写性能非常差,较差的性能和复杂的实施使得RAID6很少使用。
三、详细介绍
RAID0是具有提速和扩容的目的
在RAID0模式中,数据被分割为一定数量的数据块(Chunk)交叉写在多个硬盘上,一般的来说在RAID0系统中数据被分割的数量同RAID阵列所使用的硬盘的数量是有关的,比如RAID0中采用了3块硬盘,那么数据将会被分为三份依次的写入三个硬盘,通俗的说这种模式其实就是利用RAID技术让系统认为三块硬盘组成一个容量更大的硬盘,因为这个过程没有数据校验所以这种RAID模式是读写速度最快的一种。
RAID0并没有从安全性角度考虑,实际上,如果RAID0当中的一块硬盘坏了,所有数据都会损坏,并且没有办法恢复。这使得RAID0的安全性能非常差,所以很多用户出于安全考虑没有使用RAID0模式。虽然如此,RAID0毕竟是所有RAID方式当中速度最快的一种模式,如果RAID0模式当中有两块硬盘的话,那么RAID0的存储读取数据的速度会是单个硬盘双倍。,如果使用6块硬盘的话,那么理论速率就是单个硬盘的6倍。如果在RAID0模式当中使用不同的硬盘会造成两方面的问题,首先,RAID0的有效
硬盘容量会是最小的硬盘的容量乘上硬盘的个数,这是因为如果容量的最小的硬盘存满了之后,RAID0依然会将文件平均分配到各个硬盘当中,此时便不能完成存储任务了;其次,如果RAID0当中的硬盘速度不同,那么整体的速度会是速度最慢的硬盘的速度乘上硬盘的个数,这是因为RAID0模式是需要将上一部的存储任务完成之后才能进行下一步的进程,这样,其它的速度快的硬盘会停下来等待速度慢的硬盘完成存储或者读取任务,使得整体性能有所下降。所以,在这里建议使用RAID0模式的用户最好选择容量和速度相同的硬盘,最好是同一品牌的同种产品。
因此RAID0在严格意义上说不是“冗余独立磁盘阵列”。RAID0模式一般用于需要快速处理数据但是对于数据的安全性要求不高的场合。这种RAID模式的特点是简单,而且并不需要复杂和昂贵的控制器。采用RAID0模式至少需要2块硬盘,最终得到的存储容量也是这两块硬盘的和。
RAID0的随机读取性能:很好
RAID0的随机写入性能:很好
RAID0的持续读取性能:很好
RAID0的持续写入性能:很好
RAID0的优点:最快的读写性能,如果每块硬盘拥有独立的控制器性能将会更好。
RAID0的缺点:任何一块硬盘出现故障所有的数据都会丢失,大部分的控制器都是通过软件实现的,所以效能并不好。
RAID1
RAID1模式是让组成RAID1模式的硬盘互为镜像,当你向硬盘中写入数据的时候,两个硬盘同时存储相同的数据,这样即使其中一个硬盘出现了故障,系统利用另外一个硬盘一样可以正常运行。RAID1相对于单块硬盘来说它的数据读取性能会更好一些,因为当一块硬盘处于忙的状态时,RAID控制器可以去读取另一块硬盘中同样的数据,但是写入数据性能不但没有增长而且可能会有轻微下降。当其中一块硬盘出现故障之后,新的数据可以写入仍然能够正常工作的硬盘,当使用新的硬盘替换掉原来的硬盘之后,RAID控制器会自动的把数据复制到新的硬盘上。RAID1模式的最大特点就是冗余性高,但是由于大部分的功能是利用软件来实现的,所以它会增加处理器的负担。这种RAID模式非常适合对数据的安全性有极高要求的人。
在RAID1模式当中,所使用的硬盘最好是相同的,否则会出现浪费硬盘空间的情况。由于RAID1模式是将相同的信息写入到不同的硬盘当中,所以RAID1模式的有效硬盘容量是阵列当中容量最小的硬盘的容量。举例来说,如果RAID1模式中有一块容量为20GB的硬盘和一块容量为30GB的硬盘,那么总体的RAID1的有效容量是20GB,从此那块30GB硬盘上剩下的10GB容量就会被浪费。同时,如果两块硬盘的速度不同的话,那么速度较快的那块硬盘依然会停下来等待速度较慢的那块硬盘完成任务之后再进行下一步行动。
RAID1的随机读取性能:好
RAID1的随机写入性能:好
RAID1的持续读取性能:一般
RAID1的持续写入性能:好
RAID1的优点:数据高可靠性,易于实现,设计简单。
RAID1的缺点:比RAID0相比速度较慢,特别是写入速度,另外就是我们仅仅能使用一半的硬盘容量。
RAID0+1
这种RAID模式其实是RAID0和RAID1模式的组合,至少需要4块硬盘。其中任何两块组成一个RAID0磁盘阵列,然后两个RAID0磁盘阵列可以看成两个容量更大、速度更快的硬盘,它们再组成一个RAID1磁盘阵列。这样的系统保证了较高的磁盘性能和较高的数据安全性。当然缺点也是显而易见的就是成本较高,构造比较复杂。RAID0+1在容错性能方面仅次于RAID5,一般用于文件服务器等方面。
RAID0+1的随机读取性能:很好
RAID0+1的随机写入性能:好
RAID0+1的持续读取性能:很好
RAID0+1的持续写入性能:好
RAID0+1的优点:相对于单块硬盘具有更高的读写性能,而且大大提高了数据的安全性。
RAID0+1的缺点:成本较高,至少需要4块硬盘。
RAID2
RAID2模式也相当的复杂,用于存储数据的硬盘以RAID0的模式来组合,加上专门存放海明ECC校验码的硬盘,当然为了提高校验码数据的安全,校验码硬盘至少是两个组成RAID1模式。这样即使存储数据的其中一个硬盘损坏,RAID控制器可以通过海明码来
恢复数据到新的硬盘上。RAID2一般针对大数据量操作和超级
计算机应用等方面,但是并不适于普通用户。因为要在数据存储的过程中生成校验码,所以这种磁盘阵列的性能并不高。由于各种原因这种磁盘阵列模式并没有投入到实际的商业应用中去。因为价格不菲,当然也不会为普通用户所接受了。
RAID2的随机读取性能:一般
RAID2的随机写入性能:差,主要因为所有的操作都要经过ECC运算
RAID2的持续读取性能:很好
RAID2的持续写入性能:一般
RAID2的优点:数据安全性高,只要存放校验码的硬盘没有故障就能恢复数据。
RAID2的缺点:昂贵、需要专门的硬盘存放校验码、效率不高、没有商业应用的支持。
RAID3
同RAID2模式一样,RAID3的数据也是被分成数据块依次存储到多个硬盘上的。只是RAID3把数据以bit为单位来分割并且存储到各个硬盘上。它的优点就是具有高速的读写能力,当然写入性能因为在写入过程中需要生成奇偶校验码所以速度会受到一定的影响——它也需要一个专用的硬盘来存储奇偶校验码。当其中一个存储数据的硬盘出现故障之后,系统依然能够正常运行,但是性能会受到影响,如果在更换坏硬盘之前又有一块硬盘出现故障,那么这个磁盘阵列的数据将会全部丢失,无法恢复。在这种磁盘阵列模式下,要求所有硬盘的转速要同步,这个要求在实际应用中难度不小。RAID3至少需要3块硬盘,其中一块用于存放奇偶校验码——奇偶校验码是通过异或运算得到的。
这种RAID模式如果使用软件控制器来实现将会明显的影响性能,因为这种组合比较复杂,不过同RAID0+1模式相比它最少只要3个硬盘就可以实现——所以成本有所下降,总的来说这种磁盘阵列比较适合视频处理和编辑等方面的应用。
RAID3的随机读取性能:好
RAID3的随机写入性能:很差
RAID3的持续读取性能:很好
RAID3的持续写入性能:一般
RAID3的优点:比较适合视频编辑等需要大数据量调用的场合。
RAID3的缺点:实现各个驱动器的转速同步非常困难(目前大部分的硬盘都不支持这个功能),需要复杂的控制器。
RAID4
RAID4模式同RAID3几乎是一样的,数据都是分成小的数据块依次存储在多个硬盘之上,奇偶校验码存放在独立的奇偶校验盘上。唯一不同的是,在数据分割上RAID3是以bit为单位而RAID4是以Byte为单位。这样可以使得RAID4同RAID3具有一样的读取速度,当然写入性能因为需要在写入过程中产生校验码并且存储到校验盘而受到了影响。
这种模式的最大好处就是不需要各个硬盘之间在转速上保持同步,这就使得控制器不需要那么复杂。它的写入性能是所有RAID模式中最差的。同RAID3模式一样,当其中一块硬盘损坏,数据并不会丢失,如果在故障盘被替换之前,第二块硬盘也发盘故障将会导致所有的数据都丢失。相对其它的RAID模式,恢复故障硬盘中的数据的效率相当低。
这种磁盘阵列模式也是至少需要3块硬盘才能搭建而成。奇偶校验码是通过异或运算来得到的。它适于一般的应用程序,包括视频处理等应用。它的造价也不算高,因为只要一块硬盘作为校验码磁盘就可以了。
RAID4的随机读取性能:很好
RAID4的随机写入性能:一般,主要因为要向奇偶校验磁盘写入校验码
RAID4的持续读取性能:好
RAID4的持续写入性能:一般
RAID4的优点:除了RAID3的优点之外,它并不需要同步驱动器转速。
RAID4的缺点:写入性能很差,控制器的要求较高。
RAID5
RAID5使用至少三块硬盘来实现阵列,它既能实现RAID0的加速功能也能实现RAID1的备份数据功能,在阵列当中有三块硬盘的时候,它将会把所需要的存储的数据按照用户定义的分割大小分割成文件碎片存储到两块硬盘当中,此时,阵列当中的第三块硬盘不接收文件碎片,它接收到的是用来校验存储在另外两块硬盘当中数据的一部分数据,这部分校验数据是通过一定的算法产生的,可以通过这部分数据来恢复存储在另外两个硬盘上的数据。另外,这三块硬盘的任务并不是一成不变的,也就是说在这次存储当中可能是1号硬盘和2号硬盘用来存储分割后的文件碎片,那么在下次存储的时候可能就是2号硬盘和3号硬盘来完成这个任务了。可以说,在每次存储操作当中,每块硬盘的任务是随机分配的,不过,肯定是两块硬盘用来存储分割后的文件碎片另一块硬盘用来存储校验信息。
这个校验信息一般是通过RAID控制器运算得出的,通常这些信息是需要一个RAID控制器上有一个单独的芯片来运算并决定将此信息发送到哪块硬盘存储。RAID5同时会实现RAID0的高速存储读取并且也会实现RAID1的数据恢复功能,也就是说在上面所说的情况下,RAID5能够利用三块硬盘同时实现RAID0的速度加倍功能也会实现RAID1的数据备份功能,并且当RAID5当中的一块硬盘损坏之后,加入一块新的硬盘同样可以实现数据的还原。
RAID5是截止到目前我们所介绍的几款RAID模式中控制器设计最复杂的一种。RAID5可以应用在大部分的领域中,比如多用户和多任务环境中。目前的很多Web服务器和其它的Internet服务器都是采用这种形式的磁盘阵列,比如最近推出的Quantum Snap服务器就采用了外置式的RAID5磁盘阵列的设计。奇偶校验一般会占据大约33%的磁盘空间的容量,所以对于一个总容量为120GB的RAID5磁盘阵列而言,可用的空间将是80GB左右。不过这种磁盘阵列模式在一般的主板进程的RAID控制器中都不提供支持,比如Abit KR7A-RAID主板仅仅支持RAID0、RAID1、RAID0+1。当然只要采用校验码的方式,就会一定程度上影响写入性能,因此很多磁盘阵列厂商都在磁盘阵列中加入了写缓存来提高写入性能。
RAID5模式并不是一切都好,如果阵列当中某块硬盘上的信息发生了改变的话,那么就需要重新计算文件分割碎片,并且,校验信息也需要重新计算,这时,三个硬盘都需要重新调用。同样,如果要做RAID5阵列的话,最好使用相同容量相同速度的硬盘,RAID5模式的有效容量是阵列中容量最小的硬盘容量乘上阵列中硬盘的数目减去一后的数,这里硬盘数目要减去一是因为其中有一块硬盘用来存放校验信息。
RAID5的随机读取性能:非常好(当使用大数据块时)
RAID5的随机写入性能:一般,但是优于RAID3或都RAID4
RAID5的持续读取性能:好(当使用小数据块时)
RAID5的持续写入性能:一般
RAID5的优点:不需要专门的校验码磁盘,读取速度快,而且解决了写入速度相对较慢的问题。
RAID5的缺点:写入性能依然不尽如人意。
RAID6
RAID6是RAID家族中的新技术,是在RAID5基础上扩展而来的。所以同RAID5一样,数据和校验码都是被分成数据块然后分别存储到磁盘阵列的各个硬盘上。RAID6加入了一个独立的校验磁盘,它把分布在各个磁盘上的校验码都备份在一起,这样RAID6磁盘阵列就允许多个磁盘同时出现故障,这对于数据安全要求很高的应用场合是非常必要的。这样搭建一个RAID6磁盘阵列最少需要4块硬盘。但是RAID6并没有改善RAID5写入性能不佳的情况,写入缓存的应用仅仅能对于这个缺点进行一定程度的弥补但是并不能从根本上解决问题。因为RAID5和RAID6都可以根据应用程序来更改数据块的大小,所以它的实际性能还会受到这个因素的影响。
在实际应用中RAID6的应用范围并没有其它的RAID模式那么广泛。如果实现这个功能一般需要设计更加复杂、造价更昂贵的RAID控制器,所以它一般也不会集成在主板上。
RAID6的随机读取性能:很好(当使用大数据块时)
RAID6的随机写入性能:差,因为不但要在每硬盘上写入校验数据而且要在专门的校验硬盘上写入数据
RAID6的持续读取性能:好(当使用小数据块时)
RAID6的持续写入性能:一般
RAID6的优点:快速的读取性能,更高的容错能力。
RAID6的缺点:很慢的写入速度,RAID控制器在设计上更加复杂,成本更高。
热交换和热冗余
在RAID系统中一般都具有热交换和热冗余能力。热交换允许在不关闭系统或电源的前提下更换故障硬盘,当然更换上的新硬盘也可以被系统动态的识别出来并且正确的配置和添加,而这些都不需要重新启动计算机。这样做的好处是勿庸置疑的,对于维护人员来说非常的简单,而对于很多应用场合,比如Web服务器等,用户并不希望服务器停机,这样造成的损失将是不可估量的。很多HP/DELL服务器产品和RAID磁盘阵列都具有热交换的能力。
热冗余一般用于不适于热交换的场合。这种设计一般是在故障出现之前就在计算机中配置了额外的硬盘,当有硬盘出现故障的时候,这块冗余的就可以自动替代故障的硬盘的位置,对于这样的系统在系统关闭之前是不能把损坏的硬盘拔下来的。热冗余虽然不如热交换方便,但是总比没有好一些。
小结
其实磁盘阵列的种类非常多,我们今天介绍的是部分基本的应用模式,在实际应用为了达到足够的性能和稳定,可以把各种RAID模式搭配使用,当然这样对于RAID控制器的要求会更高,磁盘阵列系统的成本也就更高。
服务器所采用的RAID一般是基于SCSI的,所以这样RAID系统的成本将会更加高昂。其实这个功能对于我们个人的应用还具有一定的距离,即使你拥有了一张整合了RAID控制器的主板,也需要至少2块硬盘(一般的要求这两块硬盘在容量、品牌、转速上都是一样的),对于个人用户来说这是一笔不小的开支。当然如果你有特殊的需要,比如需要假设一个工作站或者Web服务器,但是又不想花费太多的资金,那么IDE RAID还是一个不错的选择。这里需要提醒大家的是,一般的板载IDE RAID的处理器占用率较高,并且IDE RAID在部分应用中还不如SCSI硬盘