现在的位置: 首页 > 综合 > 正文

存储RAID技术介绍

2017年11月28日 ⁄ 综合 ⁄ 共 4188字 ⁄ 字号 评论关闭

一、RAID介绍

RAID是英文Redundant Array of Independent Disks(独立磁盘冗余阵列),简称磁盘阵列。在1987年由美国加州大学伯克利分校提出RAID理论,作为高性能的存储系统,巳经得到了越来越广泛的应用。RAID的级别从RAID概念的提出到现在,巳经发展了多个级别,有明确标准级别分别是0、1、2、3、4、5,其他还有6、7、10、30、50等。RAID为使用者降低了成本、增加了执行效率,并提供了系统运行的稳定性。

二、RAID级别

1、RAID 0

RAID0,全称为没有容错设计的条带磁盘阵列,属于条带化(Stripe)存储。

RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID结构。RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此RAID 0常用于图象,视频等领域,不能应用于数据安全性要求高的场合。

2、RAID 1

镜像(Mirror)存储。

它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。因此RAID 1常用于对容错要求极严的应用场合,如财政、金融等领域。

3、RAID 2

海明码(Hamming Code)校验条带存储。

将数据条块化地分布于不同的硬盘上,条块单位为位或字节,使用称为海明码来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2冗余信息开销非常大(校验盘为多个),技术实施更加复杂,因此在商业环境中很少使用。

4、RAID 3

奇偶校验(XOR)条带存储,共享校验盘,数据条带存储单位为字节。

它同RAID 2非常类似,都是将数据条块化分布于不同的硬盘上,区别在于RAID 3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈。

5、RAID 4

奇偶校验(XOR)条带存储,共享校验盘,数据条带存储单位为块。

RAID 4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID 4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,这时奇偶校验盘会成为写操作的瓶颈,因此RAID 4在商业环境中也很少使用。

6、RAID 5

奇偶校验(XOR)条带存储,校验数据分布式存储,数据条带存储单位为块。

RAID 5不单独指定奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID 5更适合于小数据块和随机读写的数据。RAID 3与RAID 5相比,最主要的区别在于RAID 3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID 5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID 5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。当进行恢复时,比如我们需要恢复下图中的A0,这里就必须需要B0、C0、D0加0
parity才能计算并得出A0,进行数据恢复。所以当有两块盘坏掉的时候,整个RAID的数据失效。

7、RAID 6

奇偶校验(XOR)条带存储,两个分布式存储的校验数据,数据条带存储单位为块。

与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实施方式使得RAID 6很少得到实际应用。

8、RAID 7

这是一种新的RAID标准,其自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID 7可以看作是一种存储计算机(Storage Computer),它与其他RAID标准有明显区别。

RAID 7等级是至今为止,理论上性能最高的RAID模式,因为它从组建方式上就已经和以往的方式有了重大的不同。基本成形式见图,以往一个硬盘是一个组成阵列的“柱子”,而在RAID 7中,多个硬盘组成一个“柱子”,它们都有各自的通道,也正因为如此,你可以把这个图分解成一个个硬盘连接在主通道上,只是比以前的等级更为细分了。这样做的好处就是在读/写某一区域的数据时,可以迅速定位,而不会因为以往因单个硬盘的限制同一时间只能访问该数据区的一部分,在RAID
7中,以前的单个硬盘相当于分割成多个独立的硬盘,有自己的读写通道。

三、RAID比较

1、常用RAID级别比较

RAID 0

RAID 1

RAID 10

RAID 5

最小配置

1

2

4

3

性能

Highest

Lowest

RAID 5<RAID 10 <RAID0

RAID1<RAID 5

<RAID 10

特点

无容错

最佳容错

最佳容错

提供容错

磁盘利用率

100%

50%

50%

(N-1)/N

描述

不带奇偶校验的条带集

磁盘镜像

RAID0和RAID1的结合

带奇偶校验的 条带集

2、RAID 10和RAID 01的比较

RAID 10是先做镜像,然后再做条带。

RAID 01则是先做条带,然后再做镜像。

