一、定义及概念
1.磁盘(disk):磁盘是指利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘
2.独立冗余磁盘阵列(Redundant Array of Independent Disks、RAID):RAID是独立冗余磁盘阵列(数块独立磁盘构成的具有冗余能力的阵列)的简称,有时也称磁盘阵列(Disk Array)。磁盘阵列是由很多块独立的磁盘按不同的技术方式组合成一个容量巨大的磁盘组,从逻辑上讲,其看起来就是一块大的磁盘,可以提供比单个磁盘更大的存储容量或更高的存储性能,同时又能提供不同级别数据冗余备份从,从而提高硬盘的读写性能和数据的安全性。
3.RAID级别:RAID是数个不同的磁盘通过不同的技术方式组成的磁盘阵列,通常的说,这个不同的技术方式就被称为RAID级别。常见的RAID级别就有RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6,RAID7,RAID0+1(也称RAID10),RAID50,RAID53等。
3.1.标准的RAID技术
SNIA(Storage Networking Industry Association,全球网络存储工业协会) 、 Berkeley (伯克利)等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。标准等级是最基本的,最常见的 RAID 配置集合。
3.2.JBOD( Just a Bunch Of Disks)
JBOD是存储领域中一类重要的存储设备。 JBOD(Just a Bunch Of Disks,磁盘簇 磁盘连续捆束阵列)是在一个底板上安装的带有多个磁盘驱动器的存储设备。通常又称为Span。 和RAID阵列不同,JBOD没有前端逻辑来管理磁盘上的数据分布,相反,每个磁盘进行单独寻址,作为分开的存储资源,或者基于主机软件的一部分,或者是RAID组的一个适配卡卡。JBOD 不是标准的RAID级别,它只是在近几年才被一些厂家提出,并被广泛采用。JBOD 不是标准的 RAID 等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。 JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。 JBOD 的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据。 JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护。它只是简单提供一种扩展存储空间的机制, JBOD 可用存储容量等于所有成员磁盘的存储空间之和。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。
4.RAID的关键技术概念和理解:
4.1数据条带(Data Stripes)
磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。这对大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。而通过条带技术,可获得数倍与顺序访问的性能提升。
数据条带技术的分块大小选择非常关键。条带粒度可以是一个字节至几 KB 大小,分块越小,并行处理能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存取随机性和并发处理能力之间进行平衡,以争取尽可能高的整体性能。
数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。
4.1.1 分块:将一个分区分成大小相等的块、地址相邻得块,这些块成为分块。分块是组成条带的元素。
4.1.2 条带:同一磁盘阵列中多个磁盘驱动器上相同的“位置”(或者相同编号)的分块组成的“一条”成为条带。如图:
4.2镜像技术(mirror image)
RAID的镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,镜像技术即将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。
镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。另外,镜像通过“ 拆分 ”能获得特定时间点的上数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。
4.3数据校验(Data Verification)
镜像具有高安全性、高读性能,但冗余开销太昂贵。数据条带通过并发性来大幅提高性能,然而对数据安全性、可靠性未作考虑。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。
采用数据校验时, RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。
海明校验码和异或校验是两种最为常用的数据校验算法。海明校验码是由理查德.海明提出的,不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。
5.RAID的热备、重构与逻辑卷
5.1热备(HotSpare):当冗余的RAID组中某个硬盘故障失效时,在不影响当前RAID系统的正常情况下,用RAID系统中的备用硬盘自动顶替失效硬盘,及时保证RAID系统的冗余性。
5.1.1热备一般分两种:
(1)全局式:存在多个RAID组中,无论哪一个RAID组中出现了失效磁盘,这块全局热备盘都可以替换。换句话说全局热备盘可以替换任意RAID组中的失效磁盘。(全局式热备盘为系统中所有冗余RAID组共享)
(2)专用式:通常存在于各个RAID组之中,只能替换本RAID组中失效的磁盘。(专用式热备盘为系统中某一组冗余RAID专用)
5.2重构:
RAID重构的步骤
(1)检测磁盘故障:RAID控制器会定期或实时检测磁盘状态,一旦发现故障,就会触发重构过程。
(2)替换故障磁盘:当 RAID控制器检测到磁盘故障后,会用热备盘将失效硬盘替换掉。替换过程中,系统需要保持运行状态,以确保数据的连续性。
(3)重建数据:一旦新磁盘安装完成,RAID控制器会自动开始重构过程。在重构过程中,控制器会将故障磁盘上的数据重新分布到其他磁盘上,将其他盘的数据做异或运算来恢复失效盘的数据。
(4)检查数据一致性:在重构完成后,RAID控制器会对所有磁盘上的数据进行校验,确保数据的一致性和完整性。
(5)完成重构:当数据校验通过后,RAID重构过程算是完成。此时,RAID阵列恢复到正常状态,可以继续提供服务。
5.3 逻辑卷(Logical Volume):是由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。而在RAID里可以按照指定容量创建一个或多个逻辑卷,并且通过LUN(Logic Unit Number)来标识。将多个物理磁盘整合成一个大的物理磁盘,然后将这个大的物理磁盘进行区域分割,分割出的每一个区域就是一个逻辑卷。如图:
就如电脑中可自己划分空间的C盘,D盘就是逻辑卷。
二、常见的RAID分析
1.单个RAID
1.1 RAID0:是没有容错设计的条带硬盘阵列,以条带形式将RAID租的数据均匀分布在各个盘中。如假设将12块2T的物理硬盘组合成RAID0,原本的物理硬盘有12块*2T=24T的容量,通过组合后即RAID0的容量也为24T。因为RAID0是以条带技术组成的,所以只要有一个盘坏,则整个RAID的数据失效(丢失),所以RAID0不允许坏盘。
1.2 RAID1:运用镜像技术,数据同时一致写到主硬盘和镜像硬盘。如假设将12块2T的物理硬盘组合成RAID1,原本的物理硬盘有12块*2T=24T的容量,通过组合后即RAID1的容量为原来物理硬盘的一半即12T,因为RAID1要将硬盘分为主硬盘和镜像硬盘,当数据写入时,数据同时一致的被写为两份,一份存在主硬盘,另一份写在镜像硬盘,所以当RAID1中有一半盘坏掉时,还有另一个盘中有相同一致的数据,数据不会丢失。所以RAID1只允许坏一半盘。
1.3 RAID2:RAID2是将数据条块化地分布于不同的硬盘上,条块单位为位或字节,并使用“海明码”的编码技术来提供错误检查及恢复,这种纠错码也被称为“加重平均纠错码”。海明码需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂,因此在商业环境中很少使用。 海明码在磁盘阵列中被间隔写入到磁盘上,而且地址都一样,也就是在各个磁盘中,其数据都在相同的磁道及扇区中。 RAID2的设计是使用共轴同步的技术,存取数据时整个磁盘阵列一起动作,在各作磁盘的相同位置作平行存取,所以有最快的存取时间,其总线是特别的设计,以大带宽并行传输所存取的数据。在大型文件的存取应用中,RAID2有最好的性能,但如果文件太小,将会影响其性能,因为磁盘的存取是以扇区为单位,而RAID2的存取是所有磁盘平行动作,而且是作位的存取,所以小于一个扇区的数据量会使其性能大打折扣。 RAID2是设计给需要连续存取大量数据的计算机使用的,如作影像处理或CAD/CAM的工作站等,并不适用于一般的多用户环境、网络服务器和PC机。 因RAID2现在几乎没有商业应用。
1.4 RAID3:RAID3运用校验技术,是带有校验的并行数据传输阵列,数据条带分布在数据盘中,同时使用专门校验硬盘存放校验数据。如图中前三个盘都是数据盘,最后一个P是校验盘。当有一块数据盘坏掉时,可以通过校验盘对其他盘的数据做异或运算来恢复对损坏盘的数据;或者是当校验盘损坏时,可以通过将其他数据盘的数据做异或运算来恢复校验盘的数据,所以,这也是RAID3只允许坏一块盘的原因。图中N表示一块独立硬盘的容量,因为校验盘是用来放校验数据的,所以RAID3的实际容量为N-1。
1.5 RAID4:RAID4和RAID3很相似,数据都是依次存储在多个硬盘之上,奇偶校验码存放在独立的奇偶校验盘上,唯一不同的是,在数据分割上RAID3是以位或字节为单位,而RAID4是以条带为单位。 RAID4也使用一个校验磁盘,各磁盘相同位置的分段形成一个校验磁盘分段,放在校验磁盘上。这种方式可在不同的磁盘平行执行不同的读取命令,大幅提高磁盘阵列的读取性能;但写入数据时,因受限于校验磁盘,同一时间只能作一次,启动所有磁盘读取数据形成同一校验条带的所有数据条带,与要写入的数据做好校验计算再写入。
1.6 RAID5:在RAID3的基础上进行改进,就是将校验数据平均分到每个数据盘中,而不是单独有一个校验盘来存放校验数据。RAID5中将每个数据盘中的校验位单独拿出来就可以组成一个新的盘,所以RAID5的实际有效空间也为N-1。如上图。
1.7 RAID6:RAID6在RAID5的基础上进行改进,RAID6中校验数据分横向校验和斜向校验,相当于RAID6有两个校验数据,所以RAID6的有效空间为N-2。如下图。
1.8 RAID7:RAID7 不仅仅是一种技术,还是一种存储计算机(Storage Computer )。RAID7 存储计算机操作系统(Storage Computer Operating System )是一套实时事件驱动操作系统,主要用来进行系统初始化和安排RAID7 磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上。通过自身系统中的阵列电脑板来设定和控制读写速度,存储计算机操作系统可使主机I/O 传递性能达到最佳。如果一个磁盘出现故障,还可自动执行恢复操作,并可管理备份磁盘的重构过程,随所以RAID7只允许坏一个盘。
RAID7突破了以往RAID 标准的技术架构,采用了非同步访问,极大地减轻了数据写瓶颈,提高了I/O 速度。所谓非同步访问,即RAID7的每个I/O接口都有一条专用的高速通道,作为数据或控制信息的流通路径,因此可独立地控制自身系统中每个磁盘的数据存取。如果RAID7 有N个磁盘,那么除去一个校验盘(用作冗余计算)外,可同时处理N-1个主机系统随机发出的读/写指令,从而显著地改善了I/O 应用。RAID7系统内置实时操作系统还可自动对主机发送过来的读/写指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,从而大大减少了磁头的转动次数,提高了I/O 速度。RAID 7 可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率提高至少一倍以上,满足了各类用户的不同需求。
2.组合RAID
2.1 RAID10:RAID10顾名思义就是RAID1+0,同时运用RAID0和RAID1技术。第一级为RAID1镜像对,第二级为RAID0条带。运用镜像技术使得RAID10的实际有效空间为原来的一半,也只允许坏一半的盘,如下图。
2.2 RAID50:RAID50顾名思义也就是RAID5+0。同理,RAID50的实际有效空间为N-1。如上图。
三、RAID各等级的优缺点
1. RAID0: 优点:没有数据冗余,高可用性,很高的传输速率,大大提高储存性能。缺点:正是因为没有数据冗余,RAID0在提高性能的同时,并没有提供数据可靠性, 如果磁盘失效,将影响到整个数据,一旦损坏,无法恢复。
2. RAID1:优点:最大限度的保证用户数据的可用性和可修复性,安全性高。缺点:由于完整备份,导致磁盘利用率低(1/2),存储成本高,不能提高存储性能。注意:两个硬盘必须容量、规格相同。
3. RAID2:优点:大数据量的读写具有极高的性能 。缺点:少量数据的读写时性能反而不好,数据整体的容量会比原始数据大一些,实际使用较少。
4. RAID3:优点:安全性是可以得到保障。缺点:校验盘很容易成为整个系统的瓶颈。访问较短记录时,性能会有所下降。频繁访问校验盘,容易损坏校验盘。
5. RAID4:优点:RAID3访问所有磁盘,而RAID4只访问有用的,所以读数据的速度大大提高。缺点:写数据需要校验,处理时间较长。恢复数据难度大,控制器的设计难度也大。
6. RAID5:优点:RAID5最大的好处是在一块盘掉线的情况下,RAID照常工作,数据安全性高,速度较快, 磁盘利用率也相对较高,应用广泛。 缺点:只允许有一块硬盘出现故障,必须及时恢复。
7. RAID6:优点:(1)相对于RAID 5更高的数据冗余性能;(2)坚强的数据保护能力,可以应付多个硬盘同时发生故障;(3)完美的任务应急操作应。 缺点:(1)非常复杂的控制器设计;(2)计算校验地址将占用相当多的处理时间;( 3)由于第二个效验区,将至少需要N+2个硬盘(N是大于等于1整数)。 注意: 一个RAID6的阵列中可以最多有16个硬盘。
8. RAID7:优点:(1)全面写入的性能领先但盘性能25%至90%并且强于其他阵列1.5至6倍;(2)主机接口通过可升级的连通性来增加传输带宽; (3)在小规模用户读取操作时,Cache的命中率极高,几乎可以将寻址时间变相降低为零;(4)阵列中的磁盘数量越多,写入效率提高越大,读取时寻址时间越短;(5)没有额外的带宽用于效验操作。(6)RAID 7可完全独立于主机运行,不占用主机CPU资源 。缺点: (1)很可能造成一个卖主一个方案的局面;(2)存储容量中,每MB成本极高;(3)相对而言,非常短的保修期;(4)大多数用户可能都用不到; (5)必须要有UPS的配合以保证意外断电时Cache中的数据顺利保存。 适用:效地管理日益庞大的数据存储系统,满足各类用户的不同需求,系统的运行效率提高至少一倍以上。
9. RAID10:优点:(1)高性能: 具有RAID0的高性能,因为数据可以并行读写。(2)高可靠性: 具有RAID 1的高可靠性,因为数据被镜像到多个磁盘上。缺点:(1)成本高: RAID 10需要大量磁盘,因此成本较高。(2)存储效率低: 与RAID 1一样,存储效率较低。
四、RAID各等级的比较与应用
1. 比较
2. 应用