Chinaunix首页 | 论坛 | 博客
  • 博客访问: 601685
  • 博文数量: 165
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1554
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-23 22:57
个人简介

我本仁慈,奈何苍天不许

文章分类

全部博文(165)

文章存档

2018年(1)

2016年(33)

2015年(5)

2014年(34)

2013年(92)

分类: LINUX

2013-12-26 15:25:46

原文地址:RAID磁盘阵列技术简述 作者:djkpengjun

在计算机发展的初期,"大容量"硬盘的价格还相当高,解决数据存储安全性问题的主要方法是使用磁带机等设备进行 备份,这种方法虽然可以保证数据的安全,但查阅和备份工作都相当繁琐.1987年, Patterson、Gibson和Katz这三位工程师在加州大学伯克利分校发表了题为《A Case of Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列方案)》的论文,其基本思想就是将多只容量较小的、相对廉价的硬盘驱动器进行有机组合,使其性能超过一只昂贵的大硬盘.这一设计思想很快被接受,从此RAID技术得到了广泛应用,数据存储进入了更快速、更安全、更廉价的新时代.
磁 盘阵列对于个人电脑用户,还是比较陌生和神秘的.印象中的磁盘阵列似乎还停留在这样的场景中:在宽阔的大厅里,林立的磁盘柜,数名表情阴郁、早早谢顶的工 程师徘徊在其中,不断从中抽出一块块沉重的硬盘,再插入一块块似乎更加沉重的硬盘......终于,随着大容量硬盘的价格不断降低,个人电脑的性能不断提 升,IDE-RAID作为磁盘性能改善的最廉价解决方案,开始走入一般用户的计算机系统

一、RAID技术规范简介
RAID技术主要包含RAID 0~RAID 7等数个规范,它们的侧重点各不相同,常见的规范有如下几种:
RAID 0:RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID结构.RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据.因此,RAID 0不能应用于数据安全性要求高的场合.

RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据.当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能.RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性.当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据.

RAID 0+1: 也被称为RAID 10标准,实际是将RAID 0和RAID 1标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余.它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低.

RAID 2:将数据条块化地分布于不同的硬盘上,条块单位为位或字节,并使用称为"加重平均纠错码(海明码)"的编码技术来提供错误检查及恢复.这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂,因此在商业环境中很少使用.

RAID 3:它同RAID 2非常类似,都是将数据条块化分布于不同的硬盘上,区别在于RAID 3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息.如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用.RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈.

RAID 4:RAID 4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录.RAID 4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,这时奇偶校验盘会成为写操作的瓶颈,因此RAID 4在商业环境中也很少使用.

RAID 5:RAID 5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息.在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量.RAID 5更适合于小数据块和随机读写的数据.RAID 3与RAID 5相比,最主要的区别在于RAID 3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID 5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作.在RAID 5中有"写损失",即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息.
 
RAID 6:与RAID 5相比,RAID 6增加了第二个独 立的奇偶校验信息块.两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用. 但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的"写损失",因此"写性能"非常差.较差的性能和复杂的实施方式使得
RAID 6很少得到实际应用.

RAID 7:这是一种新的RAID标准,其自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源.RAID 7可以看作是一种存储计算机(Storage Computer),它与其他RAID标准有明显区别.除了以上的各种标准,我们可以如RAID 0+1那样结合多种RAID规范来构筑所需的RAID阵列,例如RAID 5+3(RAID 53)就是一种应用较为广泛的阵列形式.用户一般可以通过灵活配置磁盘阵列来获得更加符合其要求的磁盘存储系统.

