2024年6月8日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.9

(22)申请日 2005.11.21

(71)申请人 国际商业机器公司

地址 美国纽约阿芒克

(72)发明人 卡尔·E·福汉 罗伯特·E·盖尔布雷斯 阿德里安·C·格哈德

(74)专利代理机构 北京市柳沈律师事务所

代理人 黄小临

(51)

G06F3/06

G06F11/10

(10)申请公布号 CN 101059751 A

(43)申请公布日 2007.10.24

权利要求说明书 说明书 幅图

(54)发明名称

磁盘阵列恢复数据时增加磁盘访问

并行性的方法和系统

(57)摘要

在诸如RAID-6之类环境的磁盘

阵列环境中,通过增加并行性减少了与诸

如再同步、重构、暴露模式的读操作之类

的暴露模式操作相关联的总体性能开销。

通过仅选择为求解特定奇偶校验带区的奇

偶校验带区方程式所需的可能磁盘的子

集,对磁盘阵列中的一个或多个磁盘的访

问可以被省略,从而使被省略的磁盘自由

地执行其它磁盘访问。此外,可以使与不

同奇偶校验带区相关联的磁盘访问相交

迭,以便能将为恢复一个奇偶校验带区的

数据所必需的数据的检索与为另一奇偶校

验带区所恢复的数据的存储同时执行。

法律状态

法律状态公告日

法律状态信息

法律状态

权 利 要 求 说 明 书

1.一种恢复包括多个磁盘的磁盘阵列中的数据的方法,该方法包括下述步骤:

从磁盘阵列中读取与第一奇偶校验带区相关联的第一组数据;

向磁盘阵列中写入通过处理该第一组数据而生成的结果值;以及

在将该结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联

的第二组数据。

2.如权利要求1所述的方法,还包括:

向磁盘阵列中写入通过处理该第二组数据而生成的第二结果值;以及

在将该第二结果值写入磁盘阵列的同时,从磁盘阵列中读取第三组数据。

3.如权利要求2所述的方法,其中所述第一和第二结果值是通过使用至少一个奇偶

校验带区方程式处理该第一和第二组数据而生成的。

4.如权利要求3所述的方法,其中,所述第三组数据与第一奇偶校验带区相关联,

该方法还包括:

向磁盘阵列写入通过使用第二奇偶校验带区方程式处理第三组数据而生成的第三结

果值。

5.如权利要求4所述的方法,还包括:

在将该第三结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相

关联的第四组数据;以及

向磁盘阵列写入通过使用第二奇偶校验带区方程式处理第四组数据而生成的第四结

果值。

6.如权利要求3所述的方法,其中所述第一和第二结果值每个包括奇偶校验值,并

且写入第一和第二结果值的操作被执行来使第一和第二奇偶校验带区的奇偶校验和

数据同步。

7.如权利要求3所述的方法,其中所述第一和第二结果值每个包括数据值,并且写

入第一和第二结果值的操作被执行来重构磁盘阵列中磁盘的数据。

8.如权利要求2所述的方法,其中,所述第三组数据与第三奇偶校验带区相关联。

9.如权利要求1所述的方法,其中,所述向磁盘阵列中写入结果值的步骤包括向磁

盘阵列中的第一磁盘写入结果值,并且从磁盘阵列读取第二组数据的步骤包括从不

包括该第一磁盘的磁盘阵列中的磁盘子集中读取第二组数据。

10.一种恢复包括多个磁盘的磁盘阵列中的数据的装置,包括:

被配置成耦接到磁盘阵列中的多个磁盘的接口;以及

耦接到该接口的磁盘阵列控制器,该磁盘阵列控制器被配置成通过下述操作恢复磁

盘阵列中的数据:从磁盘阵列中读取与第一奇偶校验带区相关联的第一组数据;向

磁盘阵列中写入通过处理该第一组数据而生成的结果值;以及在将该结果值写入磁

盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联的第二组数据。

11.如权利要求10所述的装置,其中所述磁盘阵列控制器包括RAID-6控制器。

12.如权利要求10所述的装置,其中,所述磁盘阵列控制器被配置成执行选择不同

子集、启动数据的检索和求解奇偶校验带区方程式操作中的至少一个操作。

13.如权利要求10所述的装置,还包括耦接到该接口的多个磁盘。

14.如权利要求10所述的装置,其中,所述磁盘阵列控制器还被配置成执行下述操

作:向磁盘阵列中写入通过处理该第二组数据而生成的第二结果值,以及在将该第

