软件RAID原理
- 格式:doc
- 大小:603.50 KB
- 文档页数:26
软件RAID分析 一、软RAID 软RAID(software-based RAID)是基于软件的RAID。它可能是最普遍的被使用的RAID阵列,这是由于现在的很多服务器操作系统都集成了RAID功能。比如 Microsoft Windows NT, Windows 2000, Windows 2003, Novell Netware 和 Linux。
软件RAID集成于操作系统,有比较低的始投资,但是它的CPU占用率非常高,并且只有非常有限的阵列操作功能。由于软件RAID是在操作系统下实现RAID,软RAID不能保护系统盘。亦即系统分区不能参与实现RAID。
有些操作系统,RAID的配置信息存在系统信息中,而不是存在硬盘上;当系统崩溃,需重新安装时,RAID的信息也会丢失。尤其是软件RAID 5是CPU的增强方式,会导致30%-40%I/O功能的降低, 所以不建议使用软件RAID在增强的处理器服务器中。
硬RAID(这里只讨论基于总线的RAID)是由内建RAID功能的主机总线适配器(Host bus adapter)控制,直接连接到服务器的系统总线上的。
总线RAID具有较软RAID更多的功能但是又不会显著的增加总拥有成本。这样可以极大节省服务器系统CPU和操作系统的资源。从而使网络服务器的性能获得很大的提高。支持很多先进功能如:热插拔,热备盘,SAF-TE,阵列管理,等等。
并且其价格相对较低。它的缺点是要占用PCI总线带宽,所以PCI I/O 可能变成阵列速度的瓶颈。HostRAID 是一种把初级的RAID功能附加给SCSI或者SATA卡而产生的产品。它是基于硬和软RAID之间的一种产品。它把软件RAID功能集成到了产品的固件上,从而提高了产品的功能和容错能力。它可以支持RAID 0和RAID 1。
二、组织RAID阵列中的数据:分区、分块和分条(1) 磁盘驱动器可以划分成由若干块形成的组,例如,大多数读者都熟悉在P C机或工作站上对磁盘驱动器的分区,R A I D磁盘也不例外,可以使用多种方法对之进行分组,以支持各种各样的数据处理的实际需求,组合磁盘分区最常见的方法是阵列。事实上,就精确的技术意义来说,磁盘并不形成阵列,而是形成分区。
阵列管理软件 磁盘阵列软件具有许多功能,具体地说,包括划分成员磁盘为分区,将它们组织成阵列以及为主机系统提供设备虚拟化等。一般而言,它为R A I D子系统的磁盘操作提供组织结构,以及对这些组织结构实行管理。
当磁盘管理软件安装在主机中时,它被称为软件R A I D或卷管理软件。阵列管理软件和卷管理软件的许多功能是相同的,一般而言,卷管理软件寄宿在主机上,而阵列管理软件内嵌在R A I D子系统中。
1. 阵列管理软件的作用 阵列管理软件具有以下三种功能: •管理和控制磁盘集合,包括阵列。 •传送I / O操作进/出被划分的磁盘。 •为了数据冗余计算校验值,使用校验值恢复丢失的数据。
本节将讨论前两种功能,关于校验前面已经讨论过,本章后面还将对它进行更详细的讨论。
2. 使用分区划分磁盘 在R A I D子系统中的划分出来的磁盘子区称为分区,R A I D咨询委员会(R A B)定义分区概念如下:
一组地址连续的成员磁盘存储块,单个的磁盘可以有一个或多个分区。假如在一个磁盘上定义了多个分区,则它们可以有不同的大小。多个可能不连续的分区可以通过虚拟磁盘到成员磁盘的映射,成为同一虚拟磁盘的一部分。分区有时候也称为逻辑磁盘,尽管对于操作环境来说,它们通常不是直接可见的。
换而言之,分区在R A I D成员磁盘上建立了一个个边界,它们将成员磁盘划分为地址相邻的、由若干存储块形成的组。分区是一个令人迷惑的存储段,由它形成R A I D子系统的阵列、镜像和虚拟驱动器。图6 - 1 7给出了一个由4个磁盘组成的阵列,每个磁盘都定义了多个分区。
二、组织RAID阵列中的数据:分区、分块和分条(2) 由图6 - 1 7可以知道,磁盘1和磁盘3都定义了3个分区(A、B和C),磁盘3和磁盘4都有4个分区(A、B、C和D)。有几种方法将它们组合形成阵列,最明显的一种方法是:将所有这些磁盘中的相应的A和B分区组成阵列,即将分区1 A~4 A和1 B~4 B分别组合起来形成两个分离的阵列,剩余的分区用于单个的驱动器,或者由分区1 C + 3 C、2 C + 4 C及2 D + 4 D组合成镜像对。
3. 使用虚拟驱动器统一地址 阵列管理软件将分区组合成阵列,并提供给主机系统,实现了统一管理的映像。资源的统一表示有时也称为输出一个虚拟设备。
图6 - 1 8显示了如何将4个成员磁盘上的分区统一起来,形成一个单个的虚拟驱动器,并由R A I D子系统提供给主机系统。阵列管理软件负责完成成员磁盘块的地址到虚拟驱动器的连续存储位置的映射,并在虚拟驱动器的更大地址空间背景下输出这些地址。
4. 从虚拟驱动器到成员驱动器的I / O操作传送 当I / O操作被传送到R A I D控制器时,阵列管理软件将为成员磁盘分开这些操作,并产生一个内部I / O操作,确定在每个成员磁盘上相应的地址。阵列管理软件建立一个磁盘状的接口,负责管理进/出R A I D子系统的I / O操作。其大致的步骤为:
•提供一个一致可靠的方法,由它将虚拟磁盘块地址转换为成员磁盘的物理块地址(如上述讨论)。 •在主机I / O控制器的指导下,将I / O请求传送到一个外部磁盘接口,然后将它转换为几个内部I / O请求。 •反过来,通过单个的虚拟驱动器从多个内部驱动器传送I / O请求。这些请求响应包括错误响应,在主机看来,这些错误好像从一个驱动器传来的。 5. 划分分区:从分区到分块
成员磁盘上的分区可以进一步细分为更小的段,这些更小的段即单个I / O操作的对象,它们被称为分块。假如分块属于一个分区,而分区又属于一个阵列,那么,分块的长度称为分条深度。为了简化虚拟磁盘块地址到成员磁盘块地址的映射,一个阵列中所有的分块的长度都相同。图6 - 1 9显示了分条、分块和分区三者之间的关系。
阵列中的分区大小也应该相同。不规则的分区将会产生存储校验问题,也会导致阵列地址映射问题。为了有效地管理阵列,阵列管理软件可以调整阵列中分区的大小,将忽视掉更大分区的多余部分,而将分块设置到一个最小公用的大小。
分块的大小约为磁盘驱动器上的一个扇区大小,但这样的分块大小和扇区并无关联,一个分块可以保存几个I / O操作的内容。R A B将分块定义为:
分块是将一个分区分成一个或多个大小相等的、地址相邻的块,在某些环境下,分块被称为分条的元素。 6. 组合分块成分条
分区和分块是在单个驱动器上进行的,而不是在阵列上,正像分区可以组成阵列一样,分块也可以组合成分条。R A B将分块定义为:
分条是磁盘阵列中的两个或更多分区上的一组位置相关的分块,位置相关意味着,每个分区上的第一分块属于第一分条,每个分区上的第二分块属于第二分条,以此类推。
描述分条还可以使用另一种方法,即分条以某种方式组合多个分区上的分块,这种排列方式类似于柱面组合磁盘驱动器上的磁道。图6 - 2 0显示了定义在磁盘驱动器上的4个分区,在每个分区上有两个分条(分条1和分条2),4个分块1组合而成一个分条,4个分条2也组合而成一个分条。 虽然使用柱面来类比很直观,但磁盘阵列的分区按照柱面的物理排列却无理由,按柱面的物理排列方式如图6 - 2 0所示。例如,一对磁盘驱动器可以分成3个分区,进而形成3个阵列,这些阵列没有一个是按照物理排列的,而是按照在每个分区中分块的相对位置排列的。
图6 - 2 1显示了两个磁盘驱动器A和B,这两个驱动器都被分成大小相等的3个分区,通过将这些分区组合为:A 1 + B 2,A 2 + B 3和A 3 + B 1,形成3个阵列,这些分区中的块并不是按照磁盘的物理方式排列的,而是按照它们在分区中的相对位置排列的。
应该指出的是:相同磁盘上的分区可以是同一阵列的成员。虽然并不提倡这样做,但它是可能的,这种情况下,需要在分区内部对分块进行相对排列。假如提供给同样阵列中多个分区的磁盘驱动器失败,那么,由于计算校验的两个元素都被丢失,所以将导致数据的丢失
7. 分块和分条的数据写入顺序 作为设备虚拟化的应用之一,阵列中的分条被映射为虚拟驱动器中连续的块。当主机向虚拟驱动器写入数据时,阵列管理软件将输入的I / O请求地址转换为阵列中的分条。首先将对第一个分区的第一个分块进行写,然后对第二个分区的第一个分块执行写,接着对第三个分区的第一个分块执行写,以此类推。从某种意义上说,数据写入分条类似于填充顺序放置的容器。图6 -2 2显示了多个磁盘表面的数据写入过程。
校验分块数据 前面已经讨论了校验,它提供了一种存放于R A I D子系统中数据冗余的手段。现在,将在分块数据的背景下,详细讨论校验是如何实现的。
使用XOR函数建立校验数据 校验数据是另外一种冗余数据,它是在计算校验值时,由R A I D子系统产生的。正如前面所说的那样,异或(X O R)函数在逐位基础上对实际数据进行操作,建立校验数据。在并行访问R A I D和独立访问R A I D上,建立校验数据的方法是不同的。在介绍如何使用X O R函数建立校验数据,以及在磁盘失败时恢复数据后,我们将研究这两种R A I D之间的差别。
1. 校验的计算
R A I D校验数据的计算使用布尔X O R函数,X O R函数逻辑相当简单:除了真+真导致一个假的结果以外,它的行为就像一个O R函数,X O R的逻辑见表6 - 1。