RAID技术实现方案

发布时间:2021-01-25

1      RAID技术一览

1.1    RAID 的概述

 

raid1

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

  RAID磁盘阵列(Redundant Array of Independent Disks

  简单地解释,就是将N台硬盘通过RAID Controller(分HardwareSoftware)结合成虚拟单台大容量的硬盘使用,其特色是N台硬盘同时读取速度加快及提供容错性Fault Tolerant,所以RAID是当成平时主要访问数据的Storage不是Backup Solution

  在RAID有一基本概念称为EDAPExtended Data Availability and Protection),其强调扩充性及容错机制, 也是各家厂商如:MylexIBMHPCompaqAdaptecInfortrend等诉求的重点,包括在不须停机情况下可处理以下动作:

  RAID 磁盘阵列支援自动检测故障硬盘;

  RAID 磁盘阵列支援重建硬盘坏轨的资料;

  RAID 磁盘阵列支援支持不须停机的硬盘备援 Hot Spare

  RAID 磁盘阵列支援支持不须停机的硬盘替换 Hot Swap

  RAID 磁盘阵列支援扩充硬盘容量等。

1.2   RAID 的优点

  RAID的采用为存储系统(或者服务器的内置存储)带来巨大利益,其中提高传输速率和提供容错功能是最大的优点。

  RAID通过同时使用多个磁盘,提高了传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。这也是RAID最初想要解决的问题。因为当时CPU的速度增长很快,而磁盘驱动器的数据传输速率无法大幅提高,所以需要有一种方案解决二者之间的矛盾。RAID最后成功了。

  通过数据校验,RAID可以提供容错功能。这是使用RAID的第二个原因,因为普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。

1.3   RAID的技术规范

1.3.1RAID技术规范简介

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

  过去RAID一直是高档服务器才有缘享用,一直作为高档SCSI硬盘配套技术作应用。近来随着技术的发展和产品成本的不断下降,IDE硬盘性能有了很大提升,加之RAID芯片的普及,使得RAID也逐渐在个人电脑上得到应用。

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

1.3.2   RAID的工作原理

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

1.3.3   RAID规范

  主要包含RAID 0RAID 7等数个规范,它们的侧重点各不相同,常见的规范有如下几种:

1.3.3.1             RAID 0:无差错控制的带区组

  要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好。它不需要计算校验码,实现容易。它的缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确也无济于事了。不应该将它用于对数据稳定性要求高的场合。如果用户进行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上,这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。

1.3.3.2             RAID 1:镜象结构

  对于使用这种RAID1结构的设备来说,RAID控制器必须能够同时对两个盘进行读操作和对两个镜象盘进行写操作。通过下面的结构图您也可以看到必须有两个驱动器。因为是镜象结构在一组盘出现问题时,可以使用镜象,提高系统的容错能力。它比较容易设计和实现。每读一次盘只能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率相同。因为RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行数据统计,那么使用RAID1比较合适。而且RAID1技术支持热替换,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性是非常高的,RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。

1.3.3.3             RAID2:带海明码校验

  从概念上讲,RAID 2 RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。下图左边的各个磁盘上是数据的各个位,由一个数据不同的位运算得到的海明校验码可以保存另一组磁盘上,具体情况请见下图。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID345要简单。没有免费的午餐,这里也一样,要利用海明码,必须要付出数据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。

1.3.3.4             RAID3:带奇偶校验码的并行传送

  

raid3

这种校验码与RAID2不同,只能查错不能纠错。它访问数据时一次处理一个带区,这样可以提高读取和写入速度,它象RAID 0一样以并行的方式来存放数,但速度没有RAID 0快。校验码在写入数据时产生并保存在另一个磁盘上。需要实现时用户必须要有三个以上的驱动器,写入速率与读出速率都很高,因为校验位比较少,因此计算时间相对而言比较少。用软件实现RAID控制将是十分困难的,控制器的实现也不是很容易。它主要用于图形(包括动画)等要求吞吐率比较高的场合。不同于RAID 2RAID 3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。 利用单独的校验盘来保护数据虽然没有镜像的安全性高,但是硬盘利用率得到了很大的提高,为n-1

1.3.3.5             RAID4:带奇偶校验码的独立磁盘结构

  

raid4

RAID4RAID3很象,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。在图上可以这么看,RAID3是一次一横条,而RAID4一次一竖条。它的特点的RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。

1.3.3.6             RAID5:分布式奇偶校验的独立磁盘结构

  

raid5