二结果值写入磁盘阵列的同时,从磁盘阵列中读取第三组数据。

15.如权利要求14所述的装置,其中,所述磁盘阵列控制器被配置成通过使用至少

一个奇偶校验带区方程式处理该第一和第二组数据而生成该第一和第二结果值。

16.如权利要求15所述的装置,其中,所述第三组数据与第一奇偶校验带区相关联,

并且所述磁盘阵列控制器还被配置成向磁盘阵列写入通过使用第二奇偶校验带区方

程式处理第三组数据而生成的第三结果值。

17.如权利要求16所述的装置,其中所述磁盘阵列控制器还被配置成执行下述操作:

在将该第三结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相

关联的第四组数据,以及向磁盘阵列写入通过使用第二奇偶校验带区方程式处理第

四组数据而生成的第四结果值。

18.如权利要求15所述的装置,其中所述第一和第二结果值每个包括奇偶校验值,

并且所述磁盘阵列控制器被配置成写入第一和第二结果值以使第一和第二奇偶校验

带区的奇偶校验和数据同步。

19.如权利要求15所述的装置,其中所述第一和第二结果值每个包括数据值,并且

所述磁盘阵列控制器被配置成写入第一和第二结果值以重构磁盘阵列中磁盘的数据。

20如权利要求14所述的装置,其中,所述第三组数据与第三奇偶校验带区相关联。

21.如权利要求10所述的装置,其中所述磁盘阵列控制器被配置成通过向磁盘阵列

中的第一磁盘写入结果值而向磁盘阵列中写入结果值,并且所述磁盘阵列控制器被

配置成通过从不包括该第一磁盘的磁盘阵列中的磁盘子集中读取第二组数据而从磁

盘阵列读取第二组数据。

说 明 书

本专利申请是下述专利申请的分案申请:

申请号:2.1

申请日:2005年11月21日

发明名称:磁盘阵列恢复数据时增加磁盘访问并行性的方法和系统

本申请涉及下述由Carl Edward Forhan、Robert Edward Galbraith和

Adrian Cuenin Gerhard于同一天提交的美国专利申请:

“METHOD AND SYSTEMFOR ENHANCED ERROR IDENTIFICATION WITH DIS

K ARRAY PARITY CHECKING”,

“RAID ENVIRONMENT INCORPORATING HARDWARE-

BASED FINITE FIELDMULTIPLIER FOR ON-THE FLY XOR”,

“METHOD AND SYSTEM FOR IMPROVED BUFFERUTILIZATION FOR DISK AR

RAY PARITY UPDATES”和

“METHOD AND SYSTEM FORRECOVERING FROM ABNORMAL INTERRUPTIO

N OF A PARITY UPDATE OPERATION INA DISK ARRAY SYSTEM”。这些申请

的每个并入本文以供参考。

技术领域

本发明涉及用于数据存储的数据保护方法,尤其涉及实现RAID-6的系统以及类似

的数据保护和恢复策略。

背景技术

RAID代表独立磁盘冗余阵列(Redundant Array of Independent Disks),是这样一类

冗余磁盘阵列存储模式,其中冗余磁盘阵列存储模式定义了众多配置和使用多个计

算机磁盘驱动器,以获得各种级别的可用性、性能、容量和成本的方式,同时作为

单个大容量驱动器呈现给软件应用程序。典型的RAID存储子系统(subsystem)可以

用硬件或者软件来实现。在前者的情况下,RAID算法被封装到耦接到计算机输入/

输出(“I/O”)总线的单独控制器硬件中,并且虽然增加很少或者没有增加中央处理单

元(“CPU”)开销,但是所需的额外硬件仍然增加了整个系统的成本。另一方面,软

件实现将RAID算法并到与操作系统一起由主处理器执行的系统软件中,从而避免

了单独的硬件控制器的需要和成本,然而增加了CPU开销。

从RAID-0到RAID-6已经定义了各种RAID级别,每个都在前述因素中进行权衡。

RAID-0只不过是常规的分带(striping),其中将用户数据分成块(chunk),这些块被

存储在带区组上,该用户数据散布在多个磁盘上而不存在数据冗余。RAID-1等价

于常规的“影像(shadowing)”或“镜像(mirror)”技术,并且是获得数据冗余最简单的办

法,其通过对于每个磁盘都具有容纳相同数据的另一磁盘并且同时向两个磁盘写数

据来获得数据冗余。RAID-0和RAID-1的组合通常被称作RAID-0+1,是通过分带

