一、简介:
磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。
最初是由加利福尼亚大学伯克利分校在1988年发表的,旨在效能与成本。简单来说,RAID 是利用多块物理硬盘来组成一个虚拟硬盘,并由这些虚拟的硬盘组成一个矩阵的存储系统的一种技术。它的目的很简单却很重要,毕竟关系到数据,保证数据的安全性、提高数据读写的效率。磁盘阵列主要分类三种: 外接式磁盘矩阵列柜、内接式磁盘矩阵列卡、软件模拟仿真。
磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
独立磁盘冗余阵列 是把相同的数据存储在多个硬盘的不同的地方(因此而冗余)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
容量计算:
RAID 0: N块盘组成, 逻辑容量为 N 块盘容量之和;
RAID 1: 两块盘组成, 逻辑容量为 1 块盘容量;
RAID 3: N+1块盘组成, 逻辑容量为 N 块盘容量之和;
RAID 5: N块盘组成, 逻辑容量为 N-1 块盘容量之和;
RAID 6: N块盘组成, 逻辑容量为 N-2 块盘容量之和;
RAID 1 0:2N块盘组成, 逻辑容量为 N 块盘容量之和;
RAID 5 0:假每个 RAID 5 由 N 块盘组成,共有 M 个 RAID 5 组成该 RAID 5 0,则逻辑容量为(N-1)*M 块盘容量之和。
二、分类:
磁盘阵列其样式有三种:外接式磁盘阵列柜、内接式磁盘阵列卡,软件仿真。
1、外接式磁盘阵列柜:最常被使用大型服务器上,具可热交换(Hot Swap)的特性,不过这类产品的价格都很贵。
2、内接式磁盘阵列卡:因为价格便宜,但需要较高的安装技术,适合技术人员使用操作。硬件阵列能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能。它能提供性能、数据保护、可靠性、可用性和可管理性的解决方案。阵列卡专用的处理单元来进行操作。
3、利用软件仿真的方式:是指通过网络操作系统自身提供的磁盘管理功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘,组成阵列。软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降低幅度还比较大,达30%左右。因此会拖累机器的速度,不适合大数据流量的服务器。
三、原理:
磁盘阵列作为独立系统在主机外直连或通过网络与主机相连。磁盘阵列有多个端口可以被不同主机或不同端口连接。一个主机连接阵列的不同端口可提升传输速度。
和当时 PC 用单磁盘内部集成缓存一样,在磁盘阵列内部为加快与主机交互速度,都带有一定量的缓冲存储器。主机与磁盘阵列的缓存交互,缓存与具体的磁盘交互数据。
在应用中,有部分常用的数据是需要经常读取的,磁盘阵列根据内部的算法,查找出这些经常读取的数据,存储在缓存中,加快主机读取这些数据的速度,而对于其他缓存中没有的数据,主机要读取,则由阵列从磁盘上直接读取传输给主机。对于主机写入的数据,只写在缓存中,主机可以立即完成写操作。然后由缓存再慢慢写入磁盘。
四、RAID 级别:
1、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结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。
特点:至少有两块才能组建 RAID 0
优点:没有数据冗余。读写速度快,read>write
缺点:安全性低,一旦其中一块硬盘故障,数据将全毁
2、RAID 1
RAID 1 称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现硬盘故障的 RAID 系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1 多用在保存关键性的重要数据的场合。
RAID 1 主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。
特点:Mirror 镜像磁盘阵列,只需要2块硬盘组建。
优点:安全性高,支持热恢复
缺点:成本高。虚拟硬盘可用容量是总容量的一半。读写速度慢。
3、RAID 0 1
从 RAID 0+1 名称上我们便可以看出是 RAID0 与 RAID1 的结合体。在我们单独使用 RAID 1 也会出现类似单独使用RAID 0 那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为 RAID 0+1。把 RAID 0 和 RAID 1 技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1 要在磁盘镜像中建立带区集至少4个硬盘。
4、RAID1 0:高可靠性与高效磁盘结构
这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于数据容量不大,但要求速度和差错控制的数据库中。
根据组合分为 RAID 10 和 RAID 01,实际是将 RAID 0 和 RAID 1 标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。它的优点是同时拥有 RAID 0 的超凡速度和 RAID 1 的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低。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。
5、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 突破容量瓶颈,让价格低廉的存储解决方案可以大规模扩展,并且进一步提高可靠性。
6、RAID2:带海明码校验
从概念上讲,RAID 2 同 RAID 3 类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。下图左边的各个磁盘上是数据的各个位,由一个数据不同的位运算得到的海明校验码可以保存另一组磁盘上。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID3,4或5要简单。没有免费的午餐,这里也一样,要利用海明码,必须要付出数据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。
RAID 2 将数据条块化地分布于不同的硬盘上,条块单位为位或字节,并使用称为“加重平均纠错码(汉明码)”的编码技术来提供错误检查及恢复。
7、RAID 3:带奇偶校验码的并行传送
这种校验码与 RAID2 不同,只能查错不能纠错。它访问数据时一次处理一个带区,这样可以提高读取和写入速度。校验码在写入数据时产生并保存在另一个磁盘上。需要实现时用户必须要有三个以上的驱动器,写入速率与读出速率都很高,因为校验位比较少,因此计算时间相对而言比较少。用软件实现RAID控制将是十分困难的,控制器的实现也不是很容易。它主要用于图形(包括动画)等要求吞吐率比较高的场合。不同于RAID 2,RAID 3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。
RAID 3:它同 RAID 2 非常类似,都是将数据条块化分布于不同的硬盘上,区别在于RAID 3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID 3 对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈。
8、RAID 4:带奇偶校验码的独立磁盘结构
RAID4 和 RAID3 很象,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。在图上可以这么看,RAID3 是一次一横条,而 RAID4 一次一竖条。它的特点和 RAID3 也挺象,不过在失败恢复时,它的难度可要比 RAID3 大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。
9、RAID 5:分布式奇偶校验的独立磁盘结构
从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的 p0 代表第 0 带区的奇偶校验值,其它的意思也相同。RAID5 的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。RAID 3 与 RAID 5相比,重要的区别在于 RAID 3 每进行一次数据传输,需涉及到所有的阵列盘。而对于 RAID 5 来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在 RAID 5 中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
RAID 5 不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID 5更适合于小数据块和随机读写的数据。RAID 3与RAID 5相比,最主要的区别在于RAID 3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID 5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID 5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
10、RAID 6:带有两种分布存储的奇偶校验码的独立磁盘结构
名字很长,但是如果看到图,大家立刻会明白是为什么,请注意 p0 代表第 0 带区的奇偶校验值,而pA代表数据块A的奇偶校验值。它是对 RAID5 的扩展,主要是用于要求数据绝对不能出错的场合。当然了,由于引入了第二种奇偶校验值,所以需要 N+2 个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。我想除了军队没有人用得起这种东西。
RAID 6:与RAID 5相比,RAID 6 增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实施方式使得RAID 6很少得到实际应用。
其实RAID 6的核心就是有两份检验数据,以保证两块磁盘同时出故障的时候,也能保障数据的安全。
假设一共6块硬盘,使用4块创建逻辑盘,raid6 的4个硬盘在使用时都被先条带化,然后分别存储数据和校验位。
如果一块硬盘出现物理故障,RAID的会处于降级状态,但是仍然有容错功能;
如果第二块硬盘出现故障,逻辑盘中还剩下的两块硬盘就不再有容错功能。
如果阵列中有热备硬盘,出故障的硬盘上的数据会转移到热备硬盘上,并且自动进行重建,数据的条带化存储方式和原来的两块硬盘相同。
RAID 6 的性能:既然 RAID 6 是最新的 RAID 冗余技术,那么他的性能应该是非常不错的。
RAID 6 的随机读取性能:很好(当使用大数据块时)。
RAID 6 的随机写入性能:差,因为不但要在每硬盘上写入校验数据而且要在专门的校验硬盘上写入数据。
RAID 6 的持续读取性能:好(当使用小数据块时)。
RAID 6 的持续写入性能:一般。
RAID 6 的优点:快速的读取性能,更高的容错能力。
RAID 6 的缺点:很慢的写入速度,RAID 控制器在设计上更加复杂,成本更高。
11、RAID 7:优化的高速数据传送磁盘结构
RAID7 所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问数据的速度;每个磁盘都带有高速缓冲存储器,实时操作系统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率。可以连接多台主机,因为加入高速缓冲存储器,当多用户访问系统时,访问时间几乎接近于0。由于采用并行结构,因此数据访问效率大大提高。需要注意的是它引入了一个高速缓冲存储器,这有利有弊,因为一旦系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作。当然了,这么快的东西,价格也非常昂贵。
RAID 7:这是一种新的RAID标准,其自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID 7可以看作是一种存储计算机(Storage Computer),它与其他RAID标准有明显区别。除了以上的各种标准(如表1),我们可以如RAID 0+1那样结合多种RAID规范来构筑所需的RAID阵列,例如RAID 5+3(RAID 53)就是一种应用较为广泛的阵列形式。用户一般可以通过灵活配置磁盘阵列来获得更加符合其要求的磁盘存储系统。
12、RAID 5 E(RAID 5 Enhancement)
RAID 5E 是在 RAID 5 级别基础上的改进,与 RAID 5 类似,数据的校验信息均匀分布在各硬盘上,但是,在每个硬盘上都保留了一部分未使用的空间,这部分空间没有进行条带化,最多允许两块物理硬盘出现故障。看起来,RAID 5E 和RAID 5 加一块热备盘好像差不多,其实由于 RAID 5E 是把数据分布在所有的硬盘上,性能会比 RAID5 加一块热备盘要好。当一块硬盘出现故障时,有故障硬盘上的数据会被压缩到其它硬盘上未使用的空间,逻辑盘保持 RAID 5 级别。
13、RAID 5 3:高效数据传送磁盘结构
越到后面的结构就是对前面结构的一种重复和再利用,这种结构就是 RAID3 和带区结构的统一,因此它速度比较快,也有容错功能。但价格十分高,不易于实现。这是因为所有的数据必须经过带区和按位存储两种方法,在考虑到效率的情况下,要求这些磁盘同步真是不容易。
14、混合 RAID:
混合 RAID 是一种冗余存储解决方案,采用高容量低成本的 SATA 或者高性能 SAS 硬盘与低延迟高 IOPs 的固态盘,再加上 SSD 感知的 RAID 控制卡。
在混合RAID中,读取操作在更高速的SSD中进行,而出于冗余考虑,写入操作则在SSD和HDD中进行。混合RAID适合于数据等级较低的应用,例如互联网网关、文件服务器或者虚拟机。
混合 RAID 的好处:混合RAID阵列的性能远远超过标准HDD RAID阵列,而且成本比纯SSD RAID阵列更低。相比纯HDD RAID阵列,混合阵列加速IOPS并降低延迟,使数据中心和云计算环境能够托管更多用户,每秒钟在每台服务器上执行更多交易,减少了支持任何特定工作负载所需的服务器数量。除了服务器数量缩减会减少数据中心服务器的占地空间之外,在财务上体现出的好处就是降低了采购额外服务器所需的资本开支,以及供电、冷却与维护相关的运营开支。
从硬件的角度看,搭建一个混合 RAID 解决方案可以使用任何容量的 SSD 和 HDD(不过SSD和HDD的数量必须相同)。如果这个RAID阵列使用容量不同的驱动器,那么驱动器容量就是更小的那个。例如, 一个RAID 1 使用1个128GB SSD 和 2TB HDD,那么逻辑设备就是128GB。一个RAID 10使用2个128GB SSD和2个2TB HDD,逻辑设备就是256GB。剩下的HDD容量可用于存储。
不过,从应用的角度看,因为大多数软件并不能识别出采用两种有着不同特点的存储的可能性。为了充分利用混合RAID,必须部署一种具有智能存储处理能力、SSD 感知的 RAID 控制卡。Adaptec 6系列、5Z系列、5系列、2系列和Q系列控制卡经过最新的固件升级之后, 可以很好地利用剩余容量,自动创建一个混合 RAID 阵列,将1个或者多个SSD与相同数量的 HDD 做成 RAID 1 或者 RAID 10 阵列。这个混合RAID阵列对于操作系统和所有运行中的应用都是透明的。此外,Adaptec 控制卡通过向 HDD 和 SSD 的写入、100%从 SSD读取,提供了最高的混合阵列性能(见右图 Adaptec 混合 RAID 解决方案)。
Adaptec 混合 RAID 阵列提供了比标准 HDD 阵列更高的 IOPs 性能,同时写 I/O 性能也没有降级,见下图 -IOMeter 原始性能。
一些应用甚至看到了通过 Adaptec 混合 RAID 获得的少量性能优势,并且混合 RAID 1 速度比单个 SSD 更快,见下图-AS SSD 应用性能。
五、其他:
十、参考文献:
1、《磁盘阵列》https://baike.baidu.com/item/%E7%A3%81%E7%9B%98%E9%98%B5%E5%88%97/1149823