posts - 58,  comments - 8,  trackbacks - 0
RAID技术深度剖析
在过去的20年里,计算机技术日新月异逐渐介入了我们的生活的方方面面:商业、教育、休闲、娱乐……同时各个方面不断对计算机技术提出了更高的要求,为了适应人们的需要,计算机技术不断的在各个方面变革着。现在这个社会,我们无时无刻不需要信息和消费信息。Internet的普及更加剧了信息成几何化增长,于是存储信息并且防止信息丢失就成为了一个首要问题。当然用于存储信息数据的设备就是关键了:比如对于一个大型的网站来说,因为存储设备的故障导致网站的片刻的瘫痪,也可能带来数以百万元的损失。很显然单靠用多个硬盘简单的备份不能从根本上解决问题。这时一种叫做独立冗余磁盘阵列(RAID:RedundantArrayofIndependent(orInexpensive)Disks)的技术就应运而生了,这种技术可以把数据分布到多个硬盘上,从而取得更好的稳定性和性能。作为普通的计算机用户,也许你只是熟悉IDE或者软件RAID解决方案,本文就是让你了解RAID技术的内幕。

  一、什么是RAID

    RAID通俗的说就是通过将多个存储设备按照一定的形式和方案组织起来,如同使用一个硬盘一样但是却通过这样的形式获取了比单个存储设备更高的速度、更好的稳定性、更大的存储能力的存储设备的解决方案。根据你的需要不同,可以采用不同形式以及不同价格(从几千元到上百万元)的RAID解决方案——很显然,越好的RAID系统,价格越昂贵,所以几乎没有最好的RAID系统。另外,选择Raid系统要适应不同的应用程序。

    一般来说RAID是用于比较昂贵的服务器系统中的。不过,随着便宜的RAID控制器的出现,它已经渐渐向市场主流发展了。当然在目前的主流市场实现RAID有一定的局限性,它并不适用于每一个人。目前有许多种类的RAIDlevels。在介绍不同RAID模式的区别的时候,我要简述一下几个基本的概念。

  二、阵列和RAID控制器

  一个驱动器阵列就是多个硬盘驱动器的集合。要了解RAID,我们应该再弄清楚几个基本概念。

  ·物理驱动器阵列可以被分开或者组合成为一个或者多个逻辑驱动器阵列。

  ·逻辑驱动器阵列由可以在操作系统中看到的逻辑驱动器组成。

  ·逻辑驱动器可以是一个硬盘也可以是硬盘中的一个分区。

    在一般简单的RAID应用中,或许这些概念反而可能让你更胡涂,不过在多层RAID嵌套的高端RAID应用中明白这些概念、分清这些概念将是非常重要的。

    RAID控制器就是在物理和逻辑阵列中管理数据存取的装置。系统通过它可以查看到逻辑驱动器,但是不必去直接管理。RAID控制器的功能既可以由硬件也可以由软件来实现。硬件RAID一般用于处理大量数据的RAID模式。随着处理器的能力的不断增强,软件RAID功能已经成为可能,不过当处理大量数据时CPU仍然会显得力不从心。在后文,我们将会讨论什么样的应用程序和RAID模式更适于硬件或者软件RAID。

  三、镜像技术

    镜像就是在两个或者多个独立的硬盘驱动器或者驱动器阵列上存放数据的多个拷贝。系统会同时把数据写在作为镜像的两个硬盘上,这就是RAID技术中冗余技术,用来防止数据意外丢失。当其中一个硬盘或者RAID出现问题,系统可以访问镜像的硬盘或者RAID来继续工作,这样就让数据修复的时间缩短到了最短,此时你要做的就是从完好的备份上恢复数据。

    下面的示意图显示了镜像如何工作的。当然这只是一个简单的示意图。A、B、C是独立的文档。在这个示意图里Disk1和Disk2指的是硬盘或者磁盘阵列。RAID控制器将相同的数据同时写入Disk1和Disk2。所以每一个硬盘或者磁盘阵列存储了相同的信息。你可以利用延展技术(Striping,后面将详细解释,现在你只需要知道这个技术能提升性能)加入另一个level组成更加复杂的RAID阵列。如果你有一个延展阵列,那么你可以在镜像这个阵列的同时镜像另外一个延展阵列,它可以让RAID变的极为复杂。

  缺点也是显而易见的,不能并行写入——因此存储数据的时候并不能提升速度。不过,在读取数据的时候镜像可以提升速度。一个好的RAID控制器可以读取镜像的两个设备中的任意一个的数据,当其中一个使用时,另一个空闲的可以响应其它的请求。这就是并行处理——也就是RAID之所以能提升硬盘性能的原因所在。

  镜像适用于强调数据安全的解决方案。因为要把相同的数据存为两份所以就需要更大的存储空间,当然也需要更多的经费来购置存储设备。不过对于相当大的领域内这个花费是值得的。因为数据丢失而去手工回复所需要的时间足够让一些公司倒闭了。不过在另外些场合,数据的稳定性要求不是那么高,就不值得在存储设备上花费两倍的钱了。镜像中两个组成RAID的两个存储设备是对等的,究竟下一步操作需要哪一个设备就需要由parity来决定了。

  四、奇偶校验(Parity)技术

  Parity是应用于RAID中的另一种冗余技术。这个名词通常用在侦测校验通讯错误方面,例如Modem、内存。RAID中的Parity类似于内存中的技术。举个例子来说,比如你的一个数据单位有X位数字,那么你可以使用这X位数字产生一个奇偶校验位,并且把这个奇偶校验位作为这个数据单位的第X+1个位,如果这X+1位中的任何一个丢失,剩下的X位仍能修复这个数据。你可能听说过奇偶校验位(paritybit)这个名词,对于数据来讲,这是个额外的数据(但是从安全性上来讲不是多余的)。在RAID中,这个奇偶校验数据将会大的多。还不明白?

  一般的这个额外的奇偶校验数据由异或逻辑运算(XOR)产生。如果你对异或逻辑运算不清楚。下表讲让你明白:

  pqpXORq

  TTT

  TFF

  FTF

  FFT

  很简单“真”“真”异或的结果是真,“假”“假”异或的结果也是真,“真”“假”异或结果是“假”——也就是相同的元素异或结果是“真”,不同元素异或结果是“假”。你可以把这里的“真”“假”分别等同于二进制的0、1。异或运算的一个特性就是你把结果和一个初始值进行异或运算,就能得到另一个初始值。如上表,你可以把(pXORq)同p或者q进行异或,相应的你会得到q或p。由此你也能看得出来异或运算不需要临时存储空间就能交换两个内存空间。

  例如:

  10101010XOR11111111=01010101

  11111111XOR01010101=10101010

  10101010XOR01010101=11111111

  由任何两个值都能通过异或运算得到第三个值,这就是异或运算的特性。这个运算可以使用任意多个字节,所以你可以对整个硬盘的数据进行异或运算。现在你是不是可以想到你不必把数据存为两份,而只要一个硬盘就能保护你的数据了——这个想法基本正确,不过仍然还需要一个额外硬盘。这就是奇偶校验技术相对于镜像技术的优势。但是在容错能力不如镜像技术。奇偶校验数据不必存储在单一的物理硬盘上,它可以分布在整个磁盘阵列上,这就是我们常常说的分布式奇偶校验。另外在镜像技术中能实现的Striping技术在奇偶校验中也能实现。主要的限制就是奇偶校验技术需要进行大量的运算,对于计算机有着相当高的要求。每一次读取、写入数据都要进行一次奇偶校验运算,这就必须具备硬件RAID控制器。运用软件RAID几乎是不现世的,因为如此大量的运算会让CPU没有空更重要的事情了。还有一个缺点就是恢复数据比镜像技术复杂。虽然硬件RAID控制器可以自动重建数据,不过比镜像技术要慢的多。
posted on 2006-09-22 17:58 forrest 阅读(186) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(5)

随笔分类(59)

随笔档案(58)

文章分类(41)

文章档案(52)

相册

收藏夹

postfix

windows 系统

编程

  • how to be a programmer
  • 写给想当程序员的朋友
  • 谨以此文献给所有想当程序员的朋友 (一) 文章由来及个人经历 我是一名计算机专业的本科毕业生,毕业已经1年多了。毕业后从事的是软件编程工作,经常有其他专业的朋友想从事软件编程工作,向我请教如何,因为我自觉涉行不深,不敢信口开河,无奈朋友信任,我不得不郑重考虑一下这个问题了,来帮助朋友选择和回报朋友的信任。

搜索

  •  

最新评论

阅读排行榜

评论排行榜