影像组实现的,从而得到该两种RAID级别的相对的性能优点。RAID-2采用了被

写在RAID组的成员上的汉明码(Hamming Code),其现在被认为并不很重要。

在RAID-3中,数据被分带在一组磁盘上,其中添加了用于保存奇偶校验数据的单

独的专用盘。随着将用户数据写到其它盘而动态地计算奇偶校验数据,以便如果盘

失效允许重构初始的用户数据而无需一个比特一个比特地复制数据。错误检验和纠

正码(“ECC”)诸如异或(“XOR”)或者更复杂的里得-所罗门(Reed-Solomon)技术之类

可以用来对二进制数据执行必要的数学计算以得到RAID-3和更高级别实现中的奇

偶校验信息。虽然奇偶校验在盘失效的情况下允许重构用户数据,但是这种重构的

速度是系统负载和所使用的特定算法的函数。

与RAID-3类似,称作RAID-4的RAID方案由N个数据盘和一个奇偶校验盘组成,

其中奇偶校验盘扇区包含每个数据盘上相应扇区的逐位XOR。这使得在任一个盘

失效的情况下RAID组中的数据内容可以保存。RAID-5是RAID-4的变型,其将

奇偶校验分带在阵列中的所有磁盘上,以便使盘上的负载在统计上均衡。

RAID-6的名称用来通俗地描述下述冗余和复杂的ECC技术的RAID方案,其通过

使用两个奇偶校验驱动器(通常称为“P”和“Q”驱动器)可以容忍两个磁盘失效而不丢

失数据。尽管术语“奇偶校验”用于描述RAID-6技术中使用的码,但是这些码更恰

当地说是一种ECC码而不仅仅是奇偶校验码。数据和ECC信息被分带在RAID组

的所有成员上并且写性能通常低于RAID-5,这是因为在写操作期间三个单独的驱

动器必须每个都被访问两次。不过,取决于所使用的“奇偶校验”驱动器的数目,

RAID-6的原理可用于恢复多个驱动器失效。

某些RAID-6实现是基于里得-所罗门算法的,该算法依赖于伽罗华域(Galois Field)

算术。对伽罗华域算术及RAID-6背后的数学的全面解释可以在各种资源中找到,

因而,下面仅提供简单概述作为背景。RAID-6实现中所使用的伽罗华域算术发生

在GF(2N)中。这是具有GF(2)中的系数的多项式对某N阶生成多项式

取模得到的域。该域中的所有多项式为N-1或者更小阶,并且它们的系数都是0或

者1,这意味着它们可以用全部在{0,1}中的N个系数的向量表示;即,这些多项

式“看”起来就象N位的二进制数。该域中的多项式加法只是N比特XOR运算,其

具有该域的每个元素是其自身的加性逆元(additive inverse)的属性,所以加法和减

法是相同的运算。但是,该域中的多项式乘法可以利用基于对数的查表技术或者利

用简单的组合逻辑来进行。

每个RAID-6校验码(即,P和Q)表示RAID-6阵列的数据盘上的数据与校验盘之一

或者两者上的数据之间的不变关系或者公式。如果存在C个校验码并且一组F盘

失效,F≤C,则可以通过选择这些公式中的F个公式并且在GF(2N)中

同时对这些公式求解F个丢失的变量而重构失效磁盘。在目前所实现或者构思的

RAID-6系统中,仅有2个校验盘,即校验盘P和校验盘Q。值得注意的是,校验

盘P和Q对于阵列上数据和奇偶校验的每个带区都发生变化,从而校验数据并不

写入专用盘而是相反分带在所有的盘上。

即使在不同系统中通过不同方式以不同成功程度地实现了RAID-6,仍然存在改进

提供数据存储的RAID-6保护的效率和成本的持续需求。实现RAID-6的数学涉及

重复性的复杂计算。据此,在现今和未来,努力改进实现RAID-6所需的电路的简

易性、电路的成本、电路的效率仍是优先考虑的问题。

例如,现有RAID-6涉及的一个局限涉及与执行再同步(其中使用于奇偶校验带区

的奇偶校验数据与当前的数据再同步)、重构(其中基于奇偶校验数据重新生成错误

或丢失磁盘中的数据)或者其它暴露模式的操作(诸如暴露模式的读)相关联的性能开

销。例如,再同步操作要求,对于磁盘阵列中所定义的每个奇偶校验带区,数据必

须从所有磁盘中读出并且用于通过下述操作求解奇偶校验带区方程式,所述操作为:

将来自每个磁盘的数据乘以适当值以及如乘积之和那样对乘后得到的数据进行异或

以构建奇偶校验带区的奇偶校验值。此外,必须将作为求解该奇偶校验带区方程式

的结果计算得到的奇偶校验值写到适当的磁盘中。此外,由于RAID-6设计对于每

个奇偶校验带区依赖于两个奇偶校验值,所以对于每个奇偶校验带区前述处理通常

必须执行两遍以生成两个奇偶校验值并且将其写到磁盘阵列中。

同样,为重构暴露的磁盘,每个奇偶校验带区的数据必须从所有其它磁盘中读出并

且用来以与用于再同步的乘法操作及异或运算类似的方式求解奇偶校验带区方程式。

求解奇偶校验带区方程式的结果是被写回到暴露磁盘中的数据。此外,对于诸如暴

露模式的读操作之类的其它暴露模式的操作,虽然无需将奇偶校验带区方程式的结

果存储回磁盘阵列,但是必须执行与重构操作类似的处理。

但是,在这些暴露模式的操作的每个中,从某些磁盘读数据以及向某些磁盘写数据

的需求导致相当大的性能开销,相对于磁盘阵列上各种磁盘访问操作的顺序本性来

说尤其如此。因而非常需要一种提高诸如RAID-6系统的磁盘阵列系统的性能以提

高关于再同步、重构以及其它暴露模式的操作的性能的方式。

发明内容

本发明通过许多技术解决了与现有技术相关联的上述和其它问题,上述本发明的技

术个别地或整体地增加关于访问磁盘阵列中的磁盘的并行性,并且由此降低了与诸

如再同步、重构和暴露模式的读操作之类的暴露模式的操作相关联的性能开销。

具体来讲,根据本发明一个方面,提供了一种恢复包括多个磁盘的磁盘阵列中的数

据的方法,该方法包括下述步骤:从磁盘阵列中读取与第一奇偶校验带区相关联的

第一组数据;向磁盘阵列中写入通过处理该第一组数据而生成的结果值;以及在将

该结果值写入磁盘阵列的同时,从磁盘阵列中读取与第二奇偶校验带区相关联的第

二组数据。

根据本发明另一方面,提供了一种恢复包括多个磁盘的磁盘阵列中的数据的装置,

包括:被配置成耦接到磁盘阵列中的多个磁盘的接口;以及耦接到该接口的磁盘阵

列控制器,该磁盘阵列控制器被配置成通过下述操作恢复磁盘阵列中的数据:从磁

盘阵列中读取与第一奇偶校验带区相关联的第一组数据;向磁盘阵列中写入通过处

理该第一组数据而生成的结果值;以及在将该结果值写入磁盘阵列的同时,从磁盘

阵列中读取与第二奇偶校验带区相关联的第二组数据。

例如,在一个方面,出于求解奇偶校验带区方程式的目的对磁盘阵列中磁盘的访问

(例如,关于重构,暴露模式的读或其它暴露模式的操作)可以通过仅选择求解该奇

偶校验带区访问所需的可能磁盘的子集、从而省略对一个或多个磁盘的访问来优化。

通过这样做,当在特定时间段内执行多个这样的操作时,只要为不同的操作选择不

同的磁盘子集通常就可以更好地平衡磁盘阵列中磁盘的利用率。

虽然可以使用其它磁盘阵列环境,但当在其中通过两个奇偶校验带区方程式使奇偶

校验带区方程式中的数据相关的RAID-6环境中实施时,每个磁盘子集可以包括磁

盘阵列的N个磁盘之中的N-2个磁盘。此外,虽然可以使用其它方式选择磁盘子

集,但在一个实施例中,可以使用随机选择机制从而随机省略某些磁盘。

与本发明的该方面一致,可以访问具有N个磁盘的磁盘阵列,从而,对于磁盘阵

列中所定义的多个奇偶校验带区的每个,从N个磁盘中选择要用于求解这样的奇

偶校验带区的奇偶校验带区方程式的不同磁盘子集。然后可以启动仅从下述奇偶校

验带区的所选择的磁盘子集中检索与每个奇偶校验带区相关联的数据的操作,这样

检索的数据用于求解该奇偶校验带区的奇偶校验带区方程式。此外每个所选择的磁

盘子集包括至多N-2个磁盘。

此外,在磁盘阵列系统中当恢复磁盘阵列中的数据(例如,再同步奇偶校验和数据,

或者重构暴露磁盘的数据)时可以通过使与不同奇偶校验带区相关联的数据访问相

