用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术的制作方法

文档序号:6570559阅读:579来源:国知局
专利名称:用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术的制作方法
技术领域
本发明涉及存储系统阵列,更具体来说,本发明涉及一种用于高效地重建存储阵列的三个故障存储设备的任何组合的技术。
背景技术
一个存储系统通常包括一个或多个存储设备,其中可以按照期望把数据输入到所述存储设备中并且可以从中获得数据。所述存储系统可以根据多种存储体系结构来实现,其中包括但不限于网络附属存储环境、存储区域网络以及直接附着到客户端或主计算机的盘组件。所述存储设备通常是盘驱动器,其中术语"盘"通常描述独立的旋转磁介质存储设
备。术语"盘"在本上下文中与硬盘驱动器(HDD)或直接访问存储设备(DASD)同义。
存储系统内的盘通常被组织为 一组或多组,其中每一组被操作为一个独立(或廉,)盘冗余阵列(RAID)。大多数RAID实现方式都通过在所述RAID组中的给定数目的物理盘上冗余地写入数据"条带(stripe),,以及关于所述条带化的数据适当地存储冗余信息而增强数据存储的可靠性/完整性。所迷冗余信息允许在某一存储设备发生故障时恢复所丢失的数据。
在盘阵列的操作中,预期盘可能会发生故障。高性能存储系统的一个目标是使得平均数据丟失时间(MTTDL)尽可能长,优选地远长于所述系统的预期服务寿命。在一个或多个盘发生故障时可能会丢失数据,从而使得不可能从所述设备恢复数据。用于避免数据丢失的典型方案包括镜像、备份以及奇偶校验保护。镜像在存储资源(比如盘)的消耗方面是一种昂贵的解决方案。备份不保护在创建了所述备份之后受到修改的数据。奇偶校验方案是常见的,这是因为其提供了对数据的冗余编码,从而通过向所述系统添加仅仅一个盘驱动器而允许单个擦除(丢失一个盘)。
奇偶校验保护被使用在计算机系统中,以便防止存储设备(比如盘)上的数据丢失。可以通过把拥有不同数据的多个类似盘上的特定字长(通常是1比特)的数据相加(通常模2 )并且随后将结果存储在附加的
类似盘上来计算奇偶校验值。也就是,可以在由每一个所述盘上的相应
位置处的比特构成的1比特宽的矢量上计算奇偶校验。当在1比特宽的
矢量上计算时,所述奇偶校验可以是所计算的和或其补数;所述和及其
补数分别被称作偶数和奇数的奇偶校验。在1比特矢量上的加法和减法
对于异或(XOR)逻辑运算来说是等效的。于是可以针对任一个盘或者
任一个盘上的任一数据部分的丟失来保护所述数据。如果存储所述奇偶
校验的盘丢失,则可以从所述数据再生所述奇偶校验。如果其中一个数
据盘丢失,则可以通过把仍然存在的各数据盘加在一起并且随后从所存
储的奇偶校验中减去其结果来再生所述数据。
通常来说,所述各盘被划分成各奇偶校验组,其中的每一组包括一
个或多个数据盘和一个奇偶校验盘。奇偶校验集合是其中包括几个数据块和一个奇偶校验块的块的集合,其中所述奇偶校验块是所有所述数据
块的异或。奇偶校验组是从中选择一个或多个奇偶校验集合的盘的集合。盘空间被划分成各条带,其中每一个条带包含来自每一个盘的一个块。 一个条带的各块通常处在所述奇偶校验组中的每一个盘上的相同位置处。在一个条带内,除了一个块之外的所有块都是包含数据的块("数据块"),并且有一个块是包含由所有所述数据的异或所计算的奇偶校验的块("奇偶校验块,,)。如果所述各奇偶校验块都被存储在一个盘上,从而提供包含所有(并且仅有)奇偶校验信息的单个盘,则提供了RAID-4实现方式。如果所述各奇偶校验块被包含在每一个条带中的不同盘内(通常是按照旋转模式),则这种实现方式是RAID-5。术语"RAID"及其各种实现方式是公知的,并且在D. A. Patterson、 G. A. Gibson和R.H. Katz 6勺"^4 Case/or i edwwt/cmf ^4 ra;AS o//wex/7e M7've Z)&A:s (T^4/D) f,斧^"^:余萍/y ^^4/D, ^一#/#沈,,,(Proceedings of the InternationalConference on Management of Data (SIGMOD), 1998年6月)中被公开。这里使用的术语"编码"是指在数据块的预定子集上计算冗余度值,而术语"解码"是指通过使用数据块的子集和冗余度值来重建数据或奇偶校验块。如果所述奇偶校验组中的一个盘发生故障,则可以通过把剩余数据块的所有内容相加并且从所述奇偶校验块中减去其结果而在一个或多个备用盘上解码(重建)该故障盘的内容。由于在1比特字段上进行的2的互补加法和减法对于异或运算都是等效的,因此上述重建包括对所有仍然存在的数据和奇偶校验块的异或。类似地,如果所述奇偶校验盘丢失,则可以按照相同的方式从仍然存在的数据重新计算该奇偶校验盘。
奇偶校验方案通常提供针对某一奇偶校验组内的单个盘故障的保护。这些方案还可以防止多盘故障,只要每一个故障发生在不同的奇偶校验组内。然而,如果在某一奇偶校验组内有两个盘同时发生故障,则会遭受不可恢复的数据丢失。在某一奇偶校验组内有两个盘同时发生故障是相当常见的事情,这特别是由于盘"磨损,,以及由于与盘操作相关的环境因素而造成的。在本上下文中,在某一奇偶校验组内有两个盘同时发生故障的情况被称作"双重故障"。
双重故障通常是由于一个盘发生故障并且另一个盘在尝试从该第一故障中恢复时发生后续故障而造成的。所述恢复或重建时间取决于所述存储系统的活动水平。也就是,在重建故障盘的过程中,所述存储系统有可能保持"在线"并且继续服务于(来自客户端或用户的)针对访问(即读取和/或写入)数据的请求。如果所述存储系统忙于为请求提供服务,则对于重建所经过的时间会延长。所述重建处理时间还随着所述存储系统中的盘的尺寸和数目的增大而延长,这是由于必须读取所有仍然存在的盘以重建丟失的数据。此外,双重盘故障率与奇偶校验组中的盘数目的平方成比例。然而,令奇偶校验组较小是昂贵的,这是因为每一个奇偶校验组需要一个专用于冗余数据的整个盘。
盘的另一种故障模式是介质读取错误,其中盘的单个块或扇区无法被读取。如果奇偶校验被保持在所述存储阵列中,则可以重建所述不可读取的数据。然而,如果一个盘已经发生故障,则随后在所述阵列中的另一个盘上的介质读取错误将导致丢失数据。这是第二种形式的双重故障。
可以容易地证明,校正双重故障所需的冗余信息的最少数量是两个单位。因此,可以被添加到各数据盘中的奇偶校验盘的最少数目是两个。不管所述奇偶校验是分布在各盘上还是集中在所述两个附加盘上,上述内容都是成立的。
一种已知的双重故障校正奇偶校验方案是基于EVENODD异或的技术,其允许对丢失的(故障的)盘进行串行重建。EVENODD奇偶校验需要恰好两个盘的冗余数据,这种做法是最优的。根据该奇偶校验技术,所有盘块属于两个奇偶校验集合,其中一个是在所有数据盘上按照
典型的RAID-4风格异或计算的,另一个是沿着对角相邻的盘块的集合计算的。所述各对角奇偶校验集合包含来自除了其中 一个数据盘之外的所有数据盘的盘。对于w个数据盘,在一个条带中有"-l行块。每一个块处在一条对角线上,并且有"条对角线,每一条的长度为"-l个块。值得注意的是,只有在"是素数的情况下所述EVENODD方案才适用。在Blaum等人的标题为"丑r^7V(9Z)Dz」"^^'c,'eW Sc/zeme/or 7Wera〃"gDow6/e Z)/W Fm7wms ,'" y^c/7"Wwre (^KEM9DZ).. —^M^f容译
W/D糸屑潜^哞W欢f產趁擘W/^妓才黄J ,, ( IEEE Transactions onComputers, Vol. 44, No. 2,1995年2月)的文章中公开了所述EVENODD技术。在1996年11月26日出版的Blaum等人的标题为"METHOD ANDMEANS FOR ENCODING AND REBUILDING THE DATA CONTENTSOF UP TO TWO UNAVAILABLE DASDS IN A DASD ARRAY USINGSIMPLE NON-RECURSIVE DIAGONAL AND ROW PARITY (利用简单的非递归对角和行奇偶核j全对DASD阵列中的多达两个不可用DASD的数据内容进行编码和重建的方法和装置)"的美国专利号5,579,475中公开了 EVENODD的一个变型。上述文章和专利被合并在此以作参考,就象在此被完全陈述一样。
所述EVENODD技术利用总共p+2个盘,其中/ 是一个素数,并且有/ 个盘包含数据,剩余的两个盘包含奇偶校验信息。其中一个奇偶校验盘包含行奇偶校验块。行奇偶校验被计算为处在每一个所述数据盘的相同位置处的所有数据块的异或。另一个奇偶校验盘包含对角奇偶校验块。对角奇偶校验是从按照对角模式被设置在各数据盘上的个数据块构造的。所述各块被分组成由p-l行组成的条带。这样做不会影响把各数据块分配到各行奇偶校验集合中。然而,构造各对角线的模式使得其所有块都处在相同的块条带中。这意味着大多数对角线在其逐盘行进时在所述条带内"绕回"。
具体来说,在wx("-l)数据块的阵列中,如果对角线在该阵列的边缘"绕回",则恰好有w条长度分别为m-1的对角线。重建所述EVENODD奇偶校验设置的关键是使得每一个对角奇偶校验集合不包含来自其中一个所述数据盘的信息。然而,对角线的数目比块的数目多1,以便存储对应于各对角线的奇偶校验块。也就是,所述EVENODD奇偶校验设置导致一个不具有独立的奇偶校验块的对角奇偶校验集合。为了适应该
额外的"丢失"奇偶校验块,所述EVENODD设置把一条特异对角线的奇偶校验结果异或到对应于每一条其他对角线的奇偶校验块中。
图1是根据常规的EVENODD奇偶校验设置来配置的现有技术盘阵列100的示意方框图。每一个数据块DW属于奇偶校验集合a和b,其中对应于每一个奇偶校验集合的奇偶校验块被表示为P"。注意,对于一条特异的对角线(X)没有存储相应的奇偶校验块。这是EVENODD属性的所在之处。为了允许从两个故障进行重建,每一个数据盘不能对至少一个对角奇偶校验集合做出贡献。通过采用"x(w-l)数据块的矩形阵列,各对角奇偶校验集合具有"-l个数据块成员。然而如所述,这种设
置不具有用于存储对应于所有对角线的奇偶校验块的位置。因此,通过把该对角奇偶校验异或到每一个其他对角奇偶校验块的奇偶校验中来记录所述额外的(丢失的)对角奇偶校验块(X)的奇偶校验。具体来说,所述丢失的对角奇偶校验集合的奇偶校验被异或到每一个对角奇偶校验块P4到P7中,从而把这些块表示为P4X - P7X。
为了从两个数据盘的故障进行重建,初始地通过对所有奇偶校验块进行异或来重新计算不具有奇偶校验块的对角线的奇偶校验。例如,所有行奇偶校验的和是所有数据块的和。所有对角奇偶校验的和是所有数据块的和减去丢失的对角奇偶校验块的和。因此,所有奇偶校验块的异或等效于所有块的和(行奇偶校验和)减去除了丢失的对角线之外的所有块的和(其恰好是丟失的对角线的奇偶校验)。实际上,所述丟失的对角奇偶校验的w-l个拷贝被加到所述结果中,其中的每一个拷贝对应于每一个对角奇偶校验块。由于w是大于2的素数,因此w-l是偶数,从而导致某一块与其自身的偶数次异或,从而得到一个零块。相应地,所述各对角奇偶校验块与添加到每一个对角奇偶校验块的附加的丢失的奇偶校验的和等于没有所述附加的对角奇偶校验的各对角奇偶校验块的和。
接下来,从每一个所述对角奇偶校验块中减去所述丢失的对角奇偶校验。在两个数据盘发生故障之后,至少有两个丢失仅仅一个块的对角奇偶校验集合。来自每一个所述奇偶校验集合的丟失的块可以被重建,即使在其中一个所述集合是没有对应的奇偶校验块的对角线的情况下也是如此。 一旦所述块被重建之后,除了所述两个行奇偶校验集合的其中一个成员之外的所有行奇偶校验集合都可用。这允许重建这些行的丟 失的成员。该重建发生在其他对角线上,这提供了足够的信息以用来在 这些对角线上重建最后丢失的块。所述交替使用行奇偶校验并且随后使 用对角奇偶校验的重建模式持续到所有丢失的块都被重建。
由于W是素数,因此直到遇到了所有对角线之后(因此所有丢失的 数据块都被重建)才在所述重建中形成一个循环。如果"不是素数,则 将不是这种情况。如果全部两个奇偶校验盘都丟失,则可以从数据简单 地重建奇偶校验。如果一个数据盘和所述对角奇偶校验盘丢失,则利用
行奇偶校验执行简单的RAID-4风格的数据盘重建,随后重建所述对角 奇偶校验盘。如果一个数据盘和所述行奇偶校验盘丢失,则可以计算一 个对角奇偶校验。由于所有对角线都具有相同的奇偶校验,因此随后可 以计算每一条对角线的丢失块。
由于每一个数据块都是某一对角奇偶校验集合的成员,因此当两个 数据盘丢失时(双重故障),有两个奇偶校验集合丢失了仅仅一个成员。 每一个盘具有未表示在该盘上的对角奇偶校验集合。相应地,对于双重 故障,有两个奇偶校验集合可以被重建。EVENODD还允许从全部两个 奇偶校验盘的故障进行重建,或者从一个数据盘与一个奇偶校验盘故障 的任何组合进行重建。该技术还允许从任何单个盘故障进行重建。
虽然所述EVENODD技术在奇偶校验信息的数量方面是最优的,但 是对于编码和解码所需的计算量仅仅是渐近最优的。这是因为把丢失的 对角奇偶校验加到每一个所述对角奇偶校验块所需的额外计算。也就
是,某一条带中的p-l个块不足以保持从/7条对角线生成的/7个奇偶校
验块。为了克服这一问题,所述EVENODD技术需要把其中一条对角线 的奇偶校验异或到所有其他对角线的奇偶校验块中,从而增大了计算开 销。
一般来说,对于沿着不具有直接奇偶校验块的对角线的数据块的任 何小写入操作都必须更新所有对角奇偶校验块。对于大写入操作还需要 额外的计算。这里使用的"大写入,,操作涉及重写某一条带内的所有块, 而"小写入"操作则涉及修改至少一个数据块及其相关联的奇偶校验。
在某些存储环境中,常见的是利用大量较低质量的盘驱动器,比如 近线存储系统,其用于在把数据备份到磁带或其他长期归档系统中之前 进行短期存储。然而,随着阵列中的盘数目增大,发生多重故障的概率也会增大。所述概率由于较廉价的存储设备的较短的平均无故障时间
(MTTF)而恶化。因此,存储系统可能会经历三重故障,也就是,所述 存储阵列中的三个设备同时发生故障。此外,比如串行附属SCSI( SAS)、 光纤信道之类的多种存储协议导致盘拒的日益复杂的体系结构,这又导 致盘拒所经历的故障的数目随之增多,从而又导致无法访问连接到故障 盘柜的每一个盘。
一种用于校正三重故障的技术是所述EVENODD技术的一种扩展, 其被称作STAR技术,在Cheng Wang的"^^c/'e"f ^^E#ec"ve Sc/ em^ /or S"^w/"g Met/za De/z'vw少("于^4'媒雄遽送W , ,, ( 2005
年8月)中描述了这种技术,其内容被结合在此以作参考。
所述STAR技术利用了 一个包括p+3个盘的阵列(其中p是素数), 并且还利用了所述EVENODD编码方案以便编码对角奇偶校验集合以 及反对角奇偶校验集合,从而有p个数据盘、 一个行奇偶校验盘、 一个 对角奇偶校验盘和一个反对角奇偶校验盘。反对角奇偶校验集合的计算 方式与对角奇偶校验集合类似,但是反对角奇偶校验集合的计算利用了 -1的斜率,这与对角奇偶校验集合所利用的斜率1相对。
所述STAR技术的一个值得注意的缺点是其使用了 EVENODD编码 技术。实际上,STAR利用EVENODD对所述阵列进行一次编码以便生 成所述行奇偶校验和对角奇偶校验,随后其利用EVENODD编码执行第 二奇偶校验计算以便生成所述反对角奇偶校验。所述EVENODD技术的 缺点由于以下因素而恶化在写入数据块时,需要执行额外的计算来更 新所述对角奇偶校验集合和反对角奇偶校验集合。
所述STAR技术的另一个值得注意的缺点在于,其重建过程对于涉 及大素数的阵列以及/或者在最坏情况的故障状况中涉及的阵列具有高 得多的复杂度。这 一 高得多的复杂度增加了执行重建操作所需的计算的 数目。

发明内容
本发明包括一种三重奇偶校验(TP )技术,其减小了为存储阵列计 算奇偶校验的开销,其中所述存储阵列被适配成实现从该阵列中的多达 三个存储设备的同时故障中高效地恢复。所述TP技术优选地被用在包 括n个存储设备的阵列中,所述存储设备例如是盘,其中包括各数据盘、一个行奇偶校验盘、 一个对角奇偶校验盘以及一个反对角奇偶校验盘,
其中n=p+2, p是一个素数。所述各盘被划分成块,并且所述各块被组 织成条带,其中每一个条带包括n-3 (或p-l)行。被选择形成一个条带 的各行的块通常在每一个盘上是毗连的,尽管这并不是本发明的要求。 所述对角奇偶校验盘存储沿着所述阵列的各对角奇偶校验集合("对角 线")计算的奇偶校验信息。条带中的各块被组织成n-2条对角线,其 中每一条对角线包含来自所述数据盘和行奇偶校验盘的n-3个块,并且
盘上的某一块中。类似地,所述反对,角奇偶校验盘存储沿着所i阵歹:的
各反对角奇偶校验集合("反对角线")计算的奇偶校验信息。值得注 意的是,所述反对角线的斜率与所述对角线正交。结果,所述新颖的TP 技术提供均匀的条带深度以及等于三个盘的奇偶校验信息量,这是从任 何三个盘故障进行重建所需的最少量。
根据本发明,所述TP技术涉及在所述阵列中数据盘的每一行上计 算行奇偶校验,并且此后在计算被存储在所述(反)对角奇偶校验盘上
间进行区分。也就是,沿着共同跨越所有数据盘和所述行奇偶校验盘的 (反)对角线计算所述(反)对角奇偶校验。此外,对应于除了一条之 外的所有(反)对角线的奇偶校验被存储在所述(反)对角奇偶校验盘 上。换句话说,所述(反)对角奇偶校验盘包含对应于条带的除了一条 之外的每一条(反)对角线的奇偶校验块。然而,即使对应于其中一条
(反)对角线的奇偶校验没有被存储或计算,本发明的技术仍然提供足 够的奇偶校验信息以便从所述阵列中的任何三个同时盘故障中恢复。
响应于所述阵列内的一个或多个存储设备故障,本发明说明性地提 供一个多步状态机,其被实现在存储操作系统的盘存储层(RAID系统) 内以用于确定适当的重建技术。出于本发明的目的,所述各数据盘和行 奇偶校验盘被统称为"RAID 4盘"。如果单个数据盘发生故障,则利 用常规的行奇偶校验技术重建来自所述故障盘的丢失的块。如果所述 (反)对角奇偶校验盘发生故障,则利用所述各数据盘和行奇偶校验盘 重新计算适当的(反)对角奇偶校验。如果发生双重RAID 4盘故障, 则可以利用所述对角奇偶校验或者反对角奇偶校验根据行-对角(R-D) 奇偶校验恢复技术来重建数据。如果发生三重盘故障,则确定哪些盘发生了故障。如果一个RAID4 盘以及所述对角和反对角盘发生故障,则在重新计算所述丢失的对角和 反对角奇偶校验之前利用常规的行奇偶校验技术恢复所述故障的(丢失 的)RAID4盘。如果两个RAID4盘和一个(反)对角盘发生故障,则 在重新计算所述丟失的对角或反对角奇偶校验之前采用所述R-D奇偶 校验技术来恢复所述丢失的RAID 4盘。
然而,如果三个RAID 4盘发生故障,则通过首先计算"丢弃的" 对角和反对角奇偶校验(即先前未被存储的对角和反对角奇偶校验块) 来调用三重奇偶校验恢复技术。所述RAID系统随后通过生成多个交叉 来沿着所述各故障盘的居间(中间)盘计算总共p个4元组和。所述各 4元组和随后被简化成所述中间盘上的总共p-l个逐对和。所生成的各 逐对和形成一个可解线性方程组。作为说明,首先通过求解所述方程组 来恢复所述中间盘上的数据。 一旦所述中间盘上的第一块被解析,就可 以将其解代入到其他方程中,直到该中间盘上的所有块都被恢复。 一旦
该中间盘被恢复,所述系统就执行所述R-D奇偶校验技术来恢复剩余的 两个盘。
有利的是,本发明的技术使得计算在无故障操作期间被存储在所述 阵列中的奇偶校验所需的计算负荷最小化。该技术还使得奇偶校验计算 的开销最小化,并且与常规方案(比如STAR)相比对于给定数目的数 据盘需要更少的计算。另外,由于本发明可以利用集中式奇偶校验技术 (其中各行奇偶校验块都被存储在同一个盘上)来实现,因此可以在无 需重新格式化或者重新计算现有奇偶校验信息的情况下把各数据盘递 增地添加到所述阵列中。针对把各数据盘添加到所迷阵列中的唯一限制 是必须预先(先验地)决定在所述阵列中所能使用的最大盘数目。该限 制是由于使用了 (反)对角线并且其长度取决于条带深度而造成的。利 用仅仅包含零值数据的"假想"盘说明性地填充实际存在的盘数目与所 述阵列中的最大盘数目之间的差。


通过参考下面结合附图进行的详细描述可以更好地理解本发明的 以上和其他优点,其中相同的附图标记指代完全相同的或功能上类似的 元件图1是根据常规的EVENODD奇偶校验设置而配置的现有技术盘阵 列的示意方框图2是根据本发明的 一 个实施例的包括存储系统的环境的示意方框
图3是根据本发明的一个实施例的用在图2的存储系统上的示例性 存储操作系统的示意方框图4是详细描述根据本发明的 一 个实施例的用于编码三重奇偶校验 的程序的各步骤的流程图5是根据本发明的 一 个实施例组织的盘阵列的方框图6是根据本发明的一个实施例的示出了对角奇偶校验条带的盘阵 列的示意方框图7是根据本发明的 一 个实施例的示出了反对角奇偶校验条带的盘 阵列的示意方框图8是详细描述根据本发明的 一 个实施例的用于执行重建的程序的 各步骤的流程图9是详细描述根据本发明的 一 个实施例的用于执行行-对角(R-D ) 奇偶校验重建的程序的各步骤的流程图10是详细描述根据本发明的一个实施例的用于执行三重奇偶校 验重建的程序的各步骤的流程图;以及
图11是根据本发明的一个实施例的示出了盘标识符的盘阵列的示 意方框图。
具体实施例方式
A、存储系统环境
图2是可以有利地与本发明一起使用的包括存储系统220的环境 200的示意方框图。在这里描述的本发明的技术可以应用于被具体实现 为存储系统220或者包括存储系统220的任何类型的专用(例如文件服 务器或文件管理器)或通用计算机(其中包括独立计算机或其一部分)。 此外,本发明的教导可以被适配于多种存储系统体系结构,其中包括但 不限于网络附属存储环境、存储区域网络以及直接附属于客户端或主计 算机的盘组件。因此,术语"存储系统,,应当被广泛地理解为除了被配 置成执行存储功能并且与其他设备或系统相关联的任何子系统之外还包括上述设置。
在所述说明性实施例中,所述存储系统220包括通过系统总线232 互连的处理器222、存储器224、网络适配器225和存储适配器228。所 述存储器224包括可以由所述处理器和适配器寻址的存储单元,以用于 存储与本发明相关联的软件程序代码和数据结构。所述处理器和适配器 又可以包括处理元件和/或逻辑电路,其被配置成执行所述软件代码以及 操纵所述数据结构。存储操作系统300的各部分通常驻留在存储器中并 且由所述处理元件执行,其特别通过调用由所述存储系统执行的存储搡 作来在功能上组织所述系统220。本领域技术人员将会认识到,其他处 理和存储器装置(其中包括各种计算机可读介质)可以被用来存储及执 行与这里描述的本发明的技术相关的程序指令。
所述网络适配器225包括多个端口,所述端口被适配成把所述存储 系统220通过点对点链路、广域网、实现在公共网络(因特网)上的虚 拟专用网或者共享局域网耦合到一个或多个客户端210。因此,所述网 络适配器225可以包括把节点连接到网络所需的机械、电气和信令电路。 作为说明,所述网络205可以;故具体实现为以太网或者光纤信道(FC) 网络。每一个客户端210可以通过网络205与所述存储系统220通信, 这是通过根据预定义的协议(比如TCP/IP)交换离散数据帧或分组而实 现的。
所述存储适配器228与在所述系统220上执行的存储操作系统300 协作,以便访问由用户(或客户端)所请求的信息。所述信息可以被存 储在可写存储设备介质的任何类型的附属阵列上,所述介质比如是录像 带、光学介质、DVD、磁带、磁泡存储器、电子随机存取存储器、微机 电介质以及适于存储包括数据和奇偶校验信息在内的信息的任何其他 类似介质。然而,如这里说明性地描述的那样,所述信息优选地被存储 在阵列240的各盘250上,比如HDD和/或DASD。所述存储适配器包 括输入/输出(1/0)接口电路,其通过I/0互连设置(比如常规的高性能 FC串行链路拓朴)耦合到各盘。
在阵列240上的信息存储优选地被实现为一个或多个存储"巻", 所述存储巻包括物理存储盘250的群集,从而定义盘空间的总体逻辑设 置。每一个巻通常(但不一定)与其自身的文件系统相关联。 一个巻/ 文件系统内的各盘通常被组织成一个或多个组,其中每一组被操作为独立(或麽#)盘冗余阵列(RAID)。大多数RAID实现方式通过在所述 RAID组中的给定数目的物理盘上冗余地写入数据"条带,,以及关于所 述条带化的数据适当地存储奇偶校验信息而增强数据存储的可靠性/完 整性。
本发明包括一种"三重"奇偶校验(TP)技术,其利用盘阵列中的 行、对角和反对角奇偶校验来提供三重故障奇偶校验校正恢复。本发明 的技术优选地通过所述存储操作系统300的盘存储层(在图3的340处 示出)实现,以便提供一种用于在跨越存储系统内的多个存储设备(比 如盘)的条带中构造奇偶校验的方法和系统。所述阵列的三个盘被完全 专用于奇偶校验,而剩余的各盘则保存数据。所述各数据盘上的数据被 "明文,,存储,这意味着不对其进行进一步的编码以进行存储。在任何 一个、两个或三个盘同时发生故障之后,可以在不丟失数据的情况下完 全重建所述阵列的内容。本发明与先前已知的方案相比减少了所需要的 奇偶校验信息的计算量,同时还减少了从三个盘故障中恢复所需的计 算。另外,本发明提供了均匀的条带深度(每一个盘对于每个条带包含 相同数目的块)以及等于三个盘的奇偶校验信息的数量,这是允许从任 何三个盘故障进行重建所需的最少数量。
广泛地说,本发明包括n个存储设备,其中《=/ +2, ; 是一个素数。 所述各存储设备被划分成块,其中各块具有相同尺寸。在每一个设备内 任意选择"-3个块并且将其分组形成跨越所有设备的条带。在所述条带 内, 一个设备被指定保存通过选择来自其他设备的块作为输入而形成的 奇偶校验。该设备被称作/,肩爭偶戎,發沒务,作为这里进一步描述的简 化的构造技术的结果,该设备所保存的奇偶校验被称作乂f肩爭偶戎##。 类似地,在每一个条带中, 一个设备被指定保存奇偶校验以作为^/,肩 爭银趁發设务,其所保存的奇偶校验被称作^^肩辛偶戎验。作为说明, 所述对角和反对角奇偶校验在所迷阵列上具有正交的斜率,例如,所述 对角奇偶校验的斜率为1,而所述反对角奇偶校验的斜率是-1。在每一 个条带内,从不是该条带内的(反)对角奇偶校验设备的每一个设备中 选择一个块。该块集合被称作一/力所述行中的一个块被选择保存对应 于该行的奇偶校验(行奇偶校验),剩余的各块保存数据。持续形成各
都被指定给恰好一行。、总共有"-3行。
'p — '在每一个条带内,从不是该条带内的对角或反对角奇偶校验设备的 除了其中 一个之外的所有设备当中的每一个选择一个块,其中进一步的
限制是没有两个所选块属于同 一 行。这被称作/,肩^偶戎验桌合或者
"V肩4'"。例如通过以下措施形成一条对角线从0到"-2对所述数据、 行奇偶校验和对角奇偶校验设备进行编号,从0到"-3对各行进行编号, 以及随后把在设备/行j处的块指定给对角线(Hy)冲莫(w-2)。持续形成各 对角线,直到所述条带内的不在对角和反对角奇偶校验设备上的所有块 都被指定给各对角线,其中进一步的限制是没有两条对角线排除来自相 同设备的所有块。有w-2条对角线。在所述w-2条对角线当中选择w-3 条对角线。这些对角线中的各块(不管其保存数据还是奇偶校验)被组 合形成一个对角奇偶校验块。所述"-3个对角奇偶校验块被按照任意顺 序存储在所述条带中的"-3个块中,其中所述"-3个块驻留在该条带内 的保存对角奇偶校验的设备上。利用类似的技术把奇偶校验和各块指定 到各^乃^爭银趁發桌合或"^/,肩4'"。持续形成各反对角线,直到 所述条带内的不在反对角奇偶校验和对角设备上的所有块都被指定给 各反对角线,其中进一步的限制是没有两条反对角线排除来自相同设备 的所有块。例如通过以下措施形成一条反对角线从0到w-2对所述数 据、行奇偶校验和反对角奇偶校验设备进行编号,从0到"-3对各行进 行编号,以及随后把在设备/行处的块指定给对角线("-3"+力模0-2)。
可以简单地通过以下措施实现本发明选择包含处在每一盘中的相 同位置处的各块的各行,选择毗连的各组w-3行以形成条带,以及进一 步选择该条带的各块从而使得由每一条(反)对角线中的各块形成具有 绕回的(反)对角模式。另外,可以通过把某一条带内的所有行奇偶校 验块存储在该条带内的相同设备中来实现本发明。在 一个优选实施例 中,可以通过逐条带地保持各设备作为行奇偶校验、(反)对角奇偶校 验或数据设备的相同用途来实现本发明。可选择地,本发明的另一个优 选实施例是逐条带地旋转或者以其他方式改变各设备作为行奇偶校验、 (反)对角奇偶校验或数据设备的用途。
奇偶校验通常被计算为各数据块的异或(XOR),以便形成奇偶校 验块。所述异或运算通常是在每一个输入块的相同的1比特字段上执行 的,以便产生相应的单个输出比特。如上所述,所述异或运算等效于两 个1比特字段的2的互补加法或减法。冗余奇偶校验信息还可以被计算为所有输入中的相同尺寸的多比特字段(例如8、 16、 32、 64、 128比 特)的和。例如,可以通过以下方式计算奇偶校验的等效物利用32 比特字段上的2的互补加法来相加数据,以便产生分别为32比特的冗 余信息。这仅仅是假设不依赖于以下事实的情况把相同输入两次异或 到某一块中产生该块的原始内容,这是因为某一块与其自身的XOR产 生0。
本领域技术人员将认识到, 一个块(出于奇偶校验计算的目的)可 以或者可以不对应于一个文件块、数据库块、盘扇区或者任何其他方便 确定尺寸的单元。不要求对于奇偶校验计算所使用的块尺寸与在所述系 统中所使用的任何其他块尺寸有任何关联。然而,预期一个或多个整数 个奇偶校验块将适合于被定义成一个或多个整数个盘扇区的单元。在许 多情况下,某一数目的块将对应于文件系统或数据库块,并且其尺寸将 是4k(4096)字节或2字节的更高次幂(例如8k、 16k、 32k、 64k、 128k、 256k)。
这里描述的说明性系统优选地执行完整条带写入操作。特别地,其 尺寸通常是4k或8k字节的各单独文件块可以被划分成仅仅被用于奇偶 校验计算的更小块,从而可以把例如4k字节尺寸的块的完整条带写入 到所述阵列的各盘中。当完整条带被写入到盘中时,可以在把结果写入 到盘中之前在存储器中执行所有奇偶校验计算,从而减轻了在盘上计算 并更新奇偶校验的负担。
B、存储操作系统
为了便于对盘的访问,所述存储操作系统300实现了一种任意位置 写入(write-anywhere)文件系统,其与虛拟化模块协作,以便提供一种 "虚拟化"由各盘提供的存储空间的功能。所述文件系统在逻辑上把信 息组织成各盘上的名为目录和文件对象(下文中称作"目录"和"文件") 的分级结构。每一个"盘上,,文件可以被实现为盘块的集合,所述盘块 被配置成存储信息(比如数据),而所迷目录可以被实现为一个专门格 式化的文件,其中存储其他文件和目录的名称以及到所述其他文件和目 录的链接。所述虛拟化系统允许所述文件系统进一 步在逻辑上把信息组 织成各盘上的名为vdisk的分级结构,从而提供了集成的NAS与SAN
i方问并且同时还允许在基于文件的存储平台上》对所'述 disk进行基于块的(SAN)访问而实现的。
在所述说明性实施例中,所述存储操作系统优选地是可以从 Network Appliance, Inc., Sunnyvale, California获得的NetApp Data ONTAP⑧操作系统,其实现了 Write Anywhere File Layout ( WAFL )文 件系统。然而可以明显设想到,可以增强任何适当的存储操作系统(其 中包括适当位置写入文件系统)以便根据这里描述的本发明的原理来使 用。这样,在采用术语"ONTAP"的地方应当广泛地认为其指代可以按 照其他方式被适配于本发明的教导的任何存储操作系统。
这里使用的术语"存储操作系统"通常指代可以在计算机上操作的 计算机可执行代码,其管理数据访问并且在存储系统的情况下可以实现 数据访问语义,比如被实现为微内核的Data ONTAP⑧存储操作系统。 所述存储操作系统还可以被实现为操作在通用操作系统(比如UNIX 和Windows XP⑧)上的应用程序,或者被实现为具有可配置的功能的通 用操作系统,其被配置用于这里描述的存储应用。
此外,本领域技术人员应当理解,这里描述的本发明的教导可以应 用于被具体实现为存储系统或包括存储系统的任何类型的专用(例如存 储服务器件)或通用计算机(其中包括独立计算机或其一部分)。此外, 本发明的教导可以被适配于多种存储系统体系结构,其中包括但不限于 网络附属存储环境、存储区域网络以及直接附属于客户端或主计算机的 盘组件。因此,术语"存储系统"应当被广泛的理解为除了被配置成执 行存储功能并且与其他设备或系统相关联的任何子系统之外还包括上 述设置。
图3是可以有利地用于本发明的存储操作系统300的示意方框图。 所述存储操作系统包括一系列软件层,所述一系列软件层被组织形成一 个集成网络协议栈,或者更一般来说形成一个多协议引擎,其提供使得 客户端利用块和文件访问协议来访问存储在所述多协议存储系统上的 信息的数据路径。所述协议栈包括网络驱动器(例如千兆比特以太网驱 动器)的介质访问层310,其与各网络协议层接口,所述网络协议层例 如是IP层312及其支持传输机制、TCP层314以及用户数据报协议 (UDP)层316。文件系统协议层提供多协议文件访问,并且为此目的包 括对于DAFS协议318、 NFS协议320、 CIFS协议322和超文本传输协 议(HTTP)协议324的支持。VI层326实现所述VI体系结构,以便提供DAFS协议318所要求的直接访问传输(DAT )能力(比如RDMA )。 iSCSI驱动器层328在所述TCP/IP网络协议层之上提供块协议访 问,而FC驱动器层330则与所述网络适配器 一起操作来向/从所述存储 系统发送/接收块访问请求。所述FC和iSCSI驱动器提供对各lun( vdisk ) 的特定于FC和特定于iSCSI的访问控制,并且从而管理各vdisk到iSCSI 或FCP的导出,或者在访问所述多协议存储系统上的单个vdisk时管理 同时到iSCSI和FCP的导出。此外,所述存储操作系统包括诸如RAID 系统的盘存储层340,其实现了诸如RAID协议的盘存储协议,所述存 储操作系统还包括盘驱动器层350,其实现了诸如SCSI协议的盘访问协 议。
在本发明的说明性实施例中,所述盘存储层(例如RAID系统340) 实现了所述新颖的TP技术。作为说明,在写入操作期间,所述RAID 系统340根据下面描述的编码技术对数据进行编码,并且响应于检测到 存储设备的一个或多个故障执行同样在下面进一步描述的所述新颖的 重建技术。应当注意,在替换实施例中,所述新颖的TP技术可以通过 除了所述RAID系统340之外的存储操作系统的各模块实现。因此,对 于实现所述新颖的TP技术的RAID系统340的描述应当被认为仅仅是 示例性的。
作为各盘软件层与各集成网络协议栈层之间的桥梁的是虚拟化系 统355,其是由与被具体实现为例如vdisk模块370和SCSI目标模块360 的虚拟化才莫块交互的文件系统365实现的。应当注意,所述vdisk才莫块 370、文件系统365和SCSI目标模块360可以用软件、硬件、固件或其 组合来实现。所述vdisk才莫块370与所述文件系统365交互,以便允许 管理接口响应于系统管理器向所述多协议存储系统220发出命令而进行 访问。本质上,所述vdisk模块370特别通过实现由系统管理器经由用 户接口发出的全面vdisk (lun)命令集来管理SAN布置。这些vdisk命 令被转换成原始文件系统操作("原语"),其与所述文件系统365和 SCSI目标模块360进行交互以便实现所述vdisk。
所述SCSI目标模块360又通过提供映射程序而启动对盘或lun(逻 辑单元号)的仿真,所述映射程序把各lun转换成特殊的vdisk文件类 型。作为说明,所述SCSI目标模块被置于所述FC和iSCSI驱动器330、 328与所述文件系统365之间,从而在所述SAN块(lun)空间与所述文件系统空间之间提供所述虚拟化系统355的一个转换层,其中lun被 表示为vdisk。通过把SAN虚拟化"布置,,在所述文件系统365之上, 所述多协议存储系统反转由现有技术系统所采用的方法,从而为基本上 所有存储访问协议提供单个的统一存储平台。
作为说明,所述文件系统365是基于消息的系统;这样,所述SCSI 目标模块360把SCSI请求变换成表示针对所述文件系统的操作的消息。 例如,由所述SCSI目标模块生成的消息可以包括操作类型(例如读取、 写入)以及被表示在所述文件系统中的vdisk对象的路径名(例如路径 描迷符)和文件名(例如特殊文件名)。所述SCSI目标模块360例如 作为在其中执行所述操作的函数调用把所述消息传递到所述文件系统 365中。
作为说明,所述文件系统365例如利用4千字节(KB)的块实现了 具有基于块的盘上格式表示的WAFL文件系统并且使用索引节点 (inode)来描述所述文件。所述WAFL文件系统使用文件来存储描述其 文件系统的布局的元数据;这些元数据文件特别包括索引节点文件。使 用一个文件句柄(即包括索引节点号的标识符)从盘中获取索引节点。 在David Hitz等人的标题为 "METHOD FOR MAINTAINING CONSISTENT STATES OF A FILE SYSTEM AND FOR CREATING USER-ACCESSIBLE READ-ONLY COPIES OF A FILE SYSTEM(用于保 持文件系统的 一致状态并且用于产生文件系统的用户可访问的只读拷 贝的方法)"的美国专利No. 5,819,292中提供了对包括盘上索引节点和 所述索引节点文件的文件系统的结构的描述。
在操作中,把来自所述客户端210的请求作为分组通过所述计算机 网络205前送到所述存储系统220,在该存储系统220中的网络适配器 225处接收所述请求。网络驱动器处理所述分组,并且在适当情况下将 其传递到网络协议和文件访问层,以便在将其前送到所述任意位置写入 文件系统365之前对其进行附加的处理。在这里,如果所请求的数据没 有驻留在"核内"(即不在所述存储器224内),则所述文件系统生成 用来从盘250加载(获取)所请求的数据的操作。如果所述信息不在所 述存储器内,则所述文件系统365利用所述索引节点号索引到所述索引 节点文件中,以便访问适当的条目并且获取逻辑巻块号(vbn)。所述 文件系统随后把包括所述逻辑vbn的消息结构传递到所述RAID系统340;所述逻辑vpn被映射到盘标识符和盘块号(盘dbn),并且被发送 到所述盘驱动器系统350的适当驱动器(例如SCSI)。所述盘驱动器从 所述指定盘250访问所述dbn,并且把所请求的(多个)数据块加载到 存储器中以供所述存储系统进行处理。在完成所述请求之后,所述存储 系统(和操作系统)通过所述网络205向所述客户端210返回应答。
应当注意,针对在所述存储系统处接收到的客户端请求来执行数据 存储访问所需要的穿过上面描述的各存储操作系统层的软件"路径"可 以替换地用硬件来实现。也就是说,在本发明的一个替换实施例中,存
程门阵列(FPGA)中)或者专用集成电路(ASIC)。这种类型的硬件 实现方式提高了由所述存储系统220提供的存储服务对由客户端210发 出的请求做出响应的性能。此外,在本发明的另一个替换实施例中,适 配器225、 228的处理元件可以被配置成分别从处理器222卸载一些或 者全部所述分组处理和存储访问操作,从而提高由所述系统提供的存储 服务的性能。显然可以设想用硬件、固件或软件来实现这里描述的各种 处理、体系结构和程序。
这里使用的术语"存储操作系统"通常指代适于在存储系统中执行 存储功能的计算机可执行代码,其例如管理数据访问并且可以实现文件 系统语义。在这种意义下,所述ONTAP软件是上述存储操作系统的一
文件系统语义并且管理数据访问。所述存储操作系统还可以被实现为操 作在通用操作系统(比如UNIX 和Windows XP )上的应用程序,或 者被实现为具有可配置的功能的通用操作系统,其被配置用于这里描述 的存4诸应用。
此外,本领域技术人员应当理解,这里描述的本发明的教导可以应 用于被具体实现为存储系统220或包括存储系统220的任何类型的专用 (例如文件服务器、文件管理器或存储系统)或通用计算机(其中包括 独立计算机或其一部分)。在2002年8月8日提交的Brian Pawlowski 等人的标题为"MULTI-PROTOCOL STORAGE APPLIANCE THAT PROVIDES INTEGRATED SUPPORT FOR FILE AND BLOCK ACCESS PROTOCOLS (提供对于文件和块访问协议的集成支持的多协议存储器 件)"的美国专利申请顺序号10/215,917中描述了可以有利地用于本发明的存储系统的一个实例。此外,本发明的教导可以被适配于多种存储 系统体系结构,其中包括(但不限于)网络附属存储环境、存储区域网 络以及直接附属于客户端或主计算机的盘组件。因此,术语"存储系统" 应当被广泛的理解为除了被配置成执行存储功能并且与其他设备或系 统相关联的任何子系统之外还包括上述设置。
c、三重奇偶校验编码
本发明包括一种三重奇偶校验(TP )技术,其减小了为存储阵列计 算奇偶校验的开销,其中所述存储阵列被适配成允许从该阵列中的多达 三个存储设备的同时故障高效地恢复。所述TP技术优选地被用在包括 n个存储设备的阵列中,所述存储设备例如是盘,其中包括各数据盘、 一个行奇偶校验盘、 一个对角奇偶校验盘以及一个反对角奇偶校验盘, 其中n=p+2, p是一个素数。所述各盘被划分成块,并且所述各块被组 织成条带,其中每一个条带包括n-3 (或p-)行。被选择形成一个条带 的各行的块通常在每一个盘上是毗连的,尽管这并不是本发明的要求。 所述对角奇偶校验盘存储沿着所迷阵列的各对角奇偶校验集合("对角 线")计算的奇偶校验信息。某一条带中的各块被组织成n-2条对角线, 其中每一条对角线包含来自所述数据盘和行奇偶校验盘的n-3个块,并
且除了其中一个之外的所有块都把其奇偶校验存储在所述对角奇偶校 验盘上的某一块中。类似地,所述反对角奇偶校验盘存储沿着所述阵列 的各反对角奇偶校验集合("反对角线")计算的奇偶校验信息。应当 注意,所述反对角线的斜率与所述对角线正交。结果,所述新颖的TP 技术提供均匀的条带深度以及等于三个盘的奇偶校验信息量,这是从任 意三个盘故障进行重建所需要的最少量。
根据本发明,所述TP技术涉及到在所述阵列中的每一行数据盘上 计算行奇偶校验,并且此后在计算被存储在所述(反)对角奇偶校验盘
也就是说,沿^共同跨越所有数据盘和 斤述行;偶校验盘的(反)对角 线计算所述(反)对角奇偶校验。此外,对应于除了 一条之外的所有(反)
对角线的奇偶校验被存储在所述(反)对角奇偶校验盘上。换句话说, 所述(反)对角奇偶校验盘包含对应于某一条带的除了一条之外的每一 条(反)对角线的奇偶校验块。然而即使对应于其中一条(反)对角线 的奇偶校验没有被存储或计算,本发明的技术仍然提供足够多的奇偶校验信息以便从所述阵列中的任何三个同时盘故障中恢复。
图4是示出了根据本发明的一个实施例的用于实现所述TP技术的 程序400的各步骤的流程图。该程序400开始于步骤405并且继续到步 骤410,在步骤410中,初始地利用多个存储设备(比如盘)来配置一 个阵列,其数目等于一个素数/7。所述p个盘表示各数据盘和一个行奇 偶校验盘。在步骤415中包括一个附加的对角奇偶校验盘,从而使得所 述整个阵列包括户+1个盘。如这里所描述的那样,所述对角奇偶校验盘 存储对角奇偶校验,所述对角奇偶校验是通过定义共同跨越所述阵列的 所有数据盘和所述行奇偶校验盘的对角线而被计算的。因此,所述阵列 此时包括/>/个数据盘、 一个行奇偶校验盘和一个对角奇偶校验盘。在 步骤420中把一个反对角奇偶校验盘添加到所述阵列中。与所述对角奇 偶校验盘类似,所述反对角奇偶校验盘存储反对角奇偶校验,所述反对 角奇偶校验是通过定义共同跨越所述阵列的所有数据盘和所述行奇偶 校验盘的反对角线而被计算的。应当注意,所述(反)对角线彼此正交, 例如其斜率为±1。因此,对于总共r^p+2个盘,所述阵列包括p-l个数 据盘、 一个行奇偶校验盘、 一个对角奇偶校验盘和一个反对角奇偶校验 盘。在步骤425中,所述各盘被划分成块,在步骤430中,所述各块被 组织成条带,其中每一个条带包括n-3行的块(其中n=/ +2)。在步骤 435中,某一行的每一个数据块被异或到该行的行奇偶校验块中,其包 含每一个数据盘上的相同位置处的所有数据块的异或。
随后在步骤440中把所有数据块和行奇偶校验块指定到各对角线。 对于包含/ 个盘的阵列,所述各对角线被包含在各组p-l行的块内。恰 好有; 条对角线,其中每一条对角线包含一个对角奇偶校验块,该块包 括恰好/7-1个数据块和/或行奇偶校验块的异或。所述对角线在所述阵列 的边缘处绕回,其中所述/p个对角集合当中的每一个排除恰好一个盘。 每一条对角线必须排除一个不同的盘。在所述/M行的集合内,每一个 盘块处在所述p条对角线的恰好其中之一上。表1示出了对应于/ =5的 阵列的一个实施例,其中各对角线的编号是从O到4。该表中的数字表 示每一个块所属的对角奇偶校验集合。0 1234 12340 23401 34012
表l
应当注意,各列的位置可以被置换,每一列中的各元素的位置也可 以被置换,前提是没有某 一 行中的两个块属于相同的对角奇偶校验集 合,从而不会改变可以从任意两个盘故障重建所述阵列的属性。在不损 失一般性的情况下,可以假设按照基本上根据表1的方式把各块指定到 各对角奇偶校验集合。此外,各行中的各块的成员资格可以被置换。
如所述,对应于各对角奇偶校验集合的奇偶校验被存储在所述对角 奇偶校验盘上。根据本发明,所述TP奇偶校验技术在计算被存储在所 述对角奇偶校验盘上的对角奇偶校验时不在所述行奇偶校验与数据块 之间进行区分。换句话说,所述原始阵列的所有盘可以被等效地对待, 从而可以从所述行奇偶校验集合中的所有其他盘的异或和恢复被存储 在任何其中一个盘上的信息。因此,所述对角奇偶校验盘存储沿着共同 跨越所述阵列的所有数据盘和所述行奇偶校验盘的各对角奇偶校验集 合计算的对角奇偶校验(步骤445 )。应当注意,所述各盘的角色(例 如数据盘、行奇偶校验盘或对角奇偶校验盘)可以逐条带地改变,从而 允许RAID-5风格的分布式奇偶校验实现方式。
然而,在所述对角奇偶校验盘上没有足够的空间来保存对应于定义 在/>1行上的户条对角线的所有奇偶校验信息。特别地,仅仅有足够用 于p-l个对角奇偶校验块的空间。每一个数据盘和行奇偶校验盘最多为 一条对角线贡献一个块,并且没有一行包含都是相同对角线的成员的两 个块(不管是数据还是奇偶校验)。虽然恰好有/7条对角线,但是在某 一条带内,在所述对角奇偶校验盘上仅仅有个对角奇偶校验块。
为了克服这一 问题,对应于其中 一个对角奇偶校验集合的对角奇偶 校验不被存储在所述对角奇偶校验盘上(步骤450)。也就是说,所述 对角奇偶校验盘包含对应于某 一 条带的除了 一条之外的每 一条对角线 的奇偶校验块。对于不存储哪一个对角奇偶校验块的选择是任意的。由 于该奇偶校验不被存储,因此其也不被计算。然而,即使对应于其中一条对角线的奇偶校验不被存储,本发明的技术仍然提供足够的奇偶校验 信息,以便还通过利用所述反对角奇偶校验从所述阵列中的任意三个同 时盘故障中恢复。也就是说,根据本发明的一个重建方面,在某一条带 的任意三个盘丢失时可以重建该条带的完整内容。
一旦计算及存储了所述对角奇偶校验之后,所述RAID系统执行步 骤455 -465中的操作(类似于步骤440-450中的操作),以便计算及 存储所述反对角奇偶校验。因此,在步骤455中,所有数据和行对角奇 偶校验块都被指定给各反对角线。如上所述,反对角线的斜率是-1,即 与对角线的斜率正交。表2示出了对应于; -5的阵列的一个实施例,其 中各反对角线的编号是从O到4。该表中的数字表示每一个块所属的反 对角奇偶校验集合。
432 1 0 0432 1 10432 2 1 043
表2
随后在步骤460中沿着共同跨越所有数据和行奇偶校验盘的所有反 对角线计算所述反对角奇偶校验,并且在步骤465中把对应于除了一条
上。程序400随后在步骤470中完成。
图5是根据本发明的新颖的TP技术组织的盘阵列500的方框图。 假设"等于该阵列中的盘的数目,其中w=/ +2。前w-3个盘(D0-3 )保 存数据,盘"-2(RP)保存对应于数据盘D0-3的行奇偶校验,盘w-l(DP) 保存对角奇偶校验,盘"(ADP)保存反对角奇偶校验。在该说明性实 施例中,该阵列中的盘的数目n等于7(p-5)。各盘被分成块,各块被 组织成条带,其中每一个条带等于"-3 (例如4)行。此外,每个条带有 "誦2 (例如5)条对角线。
所述各数据块和行奇偶校验块被编号成使得每一个块属于某一对 角奇偶校验集合,并且在每一行内,每一个块属于不同的对角奇偶校验
集合。符号Da,b,e和Pa,b,e表示数据块(D)和奇偶校验块(P)对特定行(a)、对角(b)和反对角(c)奇偶校验计算的对应贡献。也就是说, 符号Da,b,。意味着这些数据块属于被用来计算行奇偶校验a、对角奇偶校
验b和反对角奇偶校验C的行或对角线,并且Pa,b,c存储对应于行奇偶校
验集合a的奇偶校验并且还对对角奇偶校验集合b和反对角奇偶校验c
有贡献。侈'J长口, Po,8,10二Do,4,9十Do,5j3十Do,6,12十Do,7,u。声斤述符号还包4舌#皮 用于计算对应于特定对角线的对角奇偶校验的行奇偶校验块,比如
P4-D。,4,9 0D3,4,K)0D2,4,!3 0Pi,4,u。应当注意,被存储在所述对角奇偶校验 盘上的每一个对角奇偶校验块包含来自所述阵列的除了 一个之外的所 有其他盘(其中包括所述行奇偶校验盘但是排除所述反对角盘)的贡献。
例如,所述对角奇偶校验块P4具有来自DO(Do,4,9)、 D2(D3,4,10)、 D3(D2,4,13) 和RP(P!,4,n)的贡献,但是没有来自D1的贡献。还应当注意,对应于对 角线8 (P8)的对角奇偶校验既不被计算也不被存储在所述对角奇偶校 马t盘DP上。
图6和图7分别是显示出把各块指定到各对角线和反对角线的阵列 的示意图。图6示出了阵列600,其中示出了把各块指定到各对角线, 其中用对应于其所属的对角线的编号来标记每一个块。此外还(用虚线) 示出了在编码所述阵列时未被存储的所丢弃的对角线。类似地,图7示 出了阵列700,其中示出了把各块指定到各反对角线,其中(用虛线) 示出了未被存储在所述阵列上的所丢弃的反对角线。如上面参考表1和 2所述,各块到各(反)对角线的分配可以被置换,前提是没有单个盘 在其上包括某一(反)对角线的两个块。
D、盘故障和重建
图8是详细描述了用于确定在利用本发明的新颖的TP技术时所要 执行的适当重建程序的程序800的各步骤的流程图。如上所述,出于本 说明书的目的,术语"RAID4盘"应当意指所述数据和行奇偶校验盘。 应当注意,所述数据和行奇偶校验盘可以被设置在非RAID 4配置(例 如RAID5)中。所述程序800开始于步骤805并且继续到步骤810,在 步骤810中, 一个或多个盘发生故障。这例如可能是由于某一个盘的完 全故障或者某一个盘的一个子集发生介质错误而导致的。在步骤815中, 所述RAID系统340确定是一个、两个、三个还是更多盘发生了故障, 从而可以利用适当的重建技术从所述故障盘恢复。如果单个(一个)盘 发生故障,则所述程序分支到步骤820,在该步骤中,所述系统通过以下方式恢复该单个盘如果该故障盘是RAID 4盘,则利用常规的行奇 偶校验来计算丢失的块;或者如果该故障盘是(反)对角奇偶校验盘, 则计算所述(反)对角奇偶校验。
如果两个盘发生故障,则所述程序分支到步骤900,在该步骤中执 行所述R-D技术以便从所述双重盘故障中恢复。所述R-D奇偶校验恢复 技术可以利用所述行和对角线或者利用所述行和反对角线来进行恢复。 如果超过三个盘发生故障,则在所述程序800在步骤840中完成之前, 在步骤835中得到错误状态。
然而,如果三个盘发生故障,则在步骤845中确定是否一个RAID4 盘以及所述对角奇偶校验盘和反对角奇偶校验盘发生了故障。如果是的 话,则可以通过在步骤855中重新计算所述对角和反对角奇偶校验之前 首先在步骤850中利用常规的行奇偶校验技术恢复所述丢失的RAID 4 盘来恢复所述阵列。否则,所述程序继续到步骤860,在该步骤中,所 述RAID系统确定是否两个RAID4盘和一个(反)对角盘发生了故障。 如果是的话,则所述系统在步骤900中执行所述R-D奇偶校验恢复技术 以便恢复所述故障的RAID 4盘。这一恢复是利用良好的(反)对角奇 偶校验执行的,也就是说,如果所迷对角盘发生了故障,则所述R-D奇 偶校验恢复技术使用反对角奇偶校验,然而,如果所述反对角奇偶校验 盘发生了故障,则所述R-D奇偶校验恢复技术使用对角奇偶校验。 一旦 所述R-D奇偶校验恢复在步骤900中完成之后,所述系统随后在步骤 870中重新计算所述丟失的(反)对角奇偶校验。然而,如果在步骤860 中确定三个RAID4盘发生了故障,则所述程序分支到步骤100,在该步 骤中,所述RAID系统执行新颖的三RAID4故障程序。
E、行-(反)对角恢复
由于在把各盘指定到各对角线时在所述行奇偶校验盘与各数据盘 之间没有区别,因此在处理从各(反)对角奇偶校验集合恢复时可以忽 略所述行奇偶校验盘与各数据盘之间的区别。作为说明,考虑丟失了任 意两个数据盘或者任一个数据盘和所述行奇偶校验盘的情况。只有在构 成某一奇偶校验集合的所有其他各块都可用的情况下才能恢复该奇偶 校验集合的丢失的块。异或奇偶校验的一个结果是所有块在数学上都是 等效的,不管它们最初保存数据还是奇偶校验都是如此。例如,考虑奇 偶校验构造a0bec-d,其中"0"表示异或运算符。把该等式的两側都与d异或给出了 a6b④c十cH0。因此,在重建期间可以相同地对待所有 数据盘和所述行奇偶校验盘。
在每一个所述盘中,恰好有一条(反)对角线没有被表示。相应地, 可以在不包含该(反)对角线的成员的另一个盘上开始重建。由于两个 盘发生了故障,因此在大多数情况下可以直接从(反)对角奇偶校验数 据重建两个块。除非其中一条仅仅丢失一个块的(反)对角线是没有为 之存储奇偶校验的(反)对角线,否则上述内容都是成立的。但是由于 最多一个盘丢失对应于该奇偶校验集合的数据,因此至少可以直接重建 一个块。 一旦从(反)对角奇偶校验重建了一个或两个块之后,则可以 从行奇偶校验重建所述一行或多行中的其他丢失的块,这是因为此时仅 仅从具有利用(反)对角奇偶校验(其不包括所述(反)对角奇偶校验 块)重建的各块的各行奇偶校验集合丢失一个块。 一旦重建了这些块之 后,可以重建与所述行块处在(多条)相同(反)对角线上的另外一个 或两个块。
因此,通过一系列(反)对角以及随后的水平"移动,,来继续重建。 由于p是素数,因此所有系列水平以及随后的(反)对角移动在"命中" 同一行两次之前命中某一条带的每一行。但是有一条在其上不可能进行 (反)对角移动的(反)对角线,这是因为没有为该(反)对角线存储 奇偶校验。在不损失一般性的情况下,所述各(反)对角线的编号是从 O到p-l,并且为除了 (反)对角线0之外的所有(反)对角线计算奇偶
校验。因此,沿着(反)对角o不可能进行(反)对角移动。对于在所 述阵列中间隔给定距离的各盘,总是有以(反)对角线o结束重建的固
定的(反)对角线序列。如果各盘的编号是从0到并且考虑各盘
之间的绕回从而使得盘/>1 (行奇偶校^^盘)与盘0相邻,则有(/>1)个
序列待考虑。每一个序列对应于间隔该距离的任意盘对的重建。表3示 出了例如对应于/ =13的各序列间隔距离为l的各盘: 间隔距离为2的各盘: 间隔距离为3的各盘: 间隔距离为4的各盘: 间隔距离为5的各盘: 间隔距离为6的各盘: 间隔距离为7的各盘 间隔距离为8的各盘 间隔距离为9的各盘 间隔距离为10的各盘: 间隔距离为ll的各盘: 间隔距离为12的各盘:
I 23456789 10 11 120 246 8 10 12 1 3 5 79 11 0 369 12 258 11 147 10 0 48 12 371126 10 1590 5 1027 1249 1 6 11 3 80 6125 114 103928 1 70 7 I 8293 104 " 5 1260 83 1161 94 1272 1050 95 1 1062 11 73 12840
10741 U 852129630
II 9753 1 12 1086420 12 11 10987654321 0
表3
应当注意,间隔距离为A的盘序列总是开始于对角线h并且通过
每次把所述对角线递增A (模/ )而继续,并且在/7处(模/7=0)结束。 还应当注意,间隔距离为&的盘序列的前/>/项是间隔距离为/7-A的盘 序列的前/ -l项的反转。
在某一序列上的起始位置取决于哪一对盘发生了故障。当所述各盘 和各对角线根据前面的描述被编号时,即各盘的编号是顺序地从0到
w-2,各行的编号是顺序地从0到"-3,并且盘y的块Z属于每一个故障 盘_/中的对角奇偶校验集合(/'+,l)模("-2),则丢失的对角线总是对角线 厶因此,对于间隔为A的一对盘,可以为之开始修复的两条对角线是_/ 和(/'+0才莫^2。应当注意,这两条对角线在间隔距离为A:的盘的重建序 列中总是相邻的。可以关于反对角线进行类似的计算。在通过从所述两 个序列中的起始点向右移动所确定的对角线序列中继续重建,其中对于 间隔距离为^:的盘开始于符号(/+^模(《-2),对于间隔距离为/ 4的盘开 始于符号,其中/K/V2。相应地,如果两个数据盘或者一个数据盘与所 述行奇偶校验盘的任意组合发生故障,则总是有可能完全重建。如果所 述对角奇偶校验盘和另一个盘发生故障,则重建另一个故障盘(不管其 是数据还是来自所存储的行奇偶校验的行奇偶校验)并且随后重建所述 对角奇偶校验盘是很简单的问题。
应当注意,不是所有的数据块都属于为之计算了奇偶校验的(反)
对角线。实际上,仅仅对于0!>1)//7的所述数据和行奇偶校验块计算(反)对角奇偶校验。单个块更新非常昂贵,这是因为必须对于该块重新计算 行奇偶校验以及对应于该块的(反)对角奇偶校验。于是在更新对应于 该块的行奇偶校验时,必须还把所述改变加到对应于所述行奇偶校验块 的(反)对角奇偶校验块中。然而,这在其中条带的宽度为一个"块" 并且条带由仅被用于奇偶校验计算的各子块构成的系统中可以被简化。 这里,计算被加到所述行奇偶校验中的奇偶校验更新。相同奇偶校验更 新块的各部分被直接加到对应于所述条带的(反)对角奇偶校验块的各 部分中。
盘(ADP) DP上的各(反)对角奇偶校验块在其异或计算中包括 所述各行奇偶校验块。换句话说,不仅仅根据所述各数据盘的内容而且 还根据所述行奇偶校验盘的内容来计算被存储在该盘(ADP) DP上的 所述(反)对角奇偶校验。通过如阵列500中所示地编码所述各(反) 对角奇偶校验块,即使丢失了 (反)对角奇偶校验(例如在对角奇偶校 验的情况下是第8号对角线),所述系统也可以从任意两个同时盘故障 中恢复。这是由于在计算被存储在所述(反)对角奇偶校验盘DP/ADP 上的各(反)对角奇偶校验块的过程中考虑了所述各行奇偶校验块的缘 故。与此相对,常规的EVENODD技术在计算所述各对角奇偶校验集合 的过程中不考虑所述各行奇偶校验块。相反,常规的EVENODD方法把 所述丟失的对角奇偶校验块考虑到被存储在其对角奇偶校验盘上的每 一个其他对角奇偶校验块中。
在操作中,如果丟失了一个(反)对角奇偶校验盘和任意数据盘, 则通过首先从行奇偶校验(例如根据常规的RAID-4重建技术)重建该 数据盘并且随后重建该(反)对角奇偶校验盘来实现恢复。类似地,如 果丟失了所述两个奇偶校验盘,则通过首先从各数据盘重建所述行奇偶 校验盘并且随后重建所述(反)对角奇偶校验盘来实现恢复。另 一方面, 如果丢失了任一对数据盘,则允许从至少一个并且可能是两个所述(反) 对角奇偶校验集合直接重建一个块。此后,所述系统能够恢复剩余的丢 失的各数据块。应当注意,丟失所述行奇偶校验盘和一个数据盘的情况 与丢失两个数据盘的情况完全相同,并且可以按照相同的方式实现恢 复。
图9是示出了在对于行-(反)对角奇偶校验的恢复(重建处理) 程序900中所涉及到的步骤序列的流程图。作为说明,在所述RAID系统340确定发生了双重故障时所述程序900启动。或者,可以在三重故 障程序1000已经恢复了其中一个盘之后调用所述程序900,从而离开双 重故障。应当注意,可以利用对角线或反对角线来扭J亍所述程序900。 对于除了一条之外的所有(反)对角线把(反)对角奇偶校验块存储在 所述DP/ADP盘上。因此,所述程序900开始于步骤905并且继续到步 骤910,在该步骤中,利用(反)对角奇偶校验启动对至少一个并且通 常是两个丢失块的重建。
一旦重建了一个丢失的块之后,可以通过利用行奇偶校验重建该行 上的另一个丢失的块来完成对一行的重建(步骤915)。在重建该另一 块时,在步骤920中确定该块是否属于为之存储了奇偶校验的(反)对 角线。如果该块属于存在与之对应的奇偶校验的(反)对角线,则可以 利用(反)对角奇偶校验从处在该(反)对角线上的另 一个盘重建该(反) 对角线上的另一个丢失块(步骤925 )。也就是说,对于除了所述丢失 的(反)对角线之外的所有(反)对角线, 一旦重建了该(反)对角线 上的一个块之后,就可以重建另一块。所述序列随后返回步骤915,在 该步骤中重建该行奇偶校验集合中的另一个丢失块。然而,如果该块属 于没有与之对应的奇偶校验的(反)对角线(即所述丟失的(反)对角 线),则在步骤930中确定是否重建了所有块。如果没有,则所述序列 返回步骤910,在该步骤中,继续所述首先基于(反)对角奇偶校验并 且随后基于行奇偶校验进行重建的模式,直到到达在计算所述丢失的 (反)对角奇偶校验集合的过程中所使用的最后一个数据块。 一旦重建 了所有块之后,所述序列在步骤935中结束。所述丢失的(反)对角奇 偶校验集合总是终止所述重建链。
总而言之,可以通过从所重建的第一条(反)对角线开始到所述丟 失的(反)对角奇偶校验结束依次列出可以被重建的各(反)对角线来 描述所述重建序列。对于间隔为A:的两个故障盘y和y+h可以被重建的 一个(反)对角线序列每次递增h并且另一个序列每次递减t这是 由于行重建向右(或向左)移动A:个盘,因此也移动到接下来第A:条更 高(或更低)的(反)对角线(模/ )。在大多数情况下,有多个(至 少两个)并行重建线程。例外的情况是DO (其是不包括所述"丢失的,, (反)对角线的块的盘)以及除了所述(反)对角奇偶校验盘DP/ADP 之外的任何其他盘丢失。在这种情况下,仅有单个重建块流,该流结束于所述丢失的(反)对角奇偶校验集合在另一个丟失盘上的块。
F、三重奇偶校验重建
响应于所述阵列内的一个或多个存储设备故障,本发明说明性地提 供一个多步状态机,其被实现在所述存储操作系统的盘存储层(RAID 系统)内以用于确定适当的重建技术。特别地,当三个RAID4盘发生 故障时,则通过首先计算所述"丟弃的"对角和反对角奇偶校验(即先 前未被存储的各对角和反对角奇偶校验块)来调用三重奇偶校验恢复技 术。所述RAID系统随后通过生成多个交叉沿着所述各故障盘的居间(中 间)盘计算多个4元组和。所述各4元组和随后被简化成所述中间盘上 的各逐对和。所生成的各逐对和形成一个可解线性方程组。作为说明, 首先通过求解所述方程组来恢复所述中间盘上的数据。 一旦所述中间盘 上的第一块被解析之后,可以将其解代入到其他方程中,直到该中间盘 上的所有块都被恢复。 一旦该中间盘被恢复之后,所述系统随后就执行 所述R-D奇偶校验技术来恢复剩余的两个盘。
图IO是详细描述根据本发明的一个实施例的用于从三个故障RAID 4盘恢复的程序1000的各步骤的流程图。所述程序1000开始于步骤1005 并且继续到步骤IOIO,在该步骤中,所述RAID系统340计算所述丢弃 的对角和反对角奇偶校验。如上所述,所述丢弃的对角和反对角奇偶校 验涉及到未被存储在所述盘阵列上的那些(反)对角线。例如,在图6 的阵列600中没有存储对应于第4条对角线的奇偶校验。类似地,在图 7的阵列700上没有存储对应于第0条反对角线的奇偶校^^。对于所丢 弃的(反)对角线的计算是相对直接明了的。可以证明,可以把对应于 所丟弃(反)对角线的奇偶校验计算为所述(反)对角奇偶校验盘上的 各块的和。也就是说 2>7力尉微發礎=
2>炎兹键 2>摩^并 肩4'丄^炎凝块0
2>/,爭微發炎
2 e摩^茅^肩4'J: W/;f ,偶戎验块 其中,^0表示所标识出的各块的异或的和。通过注意到Ze/尹爭偶戎 /#块^^>炎凝炎以及对两个完全相同的项的异或得到0,该等式可以被 简化成下式
2>摩^#,,力4'2^炎^块0Z 摩^并^/"yf 4'2 ^存爭偶戎/#块 =2>摩^并#肩4'2 W祐
所述RAID系统随后把所述各故障盘标识为X、 Y和Z,其值等于 这三个故障盘在所述阵列中的索引,并且其中从0-p标记各盘。因此, 例如如果来自阵列500的盘DO、 Dl和D3发生故障,贝'j X=0、 Y=l并 且Z=3。所述系统随后在步骤1012中计算一个代数运算,例如是沿着 行、对角和反对角三维当中的每一维计算所述三个故障盘上的丢失块的 异或和。作为说明,此时计算该和有助于减少一旦在恢复了所述中间盘 之后重建剩余的两个盘所需要的异或运算的数目。在步骤1010中恢复 所述丢弃的/丢失的(反)对角奇偶校验确保可以沿着每一个行、对角和 反对角奇偶校验集合计算所述异或和。
例如,可以如下计算丢失的各块DQQ、 D(h和Dq3 (第l行上的块) 的行奇偶校-睑和
D00 0 D010 D03=RP0 D02 类似地,可以如下计算丢失的各块D3q、 Dw和D33 (第4行上的块)的 行奇偶校^^和
D30 D3! 0 D33=RP3十D32 可以如下计算丢失的各块Doo、 Du和D33 (参考图7,这些块是反对角 线4上的块)的反对角奇偶校验和
D00 6 D!! 0 D33=ADP0十D22 可以如下计算丟失的各块D30、 D^和Do3 (参考图6,这些块是对角线3 上的块)的对角奇偶校验和
D30十D210 D03=DP3 0 D12
所述RAID系统随后在所述故障的中间盘上计算总共/ 个4元组和 (步骤1013 - 1018)。在步骤1013中,通过定义各故障盘的列之间的距 离对各盘进行排序
g=Y-X
h=Z-Y
因此,使用上面的X-O、 Y爿并且Z-3的例子,g=l-0=l, h=3-l=2。通 过这一定义,Y盘是中间盘。
所述系统随后在步骤1014中选择一行k。例如,假设k-O。所述系 统随后获取对应于所选该行的各丢失盘上的各块的行奇偶校验的和(步骤 1015 )。 在该例中,对应于行k=0的和被预先计算为 D00 D01 D03=RP0@D02。随后在步骤1016中,所述系统获取对应于处 在盘Z上的行k内的该块的对角线。作为说明,假设k-O,则该对角线 上的各丟失块的和是D3O D210DO3=DP30D12。所述RAID系统随后在 步骤1017中获取对应于处在盘X上的行k中的该块的反对角线。作为 说明,这等于D。oeDn0D33-ADP。eD22。
我们把所述(反)对角线在其上终止的该行称作行q。所述RAID 系统随后在步骤1018中获取对应于行q的各丢失盘上的各块的行奇偶 校验和,作为说明,其是D30 D31 D33=RP3@D32。
在该说明性实施例中,在每一个步骤1015、 1016、 1017和1018中, 把所获取的和与前一个和进行异或。对于行k-O的例子,总共有
Doo柳oi柳03 D30 @r>3i D33①D加柳 加33 eEbo節21 Do3 =
RP0 Dra RP3 Dm 0ADPo E^ DP3柳12
其简化成
D01柳,, D21 D3I = RP0 Dw RP3 D32 ADP0柳" DP3 D12
该等式的右侧是已知的,从而留下一个在所述中间盘上具有4个未 知量的等式。更一般来说,在每一个交叉处的顶行和底行中的复制项被 抵消,从而得到所述中间盘上的最多4个块的和。为了求解所述丟失的 数据,通过在不同条带处开始交叉来计算p个所述和。由于所述阵列仅 仅包含p-l行,因此通过利用分别对应于盘Z和X的所丢弃的对角和反 对角盘构造交叉来形成第p个4元组和。例如,在图ll中,利用下面4 个异或和来构造第p个4元组和 (对角) D4O0DO10D23 (反对角)D430Dn@D2O (行) D40eD41 D43 D2o D2i D23 其导致以下4元组和
D4i0D(H十Du0 D2i
在该例中,第一个交叉(基于行0)得到包括
的元组,其表示3皮相加的所述中间盘上的各块。通过生成p个交叉,对应于行k的元 组可以由[k,k+g,k+h,k+h+g]表示,其中所有加法都是模p执行的。
应当注意,所述计算各4元组和的步骤可以被执行为把任意排序的 各故障盘相加。在上面的例子中所选择的顺序是X=0、 Y=l、 Z=2。或 者也可以选择XK)、 Y=2、 Z=l的不同排序。在该例中,所述中间盘将 是Y-2。该例中的各值是§=丫《=2, h=Z-Y=-l。很容易看出,对于3个 盘故障存在总共6种可能的排序。由于每一种排序导致对应于g和h的 不同的一组值,因此把各4元组和简化成各逐对和所需的元组数目是不 同的。因此,为了使得所需的XOR运算的数目最少,所选择的排序应 当使得简化到逐对和所需的元组集合的数目最少。
此外,各擦除列之间的距离在该步骤中是很重要的。很明显,如果 g-h,则所述中间盘上的两个附加块抵消,从而把所述4元组转换成2 元组。因此,对于等距/对称故障不需要下一步骤。此外,通过把对应于 行"0"的元组表示为
,可以把等距故障推广到g-h模(p)或者 [(g-h)模p-0]的状况。这种状况表明所述4元组内的第二和第三块完全 相同并且因此抵消。
一旦构造了所述各4元组和之后,所述RAID系统就在步骤1020 种把所述各4元组和简化成所述中间盘上的各逐对和。为了形成逐对和, 所述系统选择所述等式的一个子集,从而使得公共块抵消掉,从而仅仅 留下两个块。计算对应于所述子集的和得到所述中间盘上的各块的逐对和。
针对选择元组的 一个子集以便将其简化成逐对和可以有多种方式。 在一个实施例中,通过从对应于行A:的元组开始并且在与上一个元组的 偏移量g (或/z)下选择各后续元组来选择所述元组子集。在每一个步 骤中,公共块被抵消,并且所述处理持续到仅仅剩下两个未知块。从而 得到逐对和。
例如,从对应于行0的4元组和开始,即
,可以4艮容易 看出,在偏移量g下选择另 一个元组可以帮助在添加两个新块的同时抵 消两个块,从而令未知块的总数保持不变。这是由于对应于行g的元组 是[g,2g,h+g,2g+h],其帮助抵消公共块g和/z+g,这是因为所述公共块 存在于全部两个元组中。(所有加法和乘法在这里都被假设为才莫p)。 因此,从对应于行0的4元组开始(将此视为第一步),并且在偏移量g下选择各相继元组,第m步得到以下各块的和[O,(m承g)模p,h,(m*g+h) 模p]。
假设p是素数并且(g, lKp)这一条件成立,则总是可以找到一个m (0<m<p )使得[(n^g+h)模p]=0成立。类似地,总是可以找到一个w使 得[(m承g-h)模phO成立。因此,通过选择m使得[(n^g+h)模ph0,所述 结果
中的第1和第4块可以在第m步之后被 抵消。或者,通过选择m使得[(m承g-h)模p]-O,第2块和第3块可以在 第m步之后^皮抵消。由于仅仅剩下两个未知块,因此所述选择各元组的 处理可以在这一步终止。通过从所述p-1行当中的每一4亍中的4元组和 开始重复以上步骤,可以得到p-1个逐对和。
通过执行代数运算,其中 一个所述等式得到等于已知量的单个未知 量,其随后可以被代入之前的各等式中,以便求解所述中间盘上的所有 未知量,爿Mv而在步骤1025中恢复所述中间盘。
具体来说,由于所述阵列的构造仅仅使用了 p-1行,因此可以假设 盘Y上的第p个块为零。因此,在完成创建所述各逐对和时得知与该第 p个块成对异或的该块的值,即得到仅仅具有一个未知量的等式。通过 把该解代入到所恢复的块中并且使用其他各逐对和,可以恢复所述中间 盘上的剩余各块。此时,所述RAID系统已经重建了所述中间盘,从而 仅仅剩下两个故障盘。由于之前已经利用行对角奇偶校验解决了这一问 题,因此所述系统实施所述R-D奇偶校验以便恢复所述丢失的两个盘。 相应地, 一旦恢复了所述中间盘之后,所述RAID系统就在步骤1035 中完成之前在步骤900中利用R-D奇偶校验来恢复剩余的两个盘。
有一些素数是用于构造所述阵列的特别好的选择。这些素数是2的 幂加1的素数,其小于被用来访问所述盘的块尺寸,并且等于或大于在 一个阵列中所设想的盘数目。前几个作为2的幂加1的素数是5、 17和 257。在这些素数当中,5对于许多情况来说太小,这是因为其仅仅允许 所述盘阵列包含最多4个数据盘。然而,17和257都是很好的选择。其 原因是大多数存储系统把盘存储划分成其尺寸为2的幂的各块,典型地 是4k (4096)字节、8k (8192)字节或者某一其他类似尺寸的2的幂。 通过令/ =17或者; =257,在分别包含多达15或255个数据盘的阵列中, 在包括16或256行的各组内计算对角奇偶校验。这两个素数都是合理 的选择,这是因为有可能把例如4k字节大的数据块均匀地划分成分别是4k/16-256或4k/256-16字节的子块。通过沿着各子块定义各(反) 对角线来计算(反)对角奇偶校验。通过在例如整个4k块上计算奇偶 校验来计算行奇偶校验,其计算方式与在没有对角奇偶校验的RAID-4 或RAID-5阵列中计算行奇偶校验的方式完全相同。
虽然出于(反)对角奇偶校验集合计算的目的可以把每一个4k盘 块均匀地划分成16或256个子块,但是在所述说明性实施例中,用软 件或硬件实现这种方法仅仅需要把每一个4k块的一个或两个毗连的非 重叠区域异或到一个4k对角奇偶校验块上,其中每一个区域包括一个 或多个子块。按照移位模式把所述数据块内容异或到所述(反)对角奇 偶校验块中,并且使得属于所述丢失的(反)对角奇偶校验集合的每一 个数据块的子块对所述(反)对角奇偶校验块没有贡献。把所述(反) 对角奇偶校验数据加到所述(反)对角奇偶校验块上的总计算时间与把 所述数据块加到所述行奇偶校验块上的计算时间相当。
本发明有利地在例如RAID-4风格的集中式奇偶校验格式中提供了 三重盘故障奇偶校验保护,其中所有奇偶校验信息被存储在三个设备 (比如盘)上。因此,本发明的奇偶校验技术允许把各数据盘递增地添 加到盘阵列中而无需重新格式化或者重新计算现有的奇偶校验信息。本 发明使用最少数量的冗余盘空间,即每阵列恰好三个盘。对于给定数目 的数据盘,本发明与诸如EVENODD或STAR之类的现有技术方法相比 还减少了奇偶校验计算的开销。所述奇偶校验计算开销对于这里描述的 TP技术是最优的。
应当注意,在从依赖于冗余数据流的其他应用中的三重故障中恢复 时也可以利用本发明的TP技术。例如,所述TP技术可以被利用在数据 通信应用中,其中传送附加的数据以便在从多达三个丟失的和/或破坏的 分组恢复时降低对重传的依赖性。此外还应当注意,在替换实施例中可 以利用除了异或运算之外的其他代数运算。
前面的描述是针对本发明的具体实施例。然而,可以明显看出,在 保留所描述的实施例的某些或所有优点的情况下可以对其做出其他改 变和修改。因此,所附权利要求书的目的是覆盖落在本发明的真实精神 和范围内的所有这种改变和修改。
权利要求
1、一种用于实现从存储阵列中的存储设备的三个或更少同时故障中恢复的方法,该方法包括以下步骤为所述阵列提供预定数目的存储设备,其中包括被配置成存储数据和行奇偶校验的多个第一设备、被配置成存储对角奇偶校验的一个对角奇偶校验设备以及被配置成存储反对角奇偶校验的一个反对角奇偶校验设备,其中所述存储设备的预定数目n是p+2,并且p是素数;把每一个设备分成块;把所述各块组织成条带,所述条带在每一个设备中包含相同数目的块,其中每一个条带包括n-3行的块;沿着跨越所述各第一设备的各对角奇偶校验集合定义所述对角奇偶校验,其中所述对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各对角奇偶校验集合的所有块都被存储在该条带中;在所述对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述对角奇偶校验集合的对角奇偶校验;沿着跨越所述各第一设备的各反对角奇偶校验集合定义所述反对角奇偶校验,其中所述反对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各反对角奇偶校验集合的所有块都被存储在该条带中;以及在所述反对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述对角奇偶校验集合的反对角奇偶校验。
2、 权利要求l所述的方法,其中,条带中的各行奇偶校验块都被存 储在单个设备上。
3、 权利要求l所述的方法,其中,所述各第一设备包括多个数据设 备,并且所述各数据设备不全都存在,缺失的各数据设备被视为包含零 值数据。
4、 权利要求l所述的方法,其中,各奇偶校验块的位置在不同条带 内逐设备地移位。
5、 权利要求l所述的方法,其中,所述各条带的以比特数计的尺寸 是2的幂。
6、 一种被配置成实现从两个存储设备的三个或更少同时故障中恢 复的系统,该系统包括具有预定数目的存储设备的阵列,其中包括被配置成存储数据和行 奇偶校验的多个第一设备、被配置成存储对角奇偶校验的一个对角奇偶 校验设备以及被配置成存储反对角奇偶校验的一个反对角奇偶校验设备,其中所述存储设备的预定数目w是/ +2,并且;p是素数;存储操作系统,其包括设备存储层,该设备存储层被配置成实现三 重奇偶校验(TP)技术,该技术执行以下操作(i)沿着跨越所述各 第一设备的各对角奇偶校验集合计算所述对角奇偶校验;(ii)在所述 对角奇偶校验设备上存储对应于除了一个之外的所有所述对角奇偶校 验集合的对角奇偶校验;(iii)沿着跨越所述各第一设备的各反对角奇 偶校验集合计算所述反对角奇偶校验;以及(iv)在所述反对角奇偶校 验设备上存储对应于除了一个之外的所有所述反对角奇偶校验集合的 反对角奇偶校验;以及处理元件,其被配置成执行所述存储操作系统,从而根据所述TP 奇偶校验技术来调用对所述阵列的存储访问操作以及来自所述阵列的 存储访问操作。
7、 权利要求6所述的系统,其中,条带中的各行奇偶校验块都被存 储在单个设备上。
8、 权利要求6所述的系统,其中,所述设备存储层是RAID系统, 并且所述存储设备是盘。
9、 权利要求6所述的系统,其中,所述RAID系统进一步把每一个 盘分成块,并且把所述各块组织成条带。
10、 权利要求9所述的系统,其中,每一个条带包括"-3行的块,其 中"=/ +2,每一行包含来自每一个盘的一个块。
11、 权利要求8所述的系统,其中,所述RAID系统是用逻辑电路实 现的。
12、 权利要求6所述的系统,其中,所述设备是以下各项的其中之 一录像带、磁带、光学介质、DVD、磁泡存储器、磁盘、电子随机存 取存储器以及微机电存储设备。
13、 权利要求6所述的系统,其中,所述各第一设备包括多个数据 设备,并且所述各数据设备不全都存在,缺失的各数据设备被视为包含 零值数据。
14、 一种用于实现从存储阵列中的两个存储设备的三个或更少同时故障中恢复的设备,该设备包括用于为所述阵列提供预定数目的存储设备的装置,其中所述预定数 目的存储设备包括被配置成存储数据和行奇偶校验的多个第一设备、被 配置成存储对角奇偶校验的一个对角奇偶校验设备以及被配置成存储 反对角奇偶校验的一个反对角奇偶校验设备,其中所述存储设备的预定 数目"是p+2,并且/ 是素数;用于把每一个设备分成块的装置;用于把所述各块组织成条带的装置,所述条带在每一个设备中包含 相同数目的块,其中每一个条带包括w-3行的块;用于沿着跨越所述各第一设备的各对角奇偶校验集合定义所述对 角奇偶校验的装置,其中所述对角奇偶校验集合在《-3行的一组内绕回, 从而使得属于条带的各对角奇偶校验集合的所有块都被存储在该条带中;用于在所述对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述对角奇偶校验集合的对角奇偶校验的装置;用于沿着跨越所述各第一设备的各反对角奇偶校验集合定义所述 反对角奇偶校验的装置,其中所述反对角奇偶校验集合在w-3行的一组内 绕回,从而使得属于条带的各反对角奇偶校验集合的所有块都被存储在 该条带中;以及用于在所述反对角奇偶校验设备上计算并存储对应于除了一个之 外的所有所述反对角奇偶校验集合的反对角奇偶校验的装置。
15、 权利要求14所述的设备,其中,条带中的各行奇偶校验块都被 存储在单个设备上。
16、 权利要求14所述的设备,还包括 用于把每一个存储设备分成块的装置;以及 用于把所述各块组织成条带的装置。
17、 权利要求16所述的设备,其中,所述用于存储的装置包括用于 针对条带的除了一个之外的每一个所述对角奇偶校验集合把各对角奇 偶校验块存储在所述对角奇偶校验盘上的装置。
18、 权利要求16所述的设备,其中,所述用于存储的装置包括用于 针对条带的除了一个之外的每一个所述反对角奇偶校验集合把各反对 角奇偶校验块存储在所述反对角奇偶校验盘上的装置。
19、 权利要求14所述的设备,其中,所述各第一设备包括多个数据 设备,并且所述各数据设备不全都存在,缺失的各数据设备被视为包含 零值数据。
20、 权利要求16所述的设备,其中,所述各条带的以比特数计的尺 寸是2的幂。
21、 权利要求16所述的设备,其中,把每一个条带中的块数目乘以 第 一块尺寸等于由文件系统使用来访问所述存储阵列的第二块尺寸。
22、 一种计算机可读介质,其包含用于实现从存储阵列中的两个存 储设备的两个或更少同时故障中恢复的可执行程序指令,所述可执行程 序指令包括用于执行以下操作的程序指令为所述阵列提供预定数目的存储设备,其中包括被配置成存储数据 和行奇偶校验的多个第 一设备、被配置成存储对角奇偶校验的一个对角 奇偶校验设备以及被配置成存储反对角奇偶校验的 一个反对角奇偶校 验设备,其中所述存储设备的预定数目w是户+2,并且户是素数;把每一个设备分成块;把所述各块组织成条带,所述条带在每一个设备中包含相同数目的 块,其中每一个条带包括"-3行的块;沿着跨越所述各第一设备的各对角奇偶校验集合定义所述对角奇 偶校验,其中所述对角奇偶校验集合在w-3行的一组内绕回,从而使得属 于条带的各对角奇偶校验集合的所有块都被存储在该条带中;在所述对角奇偶校验设备上计算并存储对应于除了一个之外的所 有所述对角奇偶校验集合的对角奇偶校验;沿着跨越所述各第一设备的各反对角奇偶校验集合定义所述反对 角奇偶校验,其中所述反对角奇偶校验集合在w-3行的一组内绕回,从而 使得属于条带的各反对角奇偶校验集合的所有块都被存储在该条带中; 以及在所述反对角奇偶校验设备上计算并存储对应于除了一个之外的 所有所述对角奇偶校验集合的反对角奇偶校验。
23、 权利要求22所述的计算机可读介质,其中,条带中的各行奇偶 校验块被存储在单个设备上。
24 、 一种用于实现从存储阵列中的三个存储设备的三个或更少同时 故障中恢复的方法,该方法包括以下步骤为所述阵列提供预定数目的存储设备,其中包括;故配置成存储数据 和行奇偶校验的多个第一设备、被配置成存储对角奇偶校验的一个对角 奇偶校验设备以及被配置成存储反对角奇偶校验的一个反对角奇偶校 验设备;沿着跨越所述各第一设备的各对角奇偶校验集合计算所述对角奇 偶校验;在所述对角奇偶校验设备上存储对应于除了 一个之外的所有所述 对角奇偶校验集合的对角奇偶校验;沿着跨越所述各第一设备的各反对角奇偶校验集合计算所述反对 角奇偶校验;以及在所述反对角奇偶校验设备上存储对应于除了一个之外的所有所 述反对角奇偶校验集合的反对角奇偶校验。
25、 权利要求24所述的方法,还包括以下步骤 把每一个设备分成块;以及把所述各块组织成条带
26、 权利要求24所述的方法,其中,所述各第一设备包括多个数据 设备,并且所述各数据设备不全都存在,缺失的各数据设备纟支;脱为包含 零值数据。
27、 权利要求24所述的方法,其中,所述存储设备的预定数目是",其中"=/7+2,并且/7是素数。
28、 一种用于实现从存储阵列中的存储设备的三个同时故障中恢复 的方法,该方法包括以下步骤计算丟弃的对角奇偶校验和反对角奇偶校验; 沿着行、对角线和反对角线计算对一组故障存储设备当中的每一个 上的各丢失块的代数运算;以及计算中间故障存储设备上的一组4元组和。
29、 权利要求28所述的方法,其中,计算所述丢弃的对角奇偶校验 的所述步骤包括计算对角奇偶校验存储设备上的多个块的步骤。
30、 权利要求28所述的方法,其中,计算所述丢弃的反对角奇偶校 验的所述步骤包括计算反对角奇偶校验存储设备上的多个块的步骤。
31、 权利要求28所述的方法,其中,所述计算中间故障存储设备上 的一组4元组和的步骤还包括以下步骤对所述各故障存储设备进行排序;对于每 一行所述存储设备执行以下操作(a) 选择所述存储阵列的一行;(b) 获取对应于所选该行的各丢失存储设备上的各块的行奇偶才交-睑和;(c) 对于笫一故障存储设备获取对应于所选该行上的一个块 的对角奇偶校验;(d) 对于第二故障存储设备获取对应于所选该行上的一个块 的反对角奇偶校验;(e) 获取对应于一行的各丢失存储设备上的各块的行奇偶校 验和,其中所述反对角线和对角线在该行终止;对步骤(b) 、 (c) 、 (d)和(e)的结果执行异或(XOR)运算, 以^使形成所述4元组和。
32、 权利要求28所述的方法,还包括以下步骤 把所述各4元组和简化成所述中间故障存储设备上的 一组逐对和; 恢复所述中间存储设备。
33、 权利要求32所述的方法,还包括以下步骤执行行-对角奇偶校 验恢复技术,以便恢复其他故障存储设备。
34、 权利要求28所述的方法,其中,所述存储设备是盘。
35、 权利要求28所述的方法,其中,所述代数运算包括异或(XOR)和。
全文摘要
一种三重奇偶校验(TP)技术减少了为存储阵列计算对角和反对角奇偶校验的开销,其中所述存储阵列被适配成实现从该阵列中的三个存储设备的同时故障中高效地恢复。沿着共同跨越所述阵列的所有数据盘和行奇偶校验盘的各对角奇偶校验集合计算所述对角奇偶校验。对应于除了一个之外的所有所述对角奇偶校验集合的奇偶校验被存储在所述对角奇偶校验盘上。类似地,沿着共同跨越所述阵列的所有数据盘和行奇偶校验盘的各反对角奇偶校验集合计算所述反对角奇偶校验。对应于除了一个之外的所有所述反对角奇偶校验集合的奇偶校验被存储在所述反对角奇偶校验盘上。所述TP技术提供了均匀的条带深度和最优的奇偶校验信息量。
文档编号G06F3/06GK101512492SQ200680052913
公开日2009年8月19日 申请日期2006年12月14日 优先权日2005年12月15日
发明者A·格尔, P·F·科尔贝特 申请人:网络装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1