从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性,允许单个磁盘出错。RAID 5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1 但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。RAID 3 RAID 5相比,重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID 5中有写损失,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。 RAID-5的话,优点是提供了冗余性(支持一块盘掉线后仍然正常运行),磁盘空间利用率较高(N-1/N),读写速度较快(N-1倍)。但当掉盘之后,运行效率大幅下降。

1.3.3.7             RAID6:带有两种分布存储的奇偶校验码的独立磁盘结构

  

raid6

名字很长,但是如果看到图,大家立刻会明白是为什么,请注意p0代表第0带区的奇偶校验值,而pA代表数据块A的奇偶校验值。它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合。当然了,由于引入了第二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。我想除了军队没有人用得起这种东西。

1.3.3.8             RAID7:优化的高速数据传送磁盘结构

  RAID7所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问数据的速度;每个磁盘都带有高速缓冲存储器,实时操作系统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率。可以连接多台主机,因为加入高速缓冲存储器,当多用户访问系统时,访问时间几乎接近于0。由于采用并行结构,因此数据访问效率大大提高。需要注意的是它引入了一个高速缓冲存储器,这有利有弊,因为一旦系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作。当然了,这么快的东西,价格也非常昂贵。

1.3.3.9             RAID10:高可靠性与高效磁盘结构

  这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速还可以的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于容量不大,但要求速度和差错控制的数据库中。

1.3.3.10       RAID53:高效数据传送磁盘结构

  越到后面的结构就是对前面结构的一种重复和再利用,这种结构就是RAID3和带区结构的统一,因此它速度比较快,也有容错功能。但价格十分高,不易于实现。这是因为所有的数据必须经过带区和按位存储两种方法,在考虑到效率的情况下,要求这些磁盘同步真是不容易。

1.3.4   JBOD模式

  JBOD通常又称为Span。它是在逻辑上将几个物理磁盘一个接一个连起来, 组成一个大的逻辑磁盘。JBOD不提供容错,该阵列的容量等于组成Span的所有磁盘的容量的总和。JBOD严格意义上说,不属于RAID的范围。不过现在很多IDE RAID控制芯片都带着种模式,JBOD就是简单的硬盘容量叠加,但系统处理时并没有采用并行的方式,写入数据的时候就是先写的一块硬盘,写满了再写第二块硬盘……

  实际应用中最常见的是RAID0 RAID1 RAID5 RAID10 由于在大多数场合,RAID5包含了RAID2-4的优点,所以RAID2-4基本退出市场

  现在,一般认为RAID2-4只用于RAID开发研究

