软件RAID原理.docx

上传人:b****4 文档编号:27292838 上传时间:2023-06-28 格式:DOCX 页数:38 大小:418.20KB
下载 相关 举报
软件RAID原理.docx_第1页
第1页 / 共38页
软件RAID原理.docx_第2页
第2页 / 共38页
软件RAID原理.docx_第3页
第3页 / 共38页
软件RAID原理.docx_第4页
第4页 / 共38页
软件RAID原理.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

软件RAID原理.docx

《软件RAID原理.docx》由会员分享,可在线阅读,更多相关《软件RAID原理.docx(38页珍藏版)》请在冰豆网上搜索。

软件RAID原理.docx

软件RAID原理

软件RAID分析

一、软RAID

软RAID(software-basedRAID)是基于软件的RAID。

它可能是最普遍的被使用的RAID阵列,这是由于现在的很多服务器操作系统都集成了RAID功能。

比如MicrosoftWindowsNT,Windows2000,Windows2003,NovellNetware和Linux。

  软件RAID集成于操作系统,有比较低的始投资,但是它的CPU占用率非常高,并且只有非常有限的阵列操作功能。

由于软件RAID是在操作系统下实现RAID,软RAID不能保护系统盘。

亦即系统分区不能参与实现RAID。

  有些操作系统,RAID的配置信息存在系统信息中,而不是存在硬盘上;当系统崩溃,需重新安装时,RAID的信息也会丢失。

尤其是软件RAID5是CPU的增强方式,会导致30%-40%I/O功能的降低,所以不建议使用软件RAID在增强的处理器服务器中。

  硬RAID(这里只讨论基于总线的RAID)是由内建RAID功能的主机总线适配器(Hostbusadapter)控制,直接连接到服务器的系统总线上的。

  总线RAID具有较软RAID更多的功能但是又不会显著的增加总拥有成本。

这样可以极大节省服务器系统CPU和操作系统的资源。

从而使网络服务器的性能获得很大的提高。

支持很多先进功能如:

热插拔,热备盘,SAF-TE,阵列管理,等等。

  并且其价格相对较低。

它的缺点是要占用PCI总线带宽,所以PCII/O可能变成阵列速度的瓶颈。

HostRAID是一种把初级的RAID功能附加给SCSI或者SATA卡而产生的产品。

它是基于硬和软RAID之间的一种产品。

它把软件RAID功能集成到了产品的固件上,从而提高了产品的功能和容错能力。

它可以支持RAID0和RAID1。

二、组织RAID阵列中的数据:

分区、分块和分条

(1)

磁盘驱动器可以划分成由若干块形成的组,例如,大多数读者都熟悉在PC机或工作站上对磁盘驱动器的分区,RAID磁盘也不例外,可以使用多种方法对之进行分组,以支持各种各样的数据处理的实际需求,组合磁盘分区最常见的方法是阵列。

事实上,就精确的技术意义来说,磁盘并不形成阵列,而是形成分区。

阵列管理软件

磁盘阵列软件具有许多功能,具体地说,包括划分成员磁盘为分区,将它们组织成阵列以及为主机系统提供设备虚拟化等。

一般而言,它为RAID子系统的磁盘操作提供组织结构,以及对这些组织结构实行管理。

 

当磁盘管理软件安装在主机中时,它被称为软件RAID或卷管理软件。

阵列管理软件和卷管理软件的许多功能是相同的,一般而言,卷管理软件寄宿在主机上,而阵列管理软件内嵌在RAID子系统中。

 

1.阵列管理软件的作用

 

阵列管理软件具有以下三种功能:

             •管理和控制磁盘集合,包括阵列。

             •传送I/O操作进/出被划分的磁盘。

             •为了数据冗余计算校验值,使用校验值恢复丢失的数据。

 

本节将讨论前两种功能,关于校验前面已经讨论过,本章后面还将对它进行更详细的讨论。

 

2.    使用分区划分磁盘

 

在RAID子系统中的划分出来的磁盘子区称为分区,RAID咨询委员会(RAB)定义分区概念如下:

 

一组地址连续的成员磁盘存储块,单个的磁盘可以有一个或多个分区。