交迭而增加并行性。特别地,与本发明这方面一致,恢复磁盘阵列的数据可以包括:

检索与第一奇偶校验带区相关联的第一组数据,接着与向磁盘阵列中写入通过处理

该第一组数据而生成的结果值,同时从磁盘阵列中读取与第二奇偶校验带区相关联

的第二组数据。与当与恢复不同奇偶校验带区的数据相关联的访问和操作被顺序执

行时的情况相比,通过使与不同奇偶校验带区相关联的读和写访问相交迭,可以以

较少的开销恢复与多个奇偶校验带区相关联的数据。

附图说明

图1是根据本发明的原理的、可以实现RAID-6存储控制器的示例性计算机系统的

框图。

图2是图示图1的RAID控制器的主要组件的框图。

图3描绘了根据本发明原理以交迭方式执行恢复操作以提高RAID-6系统中磁盘阵

列利用率的流程图。

图4描绘了根据本发明原理利用随机选择要访问的磁盘来执行暴露模式的读操作以

提高RAID-6系统中磁盘阵列利用率的流程图。

具体实施方式

下文中所讨论的实施例利用两种技术中的一个或者两个来在诸如RAID-6环境之类

的磁盘阵列环境中增加与恢复数据相关联的并行性或者减少与恢复数据相关联的开

销。下文中描述的一种技术关于诸如重构或暴露模式的读操作之类的操作选择要访

问的磁盘的不同子集。下文中描述的另一种技术将与相对于多个奇偶校验带区执行

的恢复操作相关联的读访问和写访问交迭。

下文中给出了实现前述技术的磁盘阵列环境的多个实施例。但是,在讨论这样的实

施例之前,首先提供RAID-6的背景简述,随后是对其中可以实现前述技术的示例

性硬件环境的描述。

一般RAID-6背景

这里用来描述RAID-6存储系统的专用术语符合本领域最易于接受的标准。特别地,

存在N个驱动器,其中任何两个将被认为是奇偶校验驱动器,P和Q。利用伽罗华

域算术,可以写出两个独立公式:

α0d00d10d

2+...+α0dN-1=0 (1)

α0d01d12d

2+...+αN-1dN-1=0 (2)

其中,这里所采用的“+”运算符表示异或(Exclusive-OR,XOR)操作。

在这些公式中,αX是有限域的元素,dX是来自第X个磁

盘的数据。虽然P和Q盘对于数据的任意特定带区可以是N个磁盘的任一个,但

是它们通常用dP和dQ表示。当更新磁盘之一的数据(即,

dX)时,上面的两个公式分解为:

Δ=(旧dX)+(新dX) (3)

(新dP)=(旧

dP)+((αQX)/(αPQ

>))Δ (4)

(新dQ)=(旧

dQ)+((αPX)/(αPQ

>))Δ (5)

在最后两个公式的每个中,加号右边的项是常数乘以数据中的变化(即,Δ)。公式

(4)和(5)的这些项通常分别表示为K1Δ和K2Δ。

在一个磁盘丢失或不可用的情况下,可以采用简单的XOR运算来恢复该磁盘的数

据。例如,如果d1失效则可如下恢复d1

d1=d0+d1+d2+... (6)

在两个磁盘失效或者被“暴露”的情况下,上面的公式可以用来恢复磁盘的数据。例

如,给定磁盘0到X并且假设磁盘A和B失效了,则该两个磁盘的任一磁盘的数

据可以从剩余的磁盘中恢复。例如,如果要恢复磁盘A,则上面的公式变为:

dA

((αB0)/(αBA))d0

+((αB1)/(αBA))d1

>+...+((αB0)/(αBA))dX

(7)

示例性硬件环境

在脑海中有了RAID-6的一般背景知识之后,可以将注意力转向附图,其中在几个

附图中相同的附图标记表示系统的部件。图1图示了可以实现RAID-6或其它磁盘

阵列的示例性计算机系统。为了本发明的目的,装置10可以实际上代表任何类型

的计算机、计算机系统或者其它可编程的电子设备,包括客户端计算机、服务器计

算机、便携式计算机、手持式计算机、嵌入式控制器等。此外,装置10可以采用

例如集群式或分布式计算系统中的一个或多个联网的计算机来实现。下文中将称装

置10为“计算机”,不过应该理解术语“装置”也可以包括与本发明一致的其它适当

的可编程电子设备。

计算机10通常包括至少一个耦接到存储器14的处理器12。处理器12可以表示一

个或多个处理器(例如,微处理器),存储器14可以表示随机存取存储器(RAM)设

