数字资源存储、仓储和发布的标准规范建设
上QQ阅读APP看书,第一时间看更新

1.3.4 磁盘阵列

磁盘阵列是一种高级的计算机应用技术,主要应用于服务器领域。其原理是利用数组方式来做磁盘组,配合数据分散排列的设计,提升数据的安全性。RAID也可以看作是一种特殊的数据备份方式,而其数据恢复也有不同于单个硬盘的特色。最早的多盘系统思想出现在1987年美国加州大学伯克利分校的三位研究人员(David A.Patterson, Garth Gibson和Randy H.Katz)发表的学术论文“A Case of Redundant Array of Inexpensive Disks”中,即廉价磁盘冗余阵列方案。这篇论文的主要思想就是将多个容量较小、相对廉价的硬盘驱动器进行有机组合,使其性能超过单价较贵的大容量硬盘。这一设计思想很快受到了重视,并且得到了实际应用。随着基于上述思想的多盘系统的不断出现,需要对各种技术进行必要的规范并制定相应的标准,为此工业界通过了一个称为磁盘冗余阵列(redundant arrays of inexpensive disks, RAID)的标准方案。根据RAID系统对磁盘数据分布以及校验方式的不同,RAID系统可以分为7个级别(从RAID 0到RAID 6)。其中,RAID 0, RAID 1, RAID 3以及RAID 5是较为常用的级别。

RAID磁盘阵列就是将n台硬盘通过RAID控制器(RAID controller)结合成虚拟单台大容量的硬盘使用,其特色是n台硬盘能加快读取速率及提供容错性。因此,某些组成RAID的方案的主要特色就是在数据存取速度提高的同时提供一定的容错性,有效地解决了冗余的要求。RAID系统使得多个磁盘系统并行工作,这样增加了数据出错的概率。为了对这种可靠性下降进行补偿,RAID特别增加了奇偶校验数据存储,以挽救由于某种噪音形成的数据丢失。

RAID的一个基本概念称作强调扩充性及容错机制(extended data availability and protection, EDAP),可在无须停机的情况下自动检测故障硬盘、重建硬盘坏轨的资料、进行硬盘备份(hot spare)、进行硬盘替换(hot swap)、扩充硬盘容量等。

一旦RAID阵列出现故障,硬件服务商只能给客户重新初始化或者重建(rebuild),这样客户数据就会无法挽回。因此,用户须掌握RAID 0、RAID 1、RAID 5以及组合型RAID系列磁盘阵列数据恢复的方法,出现故障以后只要不对阵列做初始化操作,就有机会恢复磁盘阵列的数据。

RAID技术主要包含RAID 0~RAID 7等数个规范,它们的侧重点各有不同。

1.RAID 0组成原理

RAID 0被称为“容量之王”,这样说主要是因为在同等预算的硬件配置中,RAID是所有存储技术中容量最大的、最早被用来获得海量的数据存储。因此,说到海量存储,肯定就会想到RAID 0。海量存储就是在RAID 0技术的基础上推出并实现的概念,从诞生到现在,一直都有很大的市场,是很多中小企业海量数据存储的首选方案。

因为RAID 0没有采用任何冗余方式进行存储,所以严格地讲RAID 0不能算作RAID系列的成员。但是对于某些应用,例如超级计算机,性能和容量作为其基本的考虑,低成本要比可靠性重要。

在RAID 0系统中,用户和系统数据分布在磁盘阵列的所有盘面上。与单个大容量磁盘相比,其优点主要是:如果两个I/O请求同时等待不同的数据块,那么这些数据块就有可能分布在不同的磁盘上。这样就可以并行处理这些请求,减少I/O的排队时间。

RAID 0以及其他级别的阵列均采用条带(stripe)的形式在可用磁盘上分布存放数据。用户数据和系统数据被看成是存储在一个逻辑磁盘上,磁盘以条带的形式划分,每个条带是一些物理的块、扇区或者其他基本单位。数据条带以轮转方式映射到连续的阵列磁盘中。可以定义每个磁盘映射一个条带,并将一组逻辑连续的条带定义为条带集。在这些条带上,数据是这样组织的:在一个有n个磁盘的阵列中,第一组的n个逻辑条带依次物理存储在n个磁盘的第1个条带上,构成第一个条带;第二组的n个逻辑条带分布在每个磁盘的第2个条带上,形成第二个条带;按照同样的组织,形成更多的条带。这样分布数据的特点就是,如果单个I/O请求由多个逻辑相邻的条带组成,则最多可以实现n个条带的请求并行处理,提高I/O的吞吐率。

