独立磁盘冗余阵列(Redundant Array of Independent Disk, RAID),具有更高的可靠性和更高的执行效率。通过引入冗余提高可靠性,通过并行提高性能。
下面主要介绍一下各种RAID级别。
RAID0
将多个磁盘合成一个大的磁盘,使用块级拆分,对于n张磁盘的阵列,块级拆分将磁盘阵列逻辑上的第i个块存储到第 (i mod n)+1 张磁盘上。RAID0不具有冗余,并行I/O,速度快。
RAID1
RAID1使用镜像(这里指不拆分)。RAID1可靠性最高。
RAID2
以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台磁盘驱动器方能运作。实际中并不使用此级别。
RAID3
RAID3使用位交叉的奇偶校验组织结构。数据内的比特分散在不同的硬盘上,每张磁盘都要参与I每个I/O请求,每秒钟支持的I/O操作数较少,所以这种规格比较适于读取大量数据时使用。如果一个扇区被破坏,系统能准确地知道是哪个扇区坏了,并且对扇区中的每一位,系统可以通过计算其他磁盘上的对应扇区的对应位的奇偶值来推断出该位是1还是0。如果其余位的奇偶校验位等于存储的奇偶校验位,则丢失的位是0,反之为1。
RAID4
RAID4使用块交叉的奇偶校验组织结构,而RAID3是位交叉奇偶校验组织结构。它像RAID0一样使用块级拆分,此外在一张独立的磁盘上为其他N张磁盘上对应的块保留一个奇偶校验块。它读取一个块只访问一张磁盘,因此允许其他的请求在其他磁盘上执行,有较高的总I/O传输率。
RAID5
RAID5使用块交叉的分布奇偶校验位的组织结构。RAID5在RAID4的基础上进行了改进,将数据和奇偶校验位都分布到所有的N+1张磁盘中,而不是在N张磁盘上存储数据并在一张磁盘上存储奇偶校验位。实际中一般用RAID5而不用RAID4。
RAID6
与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实作方式使得RAID 6很少得到实际应用。
RAID1+0
RAID 1+0是先镜像再拆分数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。
RAID0+1
RAID 0+1则是跟RAID 1+0的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。
性能上,RAID 0+1比RAID 1+0有着更快的读写速度。
可靠性上,当RAID 1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1 只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。
RAID级别的选择
RAID0级用于数据安全性不是很重要的高性能应用。因为RAID2和RAID4被RAID3和RAID5所包含,所以RAID级别的选择只限于在剩下的级别中进行。比特级拆分(RAID3)不如块级拆分(RAID5),这是因为块级拆分对于大量数据的传输有与RAID3级同样好的数据传输率,同时对于小量数据的传输使用更少的磁盘。对于小量数据传输,磁盘访问时间占主要地位,所以并行读取并没有好处。RAID6提供比RAID5更高的可靠性,可以用于数据安全十分重要的应用。在RAID1和RAID5中选择十分困难。RAID1(包括RAID0+1和RAID1+0)提供最好的写操作性能。RAID5与RAID1相比具有较低的存储负载,但写操作需要更高的时间开销。对于经常进行读操作而很少进行写操作的应用,RAID5是首选。随着磁盘存储容量快速的发展,RAID1应用变广。
参考资料:
1.《数据库系统概率》第六版
2.维基百科,http://zh.wikipedia.org/zh-cn/RAID