备,包括计算机10的主存以及任何辅助级别的存储器,例如高速缓存存储器、非

易失或者备用存储器(例如,可编程或者闪存存储器)、只读存储器等。此外,存储

器14可以视为包括物理上位于计算机10中别处的存储器存储,例如,处理器12

中的任何高速缓存存储器以及用作虚拟存储器的任何存储容量,例如存储在磁盘阵

列34上或者经由网络18存储在耦接到计算机10的另一台计算机(例如,客户端计

算机20)上。

计算机10通常还接收多个输入和输出以与外部交换信息。对于与用户或者操作员

的接口,计算机10通常包括一个或多个用户输入设备22(例如,其中有键盘、鼠

标、跟踪球、操纵杆、触摸板和/或麦克风)以及显示器24(例如,其中有CRT显示

器、LCD显示面板和/或扬声器)。此外,用户输入可以经由在网络上与计算机10

连接的另一台计算机(例如,计算机20)或者经由专用工作站接口等接收。

对于额外的存储设备,计算机10还可以包括经由存储控制器或者适配器16存取的

一个或多个大容量存储设备,例如,其中有可移动磁盘驱动器、硬盘驱动器、直接

存取存储设备(DASD)、光盘驱动器(例如,CD驱动器,DVD驱动器,等等)和/或

磁带驱动器。此外,计算机10可以包括与一个或多个网络18(例如,LAN、WAN、

无线网和/或因特网)的接口以允许与耦接到网络的其它计算机交换信息。应该理解,

如本领域公知的,计算机10通常包括处理器12与组件14、16、18、22、24的每

个之间的适当的模拟和/或数字接口。

根据本发明的原理,大容量存储器控制器16有利于实现磁盘阵列34中的RAID-6

存储保护。

计算机10在操作系统30的控制下运行,并且执行或者反之依赖于各种计算机软件

应用程序、组件、程序、对象、模块、数据结构等等(例如,软件应用程序32)。此

外,各种应用程序、组件、程序、对象、模块等等也可以在例如分布式或者客户机

/服务器计算环境下在经由网络18耦接到计算机10的另一台计算机中的一个或多

个处理器上执行,由此为实现计算机程序的功能所需的处理可以被分配到网络上的

多台计算机上。

通常,为实现本发明实施例所执行的例程(不管被实现为操作系统的一部分或者特

定应用程序,组件,程序,对象,模块或者指令序列,或者甚至为其子集)本文中

都称之为“计算机程序代码”或者简称“程序代码”。程序代码通常包括一个或多个指

令,其在各个时间驻留于计算机中的各种存储器或者存储设备中,并且当被计算机

中的一个或多个处理器读取并执行时使得该计算机执行下述步骤,这些步骤是执行

具体化本发明各个方面的步骤或者元件所必需的。此外,虽然本发明是在并且将继

续在完全运行计算机和计算机系统功能的语境下描述的,但是本领域的技术人员将

理解,本发明的各种实施例能够作为各种形式的程序产品而分发,并且不管用于实

际携带该分发的计算机可读信号承载介质的具体类型如何本发明都同等适用。计算

机可读信号承载介质的示例包括但不限于可记录型介质和诸如数字和模拟通信链路

的传输型介质,可记录型介质例如其中有易失和非易失存储设备、软盘和其它可移

动盘、硬盘驱动器、磁带、光盘(例如,CD-ROM,DVD,等等)。

此外,下文中描述的各种程序代码可以基于其中在本发明的特定实施例中实现的应

用程序来标识。但是,应该理解,跟随的任何特定程序专用术语仅出于便利而使用,

因而本发明不应限于仅用于由这样的专用术语标识和/或暗示的任何特定应用程序

中。此外,给定通常无数的藉之可以将计算机程序组织成例程、过程、方法、模块、

对象等等的方式,以及给定藉之将程序功能分配于驻留于特定计算机的各种软件层

(例如,操作系统,库,API,应用程序,java应用小程序(applet),等等)中的各种

方式,应该理解,本发明并不限于这里所描述的程序功能的特定组织和分配。

图2图示了磁盘阵列系统(例如RAID-6兼容系统)的控制子系统的框图。特别地,

更详细地示出了图1的大容量存储控制器16包括RAID控制器202,该RAID控制

器202通过系统总线208与处理器12耦接并且通过存储总线210耦接到各个磁盘

驱动器212-218。如一名普通技术人员所熟知的,这些总线可以是本质上专有的或

