独立磁盘冗余阵列-RAID

目录

1. RAID概述

2. RAID关键技术

3. RAID数据组织方式

4. RAID数据校验方式

5. RAID级别

5.1. RAID 0

5.2. RAID 1

5.3. RAID 3

5.4. RAID 5

5.5. RAID 6

5.5.1. RAID 6 P+Q

5.5.2. RAID 6 DP

5.6. RAID 10

5.7. RAID 50


1. RAID概述

      1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念,即廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks)由于当时大容量磁盘比较昂贵, RAID 的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。随着磁盘成本和价格的不断降低, RAID 可以使用大部分的磁盘, “廉价” 已经毫无意义。因此, RAID 咨询委员会( RAID Advisory Board, RAB )决定用独立 ” 替代 “ 廉价 ” ,于时 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 配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,软硬混合 RAID 具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序来完成。

2. RAID关键技术

        镜像。镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术典型地将会同时在阵列中产生多个完全相同的数据副本,分布在不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问其他副本,不会对应用系统运行和性能产生影响。

       数据条带。磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。

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

3. RAID数据组织方式

       RAID通过对硬盘上的数据进行条带化,实现对数据成块存取,减少硬盘的机械寻道时间,提高了数据存取速度。

      下面给出RAID的数据组织方式中的几个基本概念。

  • 条带(strip):硬盘中的单个或多个连续扇区构成一个条带,它是硬盘上进行一次数据读写的最小单元。
  • 分条(stipe):同一磁盘阵列中的多个磁盘驱动器上的相同“位置”(或者说是相同编号)的条带构成了一个分条。
  • 分条宽度:指在一个分条中数据成员盘的个数。
  • 分条深度:指一个条带的容量大小。

图1. RAID的数组组织方式示意图

       例如,图1描述了一个由3个相同的磁盘组成的RAID。每个磁盘划分为3个条带,因此,分条的的数量为3,每个分条的宽度也为3。

      RAID中数据是按照分条的顺序进行读写的,而不是按照磁盘的顺序进行读写。例如,向图1中的RAID写入数据的顺序是:D0、D1、D2、D3、D4、D5、D6、D7、D8,即,一个分条中的所有条带的数据块被写满后,才开始下一个分条中条带数据块的写入。

4. RAID数据校验方式

        RAID中的数据采用奇偶校验(XOR)方式,奇偶校验广泛应用于通信和计算机领域。

  • XOR校验算法:相同为假,相异为真,即,0⊕0=0; 0⊕1= 1; 1⊕0= 1; 1⊕1= 0。
  • XOR的逆运算仍为XOR:如果A⊕B=P,则有,B⊕P=A,A⊕P=B。

       例如,A为1,B为0,则校验值P为1,A(1)⊕B(0)=P(1),则有逆运算:B(0)⊕P(1)=A(1),A(1)⊕P(1)=B(0)。

       利用XOR校验,可以进行数据的冗余备份,如图2所示。如果驱动器1失效,通过对驱动器2和校验驱动器中的相同位置的数据进行XOR运算,可以恢复出驱动器1中的相应数据;如果驱动器2失效,通过对驱动器1和校验驱动器中的相同位置的数据进行XOR运算,可以恢复出驱动器1中的相应数据。

图2. 异或校验冗余备份

5. RAID级别

       RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑硬盘,提高了硬盘的读写性能和数据安全性,根据不同的组合方式可以分为如表1所示不同的RAID级别。

表1. RAID级别
RAID级别描述

RAID  0

数据条带化,无校验

RAID  1

数据镜像,无校验

RAID  3

数据条带化读写,校验信息存放于专用硬盘

RAID  5

数据条带化,校验信息分布式存放

RAID  6

数据条带化,分布式校验并提供两级冗余

RAID10

类似于RAID 0+RAID 1,区别在于先做RAID 1,后做RAID 0

RAID 50

先做RAID 5,后做RAID 0,能有效提高RAID 5的性能

5.1. RAID 0

       RAID 0 是一种简单的、无数据校验的数据条带化技术。RAID 0 将所在磁盘条带化后组成大容量的存储空间,数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。一个RAID 0包含至少2个成员盘,其结构如图3所示。RAID组将数据分为大小不等的从512个字节至兆字节的数据块(通常是512字节的倍数),并行将其写入到不同的应硬盘(驱动器)中。

