磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。
磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
简介
独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
由加利福尼亚大学伯克利分校(University of California-Berkeley)在1988年,发表的文章:“A Case for Redundant Arrays of Inexpensive Disks”。文章中,谈到了RAID这个词汇,而且定义了RAID的5层级。伯克利大学研究目的是反映当时CPU快速的性能。CPU效能每年大约成长30~50%,而硬磁机只能成长约7%。研究小组希望能找出一种新的技术,在短期内,立即提升效能来平衡计算机的运算能力。在当时,柏克莱研究小组的主要研究目的是效能与成本。
另外,研究小组也设计出容错(fault-tolerance),逻辑数据备份(logical data redundancy),而产生了RAID理论。研究初期,便宜(Inexpensive)的磁盘也是主要的重点,但后来发现,大量便宜磁盘组合并不能适用于现实的生产环境,后来Inexpensive被改为independent,许多独立的磁盘组。
功能
RAID技术主要有以下三个基本功能:
(1)通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
(2)通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
(3)通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。
分类
磁盘阵列其样式有三种,一是外接式磁盘阵列柜、二是内接式磁盘阵列卡,三是利用软件来仿真。
外接式磁盘阵列柜最常被使用大型服务器上,具可热交换(Hot Swap)的特性,不过这类产品的价格都很贵。
内接式磁盘阵列卡,因为价格便宜,但需要较高的安装技术,适合技术人员使用操作。硬件阵列能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能。它能提供性能、数据保护、可靠性、可用性和可管理性的解决方案。阵列卡专用的处理单元来进行操作。
利用软件仿真的方式,是指通过网络操作系统自身提供的磁盘管理功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘,组成阵列。软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降低幅度还比较大,达30%左右。因此会拖累机器的速度,不适合大数据流量的服务器。
原理
磁盘阵列作为独立系统在主机外直连或通过网络与主机相连。磁盘阵列有多个端口可以被不同主机或不同端口连接。一个主机连接阵列的不同端口可提升传输速度。
和当时PC用单磁盘内部集成缓存一样,在磁盘阵列内部为加快与主机交互速度,都带有一定量的缓冲存储器。主机与磁盘阵列的缓存交互,缓存与具体的磁盘交互数据。
在应用中,有部分常用的数据是需要经常读取的,磁盘阵列根据内部的算法,查找出这些经常读取的数据,存储在缓存中,加快主机读取这些数据的速度,而对于其他缓存中没有的数据,主机要读取,则由阵列从磁盘上直接读取传输给主机。对于主机写入的数据,只写在缓存中,主机可以立即完成写操作。然后由缓存再慢慢写入磁盘。
优缺点
优点
提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。这也是RAID最初想要解决的问题。因为当时CPU的速度增长很快,而磁盘驱动器的数据传输速率无法大幅提高,所以需要有一种方案解决二者之间的矛盾。RAID最后成功了。
通过数据校验提供容错功能。普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。
缺点
RAID0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都无法使用。
RAID1磁盘的利用率最高只能达到50%(使用两块盘的情况下),是所有RAID级别中最低的。
RAID0+1以理解为是RAID 0和RAID 1的折中方案。RAID 0+1可以为系统提供数据安全保障,但保障程度要比 Mirror低而磁盘空间利用率要比Mirror高。
RAID级别
RAID 0
RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术。RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。
RAID 0最简单的实现方式就是把N块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起创建一个大的卷集。在使用中电脑数据依次写入到各块硬盘中,它的最大优点就是可以整倍的提高硬盘的容量。如使用了三块80GB的硬盘组建成RAID 0模式,那么磁盘容量就会是240GB。其速度方面,各单独一块硬盘的速度完全相同。最大的缺点在于任何一块硬盘出现故障,整个系统将会受到破坏,可靠性仅为单独一块硬盘的1/N。
为了解决这一问题,便出现了RAID 0的另一种模式。即在N块硬盘上选择合理的带区来创建带区集。其原理就是将原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。
在创建带区集时,合理的选择带区的大小非常重要。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使数据的读写仍然只局限在少数的一、两块硬盘上,不能充分的发挥出并行操作的优势。另一方面,如果带区过小,任何I/O指令都可能引发大量的读写操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重的选择带区的大小。
带区集虽然可以把数据均匀的分配到所有的磁盘上进行读写。但如果我们把所有的硬盘都连接到一个控制器上的话,可能会带来潜在的危害。这是因为当我们频繁进行读写操作时,很容易使控制器或总线的负荷 超载。为了避免出现上述问题,建议用户可以使用多个磁盘控制器。最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。
虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。
RAID 1
RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。
RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。
RAID0+1
从RAID 0+1名称上我们便可以看出是RAID0与RAID1的结合体。在我们单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。
RAID: LSI MegaRAID、Nytro和Syncro
MegaRAID、Nytro和Syncro都是LSI 针对RAID而推出的解决方案,并且一直在创造更新。
LSI MegaRAID的主要定位是保护数据,通过高性能、高可靠的RAID控制器功能,为数据提供高级别的保护。LSI MegaRAID在业界有口皆碑。
LSI Nytro的主要定位是数据加速,它充分利用当今备受追捧的闪存技术,极大地提高数据I/O速度。LSI Nytro包括三个系列:LSI Nytro WarpDrive加速卡、LSI Nytro XD 应用加速存储解决方案和LSI Nytro MegaRAID 应用加速卡。Nytro MegaRAID主要用于DAS环境,Nytro WarpDrive加速卡主要用于SAN和NAS环境,Nytro XD解决方案由Nytro WarpDrive加速卡和Nytro XD 智能高速缓存软件两部分构成。
LSI Syncro的定位主要用于数据共享,提高系统的可用性、可扩展性,降低成本。
LSI通过MegaRAID提供基本的可靠性保障;通过Nytro实现加速;通过Syncro突破容量瓶颈,让价格低廉的存储解决方案可以大规模扩展,并且进一步提高可靠性。
RAID2
RAID2:带海明码校验。从概念上讲,RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。下图左边的各个磁盘上是数据的各个位,由一个数据不同的位运算得到的海明校验码可以保存另一组磁盘上。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID3,4或5要简单。没有免费的午餐,这里也一样,要利用海明码,必须要付出数据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。
RAID3
RAID3(带奇偶校验码的并行传送)。这种校验码与RAID2不同,只能查错不能纠错。它访问数据时一次处理一个带区,这样可以提高读取和
写入速度。校验码在写入数据时产生并保存在另一个磁盘上。需要实现时用户必须要有三个以上的驱动器,写入速率与读出速率都很高,因为校验位比较少,因此计算时间相对而言比较少。用软件实现RAID控制将是十分困难的,控制器的实现也不是很容易。它主要用于图形(包括动画)等要求吞吐率比较高的场合。不同于RAID 2,RAID 3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。
RAID4
RAID4(带奇偶校验码的独立磁盘结构)。RAID4和RAID3很象,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。在图上可以这么看,RAID3是一次一横条,而RAID4一次一竖条。它的特点和RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。
RAID5
RAID5(分布式奇偶校验的独立磁盘结构)。从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的
意思也相同。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。RAID 3 与RAID 5相比,重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
RAID6
RAID6是带两种分布存储的奇偶校验码独立磁盘结构。它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合。当然了,由于引入了第二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。我想除了军队没有人用得起这种东西。
RAID7
RAID7(优化的高速数据传送磁盘结构)。RAID7所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问数据的速度;每个磁盘都带有高速缓冲存储器,实时操作系统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率。可以连接多台主机,因为加入高速缓冲存储器,当多用户访问系统时,访问时间几乎接近于0。由于采用并行结构,因此数据访问效率大大提高。需要注意的是它引入了一个高速缓冲存储器,这有利有弊,因为一旦系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作。当然了,这么快的东西,价格也非常昂贵。
RAID10(高可靠性与高效磁盘结构)
RAID10(高可靠性与高效磁盘结构)。这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于数据容量不大,但要求速度和差错控制的数据库中。
RAID53(高效数据传送磁盘结构)
RAID53(高效数据传送磁盘结构)。越到后面的结构就是对前面结构的一种重复和再利用,这种结构就是RAID3和带区结构的统一,因此它速度比较快,也有容错功能。但价格十分高,不易于实现。这是因为所有的数据必须经过带区和按位存储两种方法,在考虑到效率的情况下,要求这些磁盘同步真是不容易。
RAID 5E(RAID 5 Enhancement)
RAID 5E是在RAID 5级别基础上的改进,与RAID 5类似,数据的校验信息均匀分布在各硬盘上,但是,在每个硬盘上都保留了一部分未使用的空间,这部分空间没有进行条带化,最多允许两块物理硬盘出现故障。看起来,RAID 5E和RAID 5加一块热备盘好像差不多,其实由于RAID 5E是把数据分布在所有的硬盘上,性能会比RAID5 加一块热备盘要好。当一块硬盘出现故障时,有故障硬盘上的数据会被压缩到其它硬盘上未使用的空间,逻辑盘保持RAID 5级别。
RAID 5EE
与RAID 5E相比,RAID 5EE的数据分布更有效率,每个硬盘的一部分空间被用作分布的热备盘,它们是阵列的一部分,当阵列中一个物理硬盘出现故障时,数据重建的速度会更快。
实现方法
软件RAID
使用基于主机的软件提供RAID 功能,是在操作系统级上实现的,与硬件RAID相比,软件RAID具有成本低廉和简单直观的优点。但是,软件RAID有以下不足。
(1)性能:软件RAID 会影响系统整体性能。这是因为软件RAID 需要CPU 来执行RAID 计算。
(2)功能:软件RAID 支持有限的RAID 级别。
(3)兼容性:软件RAID 与主机操作系统绑定,因此,需要对软件RAID或操作系统升级进行兼容性验证,只有当RAID 软件和操作系统兼容时,才能对其进行升级,这会降低数据处理环境的灵活性。
硬件RAID
包括基于主机的硬件RAID和基于阵列的硬件RAID。基于主机的硬件RAID通常是将专用RAID控制器安装在主机上,并且所有磁盘驱动器都与主机相连,有的制造商还将RAID控制器集成到主板上。但是基于主机的硬件RAID 控制器在包含大量主机的数据中心环境下却不是高效的解决方案。而基于阵列的硬件RAID是使用外部硬件RAID控制器,它充当主机与磁盘之间的接口,将存储卷呈现给主机,主机将这些卷作为物理驱动器进行管理。硬件RAID控制器具有如下主要特点:
(1)管理与控制磁盘聚合;
(2)转换逻辑磁盘和物理磁盘之间的I/O 请求;
(3)在磁盘出故障时重新生成数据。
RAID技术的应用编辑
1、DAS–direct access storage device直接访问存储设备
DAS以服务器为中心,传统的网络存储设备都是将RAID硬盘阵列直接连接到网络系统的服务器上,这种形式的网络存储结构称为DAS( Direct Attached Storage)。
2、NAS–Network Attached Storage网络附加存储设备
NAS以数据为中心,NAS是 Network Attached Storage的简称,中文称为直接联网存储在NAS存储结构中,存储系统不再通过I/O总线附属于某个特定的服务器或客户机,而是直接通过网络接口与网络直接相连,由用户通过网络访问。
3、SAN–Storage Area Networks存储区域网
SAN以网络为中心,存储区域网络(SAN是一种类似于普通局域网的高速存储网络。SAN提供了一种与现有LAN连接的简易方法,允许企业独立地增加它们的存储容量,并使网络性能不至于受到数据访问的影响。这种独立的专有网络存储方式使得SAN具有不少优势:可扩展性高;存储硬件功能的发挥不受LAN的影响;易管理;集中式管理软件使得远程管理和无人值守得以实现;容错能力强。
SAN主要用于存储量大的工作环境,如医院大型PACS等,但现在由于需求量不大成本高而影响了SAN的市场。
磁盘阵列维护
加强磁盘阵列的日常管理与维护,是保证磁盘阵列正常、高效工作的重要手段。作为一名存储的管理人员,日常维护中应该关注以下:
①设置热备源盘
将一只硬盘设置为热备源盘,会造成一定的浪费,但从安全角度考虑是值得的。大容量的磁盘阵列使用RAID5,但有一个硬盘的冗余。如果一个硬盘损坏,整个阵列的安全会处于一种临界状态,此时任何一个硬盘的一点点闪失都会造成灾难性的后果,使数据全部丢失。设置有热备源盘,当硬盘发生故障时,系统会自动用热备源盘去替换故障盘并重建阵列,随后数据又会处于完全保护之中。
②重要数据勤备份
应该经常对特别重要的数据进行备份,这样就不至于将“鸡蛋放在一个篮子里”,即使是安全性较高的磁盘阵列也不会绝对安全。
③建立巡视检查制度
磁盘阵列还能够工作,并不表示没有发生故障。当磁盘阵列发生故障时,磁盘阵列存储系统的数据读写通常是正常的。这正是磁盘阵列的一种安全性措施,但往往又让管理人员产生一种错觉,以为磁盘阵列没有故障发生。对磁盘阵列定时的巡视检查,既可以发现已经发生的故障,还可以了解设备的工作状态,起到防患于未然的作用。
固态硬盘RAID技术
目前,针对固态硬盘的RAID阵列技术主要有三类,其中固态硬盘和机械硬盘组合搭建的混合式RAID阵列实现了两者特性的互补。随着固态硬盘的性价比不断提高,推进了固态硬盘与固态硬盘组合形成的RAID阵列以及固态硬盘的闪存芯片与芯片组合形成的纯固态硬盘RAID阵列的研发进程。由于目前固态硬盘价格高于机械硬盘,固态硬盘与机械硬盘构成的混合式RAID阵列与其他纯固态硬盘RAID阵列相比,在成本控制方面有较大的优势。但在性能与可靠性方面,多个固态硬盘构成的RAID阵列要优于固态硬盘与机械硬盘构成的混合式RAID阵列,而目前大多数固态硬盘厂商都采用固态硬盘内部的芯片级RAID阵列来进一步提升性能,降低功耗。
对嵌入式RAID阵列技术的iRAID,这种结构的初步研究结果表明,RAID系统将不再是一群独立的驱动器,未来将可能只有一个单一的高密度磁盘。这将使这些存储系统的磁盘阵列,如云存储系统,在性能、功率消耗、体积方面有更大的改善,成本进一步降低,同时也更容易维护。由此,嵌入式RAID技术将会成为固态硬盘RAID阵列技术的主要研究方向之一,具有广阔的应用前景,涉及教育、娱乐、国防等多个应用领域,特别是在航空、军事等工作环境复杂程度高、数据安全级别要求高的领域,将会有大的作为。另外,因目前评估固态硬盘RAID的可靠性方面的研究较少,需要尽快完善针对RAID可靠性的评价体系及方法,由此可靠性分析研究也将成为固态硬盘RAID阵列技术的研究重点之一。
除此之外,下面两方面也会在固态硬盘RAID阵列技术研究中受到关注。
- 大数据存储结构与搜索引擎研究。数据存储系统是确定数据挖掘性能和成本的核心。新型的大数据存储架构可整合分布式以及嵌入式搜索引擎内的每一个存储驱动器,突破数据吞吐量和数据访问存储系统的限制,提升大数据存储接口的带宽。
- 快速重建机制研究。固态硬盘的RAID结构采用相应的重建机制,将加快从统计错误到恢复数据等整个重建的进程,同时有助于降低重建过程中数据丢失的风险。重建机制对于一个完善的固态硬盘RAID结构来说是不可或缺的,需要根据其RAID阵列特点进行开发并优化处理。