您的位置:首页 > 大数据 > 人工智能

磁盘阵列RAID组建知识全解析

2010-07-21 15:58 253 查看
http://article.wxiu.com/20100527/9331.html

磁盘阵列RAID组建知识全解析

来源: wxiu.com
时间: 2010-05-27
作者: apollo

什么是RAID
?硬盘组建RAID
有什么用?本文就来详细说说
盘阵列RAID

相关知识和组建方法。

RAID是“Redundant Array of Independent
Disk”的缩写,中文意思是独立冗余磁盘阵列。冗余磁盘阵列技术诞生于1987年,由美国加州大学伯克利分校提出。

RAID最初的研制目的是为了组合小的廉价磁盘来代替大的昂贵磁盘,以降低大批量数据存储的费用,同时也希望采用冗余信息的方式,使得磁盘失效时不
会使对数据的访问受损失,从而开发出一定水平的数据保护技术,并且能适当的提升数据传输速度。



早期的RAID方案主要针对SCSI硬盘系统,系统成本比较昂贵。1993年,HighPoint公司推出了第一款IDE-RAID控制芯片,能够
利用相对廉价的IDE
硬盘来组建RAID系统,从而大大降低了RAID的“门槛”。从此,个人用户也开始关注这项技术,因为硬盘是现代个人计算机中发展最为“缓慢”和最缺少安
全性的设备,而用户存储在其中的数据却常常远超计算机的本身价格。在花费相对较少的情况下,RAID技术可以使个人用户也享受到成倍的磁盘速度提升和更高
的数据安全性。目前,IDE/SATA接口标准的硬盘都可以支持RAID技术,不过一般主板芯片组支持的主板只能支持SATA硬盘组建RAID。



早期一般都是SCSI卡提供SCSI RAID的支持
那么为何叫做冗余磁盘阵列呢?冗余的汉语意思即多余,重复。而磁盘阵列说明不仅仅是一个磁盘,而是一组磁盘。这时你应该明白了,它是利用重复的磁盘
来处理数据,使得数据的稳定性得到提高。

磁盘阵列RAID实现原理

RAID如何实现数据存储的高稳定性呢?我们不妨来看一下它的工作原理。RAID按照实现原理的不同分为不同的级别,不同的级别之间工作模式是有区
别的。整个的RAID结构是一些磁盘结构,通过对磁盘进行组合达到提高效率,减少错误的目的,不要因为这么多名词而被吓坏了,它们的原理实际上十分简单。
问了便于说明,下面示意图中的每个圆饼代表一个磁盘,竖的叫块或磁盘阵列,横称之为带区。



简单点说,RAID的功能就是把多个硬盘组合成为一个逻辑磁区,因此,操作系统只会把它当作一个硬盘。RAID系统的类型有多种方式,如RAID-
0,RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-10,RAID-53等。下面我们分别来看看这些
RAID类型的区别以及用途:

RAID 0

将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID
0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中。
所以,在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失。

RAID 1

两组以上的N个磁盘相互作镜像,速度没有提高,但是允许N-1个磁盘损坏,可靠性最高。RAID
1就是镜像。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据
备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算其中一半磁盘的容量,
是所有RAID上磁盘利用率最低的一个级别。

RAID 2

这是RAID 0的改良版,以汉明码(en:Hamming
Code)的方式将数据进行编码后分割为独立的位元,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction
Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台硬盘方能运作。

RAID 3

采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据位元分割后分别存在硬盘中,而将同位元检查后单独存在一个硬盘
中,但由于数据内的位元分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。

RAID 4

它与RAID
3不同的是它在分割时是以区块为单位分别存在硬盘中,但每次的数据存取都必须从同位元检查的那个硬盘中取出对应的同位元数据进行核对,由于过于频繁的使
用,所以对硬盘的损耗可能会提高 (Block interleaving)。

RAID 5

RAID Level 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk
Striping(硬盘分割)技术。RAID 5 至少需要三颗硬盘, RAID
5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘
上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID
1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID
5具有和RAID
0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID
5的磁盘空间利用率要比RAID 1高,存储成本相对较低廉。

RAID 6

同一阵列中容许两个硬盘同时失效(或是当一个失效后还来不及更换便有第二个失效)后.更换新硬盘时再由另两个正常硬盘将备份的资料建立在新的硬盘
中.所以至少必须具备四或四个以上硬盘才能生效。