在高速数据传输的应用场合,由于RAID 0没有冗余备份,其性能主要取决于主机的请求方式以及数据分布。为了适应高速传输要求,首先在主存和各个磁盘间应存在高速的传输路径,即在内部控制总线、主系统I/O总线、I/O适配器和存储总线上应有高速路径。其次,磁盘阵列I/O请求方式上如果是大量逻辑相邻的数据,则单个I/O请求可以实现多个磁盘的并行数据传输,系统效率将会大大提高。如果每次I/O请求的数据量不大,但是请求次数频繁,可以通过平衡多个磁盘中的I/O负载以提高I/O执行速度。当条带的容量较大时,单个I/O请求就不会出现跨磁盘进行存取的情况,这样就可以实现多个等待I/O的请求并行处理,从整体上减少每个请求的排队时间。

2.RAID 1组成原理

RAID 1通过数据镜像来提升容错性。一个RAID 1至少由两块硬盘构成。如前所述,每个写操作都同时作用在两块磁盘上。对于硬件RAID而言,此操作对主机是完全透明的。发生磁盘故障时,RAID 1的数据恢复代价是所有RAID级别中最小的。RAID 1采用简单的备份方式实现数据的冗余。与RAID 0一样,RAID 1也采用数据条带化分布存储,但是每个逻辑条带映射到两个不同的物理磁盘组中,在磁盘阵列中每个磁盘均有一个包含相同数据的镜像磁盘。RAID控制器将利用镜像磁盘中的数据进行数据恢复,并同时继续对外提供服务。RAID 1适用于那些对高可用性有需求的应用。

RAID 1实现的原理是:它同样需要两块或两块以上同厂家、同型号、同容量的硬盘来搭建;不过与RAID 0不同的是,RAID 1需要的硬盘数量必须是双数,RAID 0无此需要;所组成的磁盘阵列,在RAID 0中是所有硬盘容量之和,而在RAID 1中则是所有硬盘容量的一半。RAID 1的实质是实现单机数据热备的功能。

双机热备就是在两台机器上运行相同的系统,以软件来实现数据的双机互备,如果一台机器出现故障,马上通过管理软件切换到另外一台机器,以保障系统的稳定运行。RAID 1的运行过程与双机热备原理基本一致,不同的是RAID 1是实现单机热备,在同一台机器所组成的磁盘阵列的双数硬盘上,使用虚拟技术对服务器硬盘进行平均分区,双区内运行的每一个变化相互实时镜像存储,并进行冗余记录。这样,当一块硬盘甚至一整个存储区域突然出现故障时,另外一个硬盘存储区域能够对之前的应用进行无缝切换,从而保证系统运行的完整性。

RAID 1具有如下基本特点:

1)读请求可由包含请求数据的两个磁盘中的某一个提供服务,这样就可以找到最小的寻道时间和旋转延迟的磁盘,以提高读速率。

2)写请求需要更新两个对应的条带,这种更新完全同步。因此,写性能由两个盘中较慢的写来确定。RAID 1的写相对于其他级别的阵列没有额外的操作,所以无“写损失”。

3)当一个磁盘的数据被损坏时,可以从另一个磁盘中得到恢复。

4)RAID 1价格较贵,需要支持两倍于逻辑磁盘的磁盘空间。因此,RAID 1的配置只限于存储系统软件、数据和关键文件的驱动器中。这种应用情况下,RAID 1可以提供数据的实时备份能力,如果数据有所损失,可以从备份盘中立即恢复。

5)如果有大量的读数据要求,则RAID 1能实现高速的I/O速率,其性能可以达到RAID 0的两倍。然而,如果I/O请求中大部分是写请求,那么其性能将与RAID 0差不多。那么在读请求的概率高的数据传送密集型应用中,RAID 1提供了对RAID 0改进的性能。

3.嵌套RAID