1.3.5   我们能够用得上的IDE RAID

  上面是对RAID原理的叙述,而我们Pcfans最关心的是RAID的应用。我们日常使用IDE硬盘,而且很容易买到IDE RAID卡和集成RAID芯片的主板。所以跟我们最贴近的是IDE RAID。限于应用级别很低,IDE RAID多数只支持RAID 0RAID 1RAID 0+1JBOD模式。

  RAID的应用

  开始时RAID 方案主要针对SCSI硬盘系统,系统成本比较昂贵。1993年,HighPoint公司推出了第一款IDE-RAID控制芯片,能够利用相对廉价的IDE 硬盘来组建RAID系统,从而大大降低了RAID门槛。从此,个人用户也开始关注这项技术,因为硬盘是现代个人计算机中发展最为缓慢和最缺少安全性的设备,而用户存储在其中的数据却常常远超计算机的本身价格。在花费相对较少的情况下,RAID技术可以使个人用户也享受到成倍的磁盘速度提升和更高的数据安全性,现在个人电脑市场上的IDE-RAID控制芯片主要出自HighPointPromise公司,此外还有一部分来自AMI公司(如表 2)。

  面向个人用户的IDE-RAID芯片一般只提供了RAID 0RAID 1RAID 0+1RAID 10)等RAID规范的支持,虽然它们在技术上无法与商用系统相提并论,但是对普通用户来说其提供的速度提升和安全保证已经足够了。随着硬盘接口传输率的不断提高,IDE-RAID芯片也不断地更新换代,芯片市场上的主流芯片已经全部支持ATA 100标准,而HighPoint公司新推出的HPT 372芯片和Promise最新的PDC20276芯片,甚至已经可以支持ATA 133标准的IDE硬盘。在主板厂商竞争加剧、个人电脑用户要求逐渐提高的今天,在主板上板载RAID芯片的厂商已经不在少数,用户完全可以不用购置 RAID卡,直接组建自己的磁盘阵列,感受磁盘狂飙的速度。

  Matrix RAID

  Matrix RAID即所谓的矩阵RAID”,是ICH6R南桥所支持的一种廉价的磁盘冗余技术,是一种经济性高的新颖RAID解决方案。Matrix RAID技术的原理相当简单,只需要两块硬盘就能实现了RAID 0RAID 1磁盘阵列,并且不需要添加额外的RAID控制器,这正是我们普通用户所期望的。Matrix RAID需要硬件层和软件层同时支持才能实现,硬件方面目前就是ICH6R南桥以及更高阶的ICH6RW南桥,而Intel Application Acclerator软件和Windows操作系统均对软件层提供了支持。

  Matrix RAID的原理就是将每个硬盘容量各分成两部分(即:将一个硬盘虚拟成两个子硬盘,这时子硬盘总数为4),其中用两个虚拟子硬盘来创建RAID0模式以提高效能,而其它两个虚拟子硬盘则透过镜像备份组成RAID 1用来备份数据。在Matrix RAID模式中数据存储模式如下:两个磁盘驱动器的第一部分被用来创建RAID 0阵列,主要用来存储操作系统、应用程序和交换文件,这是因为磁盘开始的区域拥有较高的存取速度,Matrix RAIDRAID 0逻辑分割区置于硬盘前端(外圈)的主因,是可以让需要效能的模块得到最好的效能表现;而两个磁盘驱动器的第二部分用来创建RAID1模式,主要用来存储用户个人的文件和数据。

  例如,使用两块120GB的硬盘,可以将两块硬盘的前60GB组成120GB的逻辑分割区,然后剩下两个60GB区块组成一个60GB的数据备份分割区。像需要高效能、却不需要安全性的应用,就可以安装在RAID 0分割区,而需要安全性备份的数据,则可安装在RAID 1分割区。换言之,使用者得到的总硬盘空间是180GB,和传统的RAID 0+1相比,容量使用的效益非常的高,而且在容量配置上有着更高的弹性。如果发生硬盘损毁,RAID 0分割区数据自然无法复原,但是RAID 1分割区的数据却会得到保全。

  可以说,利用Matrix RAID技术,我们只需要2个硬盘就可以在获取高效数据存取的同时又能确保数据安全性。这意味着普通用户也可以低成本享受到RAID 0+1应用模式。

  NV RAID

  NV RAIDnVidia自行开发的RAID技术,随着nForce各系列芯片组的发展也不断推陈出新。相对于其它RAID技术而言,目前最新的nForce4系列芯片组的NV RAID具有自己的鲜明特点,主要是以下几点:

  (1)交错式RAID(Cross-Controller RAID):交错式RAID即俗称的混合式RAID,也就是将SATA接口的硬盘与IDE接口的硬盘联合起来组成一个RAID模式。交错式RAIDnForce3 250系列芯片组中便已经出现,在nForce 4系列芯片组身上该功能得到延续和增强。

  (2)热冗余备份功能:在nForce 4系列芯片组中,因支持Serial ATA 2.0的热插拔功能,用户可以在使用过程中更换损坏的硬盘,并在运行状态下重新建立一个新的镜像,确保重要数据的安全性。更为可喜的是,nForce 4nVIDIA RAID控制器还允许用户为运行中的RAID系统增加一个冗余备份特性,而不必理会系统采用哪一种RAID模式,用户可以在驱动程序提供的管理工具中指派任何一个多余的硬盘用作RAID系统的热备份。该热冗余硬盘可以让多个RAID系统(如一个RAID 0和一个RAID1)共享,也可以为其中一个RAID系统所独自占有,功能类似于时下的高端RAID系统。

  (3)简易的RAID模式迁移:nForce 4系列芯片组的NV RAID模块新增了一个名为“Morphing”的新功能,用户只需要选择转换之后的RAID模式,而后执行“Morphing”操作,RAID删除和模式重设的工作可以自动完成,无需人为干预,易用性明显提高。

  NV RAID的设置方式

  nForce系列芯片组的BIOS里有关SATARAID的设置选项有两处,都在Integrated Peripherals(整合周边)菜单内。

  SATA 的设置项:Serial-ATA,设定值有[Enabled], [Disabled]。这项的用途是开启或关闭板载Serial-ATA控制器。使用SATA硬盘必须把此项设置为[Enabled]。如果不使用 SATA硬盘可以将此项设置为[Disabled],可以减少占用的中断资源。

  RAID的设置项在Integrated Peripherals/Onboard Device(板载设备)菜单内,光标移到Onboard Device,按进入如子菜单:RAID Config就是RAID配置选项,光标移到RAID Config,按就进入如RAID配置菜单:

  第一项IDE RAID是确定是否设置RAID,设定值有[Enabled], [Disabled]。如果不做RAID,就保持缺省值[Disabled],此时下面的选项是不可设置的灰色。

  如果做RAID就选择[Enabled],这时下面的选项才变成可以设置的黄色。IDE RAID下面是4IDEPATA)通道,再下面是SATA通道。nForce2芯片组是2SATA通道,nForce3/4芯片组是4SATA 道。可以根据你自己的意图设置,准备用哪个通道的硬盘做RAID,就把那个通道设置为[Enabled]

  设置完成就可退出保存BIOS设置,重新启动。这里要说明的是,当你设置RAID后,该通道就由RAID控制器管理,BIOSStandard CMOS Features里看不到做RAID的硬盘了。