开始时RAID方案主要针对SCSI硬盘系统,系统成本比较昂贵.1993年,HighPoint公司推出了第一款IDE-RAID控制芯片,能够利用相对廉价的IDE硬盘来组建RAID系统,从而大大降低了RAID的"门槛".从此,个人用户也开始关注这项技术,因为硬盘是现代个人计算机中发展最为"缓慢"和最缺少安全性的设备,而 用户存储在其中的数据却常常远超计算机的本身价格.在花费相对较少的情况下,RAID技术可以使个人用户也享受到成倍的磁盘速度提升和更高的数据安全性, 现在个人电脑市场上的IDE-RAID控制芯片主要出自HighPoint和Promise公司,此外还有一部分来自AMI公司
面向个人用户的 IDE-RAID芯片一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID规范的支持,虽然它们在技术上无法与商用系统相提并论,但是对普通用户来说其提供的速度提升和安全保证已经足够了.随着硬盘接口传输率的 不断提高,IDE-RAID芯片也不断地更新换代,芯片市场上的主流芯片已经全部支持ATA 100标准,而HighPoint公司新推出的HPT 372芯片和Promise最新的PDC20276芯片,甚至已经可以支持ATA 133标准的IDE硬盘.在主板厂商竞争加剧、个人电脑用户要求逐渐提高的今天,在主板上板载RAID芯片的厂商已经不在少数,用户完全可以不用购置 RAID卡,直接组建自己的磁盘阵列,感受磁盘狂飙的速度
二、用软件方法实现RAID
除了使用RAID卡或者主板所带的芯片实现磁盘阵列外,我们在一些操作系统中可以直接利用软件方式实现RAID功能,例如Windows 2000/XP中就内置了RAID功能.
在了解Windows 2000/XP的软件RAID功能之前,我们首先来看看Windows 2000中的一项功能-动态磁盘管理.
动态磁盘与基本磁盘相比,不再采用以前的分区方式,而是叫卷集,它的作用其实和分区相一致,但是具有以下区别:
1.可以任意更改磁盘容量
动态磁盘在不重新启动计算机的情况下可更改磁盘容量大小,而且不会丢失数据,而基本磁盘如果要改变分区容量就会丢失全部数据(当然也有一些特殊的磁盘工具软件可以改变分区而不会破坏数据,如PQMagic等).
2.磁盘空间的限制
动态磁盘可被扩展到磁盘中不连续的磁盘空间,还可以创建跨磁盘的卷集,将几个磁盘合为一个大卷集.而基本磁盘的分区必须是同一磁盘上的连续空间,分区的最大容量当然也就是磁盘的容量.
3.卷集或分区个数
动态磁盘在一个磁盘上可创建的卷集个数没有限制,相对的基本磁盘在一个磁盘上最多只能分4个区,而且使用DOS或Windows 9X时只能分一个主分区和扩展分区.
*这里一定要注意,动态磁盘只能在Windows NT/2000/XP系统中使用,其他的操作系统无法识别动态磁盘.
因为大部分用户的磁盘都是基本磁盘类型,为了使用软件RAID功能,我们必须将其转换为动态磁盘:控制面板→管理工具→计算机管理→磁盘管理,在查看菜单中将其中的一个窗口切换为磁盘列表.这时我们就可以通过右键菜单将选择磁盘转换为动态磁盘.
在划分动态卷时会可以看到这样几个类型的动态卷.
1.简单卷:包含单一磁盘上的磁盘空间,和分区功能一样.
(当系统中有两个或两个以上的动态磁盘并且两个磁盘上都有未分配的空间时,我们能够选择如下的两种分卷方式)2.跨区卷:跨区卷将来自多个磁盘的未分配空间合并到一个逻辑卷中.
3.带区卷:组合多个(2到32个)磁盘上的未分配空间到一个卷.
(如果如上所述系统中的两个动态磁盘容量一致时,我们会看到另一个分区方式)
4.镜像卷:单一卷两份相同的拷贝,每一份在一个硬盘上.即我们常说的RAID 1.
当我们拥有三个或三个以上的动态磁盘时,我们就可以使用更加复杂的RAID方式-RAID 5,此时在分卷界面中会出现新的分卷形式.
5.RAID 5卷:相当于带奇偶校验的带区卷,即RAID 5方式.
对于大部分的个人电脑用户来说,构建RAID 0是最经济实用的阵列形式,因此我们在这里仅就软件RAID 0的构建进行讲解:
要 在Windows 2000/XP中使用软件RAID 0,首先必须将准备纳入阵列的磁盘转换为上文所述的动态磁盘(这里要注意的是,Windows 2000/XP的默认磁盘管理界面中不能转换基本磁盘和动态磁盘,请参考上文中的描述),我们在这里尝试使用分区的条带化,这也正是软件RAID和使用 RAID芯片构建磁盘阵列的区别.我们选取了一个29GB的分区进行划分带区卷,在划分带区卷区时,系统会要求一个对应的分区,也就是说这时其他的动态磁 盘上必须要有同样29GB或更大的未分配空间,带区卷分配完成后,两个同样大小的分卷将被系统合并,此时我们的格式化等操作也是同时在两个磁盘上进行.
在构建RAID 0完成后,我们决定测试其硬盘传输率以确定这种软件RAID对性能的提升程度,我们构建软件RAID的平台和前文中的硬件RAID平台并不相同,为了保证 CPU的性能以确保我们软件RAID的实现,我们采用了较高端的系统:Athlon XP 1700+,三星 256MB DDR内存,华硕A7V266-E主板,由于软件RAID对硬盘规格的要求比较低,所以硬盘系统我们选用了不同规格的硬盘,希捷酷鱼Ⅳ 60GB和西部数据1200BB 120GB两块硬盘.
在传输曲线的后半段,我们很清楚地看到软件RAID 0的硬盘传输率达到了60MB/s,完全超越了阵列中任意一个硬盘的传输率,RAID 0的优势开始体现出来.对于追求高性能的用户来说,这应该是他们梦寐以求的.
这 里应该说明的是,在Linux环境下,我们同样可以利用Raidtools工具来实现软件RAID功能.这个工具可以制作软RAID 0、RAID 1、RAID 4、RAID 5等多种磁盘阵列.在使用Raidtools之前,首先要确定目前正在使用的Linux核心是否支持Md.如果你正在使用的核心是2.0.X,并且不是自 己编译过,大多数情况下支持软RAID.如果不能确定,则需要自己编译核心.
虽然RAID功能可以给我们带来更好的速度体验和数据安全性,但 是应该指出的是,现在市面上的大部分廉价IDE-RAID解决方案本质上仍然是"半软"的RAID,只是将RAID控制信息集成在RAID芯片当中,因此 其CPU占用率比较大,而且性能并不是非常稳定.这也是在高端系统中软件RAID 0的性能有时可以超过"硬件"RAID 0方案的原因.
对 于用户来说,高性能的IDE-RAID存储系统,或者需要比较强劲的CPU运算能力,或者需要比较昂贵的RAID卡,因此,磁盘阵列仍然应该算是比较高端 的应用.不过对于初级用户来说,使用简单而廉价的磁盘阵列来提高计算机数据的可用性或提升一下存储速度也是相当不错的选择,当然其性能还远不能和高端系统 相比.
总之,我们看到越来越多的RAID架构出现在市场上,尤其是在中低端市场上,越来越普及的廉价IDE-RAID方案与硬盘价格的不断下降互相照应,似乎也在预示着未来个人数据存储的发展趋势,让我们拭目以待吧
阅读(598) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~