RAID学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012299594/article/details/84661529

RAID基础技术

RAID(Redundant Array of Independent Disks),独立磁盘冗余阵列,从名字可以看出这项技术的主要目标在于通过数据冗余来解决硬盘的单点故障问题,随着多年的技术演进,主要由Stripping(条带化)、Mirroring(镜像)和Parity(数据校验)这3种技术的一种或者多种来组成不同的RAID方案(RAID Level),满足在数据冗余、数据重建和高性能方面不同的存储需求。

对于操作系统来讲,RAID阵列仍然是单个磁盘。

Stripping

对于操作系统或者CPU,单个磁盘读写数据是很慢的,条带化技术通过将多个磁盘条带化(对于操作系统来讲仍然是单个磁盘),写入数据时先将数据切成多个chunk,也就是数据小块,这些chunk被顺序写入多个磁盘,减少了写入单个磁盘时的IO等待,这样就把I/O分散到了多个磁盘上,得到成倍的聚合I/O性能。

Mirroring

镜像技术就是往两块磁盘写入相同的数据,保存了一份冗余副本,当其中一个磁盘损坏时,仍然可以从另一个磁盘得到正确的数据,冗余副本可以更多,但是冗余越多,对存储空间的利用率也就更低。

what is mirroring in raid

Parity

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

常用的校验方式主要有海明校验码和异或校验(XOR),异或校验相对简单,其运算规则如下:

1 XOR 1 -> 0

1 XOR 0 -> 1

0 XOR 1 -> 1

0 XOR 0 -> 0

异或校验的关键在于:知道3个数据(2个输入+1个输出)中任意2个数据,可以运算出第3个数据。基于这样的原理,如果有3个磁盘,2个作为数据盘存放数据,1个校验盘存放校验数据,不论是数据盘还是校验盘损坏,都可以通过剩下两块磁盘的数据通过异或运算来重建数据。当然,如果同时坏了两块盘,就需要更复杂的方案了。

镜像技术虽然实现了数据冗余,但是对存储空间的利用率很低,最简单的单副本冗余,存储空间率也只有50%。数据校验技术则通过数据重建的方式实现了另一种“冗余”,它相比于镜像技术提高了存储空间利用率,缺点是大量的校验运算增大了计算开销。

RAID Level

标准RAID

RAID 0

RAID0只用到了条带化技术来提升I/O性能,不提供冗余功能,所以没有容错能力(fault tolerance),但是RAID0对存储空间利用率是最高的,在两块磁盘的大小相同的情况下达到100%。

RAID 1

RAID1只用到了镜像技术,主要提供冗余功能,至少需要2块磁盘,所以磁盘空间利用率最多50%。需要注意的是,相比于单块磁盘,RAID 1无法提升写性能,但是可以通过并发读来提高读性能。因为多块盘存储了完全一致的数据,就可以同时从这些磁盘中读取不同位置的数据。

RAID 2

RAID 2使用海明码做数据校验,但是因为冗余开销太大,海明码重建数据慢等原因在工业界没有发展起来。

RAID 3

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

  如果 RAID3 中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来重建数据。假如所要读取的数据块正好位于失效磁盘,则系统需要读取所有同一条带的数据块,并根据校验值重建丢失的数据,系统性能将受到影响。当故障磁盘被更换后,系统按相同的方式重建故障盘中的数据至新磁盘。

  RAID3 只需要一个校验盘,阵列的存储空间利用率高,再加上并行访问的特征,能够为高带宽的大量读写提供高性能,适用大容量数据的顺序访问应用,如影像处理、流媒体服务等。目前, RAID5 算法不断改进,在大数据量读取时能够模拟 RAID3 ,而且 RAID3 在出现坏盘时性能会大幅下降,因此常使用 RAID5 替代 RAID3 来运行具有持续性、高带宽、大量读写特征的应用。

RAID 4

RAID4 与 RAID3 的原理大致相同,区别在于条带化的方式不同。 RAID4 按照 块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘,多个 I/O 请求可以同时得到处理,提高了系统性能。 RAID4 按块存储可以保证单块的完整性,可以避免受到其他磁盘上同条带产生的不利影响。

  RAID4 在不同磁盘上的同级数据块同样使用 XOR 校验,结果存储在校验盘中。写入数据时, RAID4 按这种方式把各磁盘上的同级数据的校验值写入校验 盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏, RAID4 可以通过校验值以及其他磁盘上的同级数据块进行数据重建。

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

RAID 5

RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。

  RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。

  RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

RAID 6

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

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

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

组合RAID

RAID 10

RAID 10组合了RAID 1和RAID 0,提供比RAID 1更好的I/O性能。需要注意的是RAID 10是先对数据做镜像,然后再做条带化,而还有一种类似的RAID 01是先对数据做条带化,然后再做镜像,RAID 10和RAID01的RAID Controller的工作流程是不同的。

References

注:本文配图均来自这个网站 https://searchstorage.techtarget.com

国内网站:

http://www.hack520.com/169.html  //强烈推荐

http://blog.51cto.com/11975865/2073245

需要翻墙的:

https://searchstorage.techtarget.com/definition/RAID  //一个专业的存储领域网站

http://www.ecs.umass.edu/ece/koren/architecture/Raid/raidhome.html

https://www.slashroot.in/raid-levels-raid0-raid1-raid10-raid5-raid6-complete-tutorial

猜你喜欢

转载自blog.csdn.net/u012299594/article/details/84661529