许多数据中心对RAID阵列的数据冗余和性能都有需求。RAID 0+1和RAID 1+0集成了RAID 0的性能优势和RAID 1的冗余特征,将镜像和分带的优点组合起来。这类RAID需要由偶数数量的磁盘构建,且至少需要四块磁盘。

RAID 1+0也被称为RAID 10或RAID 1/0。类似地,RAID 0+1也被称为RAID 01或RAID 0/1。RAID 1+0适用于写密集、随机访问、数据量小的I/O负载,具有以下特点:

• 高事务率的联机事务处理(online transaction processing, OLTP);

• 大型消息服务;

• 需要高I/O吞吐率、随机访问和高可用性的数据库应用。

RAID 1+0通常被称作“分条的镜像(striped mirror)”:它的基本构成是镜像对。也就是说,数据首先被镜像,然后再将两个副本分别分条存储在RAID集的多个硬盘上。当替换故障磁盘时,只需重建镜像,即阵列控制器利用镜像组中的幸存磁盘来完成数据恢复,并继续提供服务。幸存磁盘中的数据将被复制到新替换的磁盘中。

RAID 0+1也被称作“镜像的分条(mirrored stripe)”:它的基本构成是条带。这意味着,数据将首先分条存储到各个硬盘上,然后再对条带生成镜像。当一块磁盘失效时,整个条带都将失效。重建操作必须复制整个条带:从幸存条带的各磁盘中将数据复制到失效条带的相应磁盘上。这将给幸存磁盘带来额外的和不必要的I/O负载,并且引发二次磁盘失效。

4.RAID 2组成原理

RAID 2采用并行存取阵列,所有磁盘成员都进行对I/O请求的执行。驱动器的轴是同步旋转的,这样每个磁盘上的每个磁头都在同一位置。

RAID 2也采用数据条带的方式进行存取,在RAID 2中,条带非常小,譬如一个字节或一个字。各个数据盘上相应位经过校验计算出保护位,将信息位和保护位分别存放在不同的磁盘上。通常有专用的磁盘用存储保护位,而保护位则采用汉明编码方式得到。这种编码方式可以纠正一位错误,检测出两位错误,这也使得RAID 2成为RAID系统中最为复杂的等级之一。

由于汉明码是以位为基础进行校验的,因此在RAID 2中,一个硬盘在一段时间内只存取一位的信息。例如,左边为数据阵列,阵列中的每个硬盘一次只存储一个位的数据。同理,右边的阵列(称之为校验阵列)则是存储相应的汉明码,也是一位一个硬盘。因此,RAID 2中的硬盘数量取决于所设定的数据存储宽度。

在写入时,RAID 2在写入数据位的同时还要计算出它们的汉明码并写入校验阵列,读取时也要对数据即时地进行校验,最后再发向系统。由于汉明码只能纠正一位的错误,所以RAID 2也只能允许一个硬盘出问题,如果两个或两个以上的硬盘出问题,RAID 2的数据就将受到破坏。由于数据是以位为单位并行传输,所以传输率相当快。

虽然RAID 2比RAID 1所用的磁盘少,但是其价格仍然比较高,冗余磁盘的数目与数据磁盘数目的对数成正比。对于单个读取请求,所有磁盘同时进行读取操作,请求的数据和相关的保护位读出后传送到阵列控制器。如果出现在汉明码纠错范围内的单位错误,那么控制器马上可以识别并纠正。这一过程一般不会影响读取的速度。对于单个写操作,数据盘和校验盘都需要进行相应的写操作。RAID 2一般应用于多磁盘易出错环境中,对于单磁盘而言其意义不是很大。

RAID 2是早期为了能进行即时的数据校验而研制的一种技术(这在当时的RAID 0, RAID 1等级中是无法做到的),从它的设计上看也主要是为了即时校验以保证数据安全,针对当时对数据即时安全性非常敏感的领域,如服务器、金融服务等。但由于花费太大,目前已基本不再使用,转而以更高级的即时检验RAID所代替,如RAID 3, RAID 5等。

5.RAID 3组成原理

