容许存储系统中的多个存储设备故障的系统和方法

文档序号:6773901阅读:144来源:国知局
专利名称:容许存储系统中的多个存储设备故障的系统和方法
技术领域
本发明涉及数据存储领域,并具体地涉及盘阵列系统。更具体地,本发明涉及用于构造盘阵列系统的方法,所述的盘阵列系统容许故障存储设备的多种组合,而不会丢失数据。
背景技术
计算机系统使用例如奇偶校验计算的数据冗余方案来防止存储设备上的数据丢失。通过计算跨一些同样的存储设备(也被称为数据驱动器)的特定字长的数据(也被称为数据单元)的函数而计算冗余值。这种冗余的一个示例是被计算为数据的二进制和的异或(XOR)奇偶校验。
下文中被称为奇偶校验值的冗余值被存储于多个存储设备上被称为奇偶校验单元的位置。在存储设备故障致使奇偶校验单元值丢失的情况下,能够从存储于一个或多个数据单元上的数据中重新生成奇偶校验值。类似地,在存储设备故障致使数据单元值丢失的情况下,能够从存储于一个或多个奇偶校验单元和可能的一个或多个其他无故障数据单元上的值中重新生成数据值。
在独立盘冗余阵列(RAID)系统中,跨盘驱动器将数据值和相关的奇偶校验值划为条。在将硬盘驱动器管理为单个逻辑直接(DASD)或连接网络(NASD)的存储设备的存储子系统中,在所述子系统的阵列控制器中实现RAID逻辑。也可在主系统中以软件或网络存储子系统中的某种其他设备的形式实现这种RAID逻辑。
盘阵列,特别是RAID-3和RAID-5盘阵列,已经成为对于高可用的和可靠的盘子系统的可接受的设计。在这种阵列中,在冗余盘(奇偶校验驱动器)上维护来自一些盘的数据的XOR。当一个盘故障时,能够通过对幸存盘上的数据和奇偶校验进行异或并且将此数据写入备用盘而重新构造所述盘上的数据。如果在完成重新构造之前第二个盘故障,则数据丢失。
RAID-6是RAID-5的扩展,其防止两个驱动器的故障。存在已提出容许两个驱动器故障的许多其他的RAID算法例如,Reed-Solomon[参考I.S.Reed等人的“对于特定的有限领域的多项式代码(Polynomial codes over certain finite fields)”,出自1960年的“工业和应用数学社团的杂志(Journal of the Society for Industrial andApplied Mathematics)”,卷8,300-304页]、Blaum-Roth[参考M.Blaum等人的“在最低密度的MDS代码上(On lowest density MDScodes)”,出自1999年的“IEEE关于信息理论的学报(IEEETransactions on Information Theory)”,卷45,46-59页]、EvenOdd[参考M.Blaum等人的“EVENODD用于容许RAID体系结构中的双盘故障的有效方案(EVENODDan efficient scheme for toleratingdouble disk failures in RAID architecture)”,出自1995年的“IEEE关于计算机的学报(IEEE Transactions on Computers)”,卷44,192-202页]、Row-Diagonal Parity[参考P.Corbett等人的“用于启用对存储阵列中的双故障的恢复的行-对角线奇偶校验技术(Row-Diagonal parity technique for enabling recovery from doublefailures in a storage array)”(美国专利申请US 20030126523)]、XCode[参考L.Xu等人的“X-Code具有最佳编码的MDS阵列代码(X-CodeMDS array codes with optimal encoding)”,出自1999年的“IEEE关于信息理论的学报(IEEE Transactions on Information Theory)”,272-276页]、ZZS[参考G.V.Zaitsev等人的“用于校正字节错误最小检查密度代码(Minimum-check-density codes for correcting bytesof errors)”,出自1983年的“信息传输中的问题(Problems inInformation Transmission)”,卷19,29-37页]、BCP[参考S.Baylor等人的“用于提供防止多设备系统中的双设备故障的容错的有效方法(Efficient method forproviding fault tolerance against double devicefailures in multiple device systems)”(美国专利US 5,862,158)]、LSI[参考A.Wilner等人的“可容许多驱动器故障的raid系统(Multipledrive failure tolerant raid system)”(美国专利US 6,327,672 B1)]、Samsung[参考T-D Han等人的“用于在外部存储子系统及其装置中存储奇偶校验并重建故障盘的数据内容的方法(Method for storingparity and rebuilding data contents of failed disks in an externalstorage subsystem and apparatus thereof)”,美国专利6158017]以及Nanda[参考S.Nanda等人的“用于在盘阵列中的盘容错的方法和系统(Method and system for disk fault tolerance in a disk array)”],[参考美国专利申请US 2004/0078642 A1]。已存在防止多驱动器故障的一些额外扩展例如,Reed-Solomon[参考如上]和EO+[参考M.Blaum等人的“具有独立奇偶校验符号的MDS阵列代码(MDS array codeswith independent parity symbols)”,出自1996年的“IEEE关于信息理论的学报(IEEE Transactions on Information Theory)”,卷42,529-542页]。
更近地,已经设计了存储系统,其中,存储系统是网络中的节点(不是简单的盘驱动器)。这种系统也可将RAID技术用于数据冗余和可靠性。本发明也适用于这些系统。尽管使用了盘阵列例示了此处的描述,但对于本领域的技术人员,怎样将本发明扩展到网络节点应用或用除了盘之外的存储设备构建的其他系统应该很清楚。
尽管已经证明常规的RAID技术是有用的,但还想要提供额外的改进。如通过已使用的或已提出的各种常规的RAID技术所能够看出的,对于计算机行业对存储子系统提出的各种需求,它们均不是完美的解决方案。许多常规的系统是复杂的,需要大量的计算机开销。此外,许多常规的系统对于特定的操作具有过高的盘IO需求。其他系统需要系统中的大量驱动器,而对更多驱动器的使用会降低整体的系统可靠性。许多常规的代码仅容许双故障。其他代码具有对代码参数的约束,所述的约束在真实系统中是不切实际的或者会导致性能损失。此外,容许T个故障(即,T个驱动器故障的所有可能组合)的许多常规代码无法容许大于T个驱动器故障的任何组合。能够容许超过T个故障的额外组合的常规的RAID技术比那些做不到这样的RAID技术具有更高的可靠性。
因此,所需要的是,用于使存储系统中的故障能恢复的系统、计算机程序产品和相关联的方法,其是简单的,能够处理许多故障情况以及具有合理的性能和参数的灵活性。迄今为止,对于这种解决方案的需要仍是未能满足的。

