独立冗余磁盘阵列(Redundant Array OF Independent Disks,RAID)开始于20世纪80年代美国加州大学伯克利分校的一个研究项目,当时RAID被称为廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks),简称为”磁盘阵列“。后来RAID中的字母I的单词被改为Independent,RAID就成了“独立冗余磁盘阵列”,但这只是名称的变化,实质性的内容并没有改变。在系统和数据安全方面,RAID技术具有明显的优势。
1、 磁盘管理的基本概念
基本磁盘和基本卷
基本磁盘和动态磁盘是磁盘管理中最基本的两种类型。其中,基本磁盘可以理解为物理磁盘,即一个物理磁盘在安装到计算机后,操作系统默认将其设置为基本磁盘。基本磁盘在使用之前需要划分成一个或多个磁盘分区。该分区有以下两种类型:
主磁盘分区
扩展磁盘分区
一个物理磁盘在具体使用时可以根据需要划分成为多个磁盘分区,并将这些磁盘分区的相关数据存储在“分区表”中(“分区表”为磁盘上的一个存储区域),分区表被存储在位于整个磁盘的第一个扇区的主引导记录(Master Boot Record,MBR)文件内。计算机启动时,BIOS会先读取MBR中的信息,并将计算机的控制权交给MBR内的程序,然后由该程序继续后续的启动任务。一个MBR磁盘内最多可以创建4个主磁盘分区,或最多3个主磁盘分区与1个扩展磁盘分区。每一个主磁盘分区可以分配一个驱动器号,一般从C:开始,依此类推。同时,可以在扩展磁盘分区创建多个逻辑驱动器,逻辑驱动器也分配有驱动器号。
基本卷:基本磁盘内的每一个磁盘分区或逻辑驱动器又称为“基本卷”。
动态磁盘和动态卷
动态磁盘和动态卷可以提供一些基本磁盘不具备的功能。例如,创建可跨越多个磁盘的卷(跨区卷和带区卷)和创建具有容错能力的卷(镜像卷和RAID5卷)。所有动态磁盘上的卷都称为“动态卷”。有5种类型的动态卷:简单卷、跨区卷、带区卷、镜像卷和 RAID5卷。
2、RAID的组成
简单地说,RAID是由多个独立的高性能磁盘驱动器组成的磁盘子系统。
RAID系统由两个主要部件组成:RAID控制器和磁盘阵列。RAID控制器是RAID系统的核心,负责数据的交换、缓冲,并管理主机(或网络)与磁盘阵列之间的数据流。虽然RAID由多个磁盘组成,但是对于主机来说,RAID就像单个大容量的虚拟磁盘驱动器。RAID控制器通常以高速接口技术(如光纤通道、SCSI等)与主机或网络相连接。
3、RAID的内部结构
单通道RAID
如图所示的是一个单通道RAID系统的内部结构,它的RAID控制器拥有一个通道和一个磁盘缓冲,每个磁盘只有一个端口,RAID控制器通过该端口来寻址阵列中的每个成员驱动器。在该系统中,RAID控制器将I/O操作分配给各成员磁盘。
多通道RAID
根据磁盘接口数量的不同,多通道RAID又分为单磁盘接口RAID和双磁盘接口RAID。在单磁盘接口RAID系统中,每个磁盘仅有一个接口,但RAID控制器具有两个通道,每个通道分别连接不同的磁盘阵列。很显然,如果通道数越多,则每个RAID控制器所连接的磁盘数量将越多,从而存储系统的容量也越大。目前,在多通道RAID系统中,以双通道居多,一般最多可以达到6个通道。
在双通道RAID系统中,还有一种结构是每一个RAID控制器与每个成员驱动器都有两个连接接口,控制器可以通过任何一个通道与任意一个成员磁盘通信。与前面两种结构相比,这种结构提高了系统的可靠性。对于RAID控制器来说,如果一个通道出现故障,另一个通道也能够正常工作。同样,对于成员驱动器来说,如果一个接口出现故障,另一个接口也能够正常工作。
4、 RAID技术的特点
可以把RAID理解成一种使用磁盘驱动器的方法,它将一组磁盘驱动器用某种逻辑方式联系起来,作为逻辑上的一个磁盘驱动器来使用。一般情况下,采用RAID技术组成的逻辑磁盘驱动器的容量要小于各个磁盘驱动器容量的总和。
早先,RAID一般是在SCSI磁盘驱动器上实现的,因为IDE磁盘驱动器的性能发挥受限于IDE接口的技术特性(IDE只能接两个磁盘驱动器)。IDE通道最多只能接4个磁盘驱动器,在同一时刻只能有一个磁盘驱动器可以传输数据。一般情况下,IDE通道上一般还需连接光驱,光驱引起的延迟会严重影响系统速度。SCSI适配器可以保证每个SCSI通道随时保持畅通,在同一时刻每个SCSI磁盘驱动器都能自由地向主机传送数据,不会出现像IDE磁盘驱动器争用设备通道的现象。
RAID一方面具有成本低、功耗小、传输速率高的特点,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,达到单个的磁盘驱动器几倍、几十倍甚至上百倍的速率。另一方面,RAID可以利用普通磁盘驱动器实现容错功能,对服务器的系统安全起到保护作用,这种安全保护是非常廉价的,很适合中小型局域网用户使用。
5、RAID0
根据系统所提供的磁盘I/O性能和数据存储安全性的不同,目前普遍使用的RAID可分为RAID0、RAID1、RAID0+1、RAID3和RAID5几个级别。RAID0也称之为“带区集”,它是一种无冗余、无校验的磁盘阵列。可以从多个硬盘中各取一个相同容量的磁盘空间,组成一个独立的集合,并赋予一个驱动器代号,这个具有同一代号的硬盘空间集合称为带区集。
当写入数据时,数据先被分割成大小为64KB的数据块,然后并行存储到带区集中的每个磁盘中,系统读取磁盘数据时,将同时从各个磁盘并发读取数据块,经自动整合后形成一个完整的数据。
RAID0的最大优势是通过快速读取,提高了磁盘I/O系统的性能。但当带区集中的任何一个硬盘或分区损坏时,将造成所有数据的丢失。RAID0一般用在对数据安全要求不高,但对速度要求很高的环境中,如小型局域网服务器。
6、 RAID1
RAID1即通常所讲的磁盘镜像,所以也称之为“镜像磁盘阵列”。它是在一个硬盘控制卡上安装两块硬盘。其中一个设置为主盘(Master),另一个设置为镜像盘或从(Slaver)。系统写入数据时,会分别存入两个硬盘中,两个硬盘中保存有完全相同的数据。一旦一个硬盘损坏,另一个硬盘会继续工作。RAID1具有很好的容错能力,但是当硬盘控制卡受损时,数据将无法读取。为了克服一个硬盘控制卡管理两个硬盘时存在的安全问题,可将两个硬盘分别安装在不同的硬盘控制卡上,如果一块硬盘控制卡受损时,另一块硬盘控制卡还会继续工作,提高系统的容错能力,将这种组合方式又叫做磁盘双工。RAID具有最高的安全性,但只有一半的磁盘空间被用来存储数据。主要用于对数据安全性要求高,而且要求能够快速恢复被损坏数据的场合。目前,RAID1在一些中小型的局域网服务器上最常使用。
7、RAID0+1
RAID0+1是RAID0和RAID1技术结合的产物。在单独使用RAID1在同一时间内只能向一块磁盘写入数据,不能充分利用所有的磁盘资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集,以扩大磁盘的利用率。raid01,条带加镜像,结合了raid0和raid1的两种功能,要求两组不能同时都出错。
除了raid01,还有一种组合是raid10,镜像加条带,同样结合了raid0和raid1两种功能,要求任意的一组不能都出错;
8、RAID3
RAID3是一种带奇校验或偶校验的磁盘阵列。在RAID3中采用数据分割的方式,指定一个驱动器作为校验盘,用于存储奇偶校验的信息。这就提供了一定程度的容错功能,而且在数据密集型环境或单一用户环境中尤其有益于访问较长的连续记录。在RAID3中,任何一个单独的磁盘驱动器损坏时都可以恢复,并且具有数据读取速度快的优点。但它写数据时要计算校验位的值以写入校验盘,所以写盘速度有所下降。
9、RAID5
RAID5是一种带奇隅校验的带区集。它是在RAID0的基础上增加了对写入数据的安全恢复功能。数据块分散存放在带区集的所有硬盘中,同时每个硬盘都有一个固定区域(约占所使用硬盘分区的1/3)来存放一个奇隅校验数据(分布校验)。当任何一个硬盘失效时,可利用此奇隅校验数据推算出故障盘中的数据来,并且这个恢复操作在不停机的状态下由系统自动完成。RAID5在使整个硬盘的I/O性能得到明显改善的同时,还具有非常好的容错能力,但硬盘空间无法全部用来保存正常数据。
上文分别介绍了多种RAID方案,在这些方案中(除RAID0),不论何时有磁盘损坏,都可以随时拔出损坏的磁盘再插入好的磁盘,数据不会受到损坏,失效磁盘上的内容可以很快被重建和恢复,而且整个过程都由相关的硬件或软件来完成。
通过上面的介绍,我们发现:RAID0不具有错误校验功能,所以有人说它不能算是RAID,其实这也是RAID0为什么被称为0级RAID的原因。
10、RAID6
RAID 6等级是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。前面所介绍的RAID技术,可以保证当一块硬盘出现故障后使数据不被丢失。但是,如果有两块或两块以上的硬盘出现故障,系统中的所有数据将全部丢失。RAID6通过提供两级冗余的方法来保证在系统中同时有两块硬盘出现故障时,阵列还能够继续工作。 目前,RAID6有多种实现方式。其中一种实现方式为:当对每个数据执行写操作时,RAID6做两个独立的校验计算,并把校验值分别保存在两个校验盘上,或类似于RAID5把校验值分布到所有的硬盘上。同时,在两个独立的校验计算时,所使用的校验方式可能不同,例如一个可能由XOR函数产生,而另一个可能使用其他的操作。假如有两个硬盘出现故障,那么通过求解带有两个变量的方程,就可以恢复这两个硬盘上的数据。这种方程的求解过程可以由硬件来实现。
11、RAID2和RAID4
需要说明的是,在前面的介绍中我们没有专门介绍RAID2和RAID4.
RAID2的设计思想是使用海明码(Hamming code)实现数据校验冗余。海明码可以在数据发生错误的情况下自动对错误进行校正,即自动进行纠错处理。但RAID2的硬盘利用率仅为4/7,每4个数据盘需要3个额外的校验盘。由于后来大部分硬盘都具有纠错功能,并且RAID2本身的工作速率又慢,所以未进入商业应用。
RAID4是一种独立访问RAID的实现,它也同样使用一个专用的校验磁盘。与RAID3不同的是,RAID4有更多的分块,使多个I/O请求能同时处理。在读操作方面,RAID4有很好的性能,但在写操作方面由于需要更新校验盘的相应分块数据,单一的校验盘将成为系统的瓶颈,而且随着成员磁盘数据的增加,校验盘所存在的问题将越来越为突出。由于RAID4的扩展性受到很大的限制,所以使用RAID4技术的产品并不多见。