磁盘阵列硬盘镜像(RAID 0)
硬盘分段的方法把数据写到多个硬盘,而不是只写到一个盘上,这也叫作RAID O,在磁盘阵列子系统中,数据按系统规定的“段”(Segment)为单位依次写入多个硬盘,例如数据段1写入硬盘0,段2写入硬盘1,段3写入硬盘2等等。当数据写完最后一个硬盘时,它就重新从盘0的下一可用段开始写入,写数据的全过程按此重复直至数据写完。
段由块组成,而块又由字节组成。因此,当段的大小为4个块,而块又由256个字节组成时,依字节大小计算,段的大小等于1024个字节。第1~1024字节写入盘0,第1025~2048字节写盘1等。假如我们的硬盘子系统有5个硬盘,我们要写20,000个字节.
总之,由于硬盘分段的方法,是把数据立即写入(读出)多个硬盘,因此它的速度比较快。实际上,数据的传输是顺序的,但多个读(或写)操作则可以相互重迭进行。这就是说,正当段1在写入驱动器0时,段2写入驱动器1的操作也开始了;而当段2尚在写盘驱动器1时,段3数据已送驱动器2;如此类推,在同一时刻有几个盘(即使不是所有的盘)在同时写数据。因为数据送入盘驱动器的速度要远大于写入物理盘的速度。因此只要根据这个特点编制出控制软件,就能实现上述数据同时写盘的操作。
遗憾的是RAID 0不是提供冗余的数据,这是非常危险的。因为必须保证整个硬盘子系统都正常工作,计算器才能正常工作,例如,假使一个文件的段1(在驱动器0),段2(在驱动器1),段3(在驱动器2),则只要驱动器0, 1, 2中有一个产生故障,就会引起问题;如果驱动器1故障,则我们只能从驱动器物理地取得段1和段3的数据。幸运的是可以找到一个解决办法,这就是硬盘分段和数据冗余。
硬盘镜像(RAID 1)
硬盘镜像(RAID 1)是容错磁盘阵列技术最传统的一种形式,在工业界中相对地最被了解,它最重要的优点是百分之百的数据冗余。RAID 0通过简单地将一个盘上的所有数据拷贝到第二个盘上(或等价的存储设备上)来实现数据冗余,这种方法虽然简单且实现起来相对较容易,但它的缺点是要比单个无冗余硬盘贵一倍,因为必须购买另一个硬盘用作第一个硬盘的镜像。
硬盘镜像最简单的形式,是通过把二个硬盘连结在一个控制器上来实现的。图4说明了硬盘镜像。数据写在某一硬盘上时,它同时被写在相应的镜像盘上。当一个盘驱动器发生故障,计算器系统仍能正常工作,因为它可以在剩下的那块好盘上操作数据。
因为二个盘互为镜像,哪个盘出故障都无关紧要,二是盘在任何时间都包含相同的数据,任何一个都可以当作工作盘。在硬盘镜像这个简单的RAID方式中,仍能采用一些优化速度的方法,例如平衡读请求负荷。当多个用户同时请求得到数据时,可以将读数据的请示分散到二个硬盘中去,使读负荷平均地分布在二个硬盘上。这种方法可观地提高了读数据的性能,因为二个硬盘在同一时刻读取不同的数据片。但是硬盘镜像不能改善写数据的性能。被“镜像”的硬盘也可被镜像到其它存储设备上,例如可擦写光盘驱动器,虽然以光盘作镜像盘没有用硬盘的速度快,但这种方法比没有使用镜像盘毕竟减少了丢失数据的危险性。
总之,镜像系统容错性能非常好,并可以提高读数据的速度;它的缺点是需要双份硬盘,因此价格较高。
硬盘分段和数据冗余(RAID2~5)
硬盘分段改善了硬盘子系统的性能,因为向硬盘读写数据的速度与硬盘子系统中硬盘数目成正比地增加,但它的缺点是硬盘子系统中任一硬盘的故障都会导致整个计算器系统失败。整个分段的硬盘子系统部能作镜像,如果已经用了4个硬盘进行分段,我们可以再增加4个分段的硬盘作为原来4个硬盘的镜像。很明显这是昂贵的(虽然可能比镜像一个昂贵的大硬盘来得便宜)。可以不用镜像而用其它数据冗余的方法来提供高容错性能。可以选择一神奇偶码模式来实现上述方法,可以外加一个专作奇偶校验用的硬盘(如在RAID 3中),或者可把奇偶校验数据分散分布在磁盘阵列的全部硬盘中。
不管用何种级别的RAID,磁盘阵列总是用异或(XOR)操作来产生奇偶数据,当子系统中有一个硬盘发生故障时,也是用异或操作重建数据。下列简单分析了XOR是怎样工作的。
硬盘 A B C 奇偶盘 (A, B, C 异或的结果)
数据 1 0 1 0
首先记住在XOR操作中,2个数异或的结果是真(即“1”)时,这二个数中有且一个数为1(另一个为0)。我们假设A, B, C中B盘故障,此时可将A, C和奇偶数据XOR起来,得到B盘失去的数据0;同样如C盘故障,我们可将A, B盘和奇偶盘的数据XOR,得到C盘原先的数据1。
如果推广到7个盘的硬盘子系统:
硬盘 A B C D E F 奇偶位
数据 0 0 0 1 0 1 0
如果丢失B盘数据,我们可以XOR A, C, D, E, F和奇偶位来得到失去的B盘数据0。而XOR A, B, C, D, E, F和奇偶位可恢复D盘的数据1。
采用专用的奇偶校验盘(如上所述,即RAID 3),当同时产生多个写操作时,每次操作都要对奇偶盘进行写入。这将产生I/O瓶颈效应。
RAID 5把奇偶位信息分散分布在硬盘子系统的所有硬盘上(而不是使用专用的校验盘0,这就改善了上述RAID 3中的奇偶盘瓶颈效应。图5说明了RAID 5的一种配置,图中奇偶信息散布在子系统的每个硬盘上。利用每个硬盘的一部分来组成校验盘,写入硬盘的奇偶位信息将较均匀地分布在所有硬盘上。所以某个用户可能把它的一个数据段写在硬盘A,而将奇偶信息写在硬盘B,第二个用户可能把数据写在硬盘C,而奇偶信息写在硬盘D。从这里也可看出RAID 5的性能会得到提高。
这种方法将提高硬盘子系统的事务处理速度。所谓事务处理,是指处理从许多不同用户来的多个硬盘I/O操作,由于可能同时有很多用户与硬盘打交道,迅速向硬盘写入数据,有时几乎是同时进行的,这种情况下,用分布式奇偶盘的方式比起用专用奇偶盘,瓶颈效应发生的可能性要小。
对硬盘操作来说,RAID 5的写性能比不上直接硬盘分段(指没有校验信息的RAID 0)。因为产生或存储奇偶码需要一些额外操作。例如,在修改一个硬盘上的数据时,其它盘上对应段的数据(即使是无关的数据)也要读入主机,以便产生必要的奇偶信息。奇偶段产生后(这要花一些时间),我们要将更新的数据段和奇偶段写入硬盘,这通常称为读-修改-写策略。因此,虽然RAID 5比RAID 0优越,但就写性能来说,RAID 5不如RAID 0。
镜像技术(RAID 1)和数据奇偶位分段(RAID 5)用于上述的硬盘子系统中时,都产生冗余信息。但在RAID 1中,所有数据都被复制到第二个相同的硬盘上。在RAID 5,数据的XOR码而不是数据本身被复制,因此可以用数据的非常紧凑的表现方式,来恢复由于某一硬盘故障而丢失的数据。
采用RAID 5时,对于5个硬盘的数组,有大约20%的硬盘空间用于存放奇偶码,而十个硬盘的数组只有约10%的空间存放奇偶码。在可用空间总的格式化空间的意义上来说,硬盘系统中的硬盘越多该系统就越省钱。
总之,RAID 5把硬盘分段和奇偶冗余技术的优点结合在一起,这样的硬盘子系统特别适合于事务处理环境,例如民航售票处,汽车出租站,销售系统的终端,等等。在某些场合,可优先考虑RAID 1(在那些写数据比读数据更频繁的情况)。但许多情况,RAID 5提供了将高性能,低价格和数据安全性综合在一起的解决办法