发明内容
本发明满足了这种需要,并且提供了用于使用水平和垂直奇偶校验而容许存储系统中的多个存储设备故障的系统、计算机程序产品和相关联的方法(这里将它们全体称为“所述系统”或“本系统”),从而使存储子系统所需的操作能有效实现。
本发明的首要特征是特定数据和奇偶校验布置,其结合了来自对于存储系统提出的两个基本系列的代码中的特征。在对于存储系统的许多擦除代码中,所有奇偶校验值被存储于与所有数据分离的盘上,从所述所有数据中计算所述奇偶校验值。例如,这是Reed-Solomon、Blaum-Roth、Even-Odd、Row-Diagonal Parity、LS1(所有均参考如上)以及许多其他示例中的情况。在下文中将这种代码称为“水平”代码,因为用与数据值的水平关系放置奇偶校验值。在大多数其他擦除代码中,所有的奇偶校验值与数据一起被存储于盘上,如对于X-code、ZZS和BCP代码的情况。在下文中将这种代码称为“垂直”代码,因为用与数据值的垂直关系(在相同盘上垂直地对准)放置奇偶校验值。本发明将一些奇偶校验值放置在与从中计算奇偶校验值的数据分离的盘上(以水平关系),以及将额外的奇偶校验值与数据一起放置在盘上(以垂直关系)。在下文中,本发明的代码被称为“水平-垂直”代码或简短地称为“HoVer”代码。这种代码被称为具有“HoVer数据/奇偶校验布置”或简短地称为“HoVer布置”。
Samsung[参考T-D Han等人的“用于在外部存储子系统及其装置中存储奇偶校验并重建故障盘的数据内容的方法(Method forstoring parity and rebuilding data contents of failed disks in anexternal storage subsystem and apparatus thereof)”,美国专利6158017]中的代码之一的DH2代码具有与本发明相同的HoVer性质。不过,它具有不适用于本发明的三个局限。第一,它仅能够容许双盘故障,而本发明具有容许三个盘故障的所有组合的至少两个结构以及容许四个盘故障的所有组合的一个结构。第二,DH2代码不能容许三个盘故障的任何组合,而对于本发明的能容许双故障的实施例的设计参数的特定选择能够容许三个故障的一些组合。更一般地,对于本发明的能容许T个故障的实施例,一些参数选择可容许T+1或更多故障的特定组合。第三,DH2代码被限制为p+1个盘和p-2行数据以及一行奇偶校验,其中p是素数。本发明的能容许双故障实施例的优选实施例对阵列大小没有限制,并放宽了对行的数量的限制。
如之前的段落中提到的,本发明的另一特征是设计参数的灵活性。大多数擦除代码将盘上的数据划分为块或单元,并将这些单元用作为用于计算奇偶校验值的构建块。我们将每一盘上数据单元的数量称为数据行的数量。数据行的数量越大,当盘丢失时包括用于重构或恢复的成本的特定操作就越昂贵。这种昂贵的成本既存在于读恢复数据和奇偶校验所需的IO的数量和大小,也存在于用于重新计算丢失数据的XOR或其他数学公式。在本领域的当前状态中,当数据盘的数量增加时,行的数量也增加。更明确地,当前系统需要行数量的固定关系作为数据盘的数量的函数(如例如以上参考的X-code、ZZS、BCP的垂直代码或者以上参考的Samsung代码中),或者行数量的下限作为数据盘的数量的函数(如以上参考的水平代码Blaum-Roth、EvenOdd或Row-Diagonal Parity代码中)。本发明具有更想要的特征由数据盘的数量的函数限定行数量的上限。即,对于固定数量的数据盘,能够将行数量从最大值向下调节为任何其他值。这种向下调节或多或少地降低了代码的整体效率(或速率),但提高了特定的性能和可靠性特征。
Nanda代码[参考S.Nanda等人的“用于在盘阵列中的盘故障容许的方法和系统(Method and system for disk fault tolerance in a diskarray)”(美国专利申请US 2004/0078642 A1)]具有与HoVer布置类似的数据/奇偶校验布置。此代码对参数(行和盘的数量)几乎没有限制,不过它在一些方面与本发明不同。第一,它仅应用到能容许双故障的情况。第二,它在对每一奇偶校验单元计算有贡献的数据单元的数量上有很大变化,例如,在一些情况下,仅有一个数据单元涉及给定的奇偶校验单元(即,数据单元的镜像)。这种大的变化能够导致存储系统中不想要的性能不平衡。第三,本发明施加限制h+v≤2=T,而Nanda代码具有两个水平奇偶校验条(h=2)和一个垂直奇偶校验行(v=1),以致这两个值的和超过了故障容许值2。最后,比起本发明的相应的容许双故障的实施例,Nanda代码的空间有效性显著地较差。
在本发明的再一个特征中,阵列大小能够扩展超过最小值,而不会改变计算机开销的复杂性。事实上,这是行数量的灵活性的另一视点。一般而言,本系统对于固定数量的行能够支持超过特定数量的任何数量的数据盘,所述的特定数量是行数量的函数。扩展阵列的大小不会显著地增加恢复的总体成本,而是提供了实现的灵活性。此外,通过一些实施例,通过容许超过代码的最小故障容许的故障的特定组合,对于固定行数的大量盘能够提高可靠性。在以下的详细描述中给出了示例。
本发明的特征在于,存在能够容许对于某个参数T尽量多的T个故障的所有组合的实施例。本发明的另一特征在于,存在实施例,使得在恰好T个奇偶校验单元中冗余地存储每个数据单元;即,对于每个数据单元的数据出度(out-degree)恰好是T。这是对于容许T个故障的所有组合的任何代码的最佳值。因此,本发明具有实施例,其具有在高故障容许的代码之中的最佳更新IO需求。本系统的其他实施例也能够放宽此限制。