者遵循诸如SCSI-1、SCSI-2等工业标准的。RAID控制器包括执行下述程序代码的

微处理器204,该程序代码实现用于数据保护的RAID-6算法并且通常驻留于位于

RAID控制器的存储器中。特别地,要存储到磁盘212-218上的数据被用来产生奇

偶校验数据,然后被拆开(break apart)并且分带于磁盘212-218上。磁盘驱动器

212-218可以是直接通过总线210耦接到控制器202的单独磁盘驱动器或者可以包

括其自身的磁盘驱动适配器,其允许一串单独磁盘驱动器连接到存储总线210。换

言之,磁盘驱动器212可以在物理上实现为耦接到单个控制器的4或8个单独磁盘

驱动器,该单个控制器连接到总线210。当数据在任一方向上在磁盘驱动器212-

21 8和RAID控制器202之间交换时,提供缓冲器20以帮助数据传输。缓冲器206

的使用有时可能在数据传输上产生瓶颈,并且众多缓冲器的引入可能增加RAID控

制202的成本、复杂性和尺寸。这样,本发明的某些实施例涉及以经济有效的方式

提供及利用这些缓冲器206。

应该理解,图1和图2中所示的实施例本质上仅是示例性的。例如,应该理解,本

发明可适用于除RAID-6环境外的磁盘阵列环境。还应该理解,与本发明一致的磁

盘阵列环境可以利用驻留于计算机的主存储器中的完全软件实现的控制算法,或者

计算机或控制器中通过程序代码操纵的某些功能可以以硬件逻辑电路实现,反之亦

然。因而,本发明不应限于这里所讨论的具体实施例。

增加RAID-6磁盘访问中的并行性

在RAID-6系统中,当执行诸如再同步奇偶校验和数据、重构磁盘或者执行暴露模

式的读之类的恢复操作时,必须执行不同磁盘上的许多I/O操作以读取可用数据,

如果适当则将所恢复的数据存储回到磁盘阵列中。在读取特定奇偶校验带区的数据

之后,可以执行适当的计算以恢复磁盘阵列中磁盘上的数据或奇偶校验信息。本发

明的实施例包括用于以最大化各种I/O操作的并行性以及更好平衡磁盘利用率的方

式执行这些操作的技术。

例如,已经发现,可以通过选择性地省略磁盘阵列中关于各种恢复操作的、来自磁

盘的访问来获得性能上的改进。如前所述,RAID-6被设计成处理两个磁盘失效,

因而可以使用来自N-2个磁盘的数据求解上面的方程式(7)。如果两个磁盘失效了,

则可使用剩余的N-2个磁盘从方程式(7)恢复磁盘的数据。即使当只有一个磁盘失

效时,该磁盘的数据也可根据方程式(7)恢复。但是,请注意,应该理解,在这样

的情况下,当求解该方程式时可以省略来自磁盘之一的数据。

在RAID-5实现中,从给定磁盘恢复奇偶校验或数据的任何尝试(例如,再同步奇

偶校验和数据、重构磁盘或者执行暴露模式的读)都要求访问阵列中的所有其它磁

盘。但是,已知RAID-6实现为求解一个奇偶校验带区方程式并不需要来自所有其

它磁盘的数据,则我们发现关于求解这样的方程式可能甚至不需要访问一个磁盘。

结果是,在与本发明一致的实施例中,可以期望省略对与检索用于求解奇偶校验带

区的数据相关联的一个或多个磁盘的访问,由此降低了这些磁盘的总体利用率。

此外,虽然在需要求解一个奇偶校验带区方程式的所有情形下都可以省略一个特定

磁盘,但是通常期望,关于诸如磁盘重构或者一系列暴露模式的读操作之类的恢复

操作,在求解不同奇偶校验带区的奇偶校验带区方程式时选择不同的磁盘子集来省

略。因而,与在恢复操作期间一个磁盘始终不被访问的情况不同,可以执行确定在

给定恢复操作期间不使用哪个磁盘以便在所有磁盘中更好地平衡利用水平。

可以使用与本发明一致的各种方式选择磁盘的不同子集。在一个实施例中,可以使

用随机选择。但是,在其它实施例中,可以使用其它负载平衡型的算法,例如轮盘

制(round robin)选择。应该理解,不同子集的选择并不要求每个子集与所有其它子

集不同,而是只要被包含到用于求解奇偶校验带区方程式的子集中的磁盘不时发生

变化(例如,对每个奇偶校验带区,或者对于奇偶校验带区的子集),从而与每个奇

