admin管理员组

文章数量:1532182

2023年12月18日发(作者:)

RAID1-RAID5 技术详解

随着计算机应用的日益普及,人们对计算速度和性能的要求也渐渐提高。在一个完整的 计算机系统中,CPU 和内存的作用固然重要,但是数据存储设备性能的好坏和速度的快慢也直接影响到整个系统的表现。本文所要讲解的RAID 技术起初主要应用于效劳器高端市场, 但是随着个人用户市场的成熟和进展,正不断向低端市场靠拢,从而为用户供给了一种既可 以提升硬盘速度,又能够确保数据安全性的良好的解决方案。本文将对RAID 技术进展较为具体的介绍,期望能够对宽阔读者有所帮助。

入门根底

RAID 是英文Redundant Array of Inexpensive Disks 的缩写,中文简称为磁盘阵列。其实,从 RAID 的英文原意中,我们已经能够多少知道 RAID 就是一种由多块廉价磁盘构成的冗余阵列。虽然 RAID 包含多块磁盘,但是在操作系统下是作为一个独立的大型存储设备消灭。RAID 技术分为几种不同的等级,分别可以供给不同的速度,安全性和性价比。

人们在开发RAID 时主要是基于以下设想,即几块小容量硬盘的价格总和要低于一块大容量的硬盘。虽然目前这一设想还没有成为现实,RAID 在节约本钱方面的作用还不是很明显,但是RAID 可以充分发挥出多块硬盘的优势,实现远远超出任何一块单独硬盘的速度和吞吐量。除了性能上的提高之外,RAID 还可以供给良好的容错力气,在任何一块硬盘消灭问题的状况下都可以连续工作,不会受到损坏硬盘的影响。

RAID 0

我们在前文中已经提到RAID 分为几种不同的等级,其中,RAID 0 是最简洁的一种形式。RAID 0 可以把多块硬盘连接在一起形成一个容量更大的存储设备。最简洁的RAID 0 技术只是供给更多的磁盘空间,不过我们也可以通过设置,使用RAID 0 来提高磁盘的性能和吞吐量。RAID 0 没有冗余或错误修复力气,但是实现本钱是最低的。

RAID 0 最简洁的实现方式就是把几块硬盘串联在一起创立一个大的卷集。磁盘之间的

连接既可以使用硬件的形式通过智能磁盘把握器实现,也可以使用操作系统中的磁盘驱动程

序以软件的方式实现。图示如下:

在上述配置中,我们把 4 块磁盘组合在一起形成一个独立的规律驱动器,容量相当于任何任

何一块单独硬盘的 4 倍。如图中彩色区域所示,数据被依次写入到各磁盘中。当一块磁盘的

空间用完时,数据就会被自动写入到下一块磁盘中。

这种设置方式只有一个好处,那就是可以增加磁盘的容量。至于速度,则与其中任何一

块磁盘的速度一样,这是由于同一时间内只能对一块磁盘进展I/O 操作。假设其中的任何一

块磁盘消灭故障,整个系统将会受到破坏,无法连续使用。从这种意义上说,使用纯RAID 0

方式的牢靠性仅相当于单独使用一块硬盘的1/4〔由于本例中RAID 0 使用了 4 块硬盘〕。

虽然我们无法转变RAID 0 的牢靠性问题,但是我们可以通过转变配置方式,供给系统

的性能。与前文所述的挨次写入数据不同,我们可以通过创立带区集,在同一时间内向多块

磁盘写入数据。具体如以以以下图:

上图中,系统向规律设备发出的 I/O 指令被转化为 4 项操作,其中的每一项操作都对应于一块硬盘。我们从图中可以清楚的看到通过建立带区集,原先挨次写入的数据被分散到全部的 四块硬盘中同时进展读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4 倍。

在创立带区集时,合理的选择带区的大小格外重要。假设带区过大,可能一块磁盘上的 带区空间就可以满足大局部的I/O 操作,使数据的读写照旧只局限在少数的一、两块硬盘上, 不能充分的发挥出并行操作的优势。另一方面,假设带区过小,任何 I/O 指令都可能引发大量的读写操作,占用过多的把握器总线带宽。因此,在创立带区集时,我们应当依据实际应 用的需要,慎重的选择带区的大小。

我们已经知道,带区集可以把数据均匀的安排到全部的磁盘上进展读写。假设我们把全部的硬盘都连接到一个把握器上的话,可能会带来潜在的危害。这是由于当我们频繁进展读写操作时,很简洁使把握器或总线的负荷超载。为了避开消灭上述问题,建议用户可以使用多个磁盘把握器。示意图如下:

RAID 1

虽然RAID 0 可以供给更多的空间和更好的性能,但是整个系统是格外不行靠的,假设

消灭故障,无法进展任何补救。所以,RAID 0 一般只是在那些对数据安全性要求不高的情

