前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RAID技术

RAID技术

原创
作者头像
木可大大
修改2018-04-23 14:42:04
1.7K1
修改2018-04-23 14:42:04
举报
文章被收录于专栏:木可大大木可大大

定义

  • RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列),它的基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使得性能达到甚至超过一个价格昂贵、容量巨大的硬盘
  • RAID通常被用在服务器上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘
  • RAID分为不同的等级,各个不同的等级均在数据可靠性读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的RAID方案

支撑技术

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

RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )。镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带,数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。 不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

数据条带

数据条带思想类似于分布式存储,将一个文件数据存储于不同磁盘中。譬如:文件大小为100M的A,[0-19M]的内容写入磁盘1,[20-40M]的内容写入磁盘2,[40-60M]的内容写入磁盘3,[60-80M]的内容写入磁盘4,[80-100M]的内容写入磁盘5。这种方式可以提升性能,但是它也存在一个问题:数据不安全,因为将数据分不到不同的磁盘上,存在单点故障。

image.png
image.png

镜像

镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术 典型地 将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。

数据校验

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

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

海明校验码异或校验是两种最为常用的数据校验算法。海明校验码不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。

RAID等级

标准的RAID等级包含RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级,另外,也可以对单个RAID等级进行组合,形成RAID 01 、RAID 10 、RAID 50等组合等级。

image.png
image.png

RAID 0

RAID 0采用的就是数据条带技术,它的读写速率为单个磁盘的N倍(N为组成RAID0的磁盘个数),但是却没有数据冗余,单个磁盘的损失会导致数据的不可修复。数据无校验。RAID0由于存在单点,所以不安全。

image.png
image.png

RAID 1

RAID 1采用的就是镜像技术,它的写入速度会比较慢,但读取速度会比较快。读取速度可以接近所有磁盘吞吐量的总和,写入速度受限于最慢的磁盘。没有校验数据。RAID1由于是数据镜像,所以浪费了一张磁盘,并且写性能不好,读性能提升了。

image.png
image.png

RAID 2

RAID 2 称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。海明码自身具备纠错能力,因此 RAID 2 可以在数据发生错误的情况下对纠正错误,保证数据的安全性。它的数据传输性能相当高,设计复杂性要低于后面介绍的 RAID 3 、 RAID 4 和 RAID 5 。

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

image.png
image.png

RAID 3

RAID 3采用一个专用的磁盘作为校验盘,其余磁盘作为数据盘,数据按位可字节的方式交叉存储到各个数据盘中。RAID 3 至少需要三块磁盘,不同磁盘上同一带区的数据作 XOR 校验,校验值写入校验盘中。向 RAID 3 写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。如果 RAID 3 中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来重建数据。而且RAID3 只需要一个校验盘,阵列的存储空间利用率高,再加上并行访问的特征,能够为高带宽的大量读写提供高性能。

image.png
image.png

RAID 4

RAID 4 与 RAID 3 的原理大致相同,区别在于条带化的方式不同。RAID4按照块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘,多个 I/O 请求可以同时得到处理,提高了系统性能。

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

image.png
image.png

RAID 5

RAID 5 应该是目前最常见的 RAID 等级,它把数据和相对应的奇偶校验信息存储到组成RAID 5的各个磁盘上,并且把奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID 5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去重建磁盘上的数据,来保持RAID 5的高可靠性。

RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间率要比镜像高。RAID5具有和RAID0近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用"回写缓存"可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对便宜

image.png
image.png

RAID 6

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

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

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

image.png
image.png

RAID 10 & RAID 01

RAID 10和RAID 01非常相似,两者在读写性能上没有什么差别。但是在安全性上,RAID 10要好于RAID 01。如下图所示,假设Disk 0损坏,在RAID 10中,在剩下的3块盘中,只有当Disk 1故障,整个RIAD才会失效,但在RIAD 01中,Disk 0损坏后,左边的条带将无法读取,在剩下的3块盘中,只要Disk2或Disk3两个磁盘中任何一个损坏都会导致RAID失效。因此,生产上建议使用RAID 10

image.png
image.png
image.png
image.png

image
image

欢迎关注微信公众号:木可大大,所有文章都将同步在公众号上。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
  • 支撑技术
  • RAID等级
  • RAID 0
  • RAID 1
  • RAID 2
  • RAID 3
  • RAID 4
  • RAID 5
  • RAID 6
  • RAID 10 & RAID 01
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档