1.4   RAID常见故障:

  现在选择IDE磁盘阵列卡(IDE RAID)来确保数据安全[3]的人越来越多,如何正确使用IDE RAID卡也是个学问。下面我们就以采用HPT370A/372控制芯片的Rocket100 RAID卡为例来给大家做些讲解常见故障与技巧。

  安装需知

  先找一个空闲的PCI插槽将该卡插进去并将硬盘用硬盘线和该卡安装连接好,安装完适配卡后,在启动计算机的过程中,你会看到该适配卡已成功安装并被系统识别。而在系统开机时,其控制器的BIOS会显示硬盘状态的 信息,按CTRL+H即可进入结构非常清楚的设置菜单,在这里你可以设定磁盘阵列:两个硬盘可以选择条带模式(RAID 0)和镜像模式(RAID 1),有三块硬盘的话只能选跨越扩充或条带模式,而四块就可以选跨越模式、条带模式或条带结合镜像模式(RAID 0+1),而选用RAID 1的话硬盘必须进行同步化。

  常见安装故障排除

  当Rocket100 RAID卡被识别后,板上BIOS开始 检测连接设备。请注意屏幕上出现的设备,如果所连接设备全部被正确扫描出,则说明设备已正确连接并被系统识别,再安装好驱动之后你即可使用RAID功能了。而如果其中有的设备没有被识别出,你可打开机箱,将所连接设备的电源线是否插牢,必要时换一个电源插头试一试;所连接设备的数据线是否正确连接并已插牢,必要时换一根数据线试一试;如果一根数据线上接有两个设备,请确认这两个设备的主从跳线是否设置冲突(一根数据线上的两个设备必须为一主一从)

  硬盘容量的选择

  考虑到系统的 操作性能及磁盘的利用率,我们建议你最好使同样容量的硬盘。但你如果一定要用不同容量的磁盘,需要注意的是整个阵列的容量要由该阵列中最小容量的硬盘决定,例如在由3个磁盘组成的RAID 0阵列中,总容量等于最小磁盘的容量的3倍。在RAID 1阵列中,目标盘的容量不能小于源盘的容量。该阵列的总容量就等于最小磁盘的容量。但是JBOD是个例外,两个或更多的不同容量的硬盘可以组合起来,形成一个逻辑单盘。

  BIOS设置须知

  IDE RAID卡是即插即用设备,所以,你不必改变系统CMOS。系统会自动指出中断及端口的地址。而在CMOS设置中将所有设备处于noneunstalled状态时,即可将IDE RAID卡设为启动卡;或将SCSI设备调为启动序列的第1位,也可将RAID卡设为启动卡。

  RAID损坏了怎么办?

  如果一个RAID级别被破坏了,可以按以下操作进行检查:先关闭计算机的电源,检查硬盘电源的连接,以及数据线是否与硬盘和RAID控制卡连接正常再重新开机;如果以上操作仍不能解决问题,可能是硬盘的问题,对于RAID 1RAID 0+1,可以用一个新的硬盘将已经被破坏的硬盘上的数据进行备份,所有的数据都不会丢失的。对于RAID 0JBOD,必须先删除原有的RAID级别,再进行RAID创建,但要注意,此动作会使硬盘的所有数据丢失,所以,对RAID 0JBOD,请务必经常对数据进行备份。