通过参考以下描述、权利要求和附图,将更加详细地描述本发明的各种特征和实现它们的方式,在附图中,在适当的地方重复使用标号,以表示所引用项目之间的对应性,并且在附图中图1是其中执行用于实现存储冗余方案的系统和相关联方法的示例性环境的示意图,在所述方案中可部署HoVer数据/奇偶校验布置;图2是说明了示出图1的系统中的二维数据和奇偶校验HoVer布置的示例性布置的图;图3是表示了能够容许两个故障的本系统的示例性实施例的图;图4是表示了对于图3的系统的两个故障情形和重构路径的图;图5是表示了图3中能够容许两个故障的系统的可选实施例的图;图6是表示了对于图5的系统的两个故障情形和重构路径的图;图7是表示了能够容许三个盘故障的本系统的一示例性实施例的图;图8是表示了能够容许三个盘故障但比图7的实施例少一个垂直奇偶校验行的本系统的可选示例性实施例的图;以及图9是表示了能够容许四个盘故障的本系统的一示例性实施例的图。
具体实施例方式
图1说明了示例性的环境(数据存储系统100),在所述环境中,系统和相关联的方法(共同被称为“系统”100)能够被用于实现具有水平和垂直奇偶校验层的故障容许存储系统。主计算机115连接于系统100的阵列控制器120。主计算机115将数据存储于N=n+h个盘驱动器的阵列125中,所述的阵列包括n个数据和垂直奇偶校验盘驱动器盘驱动器0(130)、盘驱动器1(135)、盘驱动器2(140)直到盘驱动器n-1(145)(共同被称为盘驱动器150),以及还包括h个水平奇偶校验盘驱动器盘驱动器0(155)、盘驱动器1(160)直到盘驱动器n-1(165)(共同被称为水平奇偶校验驱动器170)。垂直奇偶校验连同主数据被存储于n个数据和垂直奇偶校验盘驱动器150中。水平奇偶校验被存储于h个水平奇偶校验盘驱动器170中。
进一步参考图2,示出了总体的数据布置,即对于图1的数据存储系统100的垂直奇偶校验和水平奇偶校验。选择了每一数据和垂直奇偶校验盘驱动器150的一部分,其包括数据和垂直奇偶校验条210;选择了每一水平奇偶校验盘驱动器170的一部分,其包括水平奇偶校验条220和未使用单元250。除了未使用部分之外,来自这两组盘驱动器的这些部分共同地构成条纹200,或系统100的一个实例。在下文中,条纹200的数据部分被称为数据子条纹。在下文中,条纹中的每一盘驱动器的部分被称为条。在下文中,数据和垂直奇偶校验条的数据部分被称为数据子条。在下文中,数据和垂直奇偶校验条的垂直奇偶校验部分被称为垂直奇偶校验子条。水平奇偶校验条220也包含未使用部分250;这种未使用部分可被用于保存来自本发明的同一实例的额外数据或奇偶校验值,或者来自本发明的另一实例的额外数据或奇偶校验,或者可被用于其他系统信息,或者根本不使用。将每一条进一步划分为相同数量r+v的相同大小(例如字节、字、块等等)的单元。将每一数据子条的单元进一步指定为标注为X(i,j)(0≤i≤r-1,0≤j ≤n-1)的数据单元,其中每个数据子条存在r个这样的数据单元;垂直奇偶校验子条的单元为V(i,j)(0≤i≤v-1,0≤j≤h-1),其中每个垂直奇偶校验子条存在v个这样的垂直奇偶校验单元;水平奇偶校验子条的单元为H(i,j)(0≤i≤r-1,0≤j≤h-1),其中每个水平奇偶校验条存在r个这样的垂直奇偶校验单元。在此示例性实施例中共存在r·v个未使用单元。在前r行中水平对准的数据和水平奇偶校验单元构成r个数据和水平奇偶校验行230;在接下来v行中水平对准的垂直奇偶校验单元构成v个垂直奇偶校验行(除未使用单元之外)。本发明施加了额外的限制h+v≤T,其中T是代码的故障容许。此限制允许实现在这样的代码中具有最大效率的HoVer数据/奇偶校验布置。
其他实施例可将额外的数据或奇偶校验单元放置于水平奇偶校验条的未使用部分中。此外,其他实施例可首先放置垂直奇偶校验行,或可改变任何条的行的序列,或可将一些垂直或水平奇偶校验单元转换为未使用单元(例如,通过固定这些单元的内容在某个值)。图2中示出的示例性布置是系统100的优选实施例。
本领域的当前状态中的许多擦除代码没有垂直奇偶校验行,而仅将奇偶校验值存储于水平位置中(所谓的“水平代码”);这是以上参考的Blaum-Roth、EvenOdd、Row-Diagonal Parity以及其他代码的情况。而本领域的当前状态中的其他擦除代码没有水平奇偶校验条,而仅将奇偶校验值存储于垂直位置中(所谓的“垂直代码”);这是以上参考的X-code、BCP、ZZS代码和其他代码的情况。Samsung DH2代码[参考T-D Han等人的“用于在外部存储子系统及其装置中存储奇偶校验并重建故障盘的数据内容的方法(Method for storing parityand rebuilding data contents of failed disks in an external storagesubsystem and apparatus thereof)”,美国专利6158017]具有与图2类似的布置,但它有额外的局限性。第一,它仅有一行垂直奇偶校验(v=1)和一条水平奇偶校验(h=1)。第二,它限制数据和垂直奇偶校验条的数量为n=p,其中p是素数;对于图2的通用布置没有这样的首要限制。第三,DH2代码中的数据和水平奇偶校验行的数量被固定为r=p-2;如随后所示,本发明能够放宽此限制,允许额外的参数灵活性。第四,DH2代码仅能够从两个盘故障中恢复,而本发明的更通用布置可以具有能够容许更多故障的配置;随后给出容许三个和容许四个故障的示例。Nanda代码[参考S.Nanda的“用于在盘阵列中的盘故障容许的方法和系统(Method and system for disk faulttolerance in a disk array)”(美国专利申请US 2004/0078642 A1)]具有HoVer数据/奇偶校验布置,但具有两条水平奇偶校验(h=2)和一行垂直奇偶校验(v=1)。这些代码仅能够容许两个盘故障,并因此它们超过了对于本发明的双故障容许实施例的限制h+v≤2。
能够在数学上看出,图2中的本系统的通用布置对参数r、n、h、v强加了一些必要关系,以使代码容许某个数量T个故障盘。具体地,必须保持r≤vn-TT-h]]>或等价地,n≥rT-hv+T·---(1)]]>根据用于计算垂直和水平奇偶校验的公式,可以出现其他限制。不过,一般而言的情况是,如果一配置对于一些值r、n、h、v具有正确的故障容许,则对于具有n、h、v的相同值的另一配置能够对于每一r’≤r的值具有相同的故障容许。类似地,如果一配置对于一些值r、n、h、v具有正确的故障容许,则具有对于r、n、h、v的相同值的另一配置能够对于每一n’≥n的值具有相同的故障容许,至多具有少量例外。相对于当前系统,这种参数选择的灵活性具有显著的优点。对于当前的所有水平代码,数据行的数量r和数据条的数量n的关系或者是固定的,或者r的下限被n的某种函数所限制。Blaum-Roth和EvenOdd代码要求对于某个素数p,r=p-1≥n-1(类似地,Row-Diagonal Parity代码要求r=p-1≥n)。也将类似的行和阵列大小的限制施加于例如X-code、BCP和ZZS的垂直代码。这种限制意味着,当阵列大小增加时,则单元行的数量也增加。不过,这种增加在两方面增加了性能损失。第一,它增加了重构丢失单元所需的公式的复杂性,从而增加了计算成本和计算开销。第二,它通常增加了收集重构算法需要的数据值和奇偶校验值所需的盘IO的数量和大小。稍后提供本发明在此方面怎样改进现有技术的示例。
当然,当h=1时,以及可能更一般地,本发明的实施例应该存在,其中,每一数据单元恰好涉及(即,对其值有贡献)T个奇偶校验单元。这是对于容许T个故障盘的任何擦除代码的最佳值。在下文中给出的特定的示例性实施例均具有此性质。
对于本领域中的技术人员以下应是清楚的能够将本发明实现于相同盘上的多个条中或一个实现的盘的子集或超集上。以下也应是清楚的每一实现可以对于参数r、n、h、v和T具有不同值。此外,对于本领域的技术人员以下应该清楚怎样可以使用图2的布置中的未使用单元250。可将此未使用空间用于保存例如阵列状态或条到物理盘的逻辑到物理映射的关于阵列的元数据;当在相同盘上实现系统100的多个实例时,可将一条纹的未使用空间与另一条纹的已使用空间(数据、垂直或水平奇偶校验单元)进行叠加。
图3描述了能够容许两个故障盘并且具有h=1和v=1的本发明的一个示例性实施例。该配置与Samsung DH2代码类似,尽管本实施例没有DH2所施加的对于n的首要限制或对于r的固定关系(在图3的示例中,n=9和r=4)。在此实施例中,条纹200包括一垂直奇偶校验行320、四个数据行310和四个水平奇偶校验单元330。在图3的实施例中仅有一个未使用的数据单元340。根据以下公式,将每一水平奇偶校验单元H(i)计算为它的行中的数据单元的XOR(异或)H(i)=n-1⊕j=0X(i,j)·---(2)]]>此外,将每一垂直奇偶校验单元U(i)计算为(数据子条纹310中斜率为+1的)上对角线数据单元的XOR,所述单元始于从垂直奇偶校验单元条紧邻向右(偏移=1)的数据单元,在数据子条纹310内从右向左回转。将符号U(i)用于表明“上对角线”。在数学上,这由以下公式表达U(j)=r-1⊕i=0X(i,mod(j+r-i,n))---(3)]]>其中,mod(k,n)表示k对n求模的值,即,k除以n的最小非负整数余数。
图3的图示出了怎样将每一数据单元映射到它对应的垂直奇偶校验单元U(j)。每一数据单元格中的标号对应于它的垂直奇偶校验单元U(j)的条号j。例如,将标号为“3”的单元360、370、380、390进行XOR,以形成垂直奇偶校验单元U(3)350。将这种关系向右旋转,在数据子条纹内从右向左回转,以进一步生成其他垂直奇偶校验单元。
当一个数据盘故障时,本发明能够使用或者水平奇偶校验和一组数据单元(来自相同行)或者垂直奇偶校验和一组数据单元(来自相同对角线)来恢复在关联数据条上的每一单元。使用水平奇偶校验需要读n-1个数据单元和一个水平奇偶校验单元,以及具有n个被加数的XOR计算。另一方面,使用垂直奇偶校验仅需要读r-1个数据单元和一个奇偶校验单元,以及仅具有r个被加数的XOR计算。公式(1)隐含r≤n-2;这意味着,在这种故障情形下,使用垂直奇偶校验值比使用水平奇偶校验值得到更有效的重构方法。与此相反以及一般地,平行代码通常需要至少n-1个数据单元和至少一个水平奇偶校验单元,以及至少n个被加数的XOR计算。因而本发明在此方面改进了现有技术。同一命题对于当前的垂直代码适用,因为它们紧密地将行的数量与数据条的数量相关联。
图3的实施例具有r=4。对于公式(2)和公式(3),以及对于n=9,v=1,h=1,图2的布置对于范围1≤r≤5中的r的每个值产生有效的双故障容许擦除代码。这例示了本发明对于参数选择的灵活性。如所述的,越小的行数量使得对丢失数据单元的恢复能够越有效。
图3的实施例能够容许两个盘故障的任何组合。不过,容易看出,通过移除首行,得到的擦除代码也能够容许三个盘故障的一些组合。例如,它能够放松水平奇偶校验条以及恰好为四个条偏移的任何两个数据条。这一点容易看出来,因为能够仅使用垂直奇偶校验各自恢复两个数据条。一般而言,当对于固定值r,数据盘的数量n增加时(或类似地,对于固定值n,行数量r减少时),能够被容许的三个盘故障的这样的组合的数量也增加。
当r=1时图3中所例示的代码与所谓的RAID51擦除代码的子代码类似。常规的RAID51代码将常规RAID5代码镜像到单独的盘上,并且能够容许三个故障的任意组合。移除常规的RAID51代码中的水平奇偶校验的镜像产生能够容许任何两故障的子代码。在具有r=1的图3的示例中,水平奇偶校验正好是常规的RAID5代码的RAID5奇偶校验。垂直奇偶校验正好是通过旋转的数据行的镜像(拷贝)。不存在RAID5奇偶校验的镜像,即,不存在水平奇偶校验的镜像。因而本系统与RAID51子代码类似,除了所镜像的数据出现于与数据子条纹相同的盘上,并且被向左旋转一个盘。常规的RAID51子代码需要2n+1个盘驱动器,而所描述的本系统仅需要n+1个盘驱动器。所需要的盘的这种较小的数量使得本发明的此实施例比常规的RAID51双故障容许子代码更可靠。
容许双故障盘的所有组合的以及通过公式(2)和(3)构建的v=1和h=1的本发明的实施例对于参数r和n具有以下限制r≤n-n/pr(n)-1,(4)其中pr(n)表示n的最小素因子。如果不保持此条件,则能够示出,无法重构故障条的特定对。相反地,如果保持此条件,则对于故障条对的任何组合,存在能够用于重构丢失单元的一组递归,并且所述的每一这种递归均具有仅需要单个垂直奇偶校验单元的起始点和已知的(未丢失)数据单元。在图4中给出了对于n=15和r=8时的情况的两个示例,其满足公式(4)的界限(因为pr(15)=3)。
图4仅示出了当n=15和r=8时对于图3的实施例的实例的数据子条纹410,其中r是小于公式(4)的上限9的一个数。图4的情况1示出了通过阴影所指示的丢失的数据条0和7(430)。(在情况1中,假定条11和12(440)是好的)。突显单元450以示出,假定对应于这些单元的垂直奇偶校验已丢失,以致此类奇偶校验无法被用于对于这些丢失的特定数据单元的任何重构方法中。在每一丢失格中的数字是各自仅使用单个奇偶校验值的不同奇偶校验等式的最小数量,其是重构所述格中的丢失单元所需的。换句话说,此数字表示重构单元的最小递归中的步骤的数量。在最后一步从水平奇偶校验单元(以及来自相同行的相关数据单元)中计算偶数数字的格,以及在最后一步从垂直(上对角线)奇偶校验单元(以及来自相应上对角线的相关数据单元)中计算奇数数字的格。例如,能够从通过跟随到单元455的虚线上对角线路径而发现的条6中的垂直奇偶校验单元中重构具有标号1的单元455。一旦重构了单元455,能够通过跟随到单元460的虚线水平路径,将来自行7的水平奇偶校验单元用于重构标号为2的单元460。类似地,现在能够跟随从单元460到单元465的虚线的上对角线路径以重构单元465(在递归中的第三步)。最后,能够通过跟随始于单元465的虚线水平路径重构单元470。注意,对于这种故障情况,能够在一步中从垂直奇偶校验重构许多单元(标号为1的那些单元)。每一标号为1的这种单元都是递归的开始;在许多情况下,这些递归也具有长度1,尽管刚才给出的所述实例示出了能够出现较长的长度。
对于数据条11和12(440)丢失(而不是情况1中的条0和7丢失)的情况2,仅有一个单元452的垂直奇偶校验丢失了。不过,仅存在一个能够被用于重构任何丢失数据单元的递归。即,仅存在一个标号为1的单元480,其是递归的开始。每个其他的丢失单元必须通过开始于单元480的递归进行重构。单元485是递归中的最后一个单元,并且其标号为16,表示在能够重构此单元之前在递归中存在16步。
图4示出,对于具有公式(2)和(3)并且满足条件(4)的图3的实施例,在重构丢失数据单元的成本(递归的长度)上存在很大变化,其极大地依据特定的故障实例。在所有情况下,所出现的最差情况是单一的长递归,而在许多情况下存在许多很短的递归。应将此与其中一般对于每个故障对仅存在一个或两个长递归的双故障容许擦除代码的本领域的当前状态比较。这突出了本发明的再一个优点,即,对于本系统的代码,恢复能够更有效。
通过图4和公式(3)例示的实施例具有垂直奇偶校验单元,其被安置于紧邻上对角线的开始数据单元(在最后的数据行中的数据单元)的左边的条中。查看此单元的另一方法是对于特定垂直奇偶校验单元的给定上对角线的开始点从所述奇偶校验单元的条向右偏移一个条。其他实施例也是可能的,并具有其他优点。图5示出了与图3类似的另一实施例,但现在垂直奇偶校验单元开始将它的上对角线向右偏移两个条。如图3中,数据子条纹510的每一数据单元通过与它相关的上对角线奇偶校验U(j)的条号j进行标注。例如,从四个标号为“2”的数据单元560、570、580、590中计算上对角线奇偶校验单元U(2)550。应该清楚,其他偏移也是可能的。对于偏移值s,将上对角线奇偶校验公式(3)修改为以下公式U(j)=r-1⊕i=0X(i,mod(j+r-1+s-i,n))---(5)]]>不过,不同的偏移限制对于r的值的范围。对于偏移s≤n-r,能够示出r≤n-s-n/pr(n)(6)当n不是素数时,以及r≤n-max(s,2)当n是素数时。
图6示出了具有对于偏移值s的可选选择的优点。当s=1时,在图4中已示出,一些故障情形需要最大长度的单一递归以恢复两个丢失条的数据单元。在图6中,示出了对于图4的实施例的实例的示例性数据子条纹610,当s=2、n=15和r=8时的公式(6)的上限为8(因为pr(15)=3)。图6的情况1示出了通过阴影表示的丢失的数据条0和7(630)。(在情况1中,假定条11和12(640)是好的)。突显单元650以示出,假定对应于这些单元的垂直奇偶校验丢失,以致此类奇偶校验无法被用于对于这些丢失的特定数据单元的任何重构方法中。在每一丢失格中的数字是在该格中重建丢失单元所需的不同奇偶校验等式的最小数量,每个等式仅使用单一奇偶校验值。换句话说,所述数字表示在重构单元的最小递归中的步骤的数量。在最后一步从水平奇偶校验单元(以及来自相同行的相关数据单元)中计算偶数数字的格,以及在最后一步从垂直(上对角线)奇偶校验单元(以及来自相应上对角线的相关数据单元)中计算奇数数字的格。例如,能够从条5(因为偏移值是2)中的垂直奇偶校验单元重构具有标号1的单元660。一旦已重构了单元660,则能够将来自行7的水平奇偶校验单元用于重构标号为2的单元665。
对于丢失数据条11和12(640)(而不是情况1中的条0和7丢失)的情况2,不存在丢失垂直奇偶校验的单元(对于图4中的偏移s=1,存在一个这样的单元)。此外,与图4中的示例相反,现在存在能够被用于重构任何丢失数据单元的两个较短的递归。现在两单元680和685是递归的开始点(标号1)。能够示出,对于s=2,不存在其中仅需要一个递归的双故障的情况;这与s=1的情况相反,在s=1的情况中,任何一对相邻条的丢失需要一个长的递归。
图6的两个示例展示了本发明的灵活参数范围的再一个优点;即,通过仔细选择参数,能够改善特定的重构成本。在图4的示例的情况1中,存在长度为4的一个递归,而在情况2中,存在长度为16的一个递归。在图6的示例的情况1中,将长度为4的递归分别划分为长度为2的两个递归,而在情况2中,将长度为16的递归分别划分为长度为8的两个递归。
对于本领域的技术人员,应该清楚,公式(2)和(3)或(5)不是当h=1和v=1时能够被用于生成本发明中的水平奇偶校验值的条和垂直奇偶校验值的行的唯一的公式。规则的(例如循环的)或不规则的其他奇偶校验公式或模式是可能的,并将被包括于本发明的范围中。
图7示出了本系统的另一示例性实施例,其中存在一个水平奇偶校验条(h=1)和两个垂直奇偶校验行(v=2),并且其能够容许三个故障盘或条。通过如图3和5中的公式(2)计算水平奇偶校验单元730。通过具有s=1的公式(5)计算图7中的奇偶校验单元的首行715,并且该首行包括“上对角线”奇偶校验。通过具有s=2的以下公式计算图7中的奇偶校验单元的第二行720,并且第二行包括“下对角线”奇偶校验D(j)=r-1⊕i=0X(i,mod(j+i-r+1-t,n))·---(7)]]>在此示例的数据子条纹710中存在四行和8条的数据单元,并且存在两个未使用单元740。每一数据单元用通过冒号()分隔的两个标志进行标注。在冒号左边的第一个标志是所述单元涉及的上对角线奇偶校验U(j)的条号j。在冒号右边的第二个标志是所述单元涉及的下对角线奇偶校验D(j)的条号j。例如,具有标号“0:1”的单元770涉及条0的上对角线奇偶校验U(0)752以及条1的下对角线奇偶校验D(1)。公式(7)表明,通过下对角线计算第二奇偶校验行720中的下对角线奇偶校验值,从右到左回转,终止于数据子条纹的最后一行,接着将向右的t个条(图7中t=2)放置于第二奇偶校验行720中。例如,从数据单元755、760、765和770中计算下对角线奇偶校验值D(1)750,如通过这些单元的每一个的右半个标号中的“1”所表示的。
图7的配置能够容许三个条(或盘)故障的所有组合。更一般地,对于公式(5)中的s的一些值和公式(7)中的t的一些值以及r值的某个范围,具有h=1和v=2和具有通过公式(2)、(5)和(7)计算的奇偶校验值的HoVer布置具有三个故障容许。能够示出,当v=1时存在对r的限制,其超过了如对于图3和5中的示例性布置的情况下的(1)的不等式中所给出的限制。在此情况下,所述限制更加复杂如果pr(n)=2,则对于任何s和t,必须是r≤n/2的情况;此外,如果s=1和t=2,则r≤n/2就够了;如果pr(n)=3并且n不能被5整除,则对于任何s和t,必须是r≤2n/3-2的情况;如果pr(n)=3并且n能被5整除,则对于任何s和t,必须是r≤3n/5-3的情况;此外,如果s=1和t=3,则r ≤3n/5-3就够了;如果pr(n)≥5,则对于任何s和t,必须是r≤n-n/pr(n)-1的情况;此外,可以推测,如果s=t=n/pr(n)+1,则r≤n-n/pr(n)-1就够了。
这些命题不给出对于何时具有h=1和v=2以及具有由公式(2)、(5)和(7)计算的奇偶校验值的HoVer布置具有三个故障容许的完整的必要和充分条件。具体地,最后一个命题仅给出了上限,但是在实践中,对于n≤200,其包括n的所有实际范围,没有找到计数的示例。pr(n)=3并且n不能被5整除的情况也是不完整的,尽管对于n≤360以及s=1和t=3,界限r≤2n/3-3足够了。
在再一个示例性的HoVer布置中,图8示出了本系统的实施例,其中存在一个水平奇偶校验条(h=1)和一个垂直奇偶校验行(v=1),并且其能够容许三个故障盘或条。这与图3和5的通用布置相同,但具有更大的故障容许。仅存在一个未使用单元840。通过如图3和5中的公式(2)计算水平奇偶校验单元830。通过如所指明的“小山”模式计算垂直奇偶校验值720。通过XOR组合所有都标号为“0”的上对角线上的单元860和下对角线上的单元870,以计算在第一条上的垂直奇偶校验V(0)850。以向右的循环模式重复此模式,并从右向左回转。在此示例中,对于给定奇偶校验值,上对角线的开始向右偏移两个条。此外,下对角线开始于从上对角线的末端向右偏移一个条。这两个参数允许额外的设计灵活性。本领域的技术人员能够看出,如果此设计具有对于r、n的一些值和两个这种偏移的所需的故障容许,则具有n的相同值、上对角线偏移的相同值、但具有少一行和下对角线偏移增加2的设计也将具有相同的故障容许。
对于图8中例示的具有三故障容许的通用的HoVer布置,公式(1)表达为r≤vn-32]]>或等价地,n≥2r+3。
也能够存在额外的限制。可以看出对于n的给定值和任何偏移的可能的r的最大值近似为对于图7例示的布置的可能值的一半。表1示出了r的一些最大值,对于如所表明的上对角线偏移以及等于一的下对角线偏移(如图8所例示的),所述的最大值是可能的。
表1.图8体现的系统100的示例