况下才被人们使用。

RAID 1 和 RAID 0 截然不同,其技术重点全部放在如何能够在不影响性能的状况下最大

限度的保证系统的牢靠性和可修复性上。RAID 1 是全部RAID 等级中实现本钱最高的一种,

尽管如此,人们还是选择RAID 1 来保存那些关键性的重要数据。

RAID 1 又被称为磁盘镜像,每一个磁盘都具有一个对应的镜像盘。对任何一个磁盘的

数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据。明显,

磁盘镜像确定会提高系统本钱。由于我们所能使用的空间只是全部磁盘容量总和的一半。下

图显示的是由 4 块硬盘组成的磁盘镜像,其中可以作为存储空间使用的仅为两块硬盘〔画斜

线的为镜像局部〕。

RAID 1 下,任何一块硬盘的故障都不会影响到系统的正常运行,而且只要能够保证任何一对镜像盘中至少有一块磁盘可以使用,RAID 1 甚至可以在一半数量的硬盘消灭问题时不连续的工作。当一块硬盘失效时,系统会无视该硬盘,转而使用剩余的镜像盘读写数据。

通常,我们把消灭硬盘故障的RAID 系统称为在降级模式下运行。虽然这时保存的数据照旧可以连续使用,但是RAID 系统将不再牢靠。假设剩余的镜像盘也消灭问题,那么整个系统就会崩溃。因此,我们应当准时的更换损坏的硬盘,避开消灭的问题。

更换盘之后,原有好盘中的数据必需被复制到盘中。这一操作被称为同步镜像。同步镜像一般都需要很长时间,尤其是当损害的硬盘的容量很大时更是如此。在同步镜像的进展过程中,外界对数据的访问不会受到影响,但是由于复制数据需要占用一局部的带宽,所以可能会使整个系统的性能有所下降。

由于RAID 1 主要是通过二次读写实现磁盘镜像,所以磁盘把握器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避开消灭性能瓶颈,使用多个磁盘把握器就显得很有必要。以以以以下图示意了使用两个把握器的磁盘镜像。

使用两个磁盘把握器不仅可以改善性能,还可以进一步的提高数据的安全性和可用性。我们 已经知道,RAID 1 最多允许一半数量的硬盘消灭故障,所以依据我们上图中的设置方式〔原盘和镜像盘分别连接不同的磁盘把握〕,即使一个磁盘把握器消灭问题,系统照旧可以使用另外一个磁盘把握器连续工作。这样,就可以把一些由于意外操作所带来的损害降低到最低程度。

RAID 0+1

单独使用RAID 1 也会消灭类似单独使用RAID 0 那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用全部的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。由于这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。

热插拔

一些面对高端应用的磁盘镜像系统都可以供给磁盘的热插拔功能。所谓热插拔功能,就 是允许用户在不关闭系统,不切断电源的状况下取出和更换损害的硬盘。假设没有热插拔功 能,即使磁盘损坏不会造成数据的丧失,用户照旧需要临时关闭系统,以便能够对硬盘进展 更换。现在,使用热插拔技术只要简洁的翻开连接开关或者转动手柄就可以直接取出硬盘, 而系统照旧可以不连续的正常运行。

校验

RAID 3 和 RAID 5 都分别使用了校验的概念供给容错力气。简洁的说,我们可以把校验想象为一种二进制的校验和,一个可以告知你其它全部字位是否正确的特别位。

在数据通信领域,奇偶校验被用来确定数据是否被正确传送。例如,对于每一个字节,

我们可以简洁计算数字位 1 的个数,并在字节内参与附加校验位。在数据的接收方,假设数字位 1 的个数为奇数,而我们使用的又是奇数校验的话,则说明该字节是正确的。同样对偶数校验也是如此。然而,假设数字位 1 的个数和校验位的奇偶性不全都的话,则说明数据在传送过程中消灭了错误。

RAID 系统也承受了相像的校验方法,可以在磁盘系统中创立校验块,校验块中的每一位都用来对其它关联块中的全部对应位进展校验。

在数据通讯领域,虽然校验位可以告知我们某个字节是否正确,但是无法告知我们到底是哪一位消灭了问题。这就是说我们可以检测错误,但是不能改正错误。对于RAID,这是 远远不够的。固然错误的检测格外重要,但是假设不能对错误进展修复,我们就无法提高整个系统的牢靠性。

举个例子来说,假设我们觉察校验块中第10 个字节的第 5 位不正确。假设这个校验块包含的是另外 8 个数据块的校验信息,那么哪一个数据块才是问题的罪魁祸首呢?或许你可能会想为每一个数据块都建立一个校验块就可以解决问题。但是这种方法很难实现。事实上, RAID