1.5   RAID磁盘阵列数据恢复指南

  RAID磁盘阵列设备,在使用过程中,经常会遇到一些常见故障,这也使得RAID在给我们带来海量存储空间的应用之外,也带来了很多难以估计的数据风险。本文将重点介绍RAID常见故障及相关处理方式。

  RAID故障注意事项

  1、数据丢失后,用户千万不要对硬盘进行任何操作,将硬盘按顺序卸下来,用镜像软件将每块硬盘做成镜像文件,也可以交给专业数据恢复中心进行。

  2、不要对Raid卡进行Rebuild操作,否则会加大恢复数据的难度。

  3、标记好硬盘在Raid卡上面的顺序。

  4、一旦出现问题,可以拨打专业数据恢复中心的咨询电话找专业工程师进行咨询,切忌自己试图进行修复,除非你确信自己有足够的技术和经验来处理数据风险。

  常见Raid 故障及可恢复性分析

  1、软件故障:

  a.突然断电造成RAID磁盘阵列卡信息的丢失的数据恢复。

  b.重新配置RAID阵列信息,导致的数据丢失恢复。

  c.如果磁盘顺序出错,将会导致系统不能识别数据。

  d.误删除、误格式化、误分区、误克隆、文件解密、命毒损坏等数据恢复工作。

  2、硬件损坏:

  araid一般都会有几块硬盘,其中某一块硬盘出现损坏,数据将无法读取。

  braid出现坏道,导致数据丢失,这种恢复成功率比较大。

  c.如果硬盘同时出现两块以上的损坏,恢复工作非常复杂,成功率比较低。

  案例一

  20092月,某机械制造集团的网管拨打了唯实数据恢复中心的服务电话,该公司的一台服务器,不知为何突然无法启动,数据无法读取。该服务器是采用RAID 5的工作方式。唯实数据恢复中心的工程师根据用户的陈述初步判断是硬盘的排列顺序问题。这是一个五块75G的阵列服务器,要做这块硬盘数据,至少要有400G空间。

  恢复步骤如下:

  分别对每块硬盘进行镜像,不要在原盘进行操作,以免造成二次破坏。

  通过计算首先来判断,硬盘的排列顺序,只有顺序对数据才会出来,否则数据恢复跟本是不可能会出来的。

  判断完毕这后,对这五个镜像文件来进行恢复。三天后,数据成功找回。

  raid数据恢复注意事项

  在RAID有一基本概念称为EDAP ( Extended Data Availability and Protection ) ,其强调扩充性及容错机制,也是各家厂商如: MylexIBMHPCompaqAdaptecInfortrend等诉求的重点,包括在不须停机情况下可处理以下动作:

  RAID 磁盘阵列支援自动检测故障硬盘。

  RAID 磁盘阵列支援重建硬盘坏轨的资料。

  RAID 磁盘阵列支援支持不须停机的硬盘备援 Hot Spare

  RAID 磁盘阵列支援支持不须停机的硬盘替换 Hot Swap

  RAID 磁盘阵列支援扩充硬盘容量等。

  一旦RAID阵列出现故障,硬件服务商只能给客户重新初始化或者REBUILD,这样客户数据就会无法挽回。出现故障以后只要不对阵列作初始化操作,就有机会恢复出故障RAID磁盘阵列的数据。

1.6   RAID的其他含义

  MMORPG中的定义:由一群玩家在某一地区进行的大规模作战被称为Raid

  例如:魔兽世界的副本。

  燃烧远征前多为40raid,燃烧远征后为25raid

  MMORPG游戏中 由一群玩家以团队的形式(小队形式不算RAID)在某一地区有组织的进行大规模作战,D&D游戏中首先被定义.

  既不特指是工会活动也不特指打某一个副本,更不特指是魔兽世界的活动。

  只要在MMORPG游戏中满足条件 1 团队形式 2有组织 3有目的 既为RAID

 

 

1.     RAID0

  