RAID 3同RAID 2类似,都是将数据条块化分布于不同的硬盘上,其区别在于RAID 3的存储数据组织结构与RAID 2相类似。但是它与RAID 2不同的是:无论磁盘阵列数目有多少,RAID 3只需要单个冗余校验盘。在RAID 3中,数据分布在不同的较小的条带上,并且进行并行方式读写操作。RAID 3没有采用纠错码,而采用对所有数据盘上相同位置的数据进行奇偶方式校验。

如果在RAID 3阵列中某一个磁盘驱动器不能工作时,那么可以通过存取奇偶校验盘的数据以及其他驱动器的数据来对出错磁盘进行数据重构。这样,当更换到不能工作的磁盘后,新的磁盘也能够恢复原有的数据。数据的再生过程可以简单描述如下:

假设RAID 3磁盘阵列中共有5个磁盘驱动器,其中前4个作为数据盘使用D0至D3,最后一个D4磁盘作为奇偶校验使用,那么奇偶校验的第i位计算公式如下所示:

D4(i)=D3(i)D2(i)D1(i)D0(i)

如果磁盘D1不能正常工作,那么可以通过两边同时异或D4(i )D1(i ),得:

D1(i)=D4(i)D3(i)D2(i)D0(i)

由上可见,当阵列中某一个磁盘数据出错时,都可以从剩余磁盘相应条带中重新生成相应数据。

由于数据以较小的条带存储,RAID 3可以获得非常高的数据传输率。任何数据读/写请求都会使数据盘进行并行操作,对传输大量数据非常有利。在使用RAID 3时,校验磁盘很容易成为整个阵列的速度瓶颈,因此RAID 3很少被人们采用。在RAID 3系统中,数据的写入操作会在多个磁盘上进行,然而不管是向哪个数据盘写入数据,都需要同时重新写校验盘的相关信息。对于那些经常需要执行大量写入操作的应用而言,校验盘的负载将会很大,无法满足程序的运行速度,从而导致整个RAID系统性能的下降。为此,RAID 3更加适用于那些写入操作较少、读取操作较多的应用环境,如数据库和Web服务器等。

6.RAID 4

从RAID 4开始,磁盘阵列均采用了独立的存储技术,每个磁盘阵列成员的操作是完全独立的,各个I/O请求能够并行完成。那么独立存取方式将更适合于高速数据请求传输的应用,而较少应用于单次请求需要高速数据传输的场合。

RAID 4和RAID 3很相似,数据都是依次存储在多个硬盘之上,奇偶校验码存放在独立的奇偶校验盘上。唯一不同的是在数据分割上,RAID 3以位为单位,而RAID 4以数据块为单位,以备磁盘损坏时重构数据。条带是在磁盘块层次完成的。

RAID 4也使用一个校验磁盘,各磁盘相同位置的分段形成一个校验磁盘分段,放在校验磁盘中。这种方式可在不同的磁盘平行执行不同的读取命令,大幅提高磁盘阵列的读取性能。RAID 4的数据磁盘支持独立访问。因此,某个数据单元可以从单块磁盘中读写,而无须访问整个条带。RAID 4提供了很好的读吞吐率和较好的写吞吐率。但写入数据时,因受限于校验磁盘,同一时间只能做一次。由于校验磁盘和RAID 3一样,也形成其性能的瓶颈。

RAID 4使用称为“加重平均纠错码(海明码)”的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 4技术实施更复杂,因此在商业环境中很少使用。

7.RAID 5

RAID 5是一种兼顾存储性能、数据安全和存储成本的存储解决方案。

RAID 5需要由三块或三块以上同厂家、同型号、同容量的硬盘搭建,硬盘需要支持热插拔,所组成的阵列容量大于所有硬盘容量减去一块硬盘的容量之差。以三块硬盘组成的RAID 5阵列为例,所组成的阵列中有A、B、C三块硬盘,A盘、B盘和C盘都负责存储数据,在三盘数据存储之外,还会在存储的同时自动生成奇偶校验信息,分别存储在不同的硬盘里,占据相对微小的空间。奇偶校验信息耗费的空间有限,但恢复数据的能力却无比强大。

当A盘、B盘、C盘中的任何一块硬盘出现故障时,拔出故障盘,换上无故障的新盘,存储于另外一盘中的相对奇或偶校验能依据存储在不同盘中的奇偶校验信息对数据进行有效的恢复。

