【博客365】 RAID:独立磁盘冗余阵列

内容: 记录提高磁盘并发读写能力的RAID

RAID:

RAID是“Redundant Array of Independent Disks“的缩写,称为"独立磁盘冗余阵列",通常简称:
”磁盘阵列(DiskArray)“。

通常简单来说,RAID技术就是将多个硬盘按照一定方式有机的组合在一起,形成一个大的硬盘阵列,
从而提高硬盘数据的存储性能和数据备份技术。对于用户而言,操作磁盘阵列就像操作一般的单个
硬盘一样,而且这样比操作单个硬盘的数据存储速度更快,并具有数据自动备份的机制。

RAID 的初衷主要是为了大型服务器提供高端的存储功能和冗余的数据安全。在系统中,RAID被看作
是一个逻辑分区,但是它是由多个硬盘组成的(最少两块)。它通过在多个硬盘上同时存储和读取数
据来大幅提高存储系统的数据吞吐量,而且在很多RAID 模式中都有较为完备的相互校验/恢复的
措施,甚至是直接相互的镜像备份,从而大大提高了RAID 系统的容错度,提高了系统的稳定冗余性。

根据组成硬盘的不同方式成为RAID级别(RAID Levels),目前主要的RAID级别有六种:
RAID0
RAID1
RAID2
RAID3
RAID4
RAID5

而且还有其中的各种组合,如:RAID10(RAID0和RIAD1的组合),RAID50(RIAD0和RAID5的组合)等等。

为什么需要RAID:

为何有RAID技术的存在呢?在数据化快速发展的时代,数据的存储速度,数据的安全性是至关重要的,
因此,RAID技术显著的特点是:速度、安全。采用RAID技术,最吸引人的地方还是其数据的备份能力,
数据备份能力是指数据一旦发生丢失或者损坏后,利用备份数据能够快速地进行数据的恢复,从而保障
数据的安全性。


目前RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。在Linux环境下,就可以
通过系统自带的软件实现RAID功能,这样就可以替代了购买昂贵的RAID硬件控制器。由于是用软件去
实现的RAID功能,所以它配置灵活、管理方便。同时使用软件RAID,还可以实现将几个物理磁盘合并
成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的。当然基于硬件的RAID解决方案比基于
软件RAID技术在使用性能和服务性能上稍胜一筹,具体表现在检测和修复多位错误的能力、错误磁盘
自动检测和阵列重建等方面。

RAID基本原理简述:

RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或
组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。

实际应用领域中使用最多的 RAID 等级是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10。

从实现角度看,RAID 主要分为软 RAID、硬 RAID 以及软硬混合 RAID 三种。软 RAID 所有功能均由操作
系统和CPU来完成,没有独立的RAID控制/处理芯片和I/O处理芯片,效率自然最低。硬 RAID 配备了专门的
RAID 控制/处理芯片和I/O处理芯片以及阵列缓冲,不占用CPU资源,但成很高。软硬混合RAID具备RAID
控制/处理芯片,但缺乏I/O处理芯片,需要CPU和驱动程序来完成,性能和成本在软RAID和硬RAID之间。

RAID 每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用户的数据
应用特点,综合考虑可用性、性能和成本来选择合适的 RAID 等级,以及具体的实现方式。

RAID的几个重要概念:

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

镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了
镜像的广泛应用,主要要用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。另外,
镜像通过 “拆分” 能获得特定时间点上的数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。

数据条带:
磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个
磁盘驱动器性能存在物理极限,I/O 性能非常有限。RAID 由多块磁盘组成,数据条带技术将数据以块
的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上
同时进行,并发产生非常高的聚合 I/O,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。这对
大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。
而通过条带技术,可获得数倍与访问的性能提升。

数据条带技术的分块大小选择非常关键。条带粒度可以是一个字节至几 KB 大小,分块越小,并行处理
能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用汇总,要根
据数据特征和需求来选择合适的分块大小,在数据存取对急性和并发处理能力之间进行平衡,以争取尽
可能高的整体性能。