RAID 0(别名:条带)

  容错:没有 冗余:没有

  热备盘选项:没有 读性能:高

  随机写性能:高 连续写性能:高

  需要的磁盘数:只需2个或两个以上 可用容量:总的磁盘的容量

  典型应用:无故障的迅速读写,要求安全性不高,如图形工作站等。

  RAID 0又称为StripeStriping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

  http://vstcn.net/Upload/image/RAID0.gif

  如图1所示:系统向三个磁盘组成的逻辑硬盘(RADI 0 磁盘组)发出的I/O数据请求被转化为3项操作,其中的每一项操作都对应于一块物理硬盘。我们从图中可以清楚的看到通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。

  从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了3倍。 但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。

  RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。

  RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择。

  计算机技术发展迅速,但硬盘传输率也成了性能的瓶颈。怎么办?IDE RAID技术的成熟让我们轻松打造自己的超高速硬盘。在实际应用中,RAID 0硬盘阵列能比普通IDE 7200ATA 133硬盘快得多,时至今日,在大多数的高端或者玩家主板上我们都能找到一颗PROMISE或者HighPointRAID芯片,同时发现它们提供的额外几个IDE接口。没错,RAID已经近在眼前,难道你甘心放弃RAID为我们带来的性能提升吗?答案当然是否定的!

  实用的IDE RAID

  RAID可以通过软件或硬件实现。像Windows 2000就能够提供软件的RAID功能,但是这样需要消耗不小的CPU资源,降低整机性能。而硬件实现则是一般由RAID卡实现的,高档的SCSI RAID卡有着自己专用的缓存和I/O处理器,但是对于家庭用户来说这样的开销显然是承受不了的,毕竟为了实现RAID买两个或者更多的HDD已经相当不容易了。我们还有一种折中的办法——IDE RAID。或许这才是普通人最容易接受的方法。虽然IDE RAID在功能和性能上都有所折中,但相对于低廉的价格,普通用户看来并不在意。

  为什么要用RAID 0

  RAID 0至少需要两块硬盘才能够实现,它的容量为组成这个系统的各个硬盘容量之和,这几块硬盘的容量要相同,在家用IDE RAID中一般级联两块硬盘,一定要用同型号同容量的硬盘。RAID 0模式向硬盘写入数据的时候把数据一分为二,分别写入两块硬盘,读取数据的时候则反之,这样的话,每块硬盘只要负担一半的数据传输任务,得到的结果也就是速度的增加。

  实用的IDE RAID

  下面我们就以HighPoint HPT372 RAID控制芯片为例组建一个RAID系统,让两个硬盘成一个硬盘!

  默认的RAID模式为RAID 0,当然我们也可以根据需要选择其它RAID模式。

  无论是主板板载的IDE RAID控制芯片还是独立的PCI接口IDE RAID控制器,它们都有一个用来进行配置和工作的独立BIOS,它们的BIOS设置画面会在系统POST完成之后显示,我们可以看到这时候HighPoint HPT372 IDE RAID控制芯片的BIOS画面已经出现在屏幕上,按Ctrl+H进入控制界面。

这里我们看到可以选择的依次有Create Array(建立阵列)Delete Array(删除阵列)Create/Delete Spare(建立、删除)Select Boot Disk(选择启动硬盘)这几个选项。而在选项的下方则显示了所识别到的硬盘和它们的工作状态。我们要建立一个阵列,所以选择Create Array,在出现的画面中我们就可以完成所有的阵列建立设置工作,在Array Mode中我们可以选择建立RAID的种类,默认的是RAID 0模式,当然我们可以根据需要选择RAID 00+1JBOD等。

 

2.     RAID1

2.1.   raid 1简介

  RAID 1又称为MirrorMirroring镜像),它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。

2.2.   raid 1的工作原理

  如图所示:当读取数据时,系统先从RAID1的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘上的数据,不会造成用户工作任务的中断。当然,我们应当及时地更换损坏的硬盘并利用备份数据重新建立Mirror,避免备份盘在发生损坏时,造成不可挽回的数据损失。

2.3.   raid 1的优缺点

  由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID 1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而Mirror(镜像)的磁盘空间利用率低,存储成本高。Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。

2.4.   raid 1的制作

  前提:选购好一点的raid 卡,主流产品为台湾的promise fasttrak 100价格在320左右,支持raid 010+1,自己用可以用差一点,例如 promise smart什么的,才要130元。

  1. 物理联接:二个硬盘都要跳成主盘分别用数据线(最好是RAID卡自带的)接到RAID卡的IDE1、IDE2上,

  2. 接好并插到服务器上开机会检测到RAID卡的状态的,出现“No Array is defined......”,表示没有建立任何RAID方式,

  3. 此时按下CTRL + F

  4. 进入操作界面,

  5. 按下 [1] Auto Setup

  6. 进入到 [Auto Setup Options Menu] 中,

  7. 利用左右方向键或空格键,

  8. Optimize Array for:设成 Security 这项,

  9. 然后按下CTRL+Y保存,

  10. 出现确定选项,

  11.  Y 继续,

  12. 选择源盘,

  13.  [ Please Select A Source Disk ] 中将亮条移动到源盘上按下 ENTER 按键,

  14. 准备插入软盘,

  15. 建立镜像,

  16. 继续,

  17. 制作要一个过程,18. 40G20分钟左右,

  19. 80G40分钟左右,

  20. 完成了,

  21. 按下任意键重启,

  22. 重启后看到如下画面,array...

  23. 表示RAID建立正常,

  24. 正常建立以后,要用sfdisk分区,

  25. 安装操作系统时会提示有没有SCSI设备,在此时按下功能键F6什么的。安装promise的驱动(自带的那两张软盘),然后正常安装即可。