RAID 10、RAID 53和RAID 0+1

这种RAIDxy的类型实际上就是RAID x与RAID y的组合方式。比如说RAID 10就是RAID 1+0,即先组建两组RAID
1镜像,然后再将两组RAID 1镜像组建成为RAID 0;而RAID 53实际上就是RAID 5+3模式,很好理解。需要注意到是,RAID
10并不等于RAID 0+1,实现的顺序不一样,功能也是不一样的。

JBOD

严格的说,JBOD并不属于RAID的范畴,只是将多个磁盘空间合并成一个大的逻辑磁盘,不具有错误冗余机制。资料的存放机制是由第一颗磁盘开始依
序往后存放,即操作系统看到的是一个大磁盘(由许多小磁盘组成)。但如果磁盘损毁,则该颗硬盘上的所有资料将无法救回。若第一颗硬盘损坏,通常无法作救援
(因大部分档案系统将档案表存在磁盘前端,即第一颗),失去档案表即失去一切资料。

JBOD在组建过程中,一般用英文Spanned。

在实际的应用中,RAID2~4并不存在,因为RAID5已经涵盖了所需的功能。因此RAID2~4目前只有在研究领域有实作,而在实际应用上则以
RAID 0、1、0+1、5或RAID6为主。但是对于我们普通用户来说,用的最多的也就是RAID 0、1、0+1和RAID
5,所以本文我们将重点对这几个RAID类型进行讲解。

RAID 0——提高性能,无空间损失

RAID 0是最基本的RAID模式,它的功能是将两块/多块硬盘合并成一块逻辑磁盘。比如两块500GB的硬盘组建RAID
0,那么在系统中我们可以看到有一块1TB的逻辑磁盘,而并不能看到是两块物理硬盘。

RAID
0最大的优势就在于“便于分区管理”和“提高数据传输速度”:“便于分区管理”很容易理解,比如说两块500GB的硬盘组建RAID0,你不用考虑分区的
时候单独分区只能小于500GB,也就是说你可以分两个区,第一个区800GB,第二个区200GB(硬盘实际容量有损失,在这里我们不做讨论)。



当然,RAID
0主要是为了提升数据传输速度而生的,它的原理是当系统下达指令后,会同时从每块硬盘调用/写入数据。这样就可以利用每块块硬盘传输通道所提供的带宽。相
信看到这里大家都明白了,组建RAID
0系统的时候,理论上硬盘数量越多,传输速度提升就越大。但是在实际使用中受限于系统IO总线和其他因素的一些影响,还是有一些衰减的,比如一个磁盘的效
能是50MB/秒,两个磁盘的RAID 0效能约96MB/秒,三个磁盘的RAID
0也许是130MB/秒而不是150MB/秒。所以,两个磁盘的RAID 0最能明显感受到效能的提升。

实际上,我们组建RAID系统的时候,并不一定要两块/多块容量相等的硬盘,可以用一块大硬盘和一块相对容量较小的硬盘组建RAID系统,很多JS
都说需要两块一样大小的硬盘组建RAID实际上并不正确。但是当硬盘容量不一样时,会按照容量最小的硬盘来计算,并且速度上也会以最小硬盘为标准。比如说
一块5400RPM的60G硬盘与一块7200RPM的80G硬盘组建RAID
0系统,结果的总容量是60×2=120GB,而理论速度只会达到5400RPM硬盘的两倍。所以说,如果条件允许,我们还是建议使用两块同型号的硬盘组
建RAID系统。

虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID
0一般只是在那些对数据安全性要求不高的情况下才被人们使用。

一般来说,RAID 0在组建的时候,英文名为Striped。

对于数据的安全性要求较高的用户,都
会选择RAID 1阵列方式。


RAID 1的主要功能是让数据更加安全,它的实现原理是在往一块硬盘写入数据的时候,同时也向另一块硬盘写入数据,也就是镜像功能。组建RAID

1阵列的时候需要2块以上的硬盘,并且数量只能是偶数。如2块、4块、6块、8块等,因为需要用做备份,在数据的安全性方面是最好的,但是只能利用到磁盘
总容量的一半。



举例来说,使用两块80GB的SATA硬盘组建RAID
1系统,在操作系统下显示的总容量仍然是80GB,因为另外的80GB硬盘用做备份了。如果这两块硬盘中的一块物理损坏,仍然可以从第二块备份硬盘中恢复
回来。同理,如果使用6块硬盘组建RAID 1系统,其中有3块用于存放数据,另外三块用于备份数据。