在再一个示例性的HoVer布置中,图9示出了本系统的实施例,其中,存在一个水平奇偶校验条(h=1)和三个垂直奇偶校验行(v=3),以及本系统能够容许四个故障盘或条。这扩展了图7中的通用布置,但具有更高的故障容许。存在三个未使用单元940。通过如前的公式(2)计算水平奇偶校验单元930。分别通过具有偏移s=1和t=1的公式(5)和(7)计算垂直奇偶校验值的前两行915。通过新公式计算垂直奇偶校验的第三行920,所述公式看上去是下对角线,但斜率是-1/2,即,向下一以及向右二(这是国际象棋中的“骑士的移动”的示例)。数学上,对于某个偏移值u,此公式是K(j)=r-1⊕i=0X(i,mod(j+2(i-r+1)-u,n))·---(8)]]>在图9的示例性布置中,偏移u=5。用由冒号()分别分隔的三个数字标注数据子条纹910中的单元。标号中的第一个数对应于此数据单元被映射于其中的上对角线奇偶校验单元的条号。标号中的第二个数对应于此数据单元被映射于其中的下对角线奇偶校验单元的条号。这正如图7中所示。标号中的第三个数对应于第三奇偶校验行920中的骑士对角线的奇偶校验单元的条号。例如,单元955、960、965和970各自在其标号中的第三个数字等于“3”,因此它们出现于奇偶校验值K(3)950中。以向右的循环模式重复这种模式,并从右向左回转。这三个偏移参数允许额外的设计灵活性。本领域的技术人员能够看出,如果对于r、n的一些值以及三个偏移s、t、u,此设计具有所需的四个故障容许,则具有对于n、s、t、u的相同值以及小于r的任意数量的行的设计也将具有相同的四个故障容许。
对于具有四个故障容许的图9中例示的通用HoVer布置,公式(1)表达为r≤n-4或等价地,n≥r+4。
也能够存在额外的限制。表2示出了r的一些最大值,其对于所表明的偏移是可能的(其他偏移可以适用于r的相同值——表2仅示出了对于每一特定情况的示例性的一组偏移)。
表2.图9体现的系统100的示例