偶校验带区都省略相同一个或多个磁盘的情况相比更好地平衡了磁盘阵列中磁盘的

利用率。

此外还发现,关于各种恢复操作通过使与多个奇偶校验带区相关联的磁盘访问较低

可以获得性能上的改进。例如,当再同步奇偶校验带区时,首先读数据驱动器,然

后将奇偶校验计算的结果写到奇偶校验盘中。在常规的设计中,在正在读数据驱动

器期间,奇偶校验盘保持空闲。与本发明一致的实施例通过使与恢复数据到多个奇

偶校验带区相关联的读操作和写操作相交迭以减少给定磁盘阵列中的空闲时间而解

决了该低效率的问题。除了RAID-6和类似环境外,本文所描述的交迭磁盘访问也

可以用在其它磁盘阵列环境中,例如,用在RAID-5环境中。

图3中描绘了用于完成恢复操作(例如,再同步或重构操作)的示例性方法的流程图。

根据该方法,用于两个不同奇偶校验再同步操作的访问被交织进行(interleave),从

而对奇偶校验和数据盘的访问可以并行发生,因而减少了磁盘的空闲时间并且改进

了用于执行重构和再同步所花费的时间。应该理解,用于两个或多个奇偶校验带区

的重构操作以类似的方式进行。

在图3的流程图中,数据磁盘上分布在奇偶校验带区A中的一组数据用于计算奇

偶校验带区A的奇偶校验值P和Q。此外,数据磁盘上分布在奇偶校验带区B中

的一组数据用于计算奇偶校验带区B的奇偶校验值P和Q。在步骤302中,执行

针对数据磁盘尤其是针对位于奇偶校验带区A中区域的第一组读操作以检索用于

计算奇偶校验带区A的相应奇偶校验值P的一组数据。同时,将第二组读操作排

队,该第二组读操作将从分配于每个数据磁盘上的奇偶校验带区B的区域中检索

一组不同的数据,该组不同的数据用于计算奇偶校验带区B的相应的奇偶校验值

B。一旦第一组读操作完成,则在步骤304中,可以将奇偶校验带区A的新奇偶校

验值P写到P奇偶校验盘中,同时通过磁盘阵列的其它磁盘执行第二组读操作。

在步骤306中,执行第三组读操作——这时是第二次从奇偶校验带区A检索数据

以生成奇偶校验值Q,并且同时将奇偶校验带区B的奇偶校验值写到P奇偶校验

磁盘中。接下来,在步骤308中,执行第四组读操作以读取来自奇偶校验带区B

的一组数据,该组数据用于生成奇偶校验带区B的奇偶校验值Q。在执行这些后

面的读操作的同时将奇偶校验带区A的奇偶校验值Q写到Q奇偶校验盘中。最终

在步骤310中,将奇偶校验带区B的奇偶校验值Q写到Q奇偶校验盘中。

通过根据该算法交迭再同步和重构操作,更平等地利用奇偶校验盘和数据盘,这将

提高再同步和重构功能的性能。受益于本直接公开的本领域普通技术人员将注意到,

前述算法可以应用于交迭许多奇偶校验带区之间的操作。

例如,图4接下来图示了用于完成暴露模式的读操作以从暴露的磁盘取数据的示例

性方法。根据该方法,图示了用于对两个奇偶校验带区的两个暴露的读操作的访问,

其中一个这样的访问在步骤400中执行,另一个访问在步骤402中执行。在这两个

操作中,N-2个磁盘的不同子集被从N-1个磁盘中随机选出并且生成暴露磁盘的数

据,该N-1个磁盘包含来自奇偶校验带区的可以用于求解奇偶校验带区方程式的

数据。结果是,在每个操作中,磁盘阵列中的一个磁盘将不被访问,从而使得该磁

盘空出来执行其它操作(包括例如,处理交迭的访问,诸如上面关于图3讨论的)。

应该理解,通过随机地从一系列操作中省略不同磁盘将有助于在磁盘阵列上更好地

平衡磁盘利用率,并因而提供总体系统吞吐量。应该理解,重构操作可以以类似的

方式利用这样的技术。

这样,本发明的实施例在RAID-6或类似磁盘阵列环境中提供了一种方法和系统,

其使不同的磁盘访问操作交织和/或选择在执行恢复操作时要使用的不同磁盘以平

衡磁盘利用率并且减少等待时间(latency)。在不背离本发明的精神和范围的条件下

可以对所示的实施例进行各种修改。因而,本发明在于所附的权利要求。