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