RAID磁盘阵列概念|原理|对比——全整理

什么是RAID?

  RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。

         

RAID分类

RAID级别可以分为三类:标准级别、非标准级别和嵌套(组合)级别。标准RAID 级别有RAID 0~6 七个等级,其中最常用的是0、1、5

从实现角度看,RAID主要分为软件RAID、硬件RAID以及软硬混合RAID三种。

  •  软件RAID:使用基于主机的软件提供RAID 功能,是在操作系统级上实现的。软件RAID会影响系统性能,且支持有限的RAID级别。与硬件RAID相比,软件RAID具有成本低廉和简单直观的优点。
  •  硬件RAID:包括基于主机的硬件RAID和基于阵列的硬件RAID。配备了专门的RAID控制/处理芯片和I/O处理芯片以及阵列缓冲,不占用CPU资源,但成本高。
  •  软硬混合RAID:具备RAID控制/处理芯片,但缺乏I/O处理芯片,需要CPU和驱动程序来完成,性能和成本在软RAID和硬RAID之间。

RAID原理

  RAID 的两个关键目标是提高数据可靠性和 I/O 性能。

  1. 可靠性。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。有些 RAID 等级允许更多地 磁盘同时发生故障,比如 RAID6 ,可以是两块磁盘同时损坏。在这样的冗余机制下,可以用新磁盘替换故障磁盘, RAID 会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。
  2. I/O性能。数据分散保存在 RAID 中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合 I/O 带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。

 

  RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )。

  1. 镜像。将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。
  2. 数据条带。将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。
  3. 数据校验。利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。

  不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择

 

主要参考:

https://www.sohu.com/a/226786837_100128442 或 http://www.360doc.com/content/18/0512/11/37015604_753316374.shtml (关于磁盘阵列,这是我见过最全面、最好的一篇文章!)

 https://baike.baidu.com/item/%E7%A3%81%E7%9B%98%E9%98%B5%E5%88%97/1149823?fr=aladdin (百度百科:磁盘阵列)

==========================分割线============================

常用标准RAID

PS:标红的RAID为比较常用的,即RAID 0,1,5,10

RAID 0(条带,Stripe)

  把连续的数据分散到n块硬盘上存取。数据请求可被n个磁盘并行执行,从而充分利用总线带宽,显著提高磁盘整体存取性能。理论存储速度是单块硬盘的n倍(但由于总线带宽等多种因素的限制,实际性能低于理论值)

所需磁盘数:>=2

实际容量:n*min  (注:n为硬盘数,min为最小的一块硬盘的容量。下同)

容错能力:无。任意一块磁盘故障都将导致所有数据不可恢复。

特点:读写性能最好的RAID等级,硬盘利用率最高(100%)。但安全性最低。

   

 

RAID 1(镜像,Mirror)

  n块(一般n=2)硬盘互为镜像以实现数据冗余。当一个硬盘出现故障时,换上一块新硬盘(>=原硬盘容量)即可自动恢复数据和重组RAID模式。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。

所需磁盘数:>=2

实际容量:1*min

容错能力:有,最多可坏n-1块硬盘

特点:提供最好的容错能力,但硬盘实际可用容量较小,磁盘利用率最低(1/n),单位成本最高。

   

 

RAID 2(海明码磁盘阵列)

  其设计思想是利用海明码实现数据校验冗余。数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。自身具备纠错能力,但是,海明码的数据冗余开销太大,数据重建非常耗时,因此RAID 2在实际中很少应用

 

RAID3(专用奇偶校验条带)

  采用一个专用的磁盘作为校验盘(奇偶盘),其余磁盘作为数据盘,数据按位可字节的方式交叉存储到各个数据盘中。RAID3 至少需要三块磁盘,不同磁盘上同一带区的数据作 XOR 校验,校验值写入校验盘中。向 RAID3 写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。

所需磁盘数:>=3

实际容量:磁盘利用率为(n-1)/n

容错能力:有

特点:完好时读性能与RAID 0一致,还提供容错能力。但是写开销较大。对于随机数据来说,校验盘会成为性能瓶颈。

   

 

RAID 4

  RAID4与RAID3的原理大致相同。提供了非常好的读性能,但写性能比较差。而且随着成员磁盘数量的增加,校验盘的系统瓶颈将更加突出。在实际应用中很少使用。

 

RAID 5(分布奇偶校验条带)

  RAID 5是RAID 0和RAID 1的折中方案。RAID5不对存储的数据做备份,而是把数据和相对应的奇偶校验信息存储到组成RAID 5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID 5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

所需磁盘数:>=3

实际容量:(n-1)*min。磁盘利用率为(n-1)/n

容错能力:有,最多可坏1块硬盘

特点:写性能低,读性能高。利用奇偶校验进行冗余,可容错,安全性高。

   

 

RAID 6(带双重分散校验的数据条带)

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

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

  RAID 6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID 5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID 6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID 10 方案的经济性选择。

所需磁盘数:>=4

实际容量:(n-2)*min。磁盘利用率为(n-2)/n

容错能力:有,最多可坏2块硬盘

特点:安全性非常高,主要用于对数据安全等级要求非常高的场合

   

========================分割线==========================

常用组合RAID

  标准RAID等级各有优势和不足。把多个RAID等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的RAID系统。当然,组合等级的实现成本一般都非常昂贵,只是在少数特定场合应用。

  实际得到较为广泛应用的只有RAID01和RAID10两个等级。RAID 10 和 RAID 01 的区别:

 参考:

https://wenku.baidu.com/view/e3f5569ab52acfc789ebc9c8.html (各种Raid区别与解释

 

RAID 10模式(镜像+条带)

  RAID 10 是 RAID 1 和 RAID 0 的组合体。RAID 10技术需要至少四块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样子从理论上讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性。

所需磁盘数:>=4 (偶数)

实际容量:(n/2)*min

容错能力:有,每个RAID 1组最多可坏1块硬盘

特点:兼顾性能和安全性,但磁盘利用率低(50%)

   

 

主要参考:

https://www.hack520.com/169.html(图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100……)

https://blog.csdn.net/weixin_38808609/article/details/81663621 (常见RAID的各级别的特性简介(RAID0、1、5、6、10))

http://www.05bk.com/68.html  (RAID技术讲解-RAID0、RAID1、RAID3、RAID5、RAID6、RAID10对比)

 

========================分割线==========================

常用RAID的对比

End

原文地址:https://www.cnblogs.com/iouwenbo/p/11613867.html