2.5.   RAID 1技术详析

  RAID 1是这样一种模式,拿两块盘的例子来进行说明,如图4.9所示。

  RAID 1RAID 0不同,RAID 0对数据没有任何保护措施,每个Block都没有备份或者校验保护措施。RAID 1对虚拟逻辑盘上的每个物理Block,都在物理盘上有一份镜像备份,也就是说数据有两份。对于RAID 1的写IO,速度不但没有提升,而且有所下降,因为数据要同时向多块物理盘写,时间以最慢的那个为准,因为是同步的。而对于 RAID 1 的读 IO请求,不但可以并发,而且就算顺序IO的时候,控制器也可以像RAID 0一样,从两块物理盘上同时读数据,提升速度。RAID 1可以没有Stripe的概念,当然也可以有。同样我们总结出表4.2

  

<IMG onmousewheel="javascript:return big(this)" style="ZOOM: 110%" height=426 alt="" src="http://images.51cto.com/files/uploadimg/20081204/162146856.jpg" width=430 onload="javascript:if(this.width>498)this.style.width=498;" border=0>

(点击查看大图)图4.9 RAID 1系统示意图

4.2 RAID 1系统相对于单盘的IO对比

  

<IMG onmousewheel="javascript:return big(this)" style="WIDTH: 498px; ZOOM: 140%" height=183 alt="" src="http://images.51cto.com/files/uploadimg/20081204/162204621.jpg" width=782 onload="javascript:if(this.width>498)this.style.width=498;" border=0>


 

  注:N=组成RAID 1镜像物理盘的数目。

  在读、并发IO的模式下,由于可以并发NIO,每个IO占用一个物理盘,这就相当于提升了 N 倍的 IOPS。由于每个 IO 只独占了一个物理盘,所以数据传输速度相对于单盘并没有改变,所以不管是随机还是顺序IO,相对单盘都不变。

  在读、顺序IO、随机IO模式下,由于IO不能并发,所以此时一个IO可以同时读取N个盘上的内容。但是在随机IO模式下,寻道时间影响很大,纵使同时分块读取多个磁盘的内容,也架不住寻道时间的抵消,所以性能提升极小。

  在读、顺序IO、连续IO模式下,寻道时间影响到了最低,此时传输速率为主要矛盾,同时读取多块磁盘的数据,时间减少为1/N,所以性能提升了N倍。

IO的时候和读IO情况相同,就不做分析了。写IO因为要同时向每块磁盘写入备份数据,所以不能并发 IO,也不能分块并行。但是如果控制器把优化算法做到极至的话,还是可以并发IO的,比如控制器从IO队列中提取连续的多个IO,可以将这些IO合并,并发写入磁盘,前提这几个IO必须是事务性的,也就是说LBA必须连续,不然不能作为一个大的合并IO。而且和文件系统也有关系,文件系统碎片越少,并发几率越高。

 

3.     RAID2

  从概念上讲,RAID 2 RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。

  然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。

  由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID345要简单。

  没有免费的午餐,这里也一样,要利用海明码,必须要付出数据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。

 

 