RAID 5的设计原理决定了其最大的优势:实现存储容量与系统稳定性(或称数据安全性)的和谐统一,最大限度地满足用户的存储需求。

RAID 5需要由三块或三块以上的硬盘搭建,所组成的阵列容量大于所有硬盘总容量减去少于一块硬盘容量的差值,由此而来的阵列容量介于RAID 0与RAID 1之间,这样对高速硬盘的高昂采购成本就有了较为有效的控制;RAID 5通过占用每块硬盘空间的很少一部分对各硬盘存储的数据进行奇偶校验实时记录,当存储数据的一块硬盘出现故障时,通过热插拔设备马上更换新的硬盘上去,新的硬盘会在很短的时间内以另外一块盘中存储的奇或偶校验值记录信息作为依据,将故障硬盘内存储的所有数据进行有效恢复,这样对系统的稳定性起了很好的补充作用。RAID 5也有其缺点,总体来看有两点:

1)存储速率有所降低:作为RAID 5保障系统稳定与数据安全的手段,当对数据进行存储时,由于要同时对存储的单个数据包进行双硬盘奇偶校验信息备份,使得其存储速度相对单硬盘无校验存储的方式有所降低。

2)数据的安全性相对打折:在RAID 5中,采取三硬盘存储的方式,如果其中的两块硬盘同时出现故障,由于存储在两盘中的一些配对奇偶校验信息同时丢失,就再也无法找到能够恢复数据的备份信息,其后果必然是导致整体数据无法完整恢复。

RAID 5相对RAID 0容量和RAID 1稳定的极端表现,展示了更多的包容性,实现了成本与性能的更加融合。在安全级别为中高级的数据存储市场中,RAID 5是目前应用最广泛的存储技术。

8.RAID 6

RAID 6是由一些大型企业提出来的私有RAID级别标准,它的全称为“Independent Data Disks with Two Independent Distributed Parity Schemes”,即带有两个独立分布式校验方案的独立数据磁盘。这种RAID级别是在RAID 5的基础上发展而成的,因此它的工作模式与RAID 5有异曲同工之妙。不同的是,RAID 5将校验码写入一个驱动器,而RAID 6将校验码写入两个驱动器,这样就增强了磁盘的容错能力。同时,RAID 6阵列中允许出现故障的磁盘也就可以有两个,但相应的阵列磁盘数量最少也要四个。

RAID 6阵列中,每个磁盘中都具有两个校验值,而RAID 5里面只能为每一个磁盘提供一个校验值。由于校验值的使用可以达到恢复数据的目的,因此多增加一位校验位,数据恢复的能力就越强。不过在增加一位校验位后,就需要一个比较复杂的控制器来进行控制,同时也使磁盘的写能力降低,并且还需要占用一定的磁盘空间。因此,这种RAID级别应用还比较少,但相信随着RAID 6技术的不断完善,也会得到广泛应用。

9.RAID 7

RAID 7的全称为“Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates”,即最优化的异步高I/O速率和高数据传输率。它与其他RAID级别具有明显的差异。RAID 7不仅是一种技术,还是一种存储计算机(storage computer)。RAID 7完全可以理解为一个独立存储计算机,其存储计算机操作系统(storage computer operating system)是一套实时事件驱动操作系统,主要用来进行系统初始化和安排RAID 7磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上。通过自身系统中的阵列电脑板来设定和控制读写速度,存储计算机操作系统可使主机I/O传递性能达到最佳,完全可以独立运行。

RAID 7等级是至今为止理论上性能最高的RAID模式,因为它从组建方式上就已经和以往的方式有了重大的不同。以往一个硬盘是一个组成阵列的“柱子”,而在RAID 7中,多个硬盘组成一个“柱子”,每个磁盘都有一个独立的I/O通道,它们与主通道相连,操作系统可以直接对每个磁盘的访问进行控制,让每个磁盘在不同的时段进行数据读写,这样就大大改善了I/O的应用,同时也提高了数据读写的能力,因而这种磁盘访问方式也叫作非同步访问。在RAID 7中有一个磁盘作为专门的校验盘,它适合对任何一个磁盘进行数据恢复。

总体来说,RAID 7与传统的RAID级别有很大区别,它的优点很多,但缺点也非常明显,那就是价格非常高,对于普通企业用户并不实用。