2.3.2 RAID技术
RAID(Redundant Array of Independent Disk,独立冗余磁盘阵列)是加州大学伯克利分校David Patterson等人于1987年提出[11],最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一种水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。
RAID技术主要包含RAID 0~RAID 7等数个规范[17],它们的侧重点各不相同,常见的规范有如下几种:
RAID 0是最早出现的RAID模式,即数据分条(Data Stripping)技术。RAID 0是组建磁盘阵列中最简单的一种形式,只需要两块以上同样的硬盘通过智能磁盘控制器或操作系统中的磁盘驱动程序串联在一起创建一个大的卷集,将数据依次写入各块硬盘中;因此,RAID 0可以整倍地提高硬盘的容量。在速度方面,将原先顺序写入的数据被分散到所有的硬盘中同时进行读写,可以提高整个存储系统的性能和吞吐量。最大的缺点在于任何一块硬盘出现故障,整个系统将会受到破坏,可靠性仅为单独一块硬盘的1/N。RAID 0实现成本最低,但没有提供冗余或错误修复能力,不能应用于数据安全性要求高的场合。
RAID 1称为磁盘镜像(Disk Mirroring),原理是数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能的情况下最大限度地保证系统的可靠性和可修复性,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。另外,出现硬盘故障的RAID系统不再可靠,应当及时更换损坏的硬盘,否则剩余的镜像盘也会出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。
RAID 1+0实际是将RAID 0和RAID 1标准结合的产物,如图2-10所示,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许至少一个、最多一半磁盘故障,而不影响数据可用性,并具有快速读写能力。它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低。
图2-10 RAID 0、RAID 1和RAID 1+0示意图
RAID 2是RAID 0的改良版,将数据条块化地分布于不同的硬盘上,条块单位为位或字节,并使用“加重平均纠错码(又叫汉明码Hamming Code)”进行编码后分割为独立的位元,并将数据分别写入硬盘中来提供错误检查及恢复。在写入时,RAID 2在写入数据位的同时还要计算出它们的汉明码并写入校验阵列,读取时也要对数据即时进行校验,最后再发向系统。汉明码只能纠正一个位的错误,所以RAID 2只允许一个硬盘出问题,如果两个或以上的硬盘出问题,RAID 2的数据就将受到破坏。由于数据是以位为单位并行传输,所以传输率相当快。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂,数据整体的容量会比原始数据大一些。RAID 2早期用于对数据即时安全性非常敏感的领域,目前在商业环境中已经很少使用。
RAID 3是在RAID 2基础上发展而来的,如图2-11所示,都是将数据按位或字节条块化分布于不同的硬盘上,区别在于用简单的异或逻辑运算校验代替复杂的汉明码校验,只需要单块磁盘存放奇偶校验信息,从而也大幅降低了存储成本。RAID 3也可以容忍一块硬盘出错:如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但奇偶盘很容易成为整个系统的写操作瓶颈,也是导致RAID 3很少被人们采用的原因。RAID 3会把数据写入操作分散到多个硬盘上进行,然而不管是向哪一个数据盘写入数据,都需要同时重写校验盘中的相关信息。因此,对于那些经常需要执行大量写入操作的应用来说,校验盘的负载将会很大,无法满足程序的运行速度,从而导致整个RAID系统性能的下降。
图2-11 RAID 2和RAID 3示意图
RAID 4和RAID 3类似,同样将数据条块化并分布于不同的磁盘上,但条块单位为粗粒度的块或扇区,而不是细粒度的位或字节。无须像RAID 3那样,哪怕每一次小I/O操作也要涉及全组,只需涉及组中两块硬盘(一块数据盘,一块校验盘)即可,从而提高了小量数据的I/O速度。RAID 4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,跟RAID 3一样,奇偶校验盘容易成为写操作的瓶颈,因此RAID 4在商业环境中也很少使用。
RAID 5是对RAID 4的改进,为避免校验盘成为写瓶颈,不单独指定奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息,如图2-12所示。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供更高的数据流量。RAID 5更适合小数据块和随机读写的数据。RAID 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5也可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比RAID 1低而磁盘空间利用率要比RAID 1高;它具有和RAID 0相近似的数据读取速度,只是多一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。
图2-12 RAID 4和RAID 5示意图
RAID 6是RAID 5基础上的扩展,在原有同级数据奇偶校验码的基础上增加第二个独立的奇偶校验码,都是交错存储的,具体如图2-13所示。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但是,由于增加了一个校验码,需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更多的写损失,写性能非常差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。较差的性能和复杂的实施方式使得RAID 6很少得到实际应用。
RAID 7是一种全新的RAID架构,由于其自身就带有实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,且不占用主机CPU资源。如图2-13所示,RAID 7可以看作是一种小型存储计算机(Storage Computer),使得它与其他RAID标准有明显区别。RAID 7是非同步访问的,每个I/O接口都有一条专用的高速通道,作为数据或控制信息的流通路径,可独立地控制自身系统中每个磁盘的数据存取。如果一个磁盘出现故障,还可自动执行恢复操作,并可管理备份磁盘的重建过程。RAID 7系统内置实时操作系统还可自动对主机发送过来的读/写指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,提高I/O速度。RAID7可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率提高至少一倍以上,满足各类用户的不同需求。
图2-13 RAID 6和RAID 7示意图