由图7、8和9例示的HoVer代码的每一代码具有由图3和5中的示例所例示的HoVer代码的许多性质。存在对于参数选择的显著的灵活性。对于参数不存在根本性的限制。此外,对于适用于r的某个值的每一设计,存在适用于r’≤r的每个值的修改设计。r的较小值提供更有效的重构算法,尤其当仅丢失一个数据条时。对于固定的r,当n增加时,所述的布置能够容许故障的更多组合,其中故障条的数量超过基本的故障容许(对于图7和8此值为3,而对于图9此值为4)。此外,每一设计具有每个数据单元恰好涉及T个奇偶校验单元的性质,其中T是擦除代码的故障容许。
应当理解,已经描述的本发明的特定实施例仅仅说明了本发明的原理的特定应用。可以对此处所描述的用于在具有HoVer布置的存储系统中容许多个存储设备故障的系统和方法进行各种修改,而不会背离本发明的精神和范围。此外,尽管仅仅出于对故障容许盘阵列系统的说明目的而描述了本发明,但应该清楚,本发明也适用于例如任何系统,在所述系统中,图2中给出数据和奇偶校验单元布置,并且在所述系统中,存在大于或等于2的故障容许以及对于参数选择的显著灵活性。其他的这种系统的盘驱动器可被某些其他存储设备或媒介替换。尽管使用盘阵列例示了此处的描述,但对于本领域的技术人员应该清楚,能够将本发明扩展为通过存储设备而不是盘而构建的网络节点应用或其他系统。
权利要求
1.一种在N个存储设备的组中防止至少T个存储设备故障的方法,所述方法包括设定参数n、r、v、h、s,其中n+h=N,v≥1,h≥1,并且v+h≤T,以及r≤vn-TT-h,]]>以及其中,满足以下任一条件(a)T≥3;(b)T=2并且r≤n-n/pr(n)-1,其中n不是素数,并且其中pr(n)是能整除n的最大素数;(c)T=2并且r<n-2,并且其中n是素数;或者(d)T=2并且r≤n-1-s,s≥2,其中n是素数,并且其中垂直奇偶校验单元相对于垂直奇偶校验的所选择的数据单元的相对位置被移位一个偏移参数s;将每一存储设备的一部分逻辑地划分为在每一存储设备上的一个条;将存储设备上的条组织成条纹;将n个条指定为数据和垂直奇偶校验条;将h个条指定为水平奇偶校验条;将每一数据和垂直奇偶校验条划分为r个数据单元和v个垂直奇偶校验单元;将每一水平奇偶校验条划分为至少r个水平奇偶校验单元,并且将其余的每一水平奇偶校验条作为未使用单元;其中,对于每一奇偶校验单元,从条纹中选择一组数据单元,以使(a)所选择的一组数据单元还未被选择用于另一奇偶校验单元;以及(b)所选择的数据单元的存储设备与奇偶校验单元的存储设备不同;确保每一数据单元被选择用于至少T个不同的奇偶校验单元;以及从存储于所选择的一组数据单元的数据单元中的数据值中生成奇偶校验值,以及在奇偶校验单元中存储所述奇偶校验值。
2.权利要求1的方法,其中每一数据单元和每一奇偶校验单元的大小相同。
3.权利要求1的方法,其中所述的数据存储设备包括盘阵列中的盘。
4.权利要求1的方法,其中所述的数据存储设备是存储设备网络中的存储节点。
5.权利要求1的方法,还包括以循环模式将所述的数据单元分配到对于每一奇偶校验单元的数据单元组。
6.权利要求1的方法,还包括通过对所选择的一组数据单元的数据单元中的数据块进行异或来计算奇偶校验值。
7.权利要求1的方法,其中选择对于每一行中的一个水平奇偶校验单元的一组数据单元的步骤包括选择相应的数据单元的行中的所有数据单元。
8.权利要求1的方法,其中选择对于来自条纹的至少一个垂直奇偶校验单元的一组数据单元的步骤包括跟随斜线通过数据单元,从右向左回转,其中从数据单元的每一行选择一个数据单元。
9.权利要求1的方法,其中选择对于来自条纹的至少一个垂直奇偶校验单元的一组数据单元的步骤包括跟随斜线向上通过数据单元,接着跟随另一斜线向下通过数据单元,从右向左回转,其中从上斜线上的每一行选择一个数据单元,以及从下斜线上的每一行选择一个数据单元。
10.权利要求1的方法,其中垂直奇偶校验单元相对于其选择的数据单元之一的相对位置被移位一个偏移参数。
11.权利要求1的方法,其中每一数据单元恰好属于T个奇偶校验单元组。
12.一种具有多个可执行指令代码的计算机程序产品,所述代码用于在N个存储设备的组中防止至少T个存储设备故障,所述计算机程序产品包括第一组指令代码,用于设定参数n、r、v、h、s,其中n+h=N,v≥1,h≥1,并且v+h ≤T,以及r≤vn-TT-h,]]>以及其中,要满足以下任一条件(a)T≥3;(b)T=2并且r≤n-n/pr(n)-1,其中n不是素数,并且其中pr(n)是能整除n的最大素数;(c)T=2并且r<n-2,并且其中n是素数;或者(d)T=2并且r≤n-1-s,s≥2,其中n是素数,并且其中垂直奇偶校验单元相对于垂直奇偶校验的所选择的数据单元的相对位置被移位一个偏移参数s;第二组指令代码,用于将每一存储设备的一部分逻辑地划分为在每一存储设备上的一个条;第三组指令代码,用于将存储设备上的条组织成条纹;第四组指令代码,用于将n个条指定为数据和垂直奇偶校验条;第五组指令代码,用于将h个条指定为水平奇偶校验条;第六组指令代码,用于将每一数据和垂直奇偶校验条划分为r个数据单元和v个垂直奇偶校验单元;第七组指令代码,用于将每一水平奇偶校验条划分为至少r个水平奇偶校验单元,并且将其余的每一水平奇偶校验条作为未使用单元;其中,对于每一奇偶校验单元,第八组指令代码从条纹中选择一组数据单元,以使(a)所选择的一组数据单元还未被选择用于另一奇偶校验单元;以及(b)所选择的数据单元的存储设备与奇偶校验单元的存储设备不同;第九组指令代码,用于确保每一数据单元被选择用于至少T个不同的奇偶校验单元;以及第十组指令代码,用于从存储于所选择的一组数据单元的数据单元中的数据值中生成奇偶校验值,以及在奇偶校验单元中存储所述奇偶校验值。
13.权利要求12的计算机程序产品,其中每一数据单元和每一奇偶校验单元的大小相同。
14.权利要求12的计算机程序产品,其中所述的数据存储设备包括盘阵列中的盘。
15.权利要求12的计算机程序产品,其中所述的数据存储设备是存储设备网络中的存储节点。
16.权利要求12的计算机程序产品,还包括第十一组指令代码,用于以循环模式将所述的数据单元分配到对于每一奇偶校验单元的数据单元组。
17.权利要求12的计算机程序产品,还包括第十二组指令代码,用于通过对所选择的一组数据单元的数据单元中的数据块进行异或计算奇偶校验值。
18.权利要求12的计算机程序产品,其中第八组指令代码通过选择相应的数据单元的行中的所有数据单元而选择对于每一行中的一个水平奇偶校验单元的一组数据单元。
19.权利要求12的计算机程序产品,其中第八组指令代码通过跟随斜线通过数据单元并从右向左回转而选择对于来自条纹的至少一个垂直奇偶校验单元的一组数据单元,其中从数据单元的每一行选择一个数据单元。
20.一种在N个存储设备的组中防止至少T个存储设备故障的系统,所述系统包括用于设定参数n、r、v、h、s的装置,其中n+h=N,v≥1,h≥1,并且v+h≤T,以及r≤vn-TT-h,]]>以及其中,要满足以下任一条件(a)T≥3;(b)T=2并且r≤n-n/pr(n)-1,其中n不是素数,并且其中pr(n)是能整除n的最大素数;(c)T=2并且r<n-2,并且其中n是素数;或者(d)T=2并且r≤n-1-s,s≥2,其中n是素数,并且其中垂直奇偶校验单元相对于垂直奇偶校验的所选择的数据单元的相对位置被移位一个偏移参数s;用于将每一存储设备的一部分逻辑地划分为在每一存储设备上的一个条的装置;用于将存储设备上的条组织成条纹的装置;用于将n个条指定为数据和垂直奇偶校验条的装置;用于将h个条指定为水平奇偶校验条的装置;用于将每一数据和垂直奇偶校验条划分为r个数据单元和v个垂直奇偶校验单元的装置;用于将每一水平奇偶校验条划分为至少r个水平奇偶校验单元,并且将其余的每一水平奇偶校验条作为未使用单元的装置;其中,对于每一奇偶校验单元,一种选择装置从条纹中选择一组数据单元,以使(a)所选择的一组数据单元还未被选择用于另一奇偶校验单元;以及(b)所选择的数据单元的存储设备与奇偶校验单元的存储设备不同;用于确保每一数据单元被选择用于至少T个不同的奇偶校验单元的装置;以及用于从存储于所选择的一组数据单元的数据单元中的数据值中生成奇偶校验值以及在奇偶校验单元中存储所述奇偶校验值的装置。
全文摘要
一种用于存储阵列的故障容许系统,所述阵列将奇偶校验值存储于与数据单元分离的盘上(水平对准)和与数据单元相同的盘上(垂直对准),即所谓的水平-垂直代码或HoVer代码。所述的故障容许系统具有实施例,各种阵列大小均支持所述的实施例,并且其在参数选择上具有显著的灵活性。特定的实施例能够容许T个故障盘的所有组合,并且,在这些实施例中,一些实施例能够容许大于T个故障的许多实例。所述的故障容许系统具有高效的基于XOR的编码、恢复和更新算法,以及具有简单的冗余公式。
文档编号G11B20/18GK1801105SQ20051012510
公开日2006年7月12日 申请日期2005年11月17日 优先权日2004年11月24日
发明者詹姆斯·L·哈夫奈尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1