- 数据恢复技术与典型实例
- 扈新波编著
- 1597字
- 2020-08-26 12:15:21
4.8 RAID简介
随着计算机应用的日益普及,人们对计算速度和性能的要求也逐渐提高。同其他所有机器设备一样,计算机的性能也同样遵循着“木桶定理”,即一个木桶能盛下多少水,不是由组成木桶壁最长的一块木板决定的,而是由最短的一块木板来决定的,整个系统的性能不取决于性能最高的设备,而是取决于性能最低的设备。
因此,就如同我们攒机一样,固然要考虑 CPU 和内存的作用,但是主板、显卡和硬盘的性能也同样重要。在提升显卡性能方面,现在业界普遍采用双显卡的方法;而为了提升硬盘的性能,硬盘也同样采用了这种方法,即把多个硬盘通过一个硬件卡连接起来,组成一个阵列,多个硬盘同时读写,这样也就起到了提升硬盘性能的作用。
这种把多个硬盘同时连接进行数据读取的技术,我们称为 RAID 技术。RAID 是英文Redundant Array of Inexpensive Disks的缩写,中文简称为磁盘阵列。其最初主要应用于高端服务器市场,主要是为了提升服务器的性能而设计的。但是随着个人用户对计算机性能的要求越来越高,RAID技术的日趋成熟及构建成本的下降,个人用户也开始使用RAID技术。
本节将从RAID的特点、RAID的分类、RIAD的架设等几方面来介绍RAID,希望能够帮助读者全面了解RAID,并能在数据恢复过程中完全应用这些知识。
4.8.1 RAID的优点
通过上面的介绍,相信读者已经知道 RAID 就是一种由多块磁盘构成的冗余阵列。虽然RAID包含多块磁盘,但是在操作系统下却是作为一个单一的大型存储设备而出现的。既然其设计之初就是为服务器而设计的,那么根据其需要,RAID又有不同的分类,每一种分类则侧重于不同的应用方向。
RAID 的突出优点就是具有超快的速度和巨大吞吐量,除此之外,RAID 还具有较强的容错能力,不会因为单个磁盘的损坏而导致所有硬盘的数据丢失。下面将就这几个特点一一进行说明。
1.高速的传输速率,低廉的成本
在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上组成一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。这也正是RAID最初想要解决的问题。
服务器所使用的也都是高端的产品。而针对当前的高端产品,我们可以算这么一笔账,现在250GB的硬盘价格为850元,而一块500GB的硬盘价格为2200元,由此我们不难看出,两块250GB的硬盘价格要低于一块500GB的硬盘价格,从这个意义上来说,RAID的成本还是要低很多。
2.RAID可以提供容错功能
这是RAID的第二个特点,因为RAID卡通过其特有的硬件来实现基于硬件的容错功能,这种数据校验不同于我们的软件CRC校验,因此,RAID的数据可靠性更高。
RAID根据其用途不同,按照单纯增加容量、单纯保护数据安全等两大类进行不同方式的连接,具体的分类主要有RAID 0、RAID 1、RAID 3、RAID 5这4种格式。其中RAID 0是通过多个硬盘的串联来实现大容量的磁盘空间的,而RAID1则是每一个存有数据的硬盘都有另外一个硬盘对其进行备份,因此,这种方式是最大化的数据安全,而RAID 3和RAID 5则都是从这两种的基础上演化而来的,读者只要重点掌握RAID 0、RAID 1就可以满足一般的应用了。
4.8.2 RAID 0
RAID 0的一个重要关键词就是“串联”,由此我们可以很容易理解,RAID0就是把多块硬盘连接在一起形成一个容量更大的存储设备。其实最简单的RAID 0技术只是提供更多的磁盘空间,并不具备磁盘性能的提升,但是我们也可以通过设置来提高磁盘的性能和吞吐量。相比其他RAID形式,RAID 0没有冗余或错误修复能力,其成本也是最低的,是应用较为普遍的一种。
RAID 0在磁盘之间的连接既可以使用硬件的形式通过智能磁盘控制器实现,也可以使用操作系统中的磁盘驱动程序以软件的方式实现,如图4-15所示。
图4-15 RAID 0结构图
在图4-15中,把4块磁盘组合在一起形成一个独立的逻辑驱动器,其容量也就是4块硬盘的总容量。数据是依次写入的,先写入第一块硬盘,当一块硬盘的空间用尽时,数据就会被自动写入到下一块硬盘中。
提示
这种设置方式只有一个好处,那就是可以增加磁盘的容量。而速度方面则还是与单块硬盘的读写速度一样,没有任何的提升,这是因为同一时间内只能对一块磁盘进行读写操作。
因为操作系统将这种方式理解为只有一块硬盘存在,因此,在柱面和扇区的标记上也是从第一块硬盘一直标记到最后一块硬盘。这样的话,如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,无法继续使用,也就相当于单块硬盘中的一部分出现了故障,而导致整个硬盘无法使用。因此使用纯RAID 0方式的可靠性仅相当于单独使用一块硬盘的1/N(N是所使用硬盘的个数)。
从上述来看,RAID 0似乎只有容量方面的提升,但降低了可靠性,这样似乎有些得不偿失,还不如使用单个的硬盘来得方便,至少应该有更多方面的好处,我们才会采用这种方案。事实上,我们也可以通过改变配置方式来实现磁盘性能的提高。
与前文所述的顺序写入数据不同,我们可以通过创建带区集,在同一时间内向多块磁盘写入数据,具体如图4-16所示。
图4-16 RAID 0带区集
首先我们说一下什么是“带区集”。带区集由同等大小的至少两磁盘,组合多达32个磁盘上的可用空间区域。当数据写入到带区集时,它均匀写入所有的磁盘,一行一次,每次写入64KB。当使用带区集时可以存储比使用单个磁盘大的数据量。如果计算机磁盘同时访问时因为并发输入/输出(I/O)命令同时将所有磁盘上的带区集增加到磁盘操作读取和写入操作的速度,系统和引导分区也能属于带区集。
由上面的介绍可知,我们可以把“带区集”理解为磁盘读写的一个最小数据单位,那么在图4-16中,系统向磁盘设备发出的读写命令被转化为4项操作,其中的每一项操作都对应于一块硬盘。我们从图中可以清楚地看到通过建立带区集,原先顺序写入的数据被分散到所有的4块硬盘中同时进行读写。4块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。
这种方法虽然可以提高磁盘的读写性能,但是要特别注意带区的大小,直接牵扯到硬盘的性能发挥。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的读写操作,使数据的读写仍然只局限在少数的一两块硬盘上,不能充分发挥出并行操作的优势。另一方面,如果带区过小,任何读写指令都可能引发大量的存储操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重选择带区的大小。
带区集可以把数据均匀地分配到所有的磁盘上进行读写。如果我们把所有的硬盘都连接到一个控制器上的话,可能会因为带区的设置不当导致一些不好的效果,而且也容易造成控制器或总线的超负荷运转,从而引发问题,而为了避免出现上述问题的出现,我们可以采用其他的方法加以平衡,如图4-17所示。
图4-17 多控制器的RAID 0结构图
这样,当我们进行一项读写操作时,相当于将原数据流分成了两部分,而这两部分又同时写在4块硬盘上,这样也就实现了减轻控制器负荷的目的,从而提高了硬盘的性能。当然,这种方法的一种极端方式就是为每一块硬盘都配备一个专门的磁盘控制器,那样将实现最大化的磁盘性能。
注意
虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。为此,又出现了RAID1方案。
4.8.3 RAID 1
RAID 1与RAID 0走的完全不是一条道路。RAID 1主要是解决系统的可靠性和可修复性,因此其实现成本非常高,适合于保存那些关键性的重要数据。
RAID 1又被称为磁盘镜像,每一个磁盘都具有一个对应的镜像盘。在对任何一个磁盘进行读写操作时,其镜像盘也会做同样的操作,以保持镜像盘与原盘完全一致,因此系统可以从一组镜像盘中的任何一个磁盘读取数据。
很明显,如果阵列中有2块硬盘,那么我们所能使用的仅仅是一块硬盘的容量,因此,在RAID 1中我们所能使用的空间却只有磁盘容量总和的一半。这也一定会提高系统的成本,而图4-18显示的是由4块硬盘组成的磁盘镜像,其中可以作为存储空间使用的仅为两块硬盘。
图4-18 4块硬盘组成的RAID 1结构图
从上面我们不难看出,RAID 1的突出优点就是任何一块硬盘的故障都不会影响到系统的正常运行,而原磁盘与镜像磁盘同时出现故障的几率我们几乎可以忽略不计。
因此,只要能够保证一对镜像盘中至少有一块磁盘可以使用,那么RAID 1就可以保证磁盘的正常使用。即使在很糟糕的情况,每一对镜像盘中都有一个硬盘出现了故障,那么RAID 1也可以在只有一半磁盘的情况下正常工作而不受影响。从这一点上也足以看出RAID 1所保存的数据的高可靠性。
4.8.4 RAID 0+1
因为RAID 1在写数据时要有两倍的数据通过控制器,因此磁盘控制器的负荷也是很重的,而为了不使其成为性能的瓶颈,那么,只要采用多个磁盘控制器就可以有效地解决这个问题,如图4-19所示。
图4-19 多控制器的RAID 1结构图
使用多个磁盘控制器与使用多个硬盘也是同样的道理,不仅可以改善性能,还可以进一步提高数据的安全性和可用性。
假设我们按照如图4-19所示的方式将原盘和镜像盘分别连接到不同的磁盘控制器上,那么即使一个磁盘控制器出现问题,系统仍然可以使用另外一个磁盘控制器继续工作。这样,就可以把一些由于意外操作所带来的损害降低到最低程度,从而更加保证数据的完整性。
值得一提的是,虽然在RAID中有硬盘损坏后可能系统仍然可以正常使用,但是这时的系统已经不如以前可靠,如果另一份硬盘出现问题,那么数据必然要丢失。因此,在出现这种问题后,我们应当及时更换损坏的硬盘,避免出现新的问题。
在更换新硬盘之后,首先要保证的就是镜像盘与圆盘的数据一致,也就是我们所说的镜像同步。镜像同步一般都需要很长时间才能够完成,在此过程中,外界对数据的访问不会受到影响,但是由于复制数据需要占用一部分的资源,所以可能会使整个系统的性能有所下降。
注意
介绍完了 RAID的两种基本模式,有的读者可能会感觉 RAID1好,单独使用 RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。
4.8.5 RAID 3
RAID 3与RAID 0和RAID 1相比,主要在使用方便性和数据校验方面做了更多的完善。对于我们普通用户来说,也许一次普通的重新启动并不会有太大的影响,也更谈不上什么损失,但是对于服务器来说,那就另当别论了。
因此,如果服务器使用 RAID 阵列,而如果我们要对其进行相应的硬盘维护,就必须要关闭系统切断电源后才能进行,这对每秒就有成千上万的访问量的服务器来说,其损失是不可估量的。
因此,RAID的热插拔就是允许用户在不关闭系统而且不切断电源的情况下取出和更换硬盘。如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。现在,使用热插拔技术只要简单地打开连接开关或者转动手柄就可以直接取出硬盘,而系统仍然可以不间断地正常运行。
而作为硬盘中所存储的数据,则更是需要RAID做更多的工作来保证其正确性,因此,也就采用了数据校验技术。简单地说,我们可以把校验想象为一种二进制的校验和,一个可以告诉你其他所有字位是否正确的特殊位。拿最简单的奇偶校验举例来说,其常被用来确定数据是否被正确传送。
因为无论什么数据在计算机内都是以0、1的形式存在的,因此,对于整个数据来说,我们可以简单计算数字位1的个数,并在字节内加入该数值。在数据的接收方,如果数字位1的个数与该数值相同,那么该字节是正确的。同样对偶数校验也是如此。然而,如果数字位1的个数和校验位的奇偶性不一致的话,则说明数据在传送过程中出现了错误,需要进行修正。
虽然校验位可以告诉我们某个字节是否正确,但是无法告诉我们到底是哪一位出现了问题。也就是说校验位可以告诉我们数据出现了错误,但并不知道错误的具体位置。这对于RAID是远远不够的,对数据进行错误检测肯定是非常重要的,但是如果不能对错误进行修复,那么我们仍然无法提高系统的可靠性。
RAID系统也使用了类似的校验方法,校验块中的每一位都用来对其他关联块中的所有对应位进行校验。除此之外,RAID主要是借助磁盘控制器的错误报告检测错误位置并进行修复。如果磁盘控制器在读取数据时没有发出任何错误报告,那么系统将会视该数据为正确数据,继续使用,否则会报错并进行相应的处理。
RAID 3采用的是一种较为简单的校验实现方式,使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。例如,在一个由4块硬盘构成的RAID 3系统中,3块硬盘将被用来保存数据,第4块硬盘则专门用于校验。这种配置方式可以用3+1的形式表示,具体如图4-20所示。
图4-20 RAID 3磁盘校验结构
在图4-20中,我们用相同的颜色表示使用同一个校验块的所有数据块,斜线标出的部分为校验块,校验块和所有对应的数据块一起构成一个带区。其中第4块硬盘中的每一个校验块所包含的都是其他3块硬盘中对应数据块的校验信息。
而RAID 3的这种结构,使得其写入数据时,会比RAID 0、RAID 1更复杂一些,无论向磁盘写入多少数据,都必须首先计算与该数据块同处一个带区的数据块的校验值,然后再将值写入到校验块中。例如,当我们向图4-20中的数据块写入数据时,必须重新计算所有3个数据块的校验值,然后重写位于第4块硬盘的校验块。由此我们可以看出,一个写入操作事实上包含了数据读取(读取带区中的关联数据块)、校验值计算、数据块写入和校验块写入4个过程。系统开销大大增加。
我们可以通过适当设置带区的大小使RAID系统得到简化。如果某个写入操作的长度恰好等于一个完整带区的大小(全带区写入),那么我们就不必再读取带区中的关联数据块计算校验值。我们只需要计算整个带区的校验值,然后直接把数据和校验信息写入数据盘和校验盘即可。因此,RAID 3的系统资源消耗要高于RAID 0 和RAID 1。
提示
RAID 3的最大不同之处就在于不仅可以像RAID 1那样提供容错功能,而且整体的系统资源使用率很低,随着所使用磁盘数量的增多,系统资源所占的比率也会越来越小。举例来说,如果RAID中使用了4块硬盘,那么总开销就会降到25%(1/4),如果是8块硬盘,那么总开销就只有12.5%(1/8)。
4.8.6 RAID 5
RAID 5在RAID 3的基础上又有了发展,RAID 5和RAID 3的最大区别在于RAID 5不是把所有的校验块集中保存在一个专门的校验盘中,而是分散到所有的数据盘中。这就使得在写入数据的同时,也将校验值一同写入,而不必再单独写入。这样不但降低了系统资源的消耗,也防止了校验硬盘出现故障时所产生的问题,具体如图4-21所示。
图4-21 RAID 5磁盘校验结构
以上我们由易到难、由简单到复杂地介绍了RAID的各个组成方式。从上述内容我们可以看出,从RAID 0到RAID 5 是一步一步慢慢发展起来的,也是根据我们实际的应用需要而设计出的不同的应用方案。
RAID的每一种类别都有其特定的优点和缺点,而且其用途也不尽相同。所有的组成方式,从我们数据恢复的角度来讲,在具体进行恢复操作时,首先要根据其RAID结构做相应的准备,如果是具有冗余功能的RAID 1、RAID 3、RAID 5等结构的话,那么我们首先要对单个的硬盘进行替换,保证系统的正常运行,而后再对故障硬盘进行修复。
如果是RAID 0结构的话,那么就更为复杂,要将其作为一个整体系统来对待,不能孤立地进行数据恢复,否则将南辕北辙。
下面我们就将上述几个RAID结构的应用范围、优点、缺点做一个总结,以便于读者对比和使用,如表4-1所示。
表4-1 RAID结构对比