假如在一个磁盘上定义了多个分区,则它们可以有不同的大小。

多个可能不连续的分区可以通过虚拟磁盘到成员磁盘的映射,成为同一虚拟磁盘的一部分。

分区有时候也称为逻辑磁盘,尽管对于操作环境来说,它们通常不是直接可见的。

 

换而言之,分区在RAID成员磁盘上建立了一个个边界,它们将成员磁盘划分为地址相邻的、由若干存储块形成的组。

分区是一个令人迷惑的存储段,由它形成RAID子系统的阵列、镜像和虚拟驱动器。

图6-17给出了一个由4个磁盘组成的阵列,每个磁盘都定义了多个分区。

二、组织RAID阵列中的数据:

分区、分块和分条

(2)

由图6-17可以知道,磁盘1和磁盘3都定义了3个分区(A、B和C),磁盘3和磁盘4都有4个分区(A、B、C和D)。

有几种方法将它们组合形成阵列,最明显的一种方法是:

将所有这些磁盘中的相应的A和B分区组成阵列,即将分区1A~4A和1B~4B分别组合起来形成两个分离的阵列,剩余的分区用于单个的驱动器,或者由分区1C+3C、2C+4C及2D+4D组合成镜像对。

 

3.    使用虚拟驱动器统一地址

 

阵列管理软件将分区组合成阵列,并提供给主机系统,实现了统一管理的映像。

资源的统一表示有时也称为输出一个虚拟设备。

 

图6-18显示了如何将4个成员磁盘上的分区统一起来,形成一个单个的虚拟驱动器,并由RAID子系统提供给主机系统。

阵列管理软件负责完成成员磁盘块的地址到虚拟驱动器的连续存储位置的映射,并在虚拟驱动器的更大地址空间背景下输出这些地址。

 

4.    从虚拟驱动器到成员驱动器的I/O操作传送

当I/O操作被传送到RAID控制器时,阵列管理软件将为成员磁盘分开这些操作,并产生一个内部I/O操作,确定在每个成员磁盘上相应的地址。

阵列管理软件建立一个磁盘状的接口,负责管理进/出RAID子系统的I/O操作。

其大致的步骤为:

 

             •提供一个一致可靠的方法,由它将虚拟磁盘块地址转换为成员磁盘的物理块地址(如上述讨论)。

             •在主机I/O控制器的指导下,将I/O请求传送到一个外部磁盘接口,然后将它转换为几个内部I/O请求。

             •反过来,通过单个的虚拟驱动器从多个内部驱动器传送I/O请求。

这些请求响应包括错误响应,在主机看来,这些错误好像从一个驱动器传来的。

5.    划分分区:

从分区到分块

 成员磁盘上的分区可以进一步细分为更小的段,这些更小的段即单个I/O操作的对象,它们被称为分块。

假如分块属于一个分区,而分区又属于一个阵列,那么,分块的长度称为分条深度。

为了简化虚拟磁盘块地址到成员磁盘块地址的映射,一个阵列中所有的分块的长度都相同。

图6-19显示了分条、分块和分区三者之间的关系。

 

阵列中的分区大小也应该相同。

不规则的分区将会产生存储校验问题,也会导致阵列地址映射问题。

为了有效地管理阵列,阵列管理软件可以调整阵列中分区的大小,将忽视掉更大分区的多余部分,而将分块设置到一个最小公用的大小。

 

分块的大小约为磁盘驱动器上的一个扇区大小,但这样的分块大小和扇区并无关联,一个分块可以保存几个I/O操作的内容。

RAB将分块定义为:

 

分块是将一个分区分成一个或多个大小相等的、地址相邻的块,在某些环境下,分块被称为分条的元素。

6.    组合分块成分条

 

分区和分块是在单个驱动器上进行的,而不是在阵列上,正像分区可以组成阵列一样,分块也可以组合成分条。

RAB将分块定义为:

 

      分条是磁盘阵列中的两个或更多分区上的一组位置相关的分块,位置相关意味着,每个分区上的第一分块属于第一分条,每个分区上的第二分块属于第二分条,以此类推。

 

描述分条还可以使用另一种方法,即分条以某种方式组合多个分区上的分块,这种排列方式类似于柱面组合磁盘驱动器上的磁道。

