存储之磁盘阵列RAID
RAID是由美国加州大学伯克利分校的D.A. Patterson教授在1988年提出的。RAID名为独立冗余磁盘阵列(RedundantArray of Independent Disk)是一种把多块独立的完全相同的物理硬盘按不同的方式组合起来形成一个逻辑硬盘提供高效率及冗余的技术。RAID通过在N个磁盘上同时存储或读取数据来大幅度的提高数据的传输能力。RAID还通过数据校验可技术提供容错功能,RAID的容错是建立在每个磁盘驱动器的硬件容错功能之上的,在RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。这些性能都是普通硬盘无法提供的,这也解析了为何服务器都带Raid功能。虽然RAID在一定范围内有效的提高了数据的可用性和安全性,但它不可以恢复用户自己删除的、硬件故障引起的、自然灾害等重破坏的数据,因此使用 RAID后,我们还必须制定多种备份方案,定期备份数据,并且定期检查RAID磁盘的健康状态,发现磁盘有问题及时更换,避免数据掉失。
根据不同架构RAID 的种类又可以分为:软RAID、硬RAID、外部RAID。
1. 软件RAID通常情况下已经包含在操作系统之中,并成为其中一个功能之一,如Windows2003以上版本、Linux及Netware系统都有包含有相应的软件RAID功能。软件RAID是不需要另外添加任何硬件设备,其所有操作都由服务器CPU负责,因为它是靠系统主要是CPU的功能提供所有的资源,所以系统资源的利用率会很高,由于他利用了系统的硬件资源所以一定程度上降低了系统性能。
2. 硬件RAID通常是一张RADI PCI卡,在这卡上具有处理器及内存。因为这卡上的处理器已经可以提供一切RAID所需要的资源,所以不会占用系统资源,从而系统的影响基础可以忽略不计。硬件RAID的主要应用是可以连接内置硬盘、热插拔背板或外置存储设备。无论连接何种硬盘,控制权始终都是在RAID卡上。在系统里,硬件RAID PCI卡通常都需要安驱动程序,否则系统会拒绝支持。磁盘阵列可以在安装系统之前或之后产生,系统会视之为一个(大型)硬盘,而它具有容错及冗余的功能。磁盘阵列不仅可以加入一个现成的系统,也可以支持容量扩展。方法也很简单,只需要加入一个新的硬盘并执行一些简单的指令,系统便可以实时利用这新加的容量。
3. 外部RAID也是硬件RAID的一种,区别在于RAID卡不安装在主机里,而是安装在外置的存储设备内。而这个外置的储存设备则会连接到系统的SCSI卡上。系统没有任何的RAID功能,因为它只有一张SCSI卡;所有的RAID功能将会移到这个外置存储里。好处是外置的存储往往可以连接更多的硬盘,不会受系统机箱的大小所影响,而且一些高级的技术,如双机热备,是需要多个服务器外连到一个外置储存上,以提供服务器容错能力。外置式RAID可以安装任何的操作系统,因为在系统里只存在一张SCSI卡,并不是RAID卡。而对于这个系统及这张SCSI卡来说,这个外置式的RAID只是一个大型硬盘,并不是什么特别的设备,所以这个外置式的RAID可以安装任何的操作系统。唯一的要求就是这张SCSI卡在这个操作系统要安装驱动程序。
根据磁盘陈列的不同组合方式,可以将RAID分为不同级别。RAID控制器支持的RAID级别有0、1、2、3、4、5,而且这些RAID级别还可以可以相互组合或通过扩展,重新形成诸如RAID10、RAID50、RAID60的多层级别 RAID。选择哪一种RAID 级别根据用户的需求和环境而定,与级别高低没有必然关系。
4. RAID 0:无差错控制的条带组
要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了条带组,是将数据分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较均衡。但是由于没有储存冗余信息,所以并不是真正的RAID,如果其中一个驱动器中的数据发生错误,所有的数据都将丢失。因此不将它用于对数据稳定性要求高的环境中。在所有的RAID中RAID 0的速度是最快的,比如所需读取的数据分布在N个硬盘上,这N个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/N。RAID 0中,数据被分成块,每个块都被写到一个驱动器中。由于I/O负载由多个通道和驱动器分担,所以I/O性能很高。当使用多个控制器且每个控制器上只连接一个驱动器时,性能达到最高。没有使用奇偶校验,设计简单、容易实现。通常用于工作站临时数据并要求高传输速率,如图像或视频等领域。
5. RAID 1:镜像结构
要实现RAID1必须要有两个以上完全相同硬盘驱动器,RAID 1的每个工作盘都有一个镜像盘,每次写数据时必须同时写入镜像盘,读数据时只从工作盘读出,一旦工作盘发生故障立即转入镜像盘,从镜像盘中读出数据,提高系统的容错能力。因为RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID1功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行数据统计,那么使用RAID1比较合适。而且RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性是非常高的,RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。出现硬盘故障的RAID系统不再可靠,应当及时更换损坏的硬盘,否则如果剩余的镜像盘也出现问题,那么整个系统就会崩溃,更换新盘后原有数据会需要很长时间同步镜像盘,但是外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。由于RAID1磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。RAID 1通常用于对容错要求非常严格的应用场合,如财政、金融等领域。
6. RAID 2:带海明码校验
RAID2是将数据条带化分布于不同的硬盘上,条带单位为位或字节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,冗余信息开销太大,并且RAID 2技术实施非常复杂。因此,在商业环境中很少使用,目前已经被淘汰。
7. RAID 3:单盘容错并行传送
RAID 3为单盘容错并行传送,即采用Stripping技术将数据分块,对这些块进行异或校验,校验数据写到单独一个硬盘上,这种校验码与RAID2不同,只能查错不能纠错。它访问数据时一次处理一个全组的磁盘,这样可以提高读取和写入速度,它像RAID 0一样以并行的方式来存放数据,但速度没有RAID 0快。RAID3必须要有三个以上的驱动器,因为校验位比较少,其计算时间相对而言比较少,写入速率与读出速率都很高。当一个硬盘发生故障时,除故障盘外,驱动器失败对数据吞吐基本没有影响,写操作将继续对数据盘和校验盘进行操作。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。利用单独的校验盘来保护数据虽然没有镜像的安全性高,但是硬盘利用率得到了很大的提高,为(n-1)/n。它主要用于图形(包括动画)等要求吞吐率比较高的场合,很少使用
8. RAID 4:带奇偶校验码的独立磁盘结构
RAID 4和RAID3很相似,区别是RAID 3是按位或字节存取,而RAID 4是按数据块(扇区)存取,也就是按磁盘进行的,可以单独地对某个盘进行操作,无须像RAID 3那样,每一次I/O操作都要涉及全组,RAID 4只需涉及组中两块硬盘(一块数据盘,一块校验盘)即可,从而提高了小量数据I/O速度。可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用;存储的利用率高(N-1磁盘用于数据存储)。但是必须计算冗余信息,限制了写入性能。由于安装容量与实际可用容量的比率较高,通常用于较大的数据存储系统。
9. RAID 5:分布式奇偶校验的独立磁盘结构
RAID 5是一种轮转式奇偶校验独立存取的阵列方式,与RAID 3、RAID 4区别是它没有固定的校验盘,其检验码按照一定的规律存在于所有磁盘上,所以在每块硬盘上,既有数据信息也有校验信息,这一改变解决了争用校验盘的问题,使得在同一组内并发进行多个写操作。RAID5的读出效率很高,写入效率一般。因为奇偶校验码在不同的磁盘上,所以提高了可靠性,允许单个磁盘出错。RAID 5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。RAID5最大的好处是在一块磁盘发生故障情况下,RAID能照常工作,这比RAID0必须每一块盘都正常才可以正常工作的容错性已经有很大的优越了。因此RAID5是RAID级别中最常见的一个类型。可用性高,提供了冗余性(支持一块磁盘故障后仍然正常工作),磁盘空间利用率较高(N-1)/N,读写速度较快。但是必须计算冗余信息,这样就限制了写入性能。
10. RAID6 :独立的数据硬盘与两个独立分布式校方案
RADI6技术是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的。这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较RAID 5还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实施方式使得RAID 6很少得到实际应用。
11. RAID 1+0:高可靠性与高效磁盘结构
RAID 10综合了RAID 0(性能)和RAID 1(数据安全)。与RAID 4和RAID 5不同,它不用计算奇偶校验信息。RAID 10磁盘阵列提供了良好的性能和数据安全性。类似于RAID 0,在较高序列负载条件下可以保证最佳性能。与RAID 1相同,50%的安装容量被用作冗余。RAID10可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用;良好的写入性能。需要偶数个磁盘,最少4个,只有1/2的磁盘容量可用。RAID 10/01细分为RAID 1+0或RAID 0+1。RAID 1+0是先镜射再分割资料,再将所有硬碟分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 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 10远较RAID 01常用,零售主机板绝大部份支援RAID 0/1/5/10,但不支援RAID 01。通常用于需要较高序列写入性能的场合
12. RAID 5+0:被称为分布奇偶位阵列条带
同RAID 10相似的,Raid50具有RAID 5和RAID 0的共同特性。它由两组RAID 5磁盘组成(每组最少3个),先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe存取,每一组都使用了分布式奇偶位,而两组硬盘再组建成RAID 0,实验跨磁盘抽取数据。RAID 50提供可靠的数据存储和优秀的整体性能,并支持更大的卷尺寸。即使两个物理磁盘发生故障(每个阵列中一个),数据也可以顺利恢复过来。 RAID 50最少需要6个驱动器,它最适合需要高可靠性存储、高读取速度、高数据传输性能的应用。这些应用包括事务处理和有许多用户存取小文件的办公应用程序。
13. RAID 7存储计算机操作系统
RAID 7等级是至今为止,理论上性能最高的RAID模式,RAID 7是以RAID 3及RAID 4为基础所发展,因为它从组建方式上就已经和以往的方式有了重大的不同。以往一个硬盘是一个组成阵列的“柱子”,而在RAID 7中,多个硬盘组成一个“柱子”,它们都有各自的通道,也正因为如此,你可以把这个图分解成一个个硬盘连接在主通道上,只是比以前的等级更为细分了。这样做的好处就是在读/写某一区域的数据时,可以迅速定位,而不会因为以往因单个硬盘的限制同一时间只能访问该数据区的一部分,在RAID 7中,以前的单个硬盘相当于分割成多个独立的硬盘,有自己的读写通道,效率也就不言自明了。是一种存储计算机(Storage Computer )。RAID 7 存储计算机操作系统(Storage Computer Operating System )是一套实时事件驱动操作系统,主要用来进行系统初始化和安排RAID7磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上。通过自身系统中的阵列电脑板来设定和控制读写速度,存储计算机操作系统可使主机I/O 传递性能达到最佳。如果一个磁盘出现故障,还可自动执行恢复操作,并可管理备份磁盘的重建过程。RAID 7 突破了以往RAID 标准的技术架构,采用了非同步访问,极大地减轻了数据写瓶颈,提高了I/O 速度。所谓非同步访问,即RAID 7 的每个I/O 接口都有一条专用的高速通道,作为数据或控制信息的流通路径,因此可独立地控制自身系统中每个磁盘的数据存取。如果RAID 7 有N 个磁盘,那么除去一个校验盘(用作冗余计算)外,可同时处理N-1 个主机系统随机发出的读/写指令,从而显著地改善了I/O 应用。RAID 7 系统内置实时操作系统还可自动对主机发送过来的读/写指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,从而大大减少了磁头的转动次数,提高了I/O 速度。RAID 7 可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率提高至少一倍以上,满足了各类用户的不同需求。
14. RAID 5E(RAID 5 Enhancement):
RAID 5E是在RAID 5级别基础上的改进,与RAID 5类似,数据的校验信息均匀分布在各硬盘上,但是,在每个硬盘上都保留了一部分未使用的空间,这部分空间没有进行条带化,最多允许两块物理硬盘出现故障。看起来,RAID 5E和RAID 5加一块热备盘好象差不多,其实由于RAID 5E是把数据分布在所有的硬盘上,性能会比RAID5 加一块热备盘要好。当一块硬盘出现故障时,有故障硬盘上的数据会被压缩到其它硬盘上未使用的空间,逻辑盘保持RAID 5级别。
15. RAID 5EE:
RAID 5E相比,RAID 5EE的数据分布更有效率,每个硬盘的一部分空间被用作分布的热备盘,它们是阵列的一部分,当阵列中一个物理硬盘出现故障时,数据重建的速度会更快。
RAID的比较:
类型 |
读写性能 |
安全性 |
逻辑容量 |
成本 |
磁盘数要求 |
最小容错硬碟 |
RAID 0 |
最好,并行读写 |
最差,无保障 |
N块盘组成,逻辑容量为N块盘容量之和 |
最低 |
2块以上 |
0 |
RAID 1 |
读和单个磁盘无区别,写则要写两边 |
最好,完全备份 |
两块盘组成,逻辑容量为一块盘容量 |
最高 |
2块以上 |
总磁盘数的一半 |
RAID 5 |
读:RAID 5略小于RAID 0:RAID 5<对单个磁盘进行写入操作(多了一个奇偶校验信息写入)
|
RAID 5<RAID 1 |
N块盘组成,逻辑容量为N-1块盘容量之和 |
RAID 5<RAID 1
|
3块以上 |
1 |
Raid 6 |
读:RAID6=RAID 5 写:RAID 6<RAID 5 |
RAID 6〉RAID 5 |
N块盘组成,逻辑容量为N-2块盘容量之和 |
Raid6>Raid5 |
4块以上 |
2 |
RAID 10 |
读:RAID 10=RAID 0 写:RAID 10=RAID 1 |
RAID10=RAID 1 |
N块盘组成,逻辑容量为N块盘容量总和的一半 |
RAID10=RAID 1 |
4块以上,总数还要是偶数 |
总磁盘数的一半 |
RAID 50 |
读:RAID 50〉RAID 5 写:RAID 50〉RAID 5 |
RAID50〉RAID 5 |
N块盘组成,逻辑容量为N块盘容量总和的75% |
RAID10=RAID1 |
6块以上,总数还要是偶数 |
2 |
4、RAID术语
硬盘镜像(Disk Mirroring):硬盘镜像最简单的形式是,一个主机控制器带二个互为镜像(备份)的硬盘。数据同时写入二个硬盘,二个硬盘上的数据完全相同,因此一个硬盘故障时,另一个硬盘仍可提供完整的数据。
硬盘数据跨盘(Disk Spanning):利用这种技术,将几个物理硬盘组成更大的一个逻辑硬盘,几个硬盘看上去就像是一个大硬盘;利用这个逻辑盘可以把数据跨盘存储在不同的物理盘上,用户不需关心数据实际存储在哪块物理硬盘上。
硬盘数据分段(Disk Stripping):数据分散存储在几个物理硬盘上。第1段的数据存放在硬盘0,第2段存放在硬盘1,……第N段存放最后一个磁盘,然后第(N+1)段存放在硬盘0,第(N+2)段存放在硬盘1,如此循环直至完成所有数据写入操作。
容错(Fault Tolerant):具有容错功能的机器有抗故障的能力。例如RAID 1镜像系统是容错的,镜像盘中的一个出故障,硬盘子系统仍能正常工作。
主机控制器(Host Adapter):这里指的是使主机和外设进行数据交换的控制部件(如SCSI控制器)。
热修复(Hot Fix):指用一个硬盘热备份来替换发生故障的硬盘。要注意故障盘并不是真正地被物理替换了。用作热备份的盘被加载上故障盘原来的数据,然后系统恢复工作。
热补(Hot Patch):具有硬盘热备份,可随时替换故障盘的系统。
热备份(Hot Spare):与CPU系统带电连接的硬盘,它能替换下系统中的故障盘。与冷备份的区别是,冷备份盘平时与机器不相连接,硬盘故障时才换下故障盘。
平均数据丢失时间(MTBDL-MeanTimeBetween Data Loss MTBDL,平均时间之间的数据丢失):发生数据丢失的事件间的平均时间。
平均无故障工作时间(MTBF-MeanTimeBetween Failure或MTIF MTBF - 平均无故障时间或MTIF):设备平均无故障运行时间。
廉价冗余磁盘阵列(RAID-RedundantArrayof Inexpensive Drives RAID冗余阵列廉价驱动器):一种将多个廉价硬盘组合成快速,有容错功能的硬盘子系统的技术。
系统重建(Reconstruction or Rebuild 改造或重建):一个硬盘发生故障后,从其它正确的硬盘数据和奇偶信息恢复故障硬盘数据的过程。
恢复时间(ReconstructionTime 重建时间):为故障盘重建数据所需要的时间。
单个大容量硬盘(SLED-SingeExpensiveDrive 单个大容量驱动器)。
传输速率(TransferRate 传输速率):指在不同条件下存取数据的速度。
虚拟盘(VirtualDisk 虚拟磁盘):与虚拟存储器类似,虚拟盘是一个概念盘,用户不必关心他的数据写在哪个物理盘上。虚拟盘一般跨越几个物理盘,但用户看到的只是一个盘。