当然,RAID 1仍然可以支持两块容量不一样的磁盘组建阵列,和RAID
0一样,都是按照容量较小的那一块做标准。比如使用一块100GB和120GB的硬盘组建RAID 1,最后得到的总容量是100GB。

由于RAID
1主要的功能是对数据进行镜像,所以在写入数据时磁盘的数据传输性能是没有提升的。但是在读取数据的时候,仍然会有提升,因为它可以同时从两个硬盘里读取
数据,也就是说有两个供应源供应数据。RAID 1在我们普通用户中的使用率相对较小,因为一般的用户都舍不得损失一半的硬盘容量。

RAID 1在组建过程中,一般用英文“Mirror”来代替。

说到这里,想必大家已经明白了RAID 10与RAID 0+1是什么意思了,不过目前主板集成的南桥芯片一般都只能支持RAID 0+1,也就是Striped Mirror阵列
方式。

RAID 5——性价比解决方案

RAID 0可以大幅度的提高性能,RAID
1可以保证数据的安全性。那么如果既想提高性能,又能保证安全性,最廉价的解决方案是什么呢?那就是RAID 5!

RAID 5使用至少三块硬盘来实现阵列,它既能实现RAID 0的加速功能也能够实现RAID
1的备份数据功能,在阵列当中有三块硬盘的时候,它将会把所需要存储的数据按照用户定义的分割大小分割成文件碎片存储到两块硬盘当中,此时,阵列当中的第
三块硬盘不接收文件碎片,它接收到的是用来校验存储在另外两块硬盘当中数据的一部分数据,这部分校验数据是通过一定的算法产生的,可以通过这部分数据来恢
复存储在另外两个硬盘上的数据。另外,这三块硬盘的任务并不是一成不变的,也就是说在这次存储当中可能是1号硬盘和2好硬盘用来存储分割后的文件碎片,那
么在下次存储的时候可能就是2号硬盘和3号硬盘来完成这个任务了。可以说,在每次存储操作当中,每块硬盘的任务是随机分配的,不过,肯定是两块硬盘用来存
储分割后的文件碎片另一块硬盘用来存储校验信息。这个校验信息一般是通过RAID控制器运算得出的,通常这些信息是需要一个RAID控制器上有一个单独的
芯片来运算并决定将此信息发送到哪块硬盘存储。



RAID 5同时会实现RAID 0的高速存储读取并且也会实现RAID 1的数据恢复功能,也就是说在上面所说的情况下,RAID
5能够利用三块硬盘同时实现RAID 0的速度加倍功能也会实现RAID 1的数据备份功能,并且当RAID
5当中的一块硬盘损坏之后,加入一块新的硬盘同样可以实现数据的还原。

下面来分析一下RAID 5如何实现对数据的还原,举个例子来说,使用3块硬盘来构成一个RAID
5阵列,用户定义的分割文件大小为64K,此时需要存储的文件大小为128K。首先,当RAID控制器接收到这部分数据之后利用一定的算法得出校验信息,
然后将这128K的文件分割成两个大小为64K大小的文件碎片,然后将这两个文件碎片同时分别放往1号硬盘和2号硬盘,最后校验信息被发往3号硬盘。如果
这个阵列当中某个硬盘损坏了,还是可以恢复原来的数据:如果上面用来存储校验信息的3号硬盘损坏了,可以通过1号和2号硬盘来重新生成校验信息;如果损坏
的是1号或者2号硬盘,可以利用3号硬盘上存储的校验信息重新生成原来的文件碎片。

RAID
5模式并不是一些都好,如果阵列当中某块硬盘上的信息发生了改变的话,那么就需要重新计算文件分割碎片,并且,校验信息也需要重新计算,这时,三个硬盘都
需要重新调用。

同样,如果要做RAID 5阵列的话,最好使用相同容量相同速度的硬盘,RAID
5模式的有效容量是阵列中容量最小的硬盘容量乘上阵列中硬盘数目减去一后的数,这里硬盘数目要减去一是因为其中有一块硬盘用来存放校验信息。举例来说,三
块80GB硬盘组成的RAID 5系统,总容量会成为160GB。

RAID 5既能够实现速度上的加倍,同时也能够保证数据的安全性,所以在很多高端系统当中都使用这种RAID模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: