• RAID技术概述


    一、RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。

      RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。业界公认的标准是 RAID0 ~ RAID5 ,除 RAID2 外的四个等级被定为工业标准,而在实际应用领域中使用最多的 RAID 等级是 RAID0 、 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 之间。

      

      条带化后,条带卷所能提供的速度比单个盘所能提供的速度要快很多,由于现在存储技术成熟,大多数系统都采用条带化来实现系统的I/O负载分担,如果OS有LVM软件或者硬件条带设备,决定因素是条带深度(stripe depth)和条带宽度(stripe width)

       

      条带深度
      指的是条带的大小,也叫条带大小。有时也被叫做block size, chunk size, stripe length 或者 granularity。这个参数指的是写在每块磁盘上的条带数据块的大小。RAID的数据块大小一般在2KB到512KB之间(或者更大),其数值是2的次方,即2KB,4KB,8KB,16KB这样。条带大小对性能的影响比条带宽度难以量化的多。
      减小条带大小: 由于条带大小减小了,则文件被分成了更多个,更小的数据块。这些数据块会被分散到更多的硬盘上存储,因此提高了传输的性能,但是由于要多次寻找不同的数据块,磁盘定位的性能就下降了
      增加条带大小:与减小条带大小相反,会降低传输性能,提高定位性能

      条带宽度
      是指同时可以并发读或写的条带数量这个数量等于RAID中的物理硬盘数量。例如一个经过条带化的,具有4块物理硬盘的阵列的条带宽度就是4。增加条带宽度,可以增加阵列的读写性能。道理很明显,增加更多的硬盘,也就增加了可以同时并发读或写的条带数量。在其他条件一样的前提下,一个由8块18G硬盘组成的阵列相比一个由4块36G硬盘组成的阵列具有更高的传输性能。

    二、RAID 中镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )

      镜像将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。

      数据条带:将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。

      数据校验:数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。

      采用数据校验时, RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多

      海明校验码和异或校验是两种最为常用的 数据校验算法。海明校验码是由理查德.海明提出的,不仅能检测错误,还能给出错误位置并自动纠正。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。

     

    三、RAID等级

      3.1 JBOD

      JBOD ( Just a Bunch Of Disks )不是标准的 RAID 等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。 JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘, JBOD 的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据, JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护,它只是简单提供一种扩展存储空间的机制, JBOD 可用存储容量等于所有成员磁盘的存储空间之和。目前 JBOD常指磁盘柜,而不论其是否提供 RAID 功能。

      

     

      3.2 标准RAID等级

      SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。标准等级是最基本的 RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。

       3.2.1. RAID0:一种简单的无数据校验的数据条带化技术,没有冗余策略功能。无数据校验所以读写性能最高(有几块硬盘,读写性能就提高到几倍)。但是完全没有冗余,所以容错最差,任意一块磁盘损坏,则数据完全丢失。RAID0 并行读写的原理是:在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的读写速度是最快的:

      

     

      3.2.2. RAID1镜像技术,其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是磁盘利用率最低:

      

     

      3.2.3 RAID2:称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。在 RAID2 中,数据按位存储,每块磁盘存储一位数据编码,磁盘数量取决于所设定的数据存储宽度,可由用户设定。图所示的为数据宽度为 4 的 RAID2 ,它需要 4 块数据磁盘和 3 块校验磁盘。如果是 64 位数据宽度,则需要 64 块 数据磁盘和 7 块校验磁盘。可见, RAID2 的数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。

       海明码的数据冗余开销太大,而且 RAID2 的数据输出性能受阵列中最慢磁盘驱动器的限制。再者,海明码是按位运算, RAID2 数据重建非常耗时,由于这些显著的缺陷,再加上大部分磁盘驱动器本身都具备了纠错功能,因此 RAID2 在实际中很少应用,没有形成商业产品,目前主流存储磁盘阵列均不提供 RAID2 支持。

      

     

      3.2.4 RAID3: 是使用专用校验盘的并行访问阵列,它采用一个专用的磁盘作为校验盘,其余磁盘作为数据盘,数据按位字节的方式交叉存储到各个数据盘中,RAID3 至少需要三块磁盘,不同磁盘上同一带区的数据作 XOR 校验,校验值写入校验盘中, RAID3 读性能与 RAID0 完全一致,并行从多个磁盘条带读取数据,性能非常高,同时还提供了数据容错能力。 RAID3 写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。

      

     

      3.2.5 RAID4:RAID4 与 RAID3 的原理大致相同,区别在于条带化的方式不同。按照块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘,多个 I/O 请求可以同时得到处理,提高了系统性能。RAID4 在不同磁盘上的同级数据块同样使用 XOR 校验,结果存储在校验盘中,写入数据时, RAID4 按这种方式把各磁盘上的同级数据的校验值写入校验盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏, RAID4 可以通过校验值以及其他磁盘上的同级数据块进行数据重建。

      RAID4 提供了 非常好的读性能,但单一的校验盘往往成为系统性能的瓶颈。对于写操作, RAID4 只能一个磁盘一个磁盘地写,并且还要写入校验数据,因此写性能比较差。而且随着成员磁盘数量的增加,校验盘的系统瓶颈将更加突出。正是如上这些限制和不足, RAID4 在实际应用中很少见,主流存储产品也很少使用 RAID4 保护。

      

     

      3.2.6 RAID5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。RAID5 至少需要三颗硬盘, RAID5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID0RAID1的折衷方案RAID5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID5具有和RAID0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相当的慢,若使用回写高速缓存可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较便宜:

      

     

      3.2.7 RAID6是在RAID5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID5等级。与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用RAID6RAID5最大的区别就是在RAID5的基础上除了具有P校验位以外,还加入了第2个校验位Q位。当一块磁盘出现数据错误或者丢失的时候,恢复方法同RAID5,无须使用Q校验位。当前盘数据块的校验数据不可能存在当前盘而是交错存储的。这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较RAID5还差(但是存储缓存系统可以抵消一部分此点不足),而且控制系统的设计也更为复杂。RAID6的磁盘利用率、读取性能和容错能力要优于RAID5。

      目前的磁盘容量已经很大,如果一块磁盘出现故障,那么整个RAID组中的磁盘都需要进行数据重构,磁盘容量越大需要的时间越长,在数据重构的时间内如果再发生磁盘故障,那么所有的数据都将丢失。因此RAID6技术将可靠性提高了1000倍以上。

      

     

      3.3 RAID 组合等级

      标准 RAID 等级各有优势和不足,自然地,我们想到把多个 RAID 等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的 RAID 系统。实际得到较为广泛应用的只有 RAID01 和 RAID10 两个等级。

      3.3.1 RAID10

      先镜像,再条带。将磁盘分成两组,两组分别先做镜像RAID1,然后在RAID1的基础上做两组RAID1再条带,从而得到RAID10

      

     

      3.3.2 RAID01

      先条带,再镜像。磁盘分成两组,两组分别先做条带RAID0,然后在RAID0的基础上做两组RAID0再镜像,从而得到RAID01

      

     

       3.3.3 RAID10RAID01的比较

      两者最重要的区别在于:RAID10的底层是镜像RAID1,而镜像就保证了当有一块硬盘比如A1损坏时,并不影响他的写功能,读性能可能稍微有所降低(大概降低1/8)。但是RAID01的底层是条带RAID0,而条带就导致了只要有一块硬盘比如左边的Disk0中的A1损坏时,那么整个左边的RAID0就不能使用了,所以整个RAID01就变成了只有右边的RAID0可以使用了,也就是从RAID01变成了RAID0读性能马上降低一半,写性能没有影响,可靠性变得最差。仅仅凭借这一点,我们就绝不应该使用RAID01,而应该选择RAID10

      在正常的情况下RAID01RAID10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。

     

      3.3.4 RAID10RAID5的比较

      应该说能够与RAID10竞争的只有RAID5了,两者在不同的场景有大量的使用。在安全性上RAID10要比RAID5强,当RAID5有一块硬盘损坏时,读性能有很大的下降,因为损坏硬盘中的数据要通过其他硬盘中的数据和校验一起才能计算出来,所以在数据库存储时一般选择RAID10。在磁盘使用率上RAID5要比RAID10高很多,所以对安全性要求不是特别高的场合比如文件存储一般大量使用RAID5。相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID10的方式比较好。

     

      3.3.5 应用情况

      RAID234较少实际应用,因为RAID5已经涵盖了所需的功能,因此RAID234大多只在研究领域有实现,而实际应用上则以RAID5为主。在数据库等重要领域一般使用RAID10。所以在实际生产中要么选择RAID5,要么选择RAID10,当然也有少量的RAID6存在。除非特定厂商的产品有比较特殊的特定的选择。Oracle的存储最好还是使用RAID10技术,最为可靠。

     

    四、主流RAID等级技术对比

      

     

  • 相关阅读:
    python OptionParser的用法
    Python SMTP发送邮件
    python爬虫时,解决编码方式问题的万能钥匙(uicode,utf8,gbk......)
    logging的基本使用
    基本爬虫
    python socket 基本使用
    python os.walk处理树状目录结构的文件
    关于算法和方案——扯一会儿
    <五>强制关机惹的祸——redhat重装及注册订阅的艰难之路
    018 求完数(初识数组指针)
  • 原文地址:https://www.cnblogs.com/PBDragon/p/2716573.html
Copyright © 2020-2023  润新知