图6-20显示了定义在磁盘驱动器上的4个分区,在每个分区上有两个分条(分条1和分条2),4个分块1组合而成一个分条,4个分条2也组合而成一个分条。

 

虽然使用柱面来类比很直观,但磁盘阵列的分区按照柱面的物理排列却无理由,按柱面的物理排列方式如图6-20所示。

例如,一对磁盘驱动器可以分成3个分区,进而形成3个阵列,这些阵列没有一个是按照物理排列的,而是按照在每个分区中分块的相对位置排列的。

 

图6-21显示了两个磁盘驱动器A和B,这两个驱动器都被分成大小相等的3个分区,通过将这些分区组合为:

A1+B2,A2+B3和A3+B1,形成3个阵列,这些分区中的块并不是按照磁盘的物理方式排列的,而是按照它们在分区中的相对位置排列的。

 

应该指出的是:

相同磁盘上的分区可以是同一阵列的成员。

虽然并不提倡这样做,但它是可能的,这种情况下,需要在分区内部对分块进行相对排列。

假如提供给同样阵列中多个分区的磁盘驱动器失败,那么,由于计算校验的两个元素都被丢失,所以将导致数据的丢失

7.    分块和分条的数据写入顺序

 

作为设备虚拟化的应用之一,阵列中的分条被映射为虚拟驱动器中连续的块。

当主机向虚拟驱动器写入数据时,阵列管理软件将输入的I/O请求地址转换为阵列中的分条。

首先将对第一个分区的第一个分块进行写,然后对第二个分区的第一个分块执行写,接着对第三个分区的第一个分块执行写,以此类推。

从某种意义上说,数据写入分条类似于填充顺序放置的容器。

图6-22显示了多个磁盘表面的数据写入过程。

校验分块数据

 前面已经讨论了校验,它提供了一种存放于RAID子系统中数据冗余的手段。

现在,将在分块数据的背景下,详细讨论校验是如何实现的。

使用XOR函数建立校验数据

校验数据是另外一种冗余数据,它是在计算校验值时,由RAID子系统产生的。

正如前面所说的那样,异或(XOR)函数在逐位基础上对实际数据进行操作,建立校验数据。

在并行访问RAID和独立访问RAID上,建立校验数据的方法是不同的。

在介绍如何使用XOR函数建立校验数据,以及在磁盘失败时恢复数据后,我们将研究这两种RAID之间的差别。

 

1.校验的计算

 

RAID校验数据的计算使用布尔XOR函数,XOR函数逻辑相当简单:

除了真+真导致一个假的结果以外,它的行为就像一个OR函数,XOR的逻辑见表6-1。

 

XOR函数事实上可用于更多的位组合,它既与位是否成对地组合及是否成对操作无关,也与每个附加位的XOR对象是否是过去的XOR操作结果无关,好像它是在XOR“链”中一样。

事实上,它也与位的操作顺序无关。

 

按照标准的二进制习惯,“0”位表示假值,“1”位表示真值。

对于RAID,写入阵列的数据位将与其他分区上的相应位进行XOR操作,计算出校验位,并写入校验分区的位置。

 

表6-2显示出一个假想的位串,位串跨越4个分区,第5列是由XOR函数计算出的校验位。

 

从表6-2可知,可以利用XOR函数对任何4列中的4位进行操作,得到另一列中的值。

例如,假如将XOR应用于第2列到第5列,那么,结果将与已经存在的第一列值相同。

这说明了当一个磁盘失败时,XOR函数的恢复能力,假如一个磁盘失败,阵列分区中的数据将不可访问,利用阵列中其他分区的相应位,运行XOR操作即可恢复原数据值。

 

2.XOR的逆操作是XOR

XOR函数如此有用的原因之一是XOR函数的逆操作是其本身。

换而言之,当使用XOR计算校验值时,也可以再使用XOR进行逆运算。

XOR函数的这个性质不太直观,因为通常的数学函数拥有自己的反函数,如加法的反函数是减法、乘法的反函数分别是除法。

以下是XOR函数的操作和逆操作的例子:

 

0XOR0=0其逆操作是:

0XOR0=0;0XOR1=1其逆操作是:

1XOR1=0;1XOR0=1其逆操作是:

1XOR0=1;1XOR1=0其逆操作是:

0XOR1=1。

上述的操作是XOR函数的完整的组合矩阵,对于磁盘阵列,组合的数量将增加,但每一个计算值都可以从上述的矩阵推出。

以下几节的阵列操作将参考这里的XOR函数。

3.    并行访问阵列的简约模式操作

 

术语“简约”用在RAID环境下意味着:

当一个磁盘失败后,磁盘子系统将继续工作,而不需要这个失败的磁盘。

当这种情况发生的时候,RAID阵列将调整其功能,以保证数据的一致性。

 

阵列中的成员磁盘是:

             •数据磁盘。

             •校验磁盘。

             •数据和校验磁盘(参见本章RAID5讨论)。

 

假如失败的磁盘是数据磁盘,当需要响应读请求时,阵列将恢复由失败磁盘引起的丢失数据。

对于写操作,除了数据不被写到失败的磁盘,并将更新校验数据写到校验磁盘外,简约环境下的写操作与常规的写操作相同。

这样,即使数据实际并没有写到失败磁盘上,失败磁盘上的数据也能被恢复。

当一个替代磁盘安装后,校验恢复操作将为新的磁盘重建数据,图6-7和6-8显示了这个过程。

 

当校验磁盘失败时,子系统的性能实际上将会增加,RAID子系统工作如正常情况下相同,但是无需由读、修改或写校验数据而产生的额外开销。

图6-23即校验磁盘失败的例子。

根据分条原则,一些阵列类型将校验数据发送到阵列中的多个磁盘。

在这种情况下,简约模式阵列的表现取决于所访问的分条,假如分条中失去了一个数据磁盘,那么,在简约操作期间,必须恢复数据,并正确地写数据。

假如分条失去了校验磁盘,那么,在执行操作的时候,不需要做任何校验操作或额外开销。

 

4.    MTDL

 

平均数据丢失时间(MTDL)是一个组件可能失败使数据不能访问的时间。

对于RAID子系统,还包括阵列在简约模式下工作时,第二磁盘失败的可能性。

MTDL是基于单个磁盘驱动器的平均失败间隔时间(MTBF)数据及阵列中驱动器数的组合。

一般而言,阵列中的磁盘数量越多,MTDL数就越小。

 

MTDL不应很高,因为第二个磁盘的失败将导致数据的灾难性丢失,因此,建议应尽快地替换失败的磁盘,替代的磁盘安装后,立即开始校验恢复过程。

在校验恢复期间,阵列的额外开销将严重地影响阵列的性能,因此,常见的情况是这样的,首先完成(或运行)正常调度的I/O密集型进程,然后再开始校验恢复。

 

注意当阵列正运行在简约模式时,你可能希望调整你的备份计划。

例如,为了保证备份完成,可以将运行在阵列上的文件系统置于备份软件之前。

记住,当数据需要重建时,备份处理将执行得更慢。

此外,为了从简约阵列中将数据全部拷贝到磁带,可能需要核查备份磁带。

第7章将讨论备份。

并行访问RAID的校验

 

在并行访问RAID中,校验数据的计算比较容易理解,并行访问阵列在整个阵列磁盘中分条数据。

当这些分条数据被写到成员磁盘时,同时也计算校验数据,并将它写入一个附加的同步校验磁盘。

校验磁盘与阵列中的数据磁盘分区和分条大小相同。

 

同样,假如由于数据磁盘失败使信息需要恢复,那么,当数据从同步磁盘中读出时,对数据实行XOR操作。

从包括校验磁盘在内的其他磁盘中读出分条数据组件,由此重建失败磁盘的数据。

独立访问RAID的校验

 

独立访问RAID的情形稍为复杂一些,数据并不分块写入几个转动速度相同的同步磁盘,而是写到单个分区中的分块,然后再写入下一个磁盘的相应分区。

换而言之,写不必跨越阵列中的所有磁盘。

 

1.独立访问阵列的写额外开销

 

当对每一个分块施行写时,同时也计算校验数据,以使这些数据获得保护。

