RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID概念很多,有时候会概念混
淆。这篇文章为网络转载,写得相当不错,它对RAID 技术的概念特征、基本原理、关键技术、各种等级和发展现状进行了全面的阐述,并为用户如何进行应用选择提供了基本原则,对于初学者应该有很大的帮助。
一、RAID 概述
1988年美国加州大学伯克利分校的D.A. Patterson教授等首次在论文“A Case of
Redundant Array of Inexpensive Disks”中提出了RAID 概念[1],即廉价冗余磁盘阵列(
Redundant Array of Inexpensive Disks)。由于当时大容量磁盘比较昂贵,RAID的基本思想
是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。随着磁盘成本和价格的不断降低,RAID可以使用大部分的磁盘,“廉价”已经毫无意义。因此,RAID咨询委员会(RAID Advisory Board,RAB)决定用独立“替代”廉价”,于时RAID变成了独立磁盘冗余阵列(Redundant Array ofIndependent Disks)。但这仅仅是名称的变化,实质内容没有改变。
RAID 这种设计思想很快被业界接纳,RAID技术作为高性能、高可靠的存储技术,已经得到
了非常广泛的应用。RAID主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把RAID 分为不同的等级,以满足不同数据应用的需求。D. A. Patterson等的论文中定义了RAID1~RAID5原始
RAID 等级,1988年以来又扩展了RAID0 和 RAID6。近年来,存储厂商不断推出诸如 RAID7
、RAID10/01、RAID50、RAID53、RAID100等RAID等级,但这些并无统一的标准。目前业界公认的标准是RAIDO~RAID5,除RAID2外的四个等级被定为工业标准,而在实际应用领域中使用最多的RAID等级是RAIDO、RAID1、RAID3、RAID5、RAID6和RAID10.
从实现角度看,RAID主要分为软RAID、硬 RAID 以及软硬混合RAID 三种。软RAID 所有
功能均有操作系统和CPU来完成,没有独立的RAID控制/处理芯片和I/O处理芯片,效率自然最低。硬RAID 配备了专门的RAID控制/处理芯片和I/O处理芯片以及阵列缓冲,不占用 CPU资源,但成本很高。软硬混合RAID 具备RAID控制/处理芯片,但缺乏I/O处理芯片,需要CPU 和驱动程序来完成,性能和成本在软RAID 和硬RAID 之间。
RAID 每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用户的数据应用特点,综合考虑可用性、性能和成本来选择合适的RAID等级,以及具体的实现方式。
二、基本原理
RAID (Redundant Array of Independent Disks)即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说,RAID是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。RAID是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。SNIA对RAID的定义是[2]:一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与RAID 定义不符,通常还是称为RAID(即 RAIDO).
RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中,RAID
被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的I/O性能。大多数RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性,Redundant也由此而来。
这里要提一下JBOD(Just a Bunch of Disks)。最初JBOD用来表示一个没有控制软件
提供协调控制的磁盘集合,这是RAID 区别与JBOD的主要因素。目前JBOD常指磁盘柜,而不论其是否提供RAID 功能。
RAID 的两个关键目标是提高数据可靠性和I/O性能。磁盘阵列中,数据分散在多个磁盘
中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。有些RAID等级允许更多地磁盘同时发生故障,比如RAID6,可以是两块磁盘同时损坏。在这样的冗余机制下,可以用新磁盘替换故障磁盘,RAID会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。数据分散保存在RAID 中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合I/O带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。比如,RAID1 存储空间利用率仅有50%,RAID5会损失其中一个磁盘的存储容量,空间利用率为(n-1)/n.
磁盘阵列可以在部分磁盘(单块或多块,根据实现而论)损坏的情况下,仍能保证系统不中
断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但是性能方面会有一定程度上的降低。一些磁盘阵列在添加或删除磁盘时必须停机,而有些则支持热交换(Hot Swapping),允许不停机下替换磁盘驱动器。这种高端磁盘阵列主要用于要求高可能性的应用系统,系统不能停机或尽可能少的停机时间。一般来说,RAID不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、意外删除等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于RAID系统来身,数据都是完好的,没有发生丢失。所以,数据备份、灾备等数据保护措施是非常必要的,与RAID 相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。
RAID 中主要有三个关键概念和技术:镜像(Mirroring)、数据条带(Data Stripping)和数据校验(Data parity) [3][4][5]。镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低,确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作,从而获得非常可观的I/O性能提升。数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码,异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。不同等级的RAID采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和I/O性能。至于设计何种RAID(甚至新的等级或类型)或采用何种模式的RAID,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。
RAID 思想从提出后就广泛被业界所接纳,存储工业界投入了大量的时间和财力来研究和开发相关产品。而且,随着处理器、内存、计算机接口等技术的不断发展,RAID不断地发展和革新,在计算机存储领域得到了广泛的应用,从高端系统逐渐延伸到普通的中低端系统。RAID 技术如此流行,源于其具有显著的特征和优势,基本可以满足大部分的数据存储需求。总体说来,
RAID 主要优势有如下几点:
(1)大容量
这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的RAID系统具有海量
的存储空间。现在单个磁盘的容量就可以到1TB以上,这样RAID的存储容量就可以达到PB
级,大多数的存储需求都可以满足。一般来说,RAID可用容量要小于所有成员磁盘的总容量。
不同等级的RAID算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知RAID算法和容量,可以计算出RAID的可用容量。通常,RAID容量利用率在50%~90%之间。
(2)高性能
RAID 的高性能受益于数据条带化技术。单个磁盘的I/O性能受到接口、带宽等计算机技术
的限制,性能往往很有限,容易成为系统性能的瓶颈。通过数据条带化,RAID将数据I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合I/O性能。
(3)可靠性
可用性和可靠性是RAID的另一个重要特征。从理论上讲,由多个磁盘组成的RAID 系统在
可靠性方面应该比单个磁盘要差。这里有个隐含假定:单个磁盘故障将导致整个RAID 不可用。
RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。比起镜像50% 的冗余开销,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。RAID冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不会导致数据的丢失,不影响系统的连续运行。
(4)可管理性
实际上,RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动
器。对于外部主机系统来说,RAID是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。从用户应用角度看,可使存储系统简单易用,管理也很便利。由于RAID内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。RAID可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以大大简化管理工作。
三、关键技术
3.1 镜像
镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于RAID
而言,采用镜像技术典型地将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读I/O性能,但不能并行写数据,写多个副本会会导致一定的I/O性能降低。镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。另外,镜像通过“拆分”能获得特定时间点的上数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。
3.2数据条带
磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的CPU匹配。
再者,单个磁盘驱动器性能存在物理极限,I/O性能非常有限。RAID由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合I/O,有效提高了整体I/O性能,而且具有良好的线性扩展性。这对大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。而通过条带技术,可获得数倍与顺序访问的性能提升。
数据条带技术的分块大小选择非常关键。条带粒度可以是一个字节至几KB大小,分块越
小,并行处理能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存取随机性和并发处理能力之间进行平衡,以争取尽可能高的整体性能。
数据条带是基于提高I/O性能而提出的,也就是说它只关注性能,而对数据可靠性,可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。
3.3数据校验
镜像具有高安全性、高读性能,但冗余开销太昂贵。数据条带通过并发性来大幅提高性能,
然而对数据安全性、可靠性未作考虑。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性,RAID不同等级往往同时结合使用这两种技术。
采用数据校验时,RAID要在写入数据同时进行校验计算,并将得到的校验数据存储在RAID
成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同RAID等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据,校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件RAID控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。
海明校验码和异或校验是两种最为常用的数据校验算法。海明校验码是由理查德.海明提出
的,不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。
四、RAID等级
4.1 JBOD
JBOD ( Just a Bunch Of Disks)不是标准的RAID等级,它通常用来表示一个没有控制软
件提供协调控制的磁盘集合。JBOD将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。
JBOD(如图1)的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完
后,再依次往后面的磁盘存储数据。JBOD存储性能完全等同于单块磁盘,而且也不提供数据安全保护。它只是简单提供一种扩展存储空间的机制,JBOD可用存储容量等于所有成员磁盘的存储空间之和。目前JBOD常指磁盘柜,而不论其是否提供RAID功能。
4.2标准 RAID 等级
SNIABerkeley等组织机构把RAIDO,RAID1、RAID2 RAID3 RAID4 RAIDS、RAID6七个等级定为标准的RAID等级,这也被业界和学术界所公认。标准等级是最基本的RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准RAID可以组合,即RAID 组合等级,满足对性能、安全性、可靠性要求更高的存储应用需求。
1.RAIDO
RAIDO 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的RAID,因为
它并不提供任何形式的冗余策略,RAID0将所在磁盘条带化后组成大容量的存储空间(如图2所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行I/O操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAIDO的性能在所有RAID 等级中是最高的。理论上讲,一个由n块磁盘组成的RAIDO,它的读写性能是单个磁盘性能的n倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。
RAIDO 具有低成本、高读写性能、100%的高存储空间利用率等优点,但是它不提供数据冗
余保护,一旦数据损坏,将无法恢复。因此,RAIDO一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。
2.RAID1
RAID1称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率
为50%。RAID1在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。RAID1
提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作,工作原理如图3所示。
RAID1 与RAIDO刚好相反,是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达
到安全性好、技术简单、管理方便,RAID1拥有完全容错的能力,但实现成本高。RAID1应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
3.RAID2
RAID2 称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。海明码是一
种在原始数据中加入若干校验码来进行错误检测和纠正的编码技术,其中第2”位(1,2,4,8,..
)是校验码,其他位置是数据码。因此在RAID2中,数据按位存储,每块磁盘存储一位数据编码,磁盘数量取决于所设定的数据存储宽度,可由用户设定,图4所示的为数据宽度为4的RAID2,它需要4块数据磁盘和3块校验磁盘。如果是64位数据宽度,则需要64块数据磁盘和7块校验磁盘。可见,RAID2的数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。
海明码自身具备纠错能力,因此RAID2可以在数据发生错误的情况下对纠正错误,保证数据
的安全性。它的数据传输性能相当高,设计复杂性要低于后面介绍的RAID3、RAID4和RAIDS
但是,海明码的数据冗余开销太大,而且RAID2的数据输出性能受阵列中最慢磁盘驱动器的
限制,再者,海明码是按位运算,RAID2数据重建非常耗时,由于这些显著的缺陷,再加上大部分磁盘驱动器本身都具备了纠错功能,因此RAID2在实际中很少应用,没有形成商业产品,目前主流存储磁盘阵列均不提供RAID2支持。
4.RAID3
RAID3(图5)是使用专用校验盘的并行访问阵列,它采用一个专用的磁盘作为校验盘,其
余磁盘作为数据盘,数据按位可字节的方式交叉存储到各个数据盘中。RAID3至少需要三块磁盘,不同磁盘上同一带区的数据作XOR校验,校验值写入校验盘中。RAID3完好时读性能与RAID0完全一致,并行从多个磁盘条带读取数据,性能非常高,同时还提供了数据容错能力。向RAID3写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。
如果RAID3中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来
重建数据。假如所要读取的数据块正好位于失效磁盘,则系统需要读取所有同一条带的数据块,并根据校验值重建丢失的数据,系统性能将受到影响。当故障磁盘被更换后,系统按机同的方式重建故障盘中的数据至新磁盘。
RAID3 只需要一个校验盘,阵列的存储空间利用率高,再加上并行访问的特征,能够为高带
宽的大量读写提供高性能,适用大容量数据的顺序访问应用,如影像处理、流媒体服务等。目前,RAID5算法不断改进,在大数据量读取时能够模拟RAID3,而且RAID3在出现坏盘时性能会大幅下降,因此常使用RAID5 替代RAID3来运行具有持续性、高带宽、大量读写特征的应用。
5.RAID4
RAID4与 RAID3的原理大致相同,区别在于条带化的方式不同。RAID4(图6)按照块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘,多个I/O请求可以同时得到处理,提高了系统性能。RAID4按块存储可以保证单块的完整性,可以避免受到其他磁盘上同条带
产生的不利影响。
RAID4 在不同磁盘上的同级数据块同样使用XOR校验,结果存储在校验盘中。写入数据
时,RAID4按这种方式把各磁盘上的同级数据的校验值写入校验盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏,RAID4可以通过校验值以及其他磁盘上的同级数据块进行数据重建。
RAID4 提供了非常好的读性能,但单一的校验盘往往成为系统性能的瓶颈,对于写操作,
RAID4 只能一个磁盘一个磁盘地写,并且还要写入校验数据,因此写性能比较差,而且随着成员磁盘数量的增加,校验盘的系统瓶颈将更加突出,正是如上这些限制和不足,RAID4在实际应用中很少见,主流存储产品也很少使用RAID4保护。
6.RAID5
RAID5应该是目前最常见的RAID等级,它的原理与RAID4相似,区别在于校验数据分布
在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此,RAID5不存在RAID4中的并发写操作时的校验盘性能瓶颈问题。另外,RAID5还具备很好的扩展性。当阵列磁盘数量增加时,并行操作量的能力也随之增长,可比RAID4支持更多的磁盘,从而拥有更高的容量以及更高的性能。
RAID5《图7)的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同
的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他RAID等级一样,重建数据时,RAID5的性能会受到较大的影响。
RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为RAIDO 和RAID1
的折中方案,是目前综合性能最佳的数据保护解决方案。RAID5基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
7.RAID6
前面所述的各个RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同
时发生故障,数据将无法恢复。RAID6(如图8)引入双重校验的概念,它可以保护阵列中同时
出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。RAID6等级是在RAID5的基础上为了进一步增强数据保护而设计的一种RAID 方式,它可以看作是一种扩展的RAID5等级。
RAID6不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设
计也比其他等级更复杂、更昂责。RAID6思想最常见的实现方式是采用两个独立的校验算法,假设称为P和Q,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。
RAID6 具有快速的读取性能,更高的容错能力。但是,它的成本要高于RAID5许多,写性
能也较差,并有设计和实施非常复杂。因此,RAID6很少得到实际应用,主要用于对数据安全等级要求非常高的场合,它一般是替代RAID10方案的经济性选择。
4.3RAID组合等级
标准 RAID等级各有优势和不足。自然地,我们想到把多个RAID等级组合起来,实现优势
互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的RAID系统。目前在业界和学术研究中提到的RAID组合等级主要有RAIDO0.RAID01、RAID10、RAID100
RAID30,RAID50、 RAID53、 RAID60,但实际得到较为广泛应用的只有RAID01 和RAID10 两个等级。当然,组合等级的实现成本一般都非常昂贵,只是在少数特定场合应用。
1.RAID00
简单地说,RAIDO0是由多个成员RAIDO组成的高级RAIDO。它与RAID0的区别在于,
RAIDO 阵列普换了原先的成员磁盘。可以把RAID00理解为两层条带化结构的磁盘阵列,即对条带再进行条带化。这种阵列可以提供更大的存储容量、更高的I/O性能和更好的I/O负均衡。
2.RAID01 和RAID10
一些文献把这两种RAID 等级看作是等同的,本文认为是不同的。RAID01是先做条带化再
作镜像,本质是对物理磁盘实现镜像;而RAID10是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常RAID01比RAID10具有更好的容错能力,原理如图9所示。
RAID01 兼备了 RAIDO 和RAID1的优点,它先用两块磁盘建立镜像,然后再在镜像内部做
条带化。RAID01的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。RAID01和RAID10内部都含有RAID1模式,因此整体磁盘利用率均仅为50%。
3.RAID100
通常看作 RAID 1+0+0,有时也称为RAID10+0,即条带化的RAID10。原理如图10所
示。RAID100的缺陷与RAID10相同,任意一个RAID1损坏一个磁盘不会发生数据丢失,但是剩下的磁盘存在单点故障的危险。最顶层的RAIDO,即条带化任务,通常由软件层来完成。
RAID100 突破了单个RAID控制器对物理磁盘数量的限制,可以获得更高的I/O 负载均衡,
I/O 压力分散到更多的磁盘上,进一步提高随机读性能,并有效降低热点盘故障风险。因此,
RAID100 通常是大数据库的最佳选择。
4.RAID30 (RAID53)、RAID50 和RAID60
这三种 RAID 等级与RAIDO0原理基本相同,区别在于成员“磁盘”换成了RAID3、RAID5和 RAID6,分别如图11、12、13所示。其中,RAID30通常又被称为RAID53[13],其实,可把这些等级RAID统称为RAID XO等级,X可为标准RAID等级,甚至组合等级(如RAID100)。利用多层RAID配置,充分利用RAID X与RAID0的优点,从而获得在存储容量,数据安全性和I/O负载均衡等方面的大幅性能提升。
4.4非标准 RAID 等级
虽然标准 RAID 和组合RAID在具体实现上存在一定程度的不同,但与标准规范是保持一致
或兼容的。然而除此之外,一些存储厂商还实现了非标准的RAID等级,往往都是公司私有的产品。这里简单介绍几个非标准RAID等级。
1.RAID7
RAID7的全称是最优化的异步高I/O速率和高数据传输率,它与其他RAID等级有着明显区
别。它不仅仅是一种技术,它还是一个独立存储计算机,自身带的操作系统和管理工具,完全可以独立运行。
RAID7 的存储计算机操作系统是一套实时事件驱动操作系统,其主要用来进行系统初始化和
安排RAID7 磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上,RAID7通过
自身系统中的专用控制板来控制读写速度,存储计算机操作系统可使主机I/O传递性能达到最
佳。如果一个磁盘出现故障,RAID7还能够自动执行恢复操作,并可管理备份磁盘的重建过程。
RAID7突破了以往RAID 标准的技术架构,采用了非同步访问,极大地减轻了数据写瓶颈,
提高了I/O 速度。RAID7系统内置实时操作系统还可自动对主机发送过来的读写指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,从而大大减少了磁头的转动次数,提高存储系统的I/O速度。
RAID7 可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率大大提高,满
足不同用户的存储需求。但是,RAID7的成本比其他RAID等级要高许多。另外,RAID7已被
某公司注册为商标,目前仅有一家公司提供RAID7的产品,用户没有更多的选择。技术封闭,缺乏主流专业存储厂商的参与和研发严重制约了RAID7的发展。
2.RAID-DP
按照 SNIA 最新的RAID6定义[15],双重数据校验的磁盘阵列都可归为RAID6等级。
NetApp公司按照 RAID6的定义实现了RAID-DP,使用双重的数据校验来保护数据,可以保证两块磁盘同时损坏的情况下不发生数据丢失。与该公司的RAID4实现对比,传统的RAID6 实现会致使系统性能损失30%左右,而RAID-DP的性能下降低于2%。上层文件系统的请求首先写入后端的NVRAM中,确保即使在掉电的情况下也不会有任何数据丢失。因此,数据块不会立即更新,当执行新来的写操作,会对写操作进行聚集,然后存储控制器尝试一次性写入包括校验数据在内的整个数据条带。RAID-DP提供了比RAID10更好的数据保护,性能却不低于RAID10。对于相同大小的RAID组,在大多数情况下,RAID-DP没有受到传统RAID6即时更新数据块的挑战,并提供更多的磁盘进行读写,它甚至允许磁盘固件实时更新而不发生任何中断。
3.RAID1.5
这是HighPoint公司的RAID产品,有时也被错误地称为RAID15,RAID1.5仅使用两个磁盘驱动器同时进行数据条带化和镜像,数据可以同时从两块磁盘进行读取。这其中的大部分工作都由硬件来完成,而非驱动程序。Linux、Solaris等操作系统实现的RAID1也可以实现同时从两块磁盘进行读取数据,因此RAID1.5并不优于传统的RAID1.
4.RAID5E,RAID5EE 和RAID6E
这种概念首次在IBM ServerRAID中被提出,E是Enhanced的首字母。它们分别是对RAID5 和 RAID6的增强,增加了热冗余磁盘驱动器,冗余磁盘与其他磁盘一块进行数据块编排。这种设计使得I/O可以分散到包括热冗余在内的所在磁盘,从而减小单块磁盘的I/O带宽,提供更高的性能。然而,热冗余磁盘不能够被多个阵列共享。
在实现中,实际上不存在专用的热冗余磁盘,就像RAID5 和RAID6中没有专用的校验磁盘
一样,所有的冗余数据块分布在所的成员磁盘中。例如,一个10块磁盘的RAID5E,包括80%
数据块,10%的冗余数据块和10%的校验数据。对于RAIDSE和RAID6E,冗余数据块位于阵
列尾部,而RAID5EE则分布在整个RAID 中。如果RAID5E/5EE中发生一块磁盘损坏,则系统
会自动降级并重建至标准的RAID5。这一过程中,I/O操作非常密集,并且需要花费大量时间,从几个小时至甚至几天,根据阵列的具体配置而异。当损坏磁盘被替换后,系统则又会自动升级并重建至原先的RAID5E/5EE,同时非常耗时。在上面的重建过程中,数据没有冗余保护。由于系统升级和降级时,I/O活动密集且所需时间过长,因此实际应用中成员磁盘数据限制在4-8块。一旦超过8块磁盘,由于损坏磁盘的重建耗时和重建中发生第二块磁盘损坏造成的数据丢失,RAID5E/5EE所获得的性能提升和其他获益都将严重降低。
5.RAID S (Parity RAID)
RAIDS是EMC公司的Symmetrix存储系统所使用的条带化校验RAID。该系统中,每个
卷位于单独的物理磁盘上,多个卷组合进行数据校验。EMC最早引入了 RAID S概念,后来改名为Parity RAID并应用于Symmetrix DMX平台。EMC现在也为SymmetrixDMX提供标准的RAID5 ,RAIDS已经不再EMC产品中使用。
6.Intel Matrix RAID
Matrix RAID是Intel ICH6R和后继的南桥芯片的一个重要特征,可以通过RAID BIOS 进行访问,它使用两块磁盘或者控制器能支持的最多磁盘,它的显著特征是允许RAID0、1、5、10多种数据卷混合共存,每块磁盘的指定部分分配给相应的RAID卷。MatrixRAID主要用于改善性能和数据完整性,实际应用中可以将操作系统应用于小的RAIDO,而大的RAID1 存储关键数据以及用户数据。海量的流媒体数据容易发生数据丢失,可以考虑使用这种RAID。linux的MD RAID也可以实现类似的功能。
7.Linux MD RAID 10
RAID 10 是 Linux内核所支持的软RAID等级之一,它还支持RAID0,1、3、4、5、6等级
别。软 RAID 驱动程序通常通过构造典型的RAID1+0阵开来实现RAID10,2.6.9以后的内核
也可作为单独的级别来实现。MD RAID10支持重复数据块的近布局和远布局两种模式。近布局与标准RAID10相同,镜像数据块相邻存储。对于n重镜像的k路条带,不要求k为n的整倍数。两重镜像的2、3、4路条带的 MD RAID10分布相当于RAID1、RAID-1E和RAID10。远布局模式下,所有磁盘被划分为f(f=镜像数)个数据存储区,重复数据块相对于原始数据块具有一个磁盘和若干依偏移的距离,即保存在下一个磁盘对应存储区的偏移位置。这种设计能够提高镜像阵列的条带性能,有效提高顺序和随机读性能,但对写性能没有显著提升。许多应该通常具有读密集而写稀疏的特点,RAID10适合此类数据应用。需要指出的是,近布局和远布局两种模式可以同时使用,这种情况下将有n*f个数据副本。
8.IBM ServerRAID 1E
IBM公司的ServerRAID 阵列卡系列支持任意数量驱动器上的两路镜像,多个磁盘对数据块
进行轮转镜像,这种配置能够对不相邻磁盘驱动器发生的损坏进行容错,其他的存储系统也支持这种模式,比如SUN 公司的StorEdge T3.
9.RAID-K
Kaleidescape 公司实现了一种称为RAID-K[16]的RAID类型,RAID-K与RAID4相似,但不对文件数据进行块级的条带化处理,它企图将整个电影或音乐集合完整地存储在单个磁盘上。另外,它的冗余校验信息可存储在多个磁盘上,从而适应由多个容量不同的磁盘所组成的逻辑磁盘,而且,冗余数据包含比校验信息更多的数据,用于获取更高的容错性。这些特征可以为影像、音乐提供更好的性能,增加数据存储的安全性。RAID-K 还可以允许用户以增量方式扩充存储容量,能够增加容量更大的磁盘,甚至它还可以增加包含数据(仅限影像和音乐)的磁盘。RAID-K会自动把这些磁盘组建成RAID-K阵列和Kaleidescape文件系统。
10.RAID-Z
RAID-Z是集成在SUN公司 ZFS 文件系统中的一种与RAID5 相似的RAID模式。利用写时复制策略,RAID-Z避免了RAID5的写操作困境(即更新数据同时需要更新校验数据),它不用新数据覆盖旧数据,而是把新数据写到新位置并自动更新数据指针。对于小的写操作,仅仅执行完全的写条带操作,有效避免”读取,更改,写回”的操作需求。另外,还可以直接对小写操作使用镜像普换校验进行保护,因为文件系统了解下层存储结构,可以在必要时分配额外存储空间。ZFS还实现了RAID-Z2,提供类似与RAID6的双重校验保护能力,可以保证不块磁盘发生损坏而不发生数据丢失。根据2009年6月的更新,ZFS 加入了三重校验RAID支持,或许称为RAID-Z3
五、实现方式
通常计算机功能既可以由硬件来实现,也可以由软件来实现。对于RAID系统而言,自然也不例外,它可以采用软件方式实现,也可以采用硬件方式实现,或者采用软硬结合的方式实现。
5.1软RAID
软RAID 没有专用的控制芯片和I/O芯片,完全由操作系统和CPU来实现所的RAID的功能。现代操作系统基本上都提供软RAID支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。目前,操作系统支持的最常见的RAID等级有RAID0、RAID1、RAID10、RAID01和RAID5等。比如,WindowsServer 支持RAIDORAID1和 RAID5三种等级,Linux支持RAID0、RAID1、RAID4、RAID5、RAID6等,Mac OS X Server、 FreeBSD、NetBSD、OpenBSD、Solaris等操作系统也都支持相应的RAID等级软RAID的配置管理和数据恢复都比较简单,但是RAID 所有任务的处理完全由CPU来完成,如计算校验值,所以执行效率比较低下,这种方式需要消耗大量的运算资源,支持RAID 模式较少,很难广泛应用。软RAID 由操作系统来实现,因此系统所在分区不能作为RAID 的逻辑成员磁盘,软RAID不能保护系统盘D。对于部分操作系统而言,RAID的配置信息保存在系统信息中,而不是单独以文件形式保存在磁盘上。这样当系统意外崩溃而需要重新安装时,RAID信息就会丢失,另外,磁盘的容错技术并不等于完全支持在线更换、热插拔或热交换,能否支持错误磁盘的热交换与操作系统实现相关,有的操作系统热交换。
5.2 硬RAID
硬RAID 拥有自己的RAID控制处理与I/O处理芯片,甚至还有阵列缓冲,对CPU的占用率
和整体性能是三类实现中最优的,但实现成本也最高的。硬RAID 通常都支持热交换技术,在系统运行下更换故障磁盘。
硬RAID包含 RAID 卡和主板上集成的RAID芯片,服务器平台多采用RAID卡。RAID卡由RAID核心处理芯片(RAID卡上的CPU)、端口、缓存和电池4部分组成。其中,端口是指
RAID 卡支持的磁盘接口类型,如IDE/ATA、SCSI、SATA、SAS、FC等接口。
5.3 软硬混合 RAID
软RAID 性能欠佳,而且不能保护系统分区,因此很难应用于桌面系统。而硬RAID成本非常昂贵,不同RAID相互独立,不具互操作性。因此,人们采取软件与硬件结合的方式来实现RAID,从而获得在性能和成本上的一个折中,即较高的性价比。
这种 RAID 虽然采用了处理控制芯片,但是为了节省成本,芯片往往比较廉价且处理能力较弱,RAID 的任务处理大部分还是通过固件驱动程序由CPU来完成。
六、RAID 应用选择
RAID等级的选择主要有三个因素,即数据可用性、I/O性能和成本,目前,在实际应用
中常见的主流RAID 等级是RAIDO,RAID1,RAID3 ,RAIDS ,RAID6和RAID10,它们之间的技术对比情况如表1所示。如果不要求可用性,选择RAIDO以获得高性能。如果可用性和性能是重要的,而成本不是一个主要因素,则根据磁盘数量选择RAID1。如果可用性,成本和性能都同样重要,则根据一般的数据传输和磁盘数量选择RAID3或RAID5。在实际应用中,应当根据用户的数据应用特点和具体情况,综合考虑可用性、性能和成本来选择合适的RAID等级。
近年来,企业的信息化水平不断发展,数据已经取代计算成为了信息计算的中心,信息数据
的安全性就显得尤为至关重要。随着存储技术的持续发展,RAID技术在成本、性能、数据安全性等诸多方面都将优于其他存储技术,例如磁带库、光盘库等,大多数企业数据中心首选RAID作为存储系统。当前存储行业的知名存储厂商均提供全线的磁盘阵列产品,包括面向个人和中小企业的入门级的低端RAID产品,面向大中型企业的中高端RAID产品。这些存储企业包括了国内外的主流存储厂商,如 EMC、IBM、HP、SUN、NetApp、NEC、HDS、H3C、
Infortrend 、华赛等。另外,这些厂商在提供存储硬件系统的同时,还往往提供非常全面的软件系统,这也是用户采购产品的一个主要参考因素。
不同的存储厂商的产品在技术,成本、性能、管理、服务等方面各有优势和不足,用户选择
RAID 的原则是:在成本预算内,满足数据存储需求的前提下,选择最优的存储厂商解决方案。因此,首先用户需要对存储需求作深入的调研和分析,并给出成本预算,然后对众多存储厂商的解决方案进行分析和对比,最后选择出一个综合最优的存储方案。其中,存储产品的扩展性和存储厂家的售后服务需要重点考察,存储需求(如容量、性能)可能会不断升级,存储产品发生故障后的维修和支持保障,这些都要未雨先缪,