数据条带是基于提高 I/O 性能而提出的,也就说它只关注性能,而对大护具可靠性、可用性没有任
何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采取数据条带技术反而增加
了数据发生丢失的概率。

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

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

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

RAID的等级介绍及原理:

RAID0:

RAID0 是一种简单的、无数据校验的数据条带华技术。实际上不是一种真正的 RAID,因为它并不提供任何
形式的冗余数据策略。RAID0 将所在磁盘条带化后组成大容量的存储空间(如图2所示),将数据分散存储
在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到
充分利用。在加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个
由 n 块磁盘组成的 RAID0,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,
实际的性能提升低于理论值。

RAID0 具有低成本、高读写性能、100%的 高存储空间利用率等优点,但是它不提供数据冗余保护,
一旦数据损坏,将无法恢复。因此,RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高
的应用,如视频、音频存储、临时数据缓存空间等。

在这里插入图片描述
RAID1:

RAID1 称为镜像,它将数据完全易一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50%。
RAID1 在数据写入时,响应时间会有所音响,但是读数据的时候没有影响。RAID1 提供了最佳的数据保护,
一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。

RAID1 与 RAID0 刚好相反,为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、
技术简单、管理方便。RAID1 拥有完全容错的能力,但实现成本高。RAID1 应用于对顺序读写性能要
求高以及数据保护极为重视的应用。如对邮件系统的数据保护。

在这里插入图片描述
RAID2:

RAID2 称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。海明码是一种在原始数据
中加入若干校验码来进行错误检测和纠正的编码技术,其中第 2n 位(1248等)是校验码,其他
位置是数据码。因此在 RAID2 中,数据按位存储,每块磁盘存储一位数据编码,磁盘数量取决于所设定
的数据存储宽度,可由用户设定。图 4 所示的 为数据宽度为 4 的 RAID2,它需要4块数据磁盘和3块
校验磁盘。如果是 64位数据宽度,则需要 64 块磁盘 和 7块校验磁盘。可见,RAID2 的数据宽度越大,
存储空间利用率越高,但同时需要的磁盘数量也越多。

海明码自身具备纠错能力,因此 RAID2 可以在数据发生错误的情况下对纠正错误,保证数据的安全性。
它的数据传输性能相当高,设计复杂性要低于 RAID3、RAID4 和 RAID5.

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

在这里插入图片描述
RAID3:

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

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

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

在这里插入图片描述
RAID4:

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

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

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

在这里插入图片描述
RAID5:

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

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

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

在这里插入图片描述
RAID6:

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

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

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

在这里插入图片描述

RAID的优势:

大容量:
这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。
现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储就容量就可以达到 PB 级,大多数的存储
需求都可以满足。一般来说,RAID 可用容量要小于所有成员磁盘的总容量。不同的等级的 RAID 算法
需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID
的可用容量。通常,RAID 容量利用率在 50%~90% 之间。

高性能:
RAID 的高性能受益于数据条带华化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,
性能往往很有限,容易成为系统性能瓶颈。通过数据条带化,RAID 将数据 I/O 分散到各个成员磁盘上,
从而获得比单个磁盘成倍增长的聚合 I/O 性能。

可靠性:
可用性和可靠性是 RAID 的另一个重要特征。从理论上讲,由多个磁盘组成的 RAID 系统在可靠性方面
应该比单个磁盘要差。这里有个隐含假定:单个磁盘故障将导致整个 RAID 不可用。 RAID 采用镜像和
数据校验等数据冗余技术,打破了这个假定。镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完
全复制到另一组磁盘驱动器上,保证总有数据副本可用。比起镜像 50% 的冗余开销,数据校验要小很多,
它利用校验冗余信息对数据进行校验和纠错。RAID 冗余技术大幅度提升数据可用性和可靠性,保证了若
干磁盘出错时,不会导致数据的丢失,不影响系统的连续运行。

可管理性:
实际上,RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部
主机系统来说,RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动
器上来组织和存储应用系统数据。从用户应用角度看,可使存储系统简单易用,管理也会很便利。由于
 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。
 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以大大简化管理工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值