图3. RAID 0示意图

       RAID 0采用条带化技术将数据写入硬盘组中,它将数据分为数据块,并均匀地分布存储在RAID组中的所有硬盘上。只有当RAID组的前一个分条被数据块写满后,数据才会写入到下一个分条。RAID 0组的写入性能与硬盘的数量成正比。例如,在如图3所示的RAID 0中,前两块数据被写入到分条0上,其中,第一个数据块被写在硬盘1的条带0上,第二个数据块并行存放在硬盘2的条带0上,这时,再下一个数据块被写到硬盘1上的下一个条带(条带1)上,以此类推。正是通过条带化并行的方式,将所有数据块写入到RAID 0组。

       RAID 0在收到数据读取指令后,就会在各个硬盘中进行搜索,看需要读取的数据块位于哪一个硬盘上,再依次对需要读取的数据进行读取。同写入数据一样,RAID 0的读取性能与硬盘的数量成正比。例如,在如图3所示的RAID 0中,阵列收到读取数据块D0,D1,D2,D3,D4,D5的请求;接下来,阵列并行从硬盘1读取D0,从硬盘2读取D1,其它数据块也按类似的方式读取;当所有的数据块从RAID读取后,它们被集成到RAID控制器,然后发送到主机。

       RAID 0不提供数据校验或冗余备份,因此一旦某块磁盘损坏了,数据就直接丢失,无法恢复了。因此RAID 0就不可能用于高要求的业务中,但可以用在对可靠性要求不高,对读写性能要求高的场景中。

5.2. RAID 1

        RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,当数据写入到一个硬盘上时,数据的副本会同时存储在镜像硬盘上,其结构如图4所示。一个RAID 1组存储的数据量只是单个硬盘的容量,另一硬盘保存的是数据的副本,相当于每一个字节的数据存储占用了两个字节的硬盘空间,所以说两个硬盘组成的RAID 1的空间利用率是50%

图4. RAID 1示意图

       RAID 1在进行数据写入的时候,将数据写入两个磁盘,这两个磁盘上的数据完全相同,互为镜像,这两个磁盘写满后,再写入后面的两个磁盘,总之,总是有两个磁盘互为镜像,存储的内容完全相同。RAID 1在进行数据读取的时候,正常情况下可以实现数据盘和镜像盘同时读取数据,提高读取性能。如果一个磁盘损坏,可以将I/O的执行放到镜像盘上进行 。RAID 1的两组磁盘是互为镜像的,两组磁盘的内容完全相同,这样,任何一组磁盘中的数据出现问题都可以马上从另一组磁盘进行镜像恢复。

5.3. RAID 3

       RAID 3是使用专用校验盘的并行访问阵列,它采用一个专用的磁盘作为校验盘,其余磁盘作为数据盘,数据按位可按字节的方式交叉存储到各个数据盘中,如图5所示。如果 RAID 3中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来重建数据。RAID3 最少硬盘数为3块,假定一个RAID 3的硬盘数为n,其中有效用户数据存储容量为n-1个硬盘的容量

图5. RAID 3示意图

       RAID 3与RAID 0类似,不同之处在于RAID 3带有专用的奇偶校验的分条。在RAID 3中,一块专用硬盘(校验盘)用来保存同一分条上其他硬盘上的相应的条带中的数据的奇偶校验值。如果检测到不正确的数据或硬盘出现故障,我们可以利用奇偶校验信息来恢复故障硬盘上的数据。

       RAID 3的数据恢复是通过对剩余数据盘和校验盘的异或计算重构故障盘上应有的数据来进行的。如上图的RAID 3磁盘结构,当磁盘2出现故障时,其上存储的数据D1,D4,D7丢失,我们需要经过这样一个数据恢复过程:首先恢复数据D1,根据同一条带上其它数据盘和校验盘上的数据D0, D2和P1,进行异或运算,得到数据D1=D0D2P1,再用相同方法恢复出数据D4=D3D5P2,数据D7=D6D8P3,至此,磁盘上2的数据全部得到了恢复。由于校验集中在一个盘,因此在数据恢复时,校验盘写压力比较大,影响性能。RAID 3适用于数据密集型或单用户环境,需要长期、连续访问的数据块。

      RAID 3将数据写入操作分配给RAID组内的数据成员盘,但是,当有新数据需要写入时,无论写入哪个硬盘,RAID 3都需要重新计算并重写校验信息。因此,当某个应用程序需要大量写入时,RAID 3的奇偶校验盘将有很大的工作量。因为需要等待奇偶校验,所以会对RAID 3组的读写性能有一定影响。此外,因为校验盘有较高的工作负载,它往往是RAID 3里最容易失效的硬盘。这就是为什么校验盘被称为RAID 3的瓶颈的原因。