4.     RAID6

  RAID6RAID家族中的新技术,是在RAID5基础上扩展而来的。所以同RAID5一样,数据和校验码都是被分成数据块然后分别存储到磁盘阵列的各个硬盘上。RAID6加入了一个独立的校验磁盘,它把分布在各个磁盘上的校验码都备份在一起,这样RAID6磁盘阵列就答应多个磁盘同时出现故障,这对于数据安全要求很高的应用场合是非常必要的。这样搭建一个RAID6磁盘阵列最少需要四块硬盘。但是RAID6并没有改善RAID5写入性能不佳的情况,写入缓存的应用仅仅能对于这个缺点进行一定程度的弥补但是并不能从根本上解决问题。因为RAID5RAID6都可以根据应用程序来更改数据块的大小,所以它的实际性能还会受到这个因素的影响。

  在实际应用中RAID6的应用范围并没有其它的RAID模式那么广泛。假如实现这个功能一般需要设计更加复杂、造价更昂贵的RAID控制器,所以它一般也不会集成在主板上。总的来说RAID6是可以容忍两块硬盘同时出现故障而仍然可以恢复出数据的,另外他的实际容量是总容量减两块硬盘,例如80G的硬盘一共五块来做RAID6,那么他的实际可用容量就是80*5-80*2了,为240G

  RAID6的性能:

  既然RAID6是最新的RAID冗余技术,那么他的性能应该是非常不错的。

  (1)RAID6的随机读取性能:很好(当使用大数据块时)

  (2)RAID6的随机写入性能:差,因为不但要在每硬盘上写入校验数据而且要在专门的校验硬盘上写入数据。

  (3)RAID6的持续读取性能:好(当使用小数据块时)

  (4)RAID6的持续写入性能:一般。

  (5)RAID6的优点:快速的读取性能,更高的容错能力。

  (6)RAID6的缺点:很慢的写入速度,RAID控制器在设计上更加复杂,成本更高。

  RAID6技术虽好不过并不是每个企业都可以用得到的,而且他的高额价格也不是谁都承担得起的,对于大部分中小企业来说数据的保存所需级别并没有那么高,这种情况下我们只需要使用常规的RAID5即可。就现在而言,对于那些数据中心,信息中心等对数据安全级别要求比较高的企业,笔者觉得才有使用RAID6保护数据的必要。

  RAID6Reed-Solomon编码

  Reed-Solomon编码是通讯领域中经常碰到的一个算法,已经有15年以上的历史了。

  其实很多校验算法都是通讯领域最先研究出来,然后才应用到其他领域的。前面说到的XOR算法对一组数据只能产生一个校验,搞通讯的工程师们觉得不够可靠,于是就研究出很多能对一组数据产生多个校验的算法。Reed-Solomon编码是其中应用最广泛的一个,咱们以前经常用的ADSLxDSL、高速Modem都有采用。后来手机、卫星电视、数字电视、CD唱片、DVD、条码系统、还有……连高级点儿的服务器内存也用这个算法做校验和纠错

  现在存储的工程师也觉得RAID5中只能容忍一颗磁盘离线不够理想,需要一种容忍多颗磁盘离线的技术,自然就会想到Reed-Solomon编码啦。把这种算法应用到存储中,就可以让N颗磁盘的空间装应用数据,M颗磁盘的空间装校验码(对一组N个数据生成M个校验,但实际上校验码是分散在所有磁盘上的),这样只要离线的磁盘不大于M颗,数据就不会丢失。

  Reed-Solomon编码理论中有一个公式:

  N + M + 1 = 2b次方

  其中b是校验字的位数。(校验字是生成校验过程需要用的一个东东,不是最后的校验码。)举例来说,如果用8位的字节做校验字,那么M + N = 255,而RAID6是特指M = 2,这样N = 253

  就是说,用8位字节做校验字的话,理论上一个RAID6的磁盘组可以容下253颗磁盘。

  当然啦,实际应用中,太多的磁盘一起做运算会严重影响性能,所以阵列控制器和芯片的设计者都会把磁盘组的容量限制在16颗左右。

  从功能上讲,能实现两颗磁盘掉线容错的,都叫RAID6。但是实行这一功能的方式却有很多很多。

  IntelP+Q RAID6NetAppRAID-DPHPRAID5-DP,还要很多实验室中的原型机都能实行这个功能。但是由于机制不同,各种所谓的RAID6,其性能表现、磁盘负载分布、错误恢复方式都完全不同。

  你让我从哪说起好哩?

  三、基于P+QRAID6

  在Intel80333IOP芯片中,有一个新的引擎叫P+Q单元,是专门用来处理RAID6加速的。详情请查阅Intel官方网站。

  对比RAID5的机制,IntelP+Q RAID6是这样写磁盘的:

  这里每个条带中的P,跟RAID5里面的P意义完全一样,就是同一条带中除Q以外其它数据的XOR运算结果。

  而Q呢,就是理解这个技术的关键所在了。

  咳~咳~听好了。

  Q是同一条带中各数据的女朋友们进行XOR运算的结果。

  别翻白眼啊,书上就是这么写的啊!哦,还是英文的,我翻译给你听。

  把条带中每个数据分别GF一下,然后这些结果再XOR,就得到Q

  这个GF变换,就是这个淘气的伽同学当年为了逃避老师点名,而发明的一种教室换座位方法。按照这种方法,每个人都不会坐在自己的座位上,而且每个人都肯定会有座位。而且任意个同学的座位号进行XOR运算之后,仍然跑不出这个教室里的座位号。

  扯太远啦!回到正题。

  在Intel 80333IOP中存着两个表格,分别对应GF正向变换和反向变换。任何一个8位二进制数,都可以直接在表格中查到对应的GF变换结果。

  这两个表格分别在Intel 80333IOP研发手册的第445页和446页,不过我估计大部分人会懒得去看。也是,看了又能怎么样呢?反正Intel已经把那玩意固化到芯片里了。

  如果一颗磁盘掉线,根本不需要QP直接就搞定了,跟RAID5一样。

  如果两颗磁盘掉线,又分做两种情况:

  A)坏的地方有Q。这种情况跟RAID5坏一颗磁盘一样,用XOR就恢复了。

  B)坏的地方没有Q。用GF变换加XOR一起搞定。

  结合上面表格的例子,如果磁盘5和磁盘6掉线。那条带1和条带2就属于情况A;而条带3456属于情况B