比如以4个盘为例,RAID 10就是先将盘分成2组镜像,然后再对这2个RAID 1做条带。RAID 01则是先利用2块盘做RAID 0,然后将另外2块盘做为RAID 0的镜像。下面以4块盘为例来介绍安全性方面的差别:

(1)RAID 10的情况

这种情况中,假设当Disk0损坏时,在剩下的3块盘中,只有当Disk1一个盘发生故障时,才会导致整个RAID失效,我们可简单计算故障率为1/3。

(2)RAID 01的情况

这种情况下,仍然假设Disk0损坏,这时左边的条带将无法读取。在剩下的3块盘中,只要Disk2,Disk3两个盘中任何一个损坏,都会导致整个RAID失效,我们可简单计算故障率为2/3。

因此RAID 10比RAID01在安全性方面要强。

从数据存储的逻辑位置来看,在正常的情况下RAID 01和RAID 10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。而当有磁盘出现故障时,比如前面假设的Disk0损坏时,可以发现,这两种情况下,在读的性能上面也将不同,RAID 10的读性能将优于RAID 01。

(3)RAID 10和RAID 5的比较

为了方便对比,拿同样多的磁盘4块盘来做对比,RAID 5选择3D+1P的RAID方案,RAID 10选择2D+2D的RAID方案,如图:

1)安全性方面的比较

当盘1损坏时,对于RAID 10,只有当盘1对应的镜像盘损坏,才导致RAID失效。但是对于RAID 5,剩下的3块盘中,任何一块盘故障,都将导致RAID失效。

在安全性方面, RAID 10高于RAID 5。

2)空间利用率的比较

RAID 10的利用率是50%,RAID 5的利用率是75%。硬盘数量越多,RAID 5的空间利用率越高。

在空间利用率方面,RAID 5高于RAID 10。

3)读写性能方面的比较

  • 读操作方面的性能差异

RAID 10可供读取有效数据的磁盘个数为4,RAID 5可供读取有效数据的磁盘个数也为4个(校验信息分布在所有的盘上),所以两者的读的性能应该是基本一致的。

  • 连续写方面的性能差异

如上图4块盘的RAID 5,可以先在内存中计算好校验,同时写入3个数据+1个校验。而RAID 10只能同时写入2个数据+2个镜像。但根据缓存原理,写Cache是可以缓存写操作的,等到缓存写数据积累到一定时期再写到磁盘。而且,写到磁盘阵列的过程是迟早也要发生的,所以RAID 5与RAID 10在连续写的情况下,从缓存到磁盘的写操作速度会有较小的区别。如果不是连续性的强连续写,只要不达到磁盘的写极限,差别并不是太大。

  • 离散写方面的性能差异

如上图:假定要把一个数字2变成数字4,那么对于RAID 5,实际发生了4次io:先读出2与校验6,然后在Cache中计算新的校验写入新的数字4与新的校验8。对于RAID 10,同样的单个操作,最终RAID 10只需要2个io,而RAID 5需要4个io。

  • 磁盘的IOPS对比

假定业务的iops是10000,读Cache命中率是30%,读iops为60%,写iops为40%,磁盘个数为120,分别计算在RAID 5与RAID 10的情况下,每个磁盘的iops为多少。

RAID 5:

单块盘的iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120

= (4200 + 16000)/120

= 168

这里的10000*(1-0.3)*0.6表示是读的iops,比例是0.6,除掉Cache命中,实际只有4200个iops。4 * (10000*0.4) 表示写的iops,因为每一个写,在RAID 5中,实际发生了4个io,所以写的iops为16000个。为了考虑RAID 5在写操作的时候,那2个读操作也可能发生命中,所以更精确的计算为:

单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120

= (4200 + 5600 + 8000)/120

= 148

计算出来单个盘的iops为148个,基本达到磁盘极限。

RAID 10:

单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120

= (4200 + 8000)/120

= 102

可以看到,因为RAID 10对于一个写操作,只发生2次io,所以,同样的压力,同样的磁盘,每个盘的iops只有102个,还远远低于磁盘的极限iops。

四、小结

所以要求较高的空间利用率,对安全性要求不是特别高、大文件存储的系统采用RAID 5比较好。相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID 10的方式比较好。

抱歉!评论已关闭.