5.4. RAID 5

      RAID 5是改进版的RAID 3,使用条带化并计算奇偶校验信息。RAID 5是一种旋转奇偶校验独立存取的阵列方式,它与RAID 3不同的是没有固定的校验盘,而是按某种规则把奇偶校验信息均匀地分布在阵列所属的硬盘上,所以在每块硬盘上,既有数据信息也有校验信息,如图6所示。这一改变解决了争用校验盘的问题,使得在同一组内并发进行多个写操作,所以RAID 5即适用于大数据量的操作,也适用于各种事务处理,它是一种快速、大容量和容错分布合理的磁盘阵列。RAID5 最少硬盘数为3块,假定一个RAID 5的硬盘数为n,其中有效用户数据存储容量为n-1个硬盘的容量

图6. RAID 5示意图

       RAID 5的数据写入也是按条带进行的,各个磁盘上既存储数据块,又存储校验信息。一个条带上的数据块写入完成后,将产生的校验信息写入剩余的磁盘驱动器中。由于RAID 5的数据是按照数据块分布存储的,所以在读取的过程中只要找到相应的驱动器,将所需数据块读出即可。

       RAID 5的数据恢复也是一个根据同一条带上正常磁盘数据块和校验信息的异或运算而得到原有数据的过程。如上图所示的RAID 5磁盘结构,当磁盘1出现故障时,其上存储的数据D0, D2, P2丢失,我们需要经过这样一个数据恢复过程:首先恢复数据D0,将同一条带上磁盘2的数据D1和磁盘3的校验数据P0进行XOR运算,等到数据D0=D1P0。类似地,可以得到数据D1=P1D3,以及校验数据P2=D4D5。

5.5. RAID 6

       前面所述的各个 RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同时发生故障,数据将无法恢复。 RAID6 引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。

      RAID6 思想最常见的实现方式是采用两个独立的校验算法,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。

      目前,RAID 6没有一个统一的标准,不同公司以不同的方式实施RAID 6,以下是两种主要的实现方式,即,RAID 6 P+QRAID 6 DP

5.5.1. RAID 6 P+Q

       RAID 6 P+Q需要计算出两个校验数据P和Q,当有两个数据丢失时,根据P和Q恢复出丢失的数据。校验数据P和Q是由以下公式计算得到:

  • P=D0+D1+D2...                                           ​​​​​​​
  • Q=α\astD0+β\astD1+γ\astD2...                        

       其中,P是是对用户数据块进行异或运算得到的;Q是对用户数据块进行GF伽罗华域)变换再异或运算得到,α,β和γ为GF(2^{8})中多项式的数值,+和\ast为伽罗华域上加法和乘法。在伽罗华域内,加减法是可逆的,乘除法是可逆的,其中,加减法也是异或运算

       如图7所示,P1是通过对D0,D1,D2所在的分条0进行异或操作获得的,P2是对D3,D4,D5所在的分条1异或操作实现的,P3则是对D6,D7,D8 所在的分条2条进行异或操作;Q1是对D0,D1,D2 所在的分条0条进行GF变换再异或操作实现的,Q2是对D3,D4,D5 所在的分条1进行GF变换再异或运算, Q3实现对D6,D7,D8分条2进行GF变换再异或。

图7. RAID 6 P+Q示意图

       当RAID 6 P+Q中坏掉两块磁盘,那该如何生成丢失的数据呢?下面以图7中一个条带(比如封分条0)为例说明。

       1)如果丢失的两块数据是P和Q,其它数据没有丢失,可以正常提取,P和Q可以根据如下公式重新计算获得:

  • P=D0+D1+D2
  • Q\astD0+β\astD1+γ\astD2

       如果丢失的两块数据是P和D0,那么可以根据校验Q计算出D0的数据,再根据D0, D1, D3的异或运算计算出校验P,计算公式如下:

  • D0=(Q+β\astD1+γ\astD2)/α
  • P=D0+D1+D2

       3)如果丢失的两块数据是Q和D0,那么可以根据校验P计算出D0的数据,再根据D0, D1, D2计算出校验Q,计算公式如下:

  • D0=P+D1+D2
  • Q\astD0\astD1+γ\astD2

       4)如果丢失的两块数据是D0和D1,那么可以根据校验P和Q计算出D0和D1的数据,具体计算方法如下:

  • 首先根据P, Q和D2计算出D1,计算公式为:D1=(Q+α\astP+α\astD2+γ\astD2)/(α+β)。
  • 计算出D1后,根据P, D1和D2就可以计算出D0,计算公式为:D0=P+D1+D2。

5.5.2. RAID 6 DP

       DP是Double Parity的缩写,RAID 6 DP是在RAID 4所使用的一个行XOR校验硬盘的基础上又在增加了一个硬盘用于存放斜向的XOR校验信息,其结构如图8所示。因此,RAID 6 DP也有两个独立的校验数据块,第一个校验信息与RAID 6 P+Q的第一个校验值是相同的,第二个不同于RAID 6 P+Q,采用的是斜向异或运算得到行对角奇偶校验数据块。