主要是借助磁盘把握器的错误报告检测错误位置,并进展修复。假设磁盘把握器在读 取数据时没有发出任何“埋怨”,那么系统将会视该数据为正确数据,连续使用

RAID 3

RAID 3 承受的是一种较为简洁的校验实现方式,使用一个特地的磁盘存放全部的校验数据,而在剩余的磁盘中创立带区集分散数据的读写操作。例如,在一个由 4 块硬盘构成的RAID

3 系统中,3 块硬盘将被用来保存数据,第四块硬盘则特地用于校验。这种配置方式可以用

3+1 的形式表示,具体如图:

在上图中,我们用一样的颜色表示使用同一个校验块的全部数据块,斜线标出的局部为校验块。校验块和全部对应的数据块一起构成一个带区。

第四块硬盘中的每一个校验块所包含的都是其它3 块硬盘中对应数据块的校验信息。RAID 3 的成功之处就在于不仅可以象RAID 1 那样供给容错功能,而且整体开销从RAID 1

的 50%下降为 25%〔RAID 3+1〕。随着所使用磁盘数量的增多,本钱开销会越来越小。举例来说,假设我们使用 7 块硬盘,那么总开销就会将到 12.5%〔1/7〕。

在不同状况下,RAID 3 读写操作的简洁程度不同。最简洁的状况就是从一个完好的 RAID 3

系统中读取数据。这时,只需要在数据存储盘中找到相应的数据块进展读取操作即可,不会增加任何额外的系统开销。

当向RAID 3 写入数据时,状况会变得简洁一些。即使我们只是向一个磁盘写入一个数据块,也必需计算与该数据块同处一个带区的全部数据块的校验值,并将值重写入到校验块中。例如,当我们向上图中的绿色数据块写入数据时,必需重计算全部 3 个绿色数据块的校验值,然后重写位于第四块硬盘的绿色校验块。由此我们可以看出,一个写入操作事实上包含了数据读取〔读取带区中的关联数据块〕,校验值计算,数据块写入和校验块写入四个过程。系统开销大大增加。

我们可以通过适当设置带区的大小使RAID 系统得到简化。假设某个写入操作的长度恰好等于一个完整带区的大小〔全带区写入〕,那么我们就不必再读取带区中的关联数据块计

算校验值。我们只需要计算整个带区的校验值,然后直接把数据和校验信息写入数据盘和校验盘即可。

到目前为止,我们所探讨的都是正常运行状况下的数据读写。下面,我们再来看一下当硬盘消灭故障时,RAID 系统在降级模式下的运行状况。

RAID 3 虽然具有容错力气,但是系统会受到影响。当一块磁盘失效时,该磁盘上的全部数据块必需使用校验信息重建立。假设我们是从好盘中读取数据块,不会有任何变化。但是假设我们所要读取的数据块正好位于已经损坏的磁盘,则必需同时读取同一带区中的所 有其它数据块,并依据校验值重建丧失的数据。

当我们更换了损坏的磁盘之后,系统必需一个数据块一个数据块的重建坏盘中的数据。整个过程包括读取带区,计算丧失的数据块和向盘写入的数据块,都是在后台自动进展。 重建活动最好是在RAID 系统空闲的时候进展,否则整个系统的性能会受到严峻的影响。

RAID 3 的性能问题

除了我们在上文争论过的有关数据写入和降级模式的问题之外,在使用RAID 3 的过程中还有其他一些性能上的问题需要引起我们的留意。RAID 3 所存在的最大一个缺乏同时也是导致RAID 3 很少被人们承受的缘由就是校验盘很简洁成为整个系统的瓶颈。

我们已经知道RAID 3 会把数据的写入操作分散到多个磁盘上进展,然而不管是向哪一个数据盘写入数据,都需要同时重写校验盘中的相关信息。因此,对于那些常常需要执行大量写入操作的应用来说,校验盘的负载将会很大,无法满足程序的运行速度,从而导致整个RAID

系统性能的下降。鉴于这种缘由,RAID 3 更加适合应用于那些写入操作较少,读取操作较多的应用环境,例如数据库和WEB 效劳器等。

RAID 5

RAID 3 所存在的校验盘的性能问题使几乎全部的RAID 系统都转向了RAID 5。在运行机制上,RAID 5 和 RAID 3 完全一样,也是由同一带区内的几个数据块共享一个校验块。

RAID 5 和 RAID 3 的最大区分在于RAID 5 不是把全部的校验块集中保存在一个特地的

校验盘中,而是分散到全部的数据盘中。RAID 5 使用了一种特别的算法,可以计算出任何

一个带区校验块的存放位置。具体如以以以下图:

留意图中的校验块已经被分散保存在不同的磁盘中,这样就可以确保任何对校验块进展的读

写操作都会在全部的RAID 磁盘中进展均衡,从而消退了产生瓶颈的可能。

本文标签: 数据磁盘校验硬盘系统