像前面描述的,XOR可用于建立校验数据,但用来计算校验数据的一些数据已经存放在磁盘上,主机I/O控制器不能对这些数据执行写操作,因此,在计算新数据的校验值时,需要从阵列磁盘中读出存在的数据。

为了写新的数据并计算其校验值,需要执行数据读和计算的操作,这个过程称为RAID写额外开销。

 

为新数据建立校验是一个有趣的过程,而不是所希望的及时过程。

记住,校验数据计算与计算顺序无关,所以,参加计算的位能以任何顺序相混合,而所得到校验数据的结果是相同的。

已经证明,XOR函数具有逆着原来的步骤计算临时值的能力。

例如,对校验数据及任何一个贡献值进行XOR操作时,都使该值的贡献去除,如图6-24所示,当第二个磁盘的贡献被去除时,4个磁盘的XOR计算结果。

所以,当新的数据被写入一个独立访问阵列时,将使用下列过程更新校验数据和写入新数据:

1)从主机I/O控制器接收I/O请求和新数据。

2)读出将被替代分块的原有数据。

3)读出该块的校验数据。

4)对校验数据与原有数据实施XOR操作,去除原有数据对校验数据的贡献。

5)对该校验数据与新数据实施XOR操作,得到新的校验数据。

6)将新的校验数据写入磁盘。

7)将新数据写入磁盘。

 

这个过程称为读、修改和写周期,图6-25显示了一个带有4个成员磁盘阵列的读、修改和写的周期,其中一个磁盘包含分条的校验数据。

2.    独立访问阵列的读、写性能

 

在一个读、修改和写周期中,一次单个驱动器的写操作需要独立访问阵列做4次数据传输,即原有数据读出、校验数据读出、新校验数据写入以及新数据写入,这导致单个I/O请求的大量的开销。

 

因为读、修改和写周期的开销,所以独立访问阵列的读操作比其写操作快得多。

事实上,独立访问阵列的写速度比单个磁盘的写操作更慢,也比并行访问阵列的写慢。

由于这个原因,当独立访问阵列用于读操作比例大于写操作的应用时,它应该配以回写缓存。

 

3.    使用磁盘缓存减少写额外开销

 

在独立访问阵列中,写的额外开销来源于对分条中少量分块的执行写操作,然而,假如对占有分条中一半以上的块实施写操作,那么,写的额外开销将会减少。

存在于其他分块上不被更新的数据能够被读出,也能与写入其他分块的数据进行XOR操作,然后,可以将新数据及其校验数据写入各自的分条位置。

注意,没有必要首先读出原有数据,或者去除校验数据的某个贡献,也没有必要在写入新校验数据之前,再读出原来校验数据。

其次序总结如下:

             •为即将要写的若干分块保存新的数据。

             •从不被更新的一些分块中读出现存的数据。

             •计算新的校验数据。

             •写新的分块数据和新的校验数据。

 

一个回写算法的磁盘缓存可以保存磁盘写,使单个操作能够写入更多的分块,假如充分多的分块等待在缓存中,可以使用第二种方法,避免必须从成员磁盘中读出数据,并修改它们。

考虑这样一个情况,利用回写缓存保存磁盘写I/O,就可以搜集多个写操作,以致于一次能够对足够多的分块进行写,它避免了必须从校验值中去除原来的贡献。

而是由新的数据和已存在的数据直接计算校验数据,无须从校验数据中去除原来数据的贡献,再加入新数据的贡献。

假如合理地实行这个思想,带有回写缓存阵列的写可以达到单独磁盘驱动器的性能。

图6-26显示了一个回写缓存,它的作用是保存阵列写,直到有足够多的数据,即占有分条中的多数分块为止。

4.    XOR磁盘

 

为了满足一些RAID子系统厂商的要求,希捷率先将XOR功能集成到磁盘驱动控制器中,XOR集成的基本思想是:

将多个I/O操作和XOR功能组合一起,形成一个磁盘驱动器的请求。

 

如上文所描述的,计算XOR函数时次序并不重要的,即,若干分块形成的组可以安排为任何次序,而不影响其计算结果。

使用独立访问阵列的读、修改和写周期,将校验数据和目标磁盘的原有数据做XOR操作,去除原来数据的贡献,然后,再将结果与即将写入磁盘的新数据做XOR操作,产生新的校验数据。

它的代数表示为:

 

[(原有校验数据)XOR(原有数据)]XOR(新数据)=新的校验数据这个表达式也可重新修改为:

[(原有数据)XOR(新数据)]XOR(原有校验数据)=新的校验数据

 

注意,第二个方程的前两项是分块的原有数据和新数据。

一个带有XOR功能的磁盘驱动器具有以下功能:

1)从主机I/O控制器接受新数据。

2)从磁盘介质读出原有数据。

3)计算新数据和原有数据的XOR值。

4)使XOR值对阵列中的另一个磁盘可用,如校验数据存放的磁盘。

5)从另一个磁盘操作接受XOR数据,并使之与其数据实行XOR操作,产生即将写入磁盘的新的校验数据。

 

在上面的功能中,前面4个涉及阵列中的数据磁盘,在此新的数据即将被写,第5个功能涉及校验数据磁盘。

通过将XOR功能放入磁盘驱动器,使RAID控制器得以解脱,阵列能够更快地响应来自主机I/O控制器的请求。

图6-27显示了5个具有XOR功能的磁盘驱动器的阵列,这些XOR磁盘驱动器可以计算校验数据。

 

     当XOR操作由阵列中的磁盘驱动器执行时,大部分的总线/路径数据传输将消除。

使用XOR驱动器减轻了33%~50%的总线传输负载,这取决于作为发起者的单独驱动器能力,通过旁路RAID控制器,直接将校验数据发送到其他驱动器。

RAID0:

分块

 

RAID0是简单的、不带有校验的磁盘分块,本质上它并不是一个真正的RAID,因为它并不提供任何形式的冗余。

假如RAID0的磁盘失败,那么,数据将彻底丢失。

为了在RAID0情况下恢复数据,唯一的办法是使用磁带备份或者镜像拷贝。

 

典型的RAID0使用独立访问的方法将数据分块,然后发送给成员磁盘,而不是使用并行访问方法,它能实现多个I/O操作同时并行地处理。

因为RAID0不需要计算校验,因而,它是所有类型的阵列中吞吐量最快的。

 

对于一些以性能为第一要求、且数据保护需要最小的应用,使用RAID0是一个很好的选择。

多媒体产品应用可以使用RAID0存储数据,如电影制作和视频制作等。

其他应用包括高速的数据获取系统,如果数据不能完全被捕获,那么将毫无用处,在这种情况下,最好的办法是保证能够获取所有的数据,然后再将它们转存到其他介质或设备,以保护数据。

 

RAID0的数据映射

 

     图6-28显示了RAID0阵列的虚拟设备是如何映射到单个的成员磁盘的,一般情况下,虚拟设备的容量是成员磁盘容量的总和。

RAID1:

镜像

 

大部分有关RAID1的讨论见第4章。

按照RAID的术语,RAID1是非校验的RAID级,其数据保护和性能都极为优秀,因为在数据的读/写过程中,不需要执行XOR操作。

 

RAID1的数据映射

 

RAID1的数据映射相当简单,对一个磁盘发生什么操作,对另一个磁盘也会发生同样的操作。

虚拟磁盘直接映射到镜像磁盘对的块。

图6-29显示了用于RAID1的数据映射。

RAID2:

专有磁盘的并行访问

 

过去,磁盘驱动器花费更贵,而且没有今天这样复杂的电路,因而,就构想出了RAID2,RAID2的定义涉及RAID控制器中的错误校验电路。

今天,这个功能已经被集成到磁盘驱动器中,虽然便宜,但效率却不高。

因此,RAID2没有形成产品,在文献中也几乎被忽略。

RAID3:

使用专有校验磁盘的同步访问

 

基本上,本章前面所讨论的并行访问RAID都属于RAID3。

RAID3子系统将数据分块存放到阵列中的所有驱动器,将校验数据写到阵列中的一个另外的校验磁盘,RAID3被认为是校验RAID。

 

为了使RAID3有更好的性能,需要同步磁盘转动,由于严格地控制磁盘操作是很困难的,所以RAID3很少在主机卷

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1