图8. RAID 6 DP示意图

      行奇偶校验值是同一分条的用户数据异或运算获得到。例如,在图8所示RAID 6 PD中,P0是由分条0上的D0, D1, D2和D3异或运算得到,P1是由分条1上的D4, D5, D6和D7异或运算得到,P2是由分条2上的D8, D9, D10和D11异或运算得到,P3是由分条1上的D12, D13, D14和D15异或运算得到。所以,P1, P2, P3和P4取值的计算公式如下:

  • P0=D0⊕D1⊕D2⊕D3
  • P1=D4⊕D5⊕D6⊕D7
  • P2=D8⊕D9⊕D10⊕D11
  • P3=D12⊕D13⊕D14⊕D15

       第二个校验数据块是由阵列的对角线数据块进行异或运算。例如,在图8所示RAID 6 PD中,DP0是由硬盘1 的分条0上的D0,硬盘2的分条1上的D5,硬盘3上的分条2的D10,和硬盘上4 分条3上的D15异或操作得到;DP1是对硬盘2 的分条0上的D1,硬盘3的分条1上的D6,硬盘4上分条2的 D11,和的第一块校验硬盘上分条3 上的P3进行异或运算得到;DP2是硬盘3 分条0上的D2,硬盘4上的分条1的D7,奇偶硬盘分条2的P2,和硬盘1分条3上的D12进行异或运算得到;DP3是硬盘4 分条0上的D3,奇偶硬盘分条1的P1,硬盘1上的分条2的D8,和硬盘2分条3上的D13进行异或运算得到。所以,DP0, DP1, DP2和DP3取值的计算公式如下:

  • DP0=D0⊕D5⊕D10⊕D15
  • DP1=D1⊕D6⊕D11⊕P3
  • DP2=D2⊕D7⊕P2⊕D12
  • DP3=D3⊕P1⊕D8⊕D13

       一个RAID 6 PD阵列能够容忍双硬盘失效。如图8所示,如果硬盘1和2失效,可以根据其他硬盘上的数据和奇偶校验信息进行恢复。

  • 恢复D12采用DP2和斜向校验,D12 = D2⊕D7⊕P2⊕DP2;
  • 恢复D13利用P3和横向校验,D13 = D12⊕D14⊕D15⊕P3;
  • 恢复D8采用DP3和斜向校验,D8 = D3⊕P1⊕DP3⊕D13;
  • 恢复D9利用P2和横向校验,D9 =D8⊕D10⊕D11⊕P2;
  • 恢复D4采用P0和斜向校验,D4=P0⊕D9⊕D14;
  • 恢复D5利用P1和横向校验,D5=D4⊕D6⊕D7⊕P1;
  • 恢复D0采用DP0和和斜向校验,D0=DP0⊕D5⊕D10⊕D15;
  • 恢复D1利用P0和航向校验,D1=D0⊕D2⊕D3⊕P0。

5.6. RAID 10

       RAID 10是将镜像和条带进行组合的RAID级别,先进行RAID 1镜像然后再做RAID 0,其结构如图9所示RAID 10组的硬盘数量总是偶数,最少需要4块硬盘(2个RAID1组成一个RAID0),一半硬盘进行用户数据写入,另一半保存用户数据的镜像副本,镜像基于分条执行。

图9. RAID 10示意图

       RAID 10RAID 0RAID 1的优点于一身,适合应用在速度和容错要求都比较高的场合。先进行镜像,再进行条带化。如图9所示,硬盘1和硬盘2组成RAID 1,硬盘3和硬盘4组成RAID 1,两个RAID 1再进行RAID 0。当不同RAID 1中的磁盘,如硬盘2和硬盘4发生故障导致数据失效时,整个阵列的数据读取不会受到影响,因为硬盘1和硬盘3上面已经保存了一份完整的数据。但是如果组成RAID 1的磁盘(如硬盘1和硬盘2)同时故障,数据将不能正常读取。

5.7. RAID 50

       RAID 50是将RAID 5和RAID 0进行两级组合的RAID级别,第一级是 RAID 5,第二级为RAID 0,其架构如图10所示。RAID 50需要至少6个磁盘构成先将3个或3个以上磁盘实现RAID 5,再把若干个RAID 5进行RAID 0条带化

图10. RAID 50示意图

       如图10所示,硬盘1、2、3实现RAID 5,硬盘4、5、6实现RAID 5,再将两个RAID 5放在一起进行条带化构成一个RAID 0。

       在RAID 50中,RAID可以同时接受多个硬盘的并发故障。然而,一旦两块硬盘在同一RAID5组同时失败,RAID 50的数据将丢失。

参考文献

RAID0、1、3、5、6、10、50和热备盘超详细说明_几块盘起,硬盘热备是什么意思-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值