CN101512492B - 用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术 - Google Patents
用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术 Download PDFInfo
- Publication number
- CN101512492B CN101512492B CN2006800529131A CN200680052913A CN101512492B CN 101512492 B CN101512492 B CN 101512492B CN 2006800529131 A CN2006800529131 A CN 2006800529131A CN 200680052913 A CN200680052913 A CN 200680052913A CN 101512492 B CN101512492 B CN 101512492B
- Authority
- CN
- China
- Prior art keywords
- parity checking
- parity
- diagonal
- diagonal angle
- dish
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1061—Parity-single bit-RAID4, i.e. RAID 4 implementations
Abstract
一种三重奇偶校验(TP)技术减少了为存储阵列计算对角和反对角奇偶校验的开销,其中所述存储阵列被适配成实现从该阵列中的三个存储设备的同时故障中高效地恢复。沿着共同跨越所述阵列的所有数据盘和行奇偶校验盘的各对角奇偶校验集合计算所述对角奇偶校验。对应于除了一个之外的所有所述对角奇偶校验集合的奇偶校验被存储在所述对角奇偶校验盘上。类似地,沿着共同跨越所述阵列的所有数据盘和行奇偶校验盘的各反对角奇偶校验集合计算所述反对角奇偶校验。对应于除了一个之外的所有所述反对角奇偶校验集合的奇偶校验被存储在所述反对角奇偶校验盘上。所述TP技术提供了均匀的条带深度和最优的奇偶校验信息量。
Description
技术领域
本发明涉及存储系统阵列,更具体来说,本发明涉及一种用于高效地重建存储阵列的三个故障存储设备的任何组合的技术。
背景技术
一个存储系统通常包括一个或多个存储设备,其中可以按照期望把数据输入到所述存储设备中并且可以从中获得数据。所述存储系统可以根据多种存储体系结构来实现,其中包括但不限于网络附属存储环境、存储区域网络以及直接附着到客户端或主计算机的盘组件。所述存储设备通常是盘驱动器,其中术语“盘”通常描述独立的旋转磁介质存储设备。术语“盘”在本上下文中与硬盘驱动器(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的“ACase for Redundant Arrays of Inexpensive Disks(RAID)(廉价盘冗余阵列(RAID)的一种情况)”(Proceedings of the InternationalConference on Management of Data(SIGMOD),1998年6月)中被公开。
这里使用的术语“编码”是指在数据块的预定子集上计算冗余度值,而术语“解码”是指通过使用数据块的子集和冗余度值来重建数据或奇偶校验块。如果所述奇偶校验组中的一个盘发生故障,则可以通过把剩余数据块的所有内容相加并且从所述奇偶校验块中减去其结果而在一个或多个备用盘上解码(重建)该故障盘的内容。由于在1比特字段上进行的2的互补加法和减法对于异或运算都是等效的,因此上述重建包括对所有仍然存在的数据和奇偶校验块的异或。类似地,如果所述奇偶校验盘丢失,则可以按照相同的方式从仍然存在的数据重新计算该奇偶校验盘。
奇偶校验方案通常提供针对某一奇偶校验组内的单个盘故障的保护。这些方案还可以防止多盘故障,只要每一个故障发生在不同的奇偶校验组内。然而,如果在某一奇偶校验组内有两个盘同时发生故障,则会遭受不可恢复的数据丢失。在某一奇偶校验组内有两个盘同时发生故障是相当常见的事情,这特别是由于盘“磨损”以及由于与盘操作相关的环境因素而造成的。在本上下文中,在某一奇偶校验组内有两个盘同时发生故障的情况被称作“双重故障”。
双重故障通常是由于一个盘发生故障并且另一个盘在尝试从该第一故障中恢复时发生后续故障而造成的。所述恢复或重建时间取决于所述存储系统的活动水平。也就是,在重建故障盘的过程中,所述存储系统有可能保持“在线”并且继续服务于(来自客户端或用户的)针对访问(即读取和/或写入)数据的请求。如果所述存储系统忙于为请求提供服务,则对于重建所经过的时间会延长。所述重建处理时间还随着所述存储系统中的盘的尺寸和数目的增大而延长,这是由于必须读取所有仍然存在的盘以重建丢失的数据。此外,双重盘故障率与奇偶校验组中的盘数目的平方成比例。然而,令奇偶校验组较小是昂贵的,这是因为每一个奇偶校验组需要一个专用于冗余数据的整个盘。
盘的另一种故障模式是介质读取错误,其中盘的单个块或扇区无法被读取。如果奇偶校验被保持在所述存储阵列中,则可以重建所述不可读取的数据。然而,如果一个盘已经发生故障,则随后在所述阵列中的另一个盘上的介质读取错误将导致丢失数据。这是第二种形式的双重故障。
可以容易地证明,校正双重故障所需的冗余信息的最少数量是两个单位。因此,可以被添加到各数据盘中的奇偶校验盘的最少数目是两个。不管所述奇偶校验是分布在各盘上还是集中在所述两个附加盘上,上述内容都是成立的。
一种已知的双重故障校正奇偶校验方案是基于EVENODD异或的技术,其允许对丢失的(故障的)盘进行串行重建。EVENODD奇偶校验需要恰好两个盘的冗余数据,这种做法是最优的。根据该奇偶校验技术,所有盘块属于两个奇偶校验集合,其中一个是在所有数据盘上按照典型的RAID-4风格异或计算的,另一个是沿着对角相邻的盘块的集合计算的。所述各对角奇偶校验集合包含来自除了其中一个数据盘之外的所有数据盘的盘。对于n个数据盘,在一个条带中有n-1行块。每一个块处在一条对角线上,并且有n条对角线,每一条的长度为n-1个块。值得注意的是,只有在n是素数的情况下所述EVENODD方案才适用。在Blaum等人的标题为“EVENODD:An Efficient Scheme for ToleratingDouble Disk Failures in RAID Architecture(EVENODD:一种用于容许RAID体系结构中的双重盘故障的高效方案)”(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(利用简单的非递归对角和行奇偶校验对DASD阵列中的多达两个不可用DASD的数据内容进行编码和重建的方法和装置)”的美国专利号5,579,475中公开了EVENODD的一个变型。上述文章和专利被合并在此以作参考,就象在此被完全陈述一样。
所述EVENODD技术利用总共p+2个盘,其中p是一个素数,并且有p个盘包含数据,剩余的两个盘包含奇偶校验信息。其中一个奇偶校验盘包含行奇偶校验块。行奇偶校验被计算为处在每一个所述数据盘的相同位置处的所有数据块的异或。另一个奇偶校验盘包含对角奇偶校验块。对角奇偶校验是从按照对角模式被设置在各数据盘上的p-1个数据块构造的。所述各块被分组成由p-1行组成的条带。这样做不会影响把各数据块分配到各行奇偶校验集合中。然而,构造各对角线的模式使得其所有块都处在相同的块条带中。这意味着大多数对角线在其逐盘行进时在所述条带内“绕回”。
具体来说,在nx(n-1)数据块的阵列中,如果对角线在该阵列的边缘“绕回”,则恰好有n条长度分别为n-1的对角线。重建所述EVENODD奇偶校验设置的关键是使得每一个对角奇偶校验集合不包含来自其中一个所述数据盘的信息。然而,对角线的数目比块的数目多1,以便存储对应于各对角线的奇偶校验块。也就是,所述EVENODD奇偶校验设置导致一个不具有独立的奇偶校验块的对角奇偶校验集合。为了适应该额外的“丢失”奇偶校验块,所述EVENODD设置把一条特异对角线的奇偶校验结果异或到对应于每一条其他对角线的奇偶校验块中。
图1是根据常规的EVENODD奇偶校验设置来配置的现有技术盘阵列100的示意方框图。每一个数据块Dab属于奇偶校验集合a和b,其中对应于每一个奇偶校验集合的奇偶校验块被表示为Pa。注意,对于一条特异的对角线(X)没有存储相应的奇偶校验块。这是EVENODD属性的所在之处。为了允许从两个故障进行重建,每一个数据盘不能对至少一个对角奇偶校验集合做出贡献。通过采用nx(n-1)数据块的矩形阵列,各对角奇偶校验集合具有n-1个数据块成员。然而如所述,这种设置不具有用于存储对应于所有对角线的奇偶校验块的位置。因此,通过把该对角奇偶校验异或到每一个其他对角奇偶校验块的奇偶校验中来记录所述额外的(丢失的)对角奇偶校验块(X)的奇偶校验。具体来说,所述丢失的对角奇偶校验集合的奇偶校验被异或到每一个对角奇偶校验块P4到P7中,从而把这些块表示为P4X-P7X。
为了从两个数据盘的故障进行重建,初始地通过对所有奇偶校验块进行异或来重新计算不具有奇偶校验块的对角线的奇偶校验。例如,所有行奇偶校验的和是所有数据块的和。所有对角奇偶校验的和是所有数据块的和减去丢失的对角奇偶校验块的和。因此,所有奇偶校验块的异或等效于所有块的和(行奇偶校验和)减去除了丢失的对角线之外的所有块的和(其恰好是丢失的对角线的奇偶校验)。实际上,所述丢失的对角奇偶校验的n-1个拷贝被加到所述结果中,其中的每一个拷贝对应于每一个对角奇偶校验块。由于n是大于2的素数,因此n-1是偶数,从而导致某一块与其自身的偶数次异或,从而得到一个零块。相应地,所述各对角奇偶校验块与添加到每一个对角奇偶校验块的附加的丢失的奇偶校验的和等于没有所述附加的对角奇偶校验的各对角奇偶校验块的和。
接下来,从每一个所述对角奇偶校验块中减去所述丢失的对角奇偶校验。在两个数据盘发生故障之后,至少有两个丢失仅仅一个块的对角奇偶校验集合。来自每一个所述奇偶校验集合的丢失的块可以被重建,即使在其中一个所述集合是没有对应的奇偶校验块的对角线的情况下也是如此。一旦所述块被重建之后,除了所述两个行奇偶校验集合的其中一个成员之外的所有行奇偶校验集合都可用。这允许重建这些行的丢失的成员。该重建发生在其他对角线上,这提供了足够的信息以用来在这些对角线上重建最后丢失的块。所述交替使用行奇偶校验并且随后使用对角奇偶校验的重建模式持续到所有丢失的块都被重建。
由于n是素数,因此直到遇到了所有对角线之后(因此所有丢失的数据块都被重建)才在所述重建中形成一个循环。如果n不是素数,则将不是这种情况。如果全部两个奇偶校验盘都丢失,则可以从数据简单地重建奇偶校验。如果一个数据盘和所述对角奇偶校验盘丢失,则利用行奇偶校验执行简单的RAID-4风格的数据盘重建,随后重建所述对角奇偶校验盘。如果一个数据盘和所述行奇偶校验盘丢失,则可以计算一个对角奇偶校验。由于所有对角线都具有相同的奇偶校验,因此随后可以计算每一条对角线的丢失块。
由于每一个数据块都是某一对角奇偶校验集合的成员,因此当两个数据盘丢失时(双重故障),有两个奇偶校验集合丢失了仅仅一个成员。每一个盘具有未表示在该盘上的对角奇偶校验集合。相应地,对于双重故障,有两个奇偶校验集合可以被重建。EVENODD还允许从全部两个奇偶校验盘的故障进行重建,或者从一个数据盘与一个奇偶校验盘故障的任何组合进行重建。该技术还允许从任何单个盘故障进行重建。
虽然所述EVENODD技术在奇偶校验信息的数量方面是最优的,但是对于编码和解码所需的计算量仅仅是渐近最优的。这是因为把丢失的对角奇偶校验加到每一个所述对角奇偶校验块所需的额外计算。也就是,某一条带中的p-1个块不足以保持从p条对角线生成的p个奇偶校验块。为了克服这一问题,所述EVENODD技术需要把其中一条对角线的奇偶校验异或到所有其他对角线的奇偶校验块中,从而增大了计算开销。
一般来说,对于沿着不具有直接奇偶校验块的对角线的数据块的任何小写入操作都必须更新所有对角奇偶校验块。对于大写入操作还需要额外的计算。这里使用的“大写入”操作涉及重写某一条带内的所有块,而“小写入”操作则涉及修改至少一个数据块及其相关联的奇偶校验。
在某些存储环境中,常见的是利用大量较低质量的盘驱动器,比如近线存储系统,其用于在把数据备份到磁带或其他长期归档系统中之前进行短期存储。然而,随着阵列中的盘数目增大,发生多重故障的概率也会增大。所述概率由于较廉价的存储设备的较短的平均无故障时间(MTTF)而恶化。因此,存储系统可能会经历三重故障,也就是,所述存储阵列中的三个设备同时发生故障。此外,比如串行附属SCSI(SAS)、光纤信道之类的多种存储协议导致盘柜的日益复杂的体系结构,这又导致盘柜所经历的故障的数目随之增多,从而又导致无法访问连接到故障盘柜的每一个盘。
一种用于校正三重故障的技术是所述EVENODD技术的一种扩展,其被称作STAR技术,在Cheng Wang的“Efficient and Effective Schemesfor Streaming Media Delivery(用于流式媒体递送的高效方案)”(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-1)行。被选择形成一个条带的各行的块通常在每一个盘上是毗连的,尽管这并不是本发明的要求。所述对角奇偶校验盘存储沿着所述阵列的各对角奇偶校验集合(“对角线”)计算的奇偶校验信息。条带中的各块被组织成n-2条对角线,其中每一条对角线包含来自所述数据盘和行奇偶校验盘的n-3个块,并且除了其中一个之外的所有块都把其奇偶校验存储在所述对角奇偶校验盘上的某一块中。类似地,所述反对角奇偶校验盘存储沿着所述阵列的各反对角奇偶校验集合(“反对角线”)计算的奇偶校验信息。值得注意的是,所述反对角线的斜率与所述对角线正交。结果,所述新颖的TP技术提供均匀的条带深度以及等于三个盘的奇偶校验信息量,这是从任何三个盘故障进行重建所需的最少量。
根据本发明,所述TP技术涉及在所述阵列中数据盘的每一行上计算行奇偶校验,并且此后在计算被存储在所述(反)对角奇偶校验盘上的对角奇偶校验和反对角奇偶校验时不在所述行奇偶校验与数据块之间进行区分。也就是,沿着共同跨越所有数据盘和所述行奇偶校验盘的(反)对角线计算所述(反)对角奇偶校验。此外,对应于除了一条之外的所有(反)对角线的奇偶校验被存储在所述(反)对角奇偶校验盘上。换句话说,所述(反)对角奇偶校验盘包含对应于条带的除了一条之外的每一条(反)对角线的奇偶校验块。然而,即使对应于其中一条(反)对角线的奇偶校验没有被存储或计算,本发明的技术仍然提供足够的奇偶校验信息以便从所述阵列中的任何三个同时盘故障中恢复。
响应于所述阵列内的一个或多个存储设备故障,本发明说明性地提供一个多步状态机,其被实现在存储操作系统的盘存储层(RAID系统)内以用于确定适当的重建技术。出于本发明的目的,所述各数据盘和行奇偶校验盘被统称为“RAID 4盘”。如果单个数据盘发生故障,则利用常规的行奇偶校验技术重建来自所述故障盘的丢失的块。如果所述(反)对角奇偶校验盘发生故障,则利用所述各数据盘和行奇偶校验盘重新计算适当的(反)对角奇偶校验。如果发生双重RAID 4盘故障,则可以利用所述对角奇偶校验或者反对角奇偶校验根据行-对角(R-D)奇偶校验恢复技术来重建数据。
如果发生三重盘故障,则确定哪些盘发生了故障。如果一个RAID 4盘以及所述对角和反对角盘发生故障,则在重新计算所述丢失的对角和反对角奇偶校验之前利用常规的行奇偶校验技术恢复所述故障的(丢失的)RAID 4盘。如果两个RAID 4盘和一个(反)对角盘发生故障,则在重新计算所述丢失的对角或反对角奇偶校验之前采用所述R-D奇偶校验技术来恢复所述丢失的RAID 4盘。
然而,如果三个RAID 4盘发生故障,则通过首先计算“丢弃的”对角和反对角奇偶校验(即先前未被存储的对角和反对角奇偶校验块)来调用三重奇偶校验恢复技术。所述RAID系统随后通过生成多个交叉来沿着所述各故障盘的居间(中间)盘计算总共p个4元组和。所述各4元组和随后被简化成所述中间盘上的总共p-1个逐对和。所生成的各逐对和形成一个可解线性方程组。作为说明,首先通过求解所述方程组来恢复所述中间盘上的数据。一旦所述中间盘上的第一块被解析,就可以将其解代入到其他方程中,直到该中间盘上的所有块都被恢复。一旦该中间盘被恢复,所述系统就执行所述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。所述存储适配器包括输入/输出(I/O)接口电路,其通过I/O互连设置(比如常规的高性能FC串行链路拓扑)耦合到各盘。
在阵列240上的信息存储优选地被实现为一个或多个存储“卷”,所述存储卷包括物理存储盘250的群集,从而定义盘空间的总体逻辑设置。每一个卷通常(但不一定)与其自身的文件系统相关联。一个卷/文件系统内的各盘通常被组织成一个或多个组,其中每一组被操作为独立(或廉价)盘冗余阵列(RAID)。大多数RAID实现方式通过在所述RAID组中的给定数目的物理盘上冗余地写入数据“条带”以及关于所述条带化的数据适当地存储奇偶校验信息而增强数据存储的可靠性/完整性。
本发明包括一种“三重”奇偶校验(TP)技术,其利用盘阵列中的行、对角和反对角奇偶校验来提供三重故障奇偶校验校正恢复。本发明的技术优选地通过所述存储操作系统300的盘存储层(在图3的340处示出)实现,以便提供一种用于在跨越存储系统内的多个存储设备(比如盘)的条带中构造奇偶校验的方法和系统。所述阵列的三个盘被完全专用于奇偶校验,而剩余的各盘则保存数据。所述各数据盘上的数据被“明文”存储,这意味着不对其进行进一步的编码以进行存储。在任何一个、两个或三个盘同时发生故障之后,可以在不丢失数据的情况下完全重建所述阵列的内容。本发明与先前已知的方案相比减少了所需要的奇偶校验信息的计算量,同时还减少了从三个盘故障中恢复所需的计算。另外,本发明提供了均匀的条带深度(每一个盘对于每个条带包含相同数目的块)以及等于三个盘的奇偶校验信息的数量,这是允许从任何三个盘故障进行重建所需的最少数量。
广泛地说,本发明包括n个存储设备,其中n=p+2,p是一个素数。所述各存储设备被划分成块,其中各块具有相同尺寸。在每一个设备内任意选择n-3个块并且将其分组形成跨越所有设备的条带。在所述条带内,一个设备被指定保存通过选择来自其他设备的块作为输入而形成的奇偶校验。该设备被称作对角奇偶校验设备,作为这里进一步描述的简化的构造技术的结果,该设备所保存的奇偶校验被称作对角奇偶校验。类似地,在每一个条带中,一个设备被指定保存奇偶校验以作为反对角奇偶校验设备,其所保存的奇偶校验被称作反对角奇偶校验。作为说明,所述对角和反对角奇偶校验在所述阵列上具有正交的斜率,例如,所述对角奇偶校验的斜率为1,而所述反对角奇偶校验的斜率是-1。在每一个条带内,从不是该条带内的(反)对角奇偶校验设备的每一个设备中选择一个块。该块集合被称作一行。所述行中的一个块被选择保存对应于该行的奇偶校验(行奇偶校验),剩余的各块保存数据。持续形成各行,直到所述条带中的不在所述对角和反对角奇偶校验设备内的所有块都被指定给恰好一行。总共有n-3行。
在每一个条带内,从不是该条带内的对角或反对角奇偶校验设备的除了其中一个之外的所有设备当中的每一个选择一个块,其中进一步的限制是没有两个所选块属于同一行。这被称作对角奇偶校验集合或者“对角线”。例如通过以下措施形成一条对角线:从0到n-2对所述数据、行奇偶校验和对角奇偶校验设备进行编号,从0到n-3对各行进行编号,以及随后把在设备i行j处的块指定给对角线(i+j)模(n-2)。持续形成各对角线,直到所述条带内的不在对角和反对角奇偶校验设备上的所有块都被指定给各对角线,其中进一步的限制是没有两条对角线排除来自相同设备的所有块。有n-2条对角线。在所述n-2条对角线当中选择n-3条对角线。这些对角线中的各块(不管其保存数据还是奇偶校验)被组合形成一个对角奇偶校验块。所述n-3个对角奇偶校验块被按照任意顺序存储在所述条带中的n-3个块中,其中所述n-3个块驻留在该条带内的保存对角奇偶校验的设备上。利用类似的技术把奇偶校验和各块指定到各反对角奇偶校验集合或“反对角线”。持续形成各反对角线,直到所述条带内的不在反对角奇偶校验和对角设备上的所有块都被指定给各反对角线,其中进一步的限制是没有两条反对角线排除来自相同设备的所有块。例如通过以下措施形成一条反对角线:从0到n-2对所述数据、行奇偶校验和反对角奇偶校验设备进行编号,从0到n-3对各行进行编号,以及随后把在设备i行j处的块指定给对角线(n-3-i+j)模(n-2)。
可以简单地通过以下措施实现本发明:选择包含处在每一盘中的相同位置处的各块的各行,选择毗连的各组n-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系统存储方法,这是通过允许对所述文件和目录进行基于文件的(NAS)访问并且同时还允许在基于文件的存储平台上对所述vdisk进行基于块的(SAN)访问而实现的。
在所述说明性实施例中,所述存储操作系统优选地是可以从Network Appliance,Inc.,Sunnyvale,California获得的Data操作系统,其实现了Write Anywhere File Layout()文件系统。然而可以明显设想到,可以增强任何适当的存储操作系统(其中包括适当位置写入文件系统)以便根据这里描述的本发明的原理来使用。这样,在采用术语“ONTAP”的地方应当广泛地认为其指代可以按照其他方式被适配于本发明的教导的任何存储操作系统。
这里使用的术语“存储操作系统”通常指代可以在计算机上操作的计算机可执行代码,其管理数据访问并且在存储系统的情况下可以实现数据访问语义,比如被实现为微内核的Data存储操作系统。所述存储操作系统还可以被实现为操作在通用操作系统(比如和Windows)上的应用程序,或者被实现为具有可配置的功能的通用操作系统,其被配置用于这里描述的存储应用。
此外,本领域技术人员应当理解,这里描述的本发明的教导可以应用于被具体实现为存储系统或包括存储系统的任何类型的专用(例如存储服务器件)或通用计算机(其中包括独立计算机或其一部分)。此外,本发明的教导可以被适配于多种存储系统体系结构,其中包括但不限于网络附属存储环境、存储区域网络以及直接附属于客户端或主计算机的盘组件。因此,术语“存储系统”应当被广泛的理解为除了被配置成执行存储功能并且与其他设备或系统相关联的任何子系统之外还包括上述设置。
图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(1un)命令集来管理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 MAINTAININGCONSISTENT STATES OF A FILE SYSTEM AND FOR CREATINGUSER-ACCES SIBLE 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软件是上述存储操作系统的一个实例,其被实现为微内核并且包括所述WAFL层以便实现所述WAFL文件系统语义并且管理数据访问。所述存储操作系统还可以被实现为操作在通用操作系统(比如和Windows)上的应用程序,或者被实现为具有可配置的功能的通用操作系统,其被配置用于这里描述的存储应用。
此外,本领域技术人员应当理解,这里描述的本发明的教导可以应用于被具体实现为存储系统220或包括存储系统220的任何类型的专用(例如文件服务器、文件管理器或存储系统)或通用计算机(其中包括独立计算机或其一部分)。在2002年8月8日提交的Brian Pawlowski等人的标题为“MULTI-PROTOCOL STORAGE APPLIANCE THATPROVIDES INTEGRATED SUPPORT FOR FILE AND BLOCK ACCESSPROTOCOLS(提供对于文件和块访问协议的集成支持的多协议存储器件)”的美国专利申请顺序号10/215,917中描述了可以有利地用于本发明的存储系统的一个实例。此外,本发明的教导可以被适配于多种存储系统体系结构,其中包括(但不限于)网络附属存储环境、存储区域网络以及直接附属于客户端或主计算机的盘组件。因此,术语“存储系统”应当被广泛的理解为除了被配置成执行存储功能并且与其他设备或系统相关联的任何子系统之外还包括上述设置。
C、三重奇偶校验编码
本发明包括一种三重奇偶校验(TP)技术,其减小了为存储阵列计算奇偶校验的开销,其中所述存储阵列被适配成允许从该阵列中的多达三个存储设备的同时故障高效地恢复。所述TP技术优选地被用在包括n个存储设备的阵列中,所述存储设备例如是盘,其中包括各数据盘、一个行奇偶校验盘、一个对角奇偶校验盘以及一个反对角奇偶校验盘,其中n=p+2,p是一个素数。所述各盘被划分成块,并且所述各块被组织成条带,其中每一个条带包括n-3(或p-1)行。被选择形成一个条带的各行的块通常在每一个盘上是毗连的,尽管这并不是本发明的要求。所述对角奇偶校验盘存储沿着所述阵列的各对角奇偶校验集合(“对角线”)计算的奇偶校验信息。某一条带中的各块被组织成n-2条对角线,其中每一条对角线包含来自所述数据盘和行奇偶校验盘的n-3个块,并且除了其中一个之外的所有块都把其奇偶校验存储在所述对角奇偶校验盘上的某一块中。类似地,所述反对角奇偶校验盘存储沿着所述阵列的各反对角奇偶校验集合(“反对角线”)计算的奇偶校验信息。应当注意,所述反对角线的斜率与所述对角线正交。结果,所述新颖的TP技术提供均匀的条带深度以及等于三个盘的奇偶校验信息量,这是从任意三个盘故障进行重建所需要的最少量。
根据本发明,所述TP技术涉及到在所述阵列中的每一行数据盘上计算行奇偶校验,并且此后在计算被存储在所述(反)对角奇偶校验盘上的(反)对角奇偶校验时不在所述行奇偶校验与数据块之间进行区分。也就是说,沿着共同跨越所有数据盘和所述行奇偶校验盘的(反)对角线计算所述(反)对角奇偶校验。此外,对应于除了一条之外的所有(反)对角线的奇偶校验被存储在所述(反)对角奇偶校验盘上。换句话说,所述(反)对角奇偶校验盘包含对应于某一条带的除了一条之外的每一条(反)对角线的奇偶校验块。然而即使对应于其中一条(反)对角线的奇偶校验没有被存储或计算,本发明的技术仍然提供足够多的奇偶校验信息以便从所述阵列中的任何三个同时盘故障中恢复。
图4是示出了根据本发明的一个实施例的用于实现所述TP技术的程序400的各步骤的流程图。该程序400开始于步骤405并且继续到步骤410,在步骤410中,初始地利用多个存储设备(比如盘)来配置一个阵列,其数目等于一个素数p。所述p个盘表示各数据盘和一个行奇偶校验盘。在步骤415中包括一个附加的对角奇偶校验盘,从而使得所述整个阵列包括p+1个盘。如这里所描述的那样,所述对角奇偶校验盘存储对角奇偶校验,所述对角奇偶校验是通过定义共同跨越所述阵列的所有数据盘和所述行奇偶校验盘的对角线而被计算的。因此,所述阵列此时包括p-1个数据盘、一个行奇偶校验盘和一个对角奇偶校验盘。在步骤420中把一个反对角奇偶校验盘添加到所述阵列中。与所述对角奇偶校验盘类似,所述反对角奇偶校验盘存储反对角奇偶校验,所述反对角奇偶校验是通过定义共同跨越所述阵列的所有数据盘和所述行奇偶校验盘的反对角线而被计算的。应当注意,所述(反)对角线彼此正交,例如其斜率为±1。因此,对于总共n=p+2个盘,所述阵列包括p-1个数据盘、一个行奇偶校验盘、一个对角奇偶校验盘和一个反对角奇偶校验盘。在步骤425中,所述各盘被划分成块,在步骤430中,所述各块被组织成条带,其中每一个条带包括n-3行的块(其中n=p+2)。在步骤435中,某一行的每一个数据块被异或到该行的行奇偶校验块中,其包含每一个数据盘上的相同位置处的所有数据块的异或。
随后在步骤440中把所有数据块和行奇偶校验块指定到各对角线。对于包含p个盘的阵列,所述各对角线被包含在各组p-1行的块内。恰好有p条对角线,其中每一条对角线包含一个对角奇偶校验块,该块包括恰好p-1个数据块和/或行奇偶校验块的异或。所述对角线在所述阵列的边缘处绕回,其中所述p个对角集合当中的每一个排除恰好一个盘。每一条对角线必须排除一个不同的盘。在所述p-1行的集合内,每一个盘块处在所述p条对角线的恰好其中之一上。表1示出了对应于p=5的阵列的一个实施例,其中各对角线的编号是从0到4。该表中的数字表示每一个块所属的对角奇偶校验集合。
0 1 2 3 4
1 2 3 4 0
2 3 4 0 1
3 4 0 1 2
表1
应当注意,各列的位置可以被置换,每一列中的各元素的位置也可以被置换,前提是没有某一行中的两个块属于相同的对角奇偶校验集合,从而不会改变可以从任意两个盘故障重建所述阵列的属性。在不损失一般性的情况下,可以假设按照基本上根据表1的方式把各块指定到各对角奇偶校验集合。此外,各行中的各块的成员资格可以被置换。
如所述,对应于各对角奇偶校验集合的奇偶校验被存储在所述对角奇偶校验盘上。根据本发明,所述TP奇偶校验技术在计算被存储在所述对角奇偶校验盘上的对角奇偶校验时不在所述行奇偶校验与数据块之间进行区分。换句话说,所述原始阵列的所有盘可以被等效地对待,从而可以从所述行奇偶校验集合中的所有其他盘的异或和恢复被存储在任何其中一个盘上的信息。因此,所述对角奇偶校验盘存储沿着共同跨越所述阵列的所有数据盘和所述行奇偶校验盘的各对角奇偶校验集合计算的对角奇偶校验(步骤445)。应当注意,所述各盘的角色(例如数据盘、行奇偶校验盘或对角奇偶校验盘)可以逐条带地改变,从而允许RAID-5风格的分布式奇偶校验实现方式。
然而,在所述对角奇偶校验盘上没有足够的空间来保存对应于定义在p-1行上的p条对角线的所有奇偶校验信息。特别地,仅仅有足够用于p-1个对角奇偶校验块的空间。每一个数据盘和行奇偶校验盘最多为一条对角线贡献一个块,并且没有一行包含都是相同对角线的成员的两个块(不管是数据还是奇偶校验)。虽然恰好有p条对角线,但是在某一条带内,在所述对角奇偶校验盘上仅仅有p-1个对角奇偶校验块。
为了克服这一问题,对应于其中一个对角奇偶校验集合的对角奇偶校验不被存储在所述对角奇偶校验盘上(步骤450)。也就是说,所述对角奇偶校验盘包含对应于某一条带的除了一条之外的每一条对角线的奇偶校验块。对于不存储哪一个对角奇偶校验块的选择是任意的。由于该奇偶校验不被存储,因此其也不被计算。然而,即使对应于其中一条对角线的奇偶校验不被存储,本发明的技术仍然提供足够的奇偶校验信息,以便还通过利用所述反对角奇偶校验从所述阵列中的任意三个同时盘故障中恢复。也就是说,根据本发明的一个重建方面,在某一条带的任意三个盘丢失时可以重建该条带的完整内容。
一旦计算及存储了所述对角奇偶校验之后,所述RAID系统执行步骤455-465中的操作(类似于步骤440-450中的操作),以便计算及存储所述反对角奇偶校验。因此,在步骤455中,所有数据和行对角奇偶校验块都被指定给各反对角线。如上所述,反对角线的斜率是-1,即与对角线的斜率正交。表2示出了对应于p=5的阵列的一个实施例,其中各反对角线的编号是从0到4。该表中的数字表示每一个块所属的反对角奇偶校验集合。
4 3 2 1 0
0 4 3 2 1
1 0 4 3 2
2 1 0 4 3
表2
随后在步骤460中沿着共同跨越所有数据和行奇偶校验盘的所有反对角线计算所述反对角奇偶校验,并且在步骤465中把对应于除了一条之外的所有反对角线的反对角奇偶校验存储在所述反对角奇偶校验盘上。程序400随后在步骤470中完成。
图5是根据本发明的新颖的TP技术组织的盘阵列500的方框图。假设n等于该阵列中的盘的数目,其中n=p+2。前n-3个盘(D0-3)保存数据,盘n-2(RP)保存对应于数据盘D0-3的行奇偶校验,盘n-1(DP)保存对角奇偶校验,盘n(ADP)保存反对角奇偶校验。在该说明性实施例中,该阵列中的盘的数目n等于7(p=5)。各盘被分成块,各块被组织成条带,其中每一个条带等于n-3(例如4)行。此外,每个条带有n-2(例如5)条对角线。
所述各数据块和行奇偶校验块被编号成使得每一个块属于某一对角奇偶校验集合,并且在每一行内,每一个块属于不同的对角奇偶校验集合。符号Da,b,c和Pa,b,c表示数据块(D)和奇偶校验块(P)对特定行(a)、对角(b)和反对角(c)奇偶校验计算的对应贡献。也就是说,符号Da,b,c意味着这些数据块属于被用来计算行奇偶校验a、对角奇偶校验b和反对角奇偶校验c的行或对角线,并且Pa,b,c存储对应于行奇偶校验集合a的奇偶校验并且还对对角奇偶校验集合b和反对角奇偶校验c有贡献。例如, 所述符号还包括被用于计算对应于特定对角线的对角奇偶校验的行奇偶校验块,比如 应当注意,被存储在所述对角奇偶校验盘上的每一个对角奇偶校验块包含来自所述阵列的除了一个之外的所有其他盘(其中包括所述行奇偶校验盘但是排除所述反对角盘)的贡献。例如,所述对角奇偶校验块P4具有来自D0(D0,4,9)、D2(D3,4,10)、D3(D2,4,13)和RP(P1,4,11)的贡献,但是没有来自D1的贡献。还应当注意,对应于对角线8(P8)的对角奇偶校验既不被计算也不被存储在所述对角奇偶校验盘DP上。
图6和图7分别是显示出把各块指定到各对角线和反对角线的阵列的示意图。图6示出了阵列600,其中示出了把各块指定到各对角线,其中用对应于其所属的对角线的编号来标记每一个块。此外还(用虚线)示出了在编码所述阵列时未被存储的所丢弃的对角线。类似地,图7示出了阵列700,其中示出了把各块指定到各反对角线,其中(用虚线)示出了未被存储在所述阵列上的所丢弃的反对角线。如上面参考表1和2所述,各块到各(反)对角线的分配可以被置换,前提是没有单个盘在其上包括某一(反)对角线的两个块。
D、盘故障和重建
图8是详细描述了用于确定在利用本发明的新颖的TP技术时所要执行的适当重建程序的程序800的各步骤的流程图。如上所述,出于本说明书的目的,术语“RAID 4盘”应当意指所述数据和行奇偶校验盘。应当注意,所述数据和行奇偶校验盘可以被设置在非RAID 4配置(例如RAID 5)中。所述程序800开始于步骤805并且继续到步骤810,在步骤810中,一个或多个盘发生故障。这例如可能是由于某一个盘的完全故障或者某一个盘的一个子集发生介质错误而导致的。在步骤815中,所述RAID系统340确定是一个、两个、三个还是更多盘发生了故障,从而可以利用适当的重建技术从所述故障盘恢复。如果单个(一个)盘发生故障,则所述程序分支到步骤820,在该步骤中,所述系统通过以下方式恢复该单个盘:如果该故障盘是RAID 4盘,则利用常规的行奇偶校验来计算丢失的块;或者如果该故障盘是(反)对角奇偶校验盘,则计算所述(反)对角奇偶校验。
如果两个盘发生故障,则所述程序分支到步骤900,在该步骤中执行所述R-D技术以便从所述双重盘故障中恢复。所述R-D奇偶校验恢复技术可以利用所述行和对角线或者利用所述行和反对角线来进行恢复。如果超过三个盘发生故障,则在所述程序800在步骤840中完成之前,在步骤835中得到错误状态。
然而,如果三个盘发生故障,则在步骤845中确定是否一个RAID 4盘以及所述对角奇偶校验盘和反对角奇偶校验盘发生了故障。如果是的话,则可以通过在步骤855中重新计算所述对角和反对角奇偶校验之前首先在步骤850中利用常规的行奇偶校验技术恢复所述丢失的RAID 4盘来恢复所述阵列。否则,所述程序继续到步骤860,在该步骤中,所述RAID系统确定是否两个RAID 4盘和一个(反)对角盘发生了故障。如果是的话,则所述系统在步骤900中执行所述R-D奇偶校验恢复技术以便恢复所述故障的RAID 4盘。这一恢复是利用良好的(反)对角奇偶校验执行的,也就是说,如果所述对角盘发生了故障,则所述R-D奇偶校验恢复技术使用反对角奇偶校验,然而,如果所述反对角奇偶校验盘发生了故障,则所述R-D奇偶校验恢复技术使用对角奇偶校验。一旦所述R-D奇偶校验恢复在步骤900中完成之后,所述系统随后在步骤870中重新计算所述丢失的(反)对角奇偶校验。然而,如果在步骤860中确定三个RAID 4盘发生了故障,则所述程序分支到步骤100,在该步骤中,所述RAID系统执行新颖的三RAID 4故障程序。
E、行-(反)对角恢复
由于在把各盘指定到各对角线时在所述行奇偶校验盘与各数据盘之间没有区别,因此在处理从各(反)对角奇偶校验集合恢复时可以忽略所述行奇偶校验盘与各数据盘之间的区别。作为说明,考虑丢失了任意两个数据盘或者任一个数据盘和所述行奇偶校验盘的情况。只有在构成某一奇偶校验集合的所有其他各块都可用的情况下才能恢复该奇偶校验集合的丢失的块。异或奇偶校验的一个结果是所有块在数学上都是等效的,不管它们最初保存数据还是奇偶校验都是如此。例如,考虑奇偶校验构造 其中表示异或运算符。把该等式的两侧都与d异或给出了 因此,在重建期间可以相同地对待所有数据盘和所述行奇偶校验盘。
在每一个所述盘中,恰好有一条(反)对角线没有被表示。相应地,可以在不包含该(反)对角线的成员的另一个盘上开始重建。由于两个盘发生了故障,因此在大多数情况下可以直接从(反)对角奇偶校验数据重建两个块。除非其中一条仅仅丢失一个块的(反)对角线是没有为之存储奇偶校验的(反)对角线,否则上述内容都是成立的。但是由于最多一个盘丢失对应于该奇偶校验集合的数据,因此至少可以直接重建一个块。一旦从(反)对角奇偶校验重建了一个或两个块之后,则可以从行奇偶校验重建所述一行或多行中的其他丢失的块,这是因为此时仅仅从具有利用(反)对角奇偶校验(其不包括所述(反)对角奇偶校验块)重建的各块的各行奇偶校验集合丢失一个块。一旦重建了这些块之后,可以重建与所述行块处在(多条)相同(反)对角线上的另外一个或两个块。
因此,通过一系列(反)对角以及随后的水平“移动”来继续重建。由于p是素数,因此所有系列水平以及随后的(反)对角移动在“命中”同一行两次之前命中某一条带的每一行。但是有一条在其上不可能进行(反)对角移动的(反)对角线,这是因为没有为该(反)对角线存储奇偶校验。在不损失一般性的情况下,所述各(反)对角线的编号是从0到p-1,并且为除了(反)对角线0之外的所有(反)对角线计算奇偶校验。因此,沿着(反)对角0不可能进行(反)对角移动。对于在所述阵列中间隔给定距离的各盘,总是有以(反)对角线0结束重建的固定的(反)对角线序列。如果各盘的编号是从0到p-1,并且考虑各盘之间的绕回从而使得盘p-1(行奇偶校验盘)与盘0相邻,则有(p-1)个序列待考虑。每一个序列对应于间隔该距离的任意盘对的重建。表3示出了例如对应于p=13的各序列:
间隔距离为1的各盘:1 2 3 4 5 6 7 8 9 10 11 12 0
间隔距离为2的各盘:2 4 6 8 10 12 1 3 5 7 9 11 0
间隔距离为3的各盘:3 6 9 12 2 5 8 11 1 4 7 10 0
间隔距离为4的各盘:4 8 12 3 7 11 2 6 10 1 5 9 0
间隔距离为5的各盘:5 10 2 7 12 4 9 1 6 11 3 8 0
间隔距离为6的各盘:6 12 5 11 4 10 3 9 2 8 1 7 0
间隔距离为7的各盘:7 1 8 2 9 3 10 4 11 5 12 6 0
间隔距离为8的各盘:8 3 11 6 1 9 4 12 7 2 10 5 0
间隔距离为9的各盘:9 5 1 10 6 2 11 7 3 12 8 4 0
间隔距离为10的各盘:10 7 4 1 11 8 5 2 12 9 6 3 0
间隔距离为11的各盘:11 9 7 5 3 1 12 10 8 6 4 2 0
间隔距离为12的各盘:12 11 10 9 8 7 6 5 4 3 2 1 0
表3
应当注意,间隔距离为k的盘序列总是开始于对角线k,并且通过每次把所述对角线递增k(模p)而继续,并且在p处(模p=0)结束。还应当注意,间隔距离为k的盘序列的前p-1项是间隔距离为p-k的盘序列的前p-1项的反转。
在某一序列上的起始位置取决于哪一对盘发生了故障。当所述各盘和各对角线根据前面的描述被编号时,即各盘的编号是顺序地从0到n-2,各行的编号是顺序地从0到n-3,并且盘j的块i属于每一个故障盘j中的对角奇偶校验集合(i+j+1)模(n-2),则丢失的对角线总是对角线j。因此,对于间隔为k的一对盘,可以为之开始修复的两条对角线是j和(j+k)模n-2。应当注意,这两条对角线在间隔距离为k的盘的重建序列中总是相邻的。可以关于反对角线进行类似的计算。在通过从所述两个序列中的起始点向右移动所确定的对角线序列中继续重建,其中对于间隔距离为k的盘开始于符号(j+k)模(n-2),对于间隔距离为p-k的盘开始于符号j,其中k<p/2。相应地,如果两个数据盘或者一个数据盘与所述行奇偶校验盘的任意组合发生故障,则总是有可能完全重建。如果所述对角奇偶校验盘和另一个盘发生故障,则重建另一个故障盘(不管其是数据还是来自所存储的行奇偶校验的行奇偶校验)并且随后重建所述对角奇偶校验盘是很简单的问题。
应当注意,不是所有的数据块都属于为之计算了奇偶校验的(反)对角线。实际上,仅仅对于(p-1)/p的所述数据和行奇偶校验块计算(反)对角奇偶校验。单个块更新非常昂贵,这是因为必须对于该块重新计算行奇偶校验以及对应于该块的(反)对角奇偶校验。于是在更新对应于该块的行奇偶校验时,必须还把所述改变加到对应于所述行奇偶校验块的(反)对角奇偶校验块中。然而,这在其中条带的宽度为一个“块”并且条带由仅被用于奇偶校验计算的各子块构成的系统中可以被简化。这里,计算被加到所述行奇偶校验中的奇偶校验更新。相同奇偶校验更新块的各部分被直接加到对应于所述条带的(反)对角奇偶校验块的各部分中。
盘(ADP)DP上的各(反)对角奇偶校验块在其异或计算中包括所述各行奇偶校验块。换句话说,不仅仅根据所述各数据盘的内容而且还根据所述行奇偶校验盘的内容来计算被存储在该盘(ADP)DP上的所述(反)对角奇偶校验。通过如阵列500中所示地编码所述各(反)对角奇偶校验块,即使丢失了(反)对角奇偶校验(例如在对角奇偶校验的情况下是第8号对角线),所述系统也可以从任意两个同时盘故障中恢复。这是由于在计算被存储在所述(反)对角奇偶校验盘DP/ADP上的各(反)对角奇偶校验块的过程中考虑了所述各行奇偶校验块的缘故。与此相对,常规的EVENODD技术在计算所述各对角奇偶校验集合的过程中不考虑所述各行奇偶校验块。相反,常规的EVENODD方法把所述丢失的对角奇偶校验块考虑到被存储在其对角奇偶校验盘上的每一个其他对角奇偶校验块中。
在操作中,如果丢失了一个(反)对角奇偶校验盘和任意数据盘,则通过首先从行奇偶校验(例如根据常规的RAID-4重建技术)重建该数据盘并且随后重建该(反)对角奇偶校验盘来实现恢复。类似地,如果丢失了所述两个奇偶校验盘,则通过首先从各数据盘重建所述行奇偶校验盘并且随后重建所述(反)对角奇偶校验盘来实现恢复。另一方面,如果丢失了任一对数据盘,则允许从至少一个并且可能是两个所述(反)对角奇偶校验集合直接重建一个块。此后,所述系统能够恢复剩余的丢失的各数据块。应当注意,丢失所述行奇偶校验盘和一个数据盘的情况与丢失两个数据盘的情况完全相同,并且可以按照相同的方式实现恢复。
图9是示出了在对于行-(反)对角奇偶校验的恢复(重建处理)程序900中所涉及到的步骤序列的流程图。作为说明,在所述RAID系统340确定发生了双重故障时所述程序900启动。或者,可以在三重故障程序1000已经恢复了其中一个盘之后调用所述程序900,从而离开双重故障。应当注意,可以利用对角线或反对角线来执行所述程序900。对于除了一条之外的所有(反)对角线把(反)对角奇偶校验块存储在所述DP/ADP盘上。因此,所述程序900开始于步骤905并且继续到步骤910,在该步骤中,利用(反)对角奇偶校验启动对至少一个并且通常是两个丢失块的重建。
一旦重建了一个丢失的块之后,可以通过利用行奇偶校验重建该行上的另一个丢失的块来完成对一行的重建(步骤915)。在重建该另一块时,在步骤920中确定该块是否属于为之存储了奇偶校验的(反)对角线。如果该块属于存在与之对应的奇偶校验的(反)对角线,则可以利用(反)对角奇偶校验从处在该(反)对角线上的另一个盘重建该(反)对角线上的另一个丢失块(步骤925)。也就是说,对于除了所述丢失的(反)对角线之外的所有(反)对角线,一旦重建了该(反)对角线上的一个块之后,就可以重建另一块。所述序列随后返回步骤915,在该步骤中重建该行奇偶校验集合中的另一个丢失块。然而,如果该块属于没有与之对应的奇偶校验的(反)对角线(即所述丢失的(反)对角线),则在步骤930中确定是否重建了所有块。如果没有,则所述序列返回步骤910,在该步骤中,继续所述首先基于(反)对角奇偶校验并且随后基于行奇偶校验进行重建的模式,直到到达在计算所述丢失的(反)对角奇偶校验集合的过程中所使用的最后一个数据块。一旦重建了所有块之后,所述序列在步骤935中结束。所述丢失的(反)对角奇偶校验集合总是终止所述重建链。
总而言之,可以通过从所重建的第一条(反)对角线开始到所述丢失的(反)对角奇偶校验结束依次列出可以被重建的各(反)对角线来描述所述重建序列。对于间隔为k的两个故障盘j和j+k,可以被重建的一个(反)对角线序列每次递增k,并且另一个序列每次递减k。这是由于行重建向右(或向左)移动k个盘,因此也移动到接下来第k条更高(或更低)的(反)对角线(模p)。在大多数情况下,有多个(至少两个)并行重建线程。例外的情况是D0(其是不包括所述“丢失的”(反)对角线的块的盘)以及除了所述(反)对角奇偶校验盘DP/ADP之外的任何其他盘丢失。在这种情况下,仅有单个重建块流,该流结束于所述丢失的(反)对角奇偶校验集合在另一个丢失盘上的块。
F、三重奇偶校验重建
响应于所述阵列内的一个或多个存储设备故障,本发明说明性地提供一个多步状态机,其被实现在所述存储操作系统的盘存储层(RAID系统)内以用于确定适当的重建技术。特别地,当三个RAID 4盘发生故障时,则通过首先计算所述“丢弃的”对角和反对角奇偶校验(即先前未被存储的各对角和反对角奇偶校验块)来调用三重奇偶校验恢复技术。所述RAID系统随后通过生成多个交叉沿着所述各故障盘的居间(中间)盘计算多个4元组和。所述各4元组和随后被简化成所述中间盘上的各逐对和。所生成的各逐对和形成一个可解线性方程组。作为说明,首先通过求解所述方程组来恢复所述中间盘上的数据。一旦所述中间盘上的第一块被解析之后,可以将其解代入到其他方程中,直到该中间盘上的所有块都被恢复。一旦该中间盘被恢复之后,所述系统随后就执行所述R-D奇偶校验技术来恢复剩余的两个盘。
图10是详细描述根据本发明的一个实施例的用于从三个故障RAID4盘恢复的程序1000的各步骤的流程图。所述程序1000开始于步骤1005并且继续到步骤1010,在该步骤中,所述RAID系统340计算所述丢弃的对角和反对角奇偶校验。如上所述,所述丢弃的对角和反对角奇偶校验涉及到未被存储在所述盘阵列上的那些(反)对角线。例如,在图6的阵列600中没有存储对应于第4条对角线的奇偶校验。类似地,在图7的阵列700上没有存储对应于第0条反对角线的奇偶校验。对于所丢弃的(反)对角线的计算是相对直接明了的。可以证明,可以把对应于所丢弃(反)对角线的奇偶校验计算为所述(反)对角奇偶校验盘上的各块的和。也就是说:
所述RAID系统随后把所述各故障盘标识为X、Y和Z,其值等于这三个故障盘在所述阵列中的索引,并且其中从0-p标记各盘。因此,例如如果来自阵列500的盘D0、D1和D3发生故障,则X=0、Y=1并且Z=3。所述系统随后在步骤1012中计算一个代数运算,例如是沿着行、对角和反对角三维当中的每一维计算所述三个故障盘上的丢失块的异或和。作为说明,此时计算该和有助于减少一旦在恢复了所述中间盘之后重建剩余的两个盘所需要的异或运算的数目。在步骤1010中恢复所述丢弃的/丢失的(反)对角奇偶校验确保可以沿着每一个行、对角和反对角奇偶校验集合计算所述异或和。
例如,可以如下计算丢失的各块D00、D01和D03(第1行上的块)的行奇偶校验和:
类似地,可以如下计算丢失的各块D30、D31和D33(第4行上的块)的行奇偶校验和:
可以如下计算丢失的各块D00、D11和D33(参考图7,这些块是反对角线4上的块)的反对角奇偶校验和:
可以如下计算丢失的各块D30、D21和D03(参考图6,这些块是对角线3上的块)的对角奇偶校验和:
所述RAID系统随后在所述故障的中间盘上计算总共p个4元组和(步骤1013-1018)。在步骤1013中,通过定义各故障盘的列之间的距离对各盘进行排序:
g=Y-X
h=Z-Y
因此,使用上面的X=0、Y=1并且Z=3的例子,g=1-0=1,h=3-1=2。通过这一定义,Y盘是中间盘。
所述系统随后在步骤1014中选择一行k。例如,假设k=0。所述系统随后获取对应于所选该行的各丢失盘上的各块的行奇偶校验的和(步骤1015)。在该例中,对应于行k=0的和被预先计算为 随后在步骤1016中,所述系统获取对应于处
在盘Z上的行k内的该块的对角线。作为说明,假设k=0,则该对角线上的各丢失块的和是 所述RAID系统随后在步骤1017中获取对应于处在盘X上的行k中的该块的反对角线。作为说明,这等于
我们把所述(反)对角线在其上终止的该行称作行q。所述RAID系统随后在步骤1018中获取对应于行q的各丢失盘上的各块的行奇偶校验和,作为说明,其是
在该说明性实施例中,在每一个步骤1015、1016、1017和1018中,把所获取的和与前一个和进行异或。对于行k=0的例子,总共有:
其简化成:
该等式的右侧是已知的,从而留下一个在所述中间盘上具有4个未知量的等式。更一般来说,在每一个交叉处的顶行和底行中的复制项被抵消,从而得到所述中间盘上的最多4个块的和。为了求解所述丢失的数据,通过在不同条带处开始交叉来计算p个所述和。由于所述阵列仅仅包含p-1行,因此通过利用分别对应于盘Z和X的所丢弃的对角和反对角盘构造交叉来形成第p个4元组和。例如,在图11中,利用下面4个异或和来构造第p个4元组和:
(对角)
(反对角)
(行)
其导致以下4元组和:
在该例中,第一个交叉(基于行0)得到包括[0,1,2,3]的元组,其表示被相加的所述中间盘上的各块。通过生成p个交叉,对应于行k的元组可以由[k,k+g,k+h,k+h+g]表示,其中所有加法都是模p执行的。
应当注意,所述计算各4元组和的步骤可以被执行为把任意排序的各故障盘相加。在上面的例子中所选择的顺序是X=0、Y=1、Z=2。或者也可以选择X=0、Y=2、Z=1的不同排序。在该例中,所述中间盘将是Y=2。该例中的各值是g=Y-X=2,h=Z-Y=-1。很容易看出,对于3个盘故障存在总共6种可能的排序。由于每一种排序导致对应于g和h的不同的一组值,因此把各4元组和简化成各逐对和所需的元组数目是不同的。因此,为了使得所需的XOR运算的数目最少,所选择的排序应当使得简化到逐对和所需的元组集合的数目最少。
此外,各擦除列之间的距离在该步骤中是很重要的。很明显,如果g=h,则所述中间盘上的两个附加块抵消,从而把所述4元组转换成2元组。因此,对于等距/对称故障不需要下一步骤。此外,通过把对应于行“0”的元组表示为[0,g,n,h+g],可以把等距故障推广到g=h模(p)或者[(g-h)模p=0]的状况。这种状况表明所述4元组内的第二和第三块完全相同并且因此抵消。
一旦构造了所述各4元组和之后,所述RAID系统就在步骤1020种把所述各4元组和简化成所述中间盘上的各逐对和。为了形成逐对和,所述系统选择所述等式的一个子集,从而使得公共块抵消掉,从而仅仅留下两个块。计算对应于所述子集的和得到所述中间盘上的各块的逐对和。
针对选择元组的一个子集以便将其简化成逐对和可以有多种方式。在一个实施例中,通过从对应于行k的元组开始并且在与上一个元组的偏移量g(或h)下选择各后续元组来选择所述元组子集。在每一个步骤中,公共块被抵消,并且所述处理持续到仅仅剩下两个未知块。从而得到逐对和。
例如,从对应于行0的4元组和开始,即[0,g,h,g+h],可以很容易看出,在偏移量g下选择另一个元组可以帮助在添加两个新块的同时抵消两个块,从而令未知块的总数保持不变。这是由于对应于行g的元组是[g,2g,h+g,2g+h],其帮助抵消公共块g和h+g,这是因为所述公共块存在于全部两个元组中。(所有加法和乘法在这里都被假设为模p)。因此,从对应于行0的4元组开始(将此视为第一步),并且在偏移量g下选择各相继元组,第m步得到以下各块的和:[0,(m*g)模p,h,(m*g+h)模p]。
假设p是素数并且{g,h<p}这一条件成立,则总是可以找到一个m(0<m<p)使得[(m*g+h)模p]=0成立。类似地,总是可以找到一个m使得[(m*g-h)模p]=0成立。因此,通过选择m使得[(m*g+h)模p]=0,所述结果[0,(m*g)模p,h,(m*g+h)模p]中的第1和第4块可以在第m步之后被抵消。或者,通过选择m使得[(m*g-h)模p]=0,第2块和第3块可以在第m步之后被抵消。由于仅仅剩下两个未知块,因此所述选择各元组的处理可以在这一步终止。通过从所述p-1行当中的每一行中的4元组和开始重复以上步骤,可以得到p-1个逐对和。
通过执行代数运算,其中一个所述等式得到等于已知量的单个未知量,其随后可以被代入之前的各等式中,以便求解所述中间盘上的所有未知量,从而在步骤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的幂。通过令p=17或者p=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技术可以被利用在数据通信应用中,其中传送附加的数据以便在从多达三个丢失的和/或破坏的分组恢复时降低对重传的依赖性。此外还应当注意,在替换实施例中可以利用除了异或运算之外的其他代数运算。
前面的描述是针对本发明的具体实施例。然而,可以明显看出,在保留所描述的实施例的某些或所有优点的情况下可以对其做出其他改变和修改。因此,所附权利要求书的目的是覆盖落在本发明的真实精神和范围内的所有这种改变和修改。
Claims (20)
1.一种用于实现从存储阵列中的三个或更少存储设备的同时故障中恢复的方法,该方法包括以下步骤:
为所述阵列提供预定数目的存储设备,其中包括被配置成存储数据和行奇偶校验的多个第一设备、被配置成存储对角奇偶校验的一个对角奇偶校验设备以及被配置成存储反对角奇偶校验的一个反对角奇偶校验设备,其中所述存储设备的预定数目n是p+2,并且p是素数;
把每一个存储设备分成块;
把各所述块组织成条带,所述条带在每一个存储设备中包含相同数目的块,其中每一个条带包括n-3行的块;
沿着跨越各所述第一设备的各对角奇偶校验集合定义所述对角奇偶校验,其中所述对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各对角奇偶校验集合的所有块都被存储在该条带中;
在所述对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述对角奇偶校验集合的对角奇偶校验,从而每一条对角线包含一个对角奇偶校验块;
沿着跨越各所述第一设备的各反对角奇偶校验集合定义所述反对角奇偶校验,其中所述反对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各反对角奇偶校验集合的所有块都被存储在该条带中;以及
在所述反对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述反对角奇偶校验集合的反对角奇偶校验。
2.权利要求1所述的方法,其中,条带中的各行奇偶校验块都被存储在单个设备上。
3.权利要求1所述的方法,其中,各所述第一设备包括多个数据设备,并且各所述数据设备不全都存在,缺失的各数据设备被视为包含零值数据。
4.权利要求1所述的方法,其中,各奇偶校验块的位置在不同条带内逐存储设备地移位。
5.权利要求1所述的方法,其中,各所述条带的以比特数计的尺寸是2的幂。
6.一种被配置成实现从存储阵列中的三个或更少存储设备的同时故障中恢复的系统,该系统包括:
具有预定数目的存储设备的阵列,其中包括被配置成存储数据和行奇偶校验的多个第一设备、被配置成存储对角奇偶校验的一个对角奇偶校验设备以及被配置成存储反对角奇偶校验的一个反对角奇偶校验设备,其中所述存储设备的预定数目n是p+2,并且p是素数;
存储操作系统,其包括设备存储层,该设备存储层被配置成实现三重奇偶校验方法,该方法执行以下操作:(i)把每一个存储设备分成块;(ii)把各所述块组织成条带,所述条带在每一个存储设备中包含相同数目的块,其中每一个条带包括n-3行的块;(iii)沿着跨越各所述第一设备的各对角奇偶校验集合定义所述对角奇偶校验,其中所述对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各对角奇偶校验集合的所有块都被存储在该条带中;(iv)沿着跨越各所述第一设备的各对角奇偶校验集合计算所述对角奇偶校验;(v)在所述对角奇偶校验设备上存储对应于除了一个之外的所有所述对角奇偶校验集合的对角奇偶校验从而每一条对角线包含一个对角奇偶校验块;(vi)沿着跨越各所述第一设备的各反对角奇偶校验集合定义所述反对角奇偶校验,其中所述反对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各反对角奇偶校验集合的所有块都被存储在该条带中;(vii)沿着跨越各所述第一设备的各反对角奇偶校验集合计算所述反对角奇偶校验;以及(viii)在所述反对角奇偶校验设备上存储对应于除了一个之外的所有所述反对角奇偶校验集合的反对角奇偶校验;以及
处理元件,其被配置成执行所述存储操作系统,从而根据所述三重奇偶校验方法来调用对所述阵列的存储访问操作以及来自所述阵列的存储访问操作。
7.权利要求6所述的系统,其中,条带中的各行奇偶校验块都被存储在单个设备上。
8.权利要求6所述的系统,其中,所述设备存储层是RAID系统,并且所述存储设备是盘。
9.权利要求8所述的系统,其中,所述RAID系统进一步把每一个盘分成块,并且把各所述块组织成条带。
10.权利要求9所述的系统,其中,每一个条带包括n-3行的块,其中n=p+2,每一行包含来自每一个盘的一个块。
11.权利要求8所述的系统,其中,所述RAID系统是用逻辑电路实现的。
12.权利要求6所述的系统,其中,所述存储设备是以下各项的其中之一:录像带、磁带、光学介质、DVD、磁泡存储器、磁盘、电子随机存取存储器以及微机电存储设备。
13.权利要求6所述的系统,其中,各所述第一设备包括多个数据设备,并且各所述数据设备不全都存在,缺失的各数据设备被视为包含零值数据。
14.一种用于实现从存储阵列中的三个或更少存储设备的同时故障中恢复的装置,该装置包括:
用于为所述阵列提供预定数目的存储设备的部件,其中所述预定数目的存储设备包括被配置成存储数据和行奇偶校验的多个第一设备、被配置成存储对角奇偶校验的一个对角奇偶校验设备以及被配置成存储反对角奇偶校验的一个反对角奇偶校验设备,其中所述存储设备的预定数目n是p+2,并且p是素数;
用于把每一个存储设备分成块的部件;
用于把各所述块组织成条带的部件,所述条带在每一个存储设备中包含相同数目的块,其中每一个条带包括n-3行的块;
用于沿着跨越各所述第一设备的各对角奇偶校验集合定义所述对角奇偶校验的部件,其中所述对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各对角奇偶校验集合的所有块都被存储在该条带中;
用于在所述对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述对角奇偶校验集合的对角奇偶校验从而每一条对角线包含一个对角奇偶校验块的部件;
用于沿着跨越各所述第一设备的各反对角奇偶校验集合定义所述反对角奇偶校验的部件,其中所述反对角奇偶校验集合在n-3行的一组内绕回,从而使得属于条带的各反对角奇偶校验集合的所有块都被存储在该条带中;以及
用于在所述反对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述反对角奇偶校验集合的反对角奇偶校验的部件。
15.权利要求14所述的装置,其中,条带中的各行奇偶校验块都被存储在单个设备上。
16.权利要求14所述的装置,其中,所述用于在所述对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述对角奇偶校验集合的对角奇偶校验的部件包括用于针对条带的除了一个之外的每一个所述对角奇偶校验集合把各对角奇偶校验块存储在对角奇偶校验盘上的部件。
17.权利要求14所述的装置,其中,所述用于在所述反对角奇偶校验设备上计算并存储对应于除了一个之外的所有所述反对角奇偶校验集合的反对角奇偶校验的部件包括用于针对条带的除了一个之外的每一个所述反对角奇偶校验集合把各反对角奇偶校验块存储在反对角奇偶校验盘上的部件。
18.权利要求14所述的装置,其中,各所述第一设备包括多个数据设备,并且各所述数据设备不全都存在,缺失的各数据设备被视为包含零值数据。
19.权利要求14所述的装置,其中,各所述条带的以比特数计的尺寸是2的幂。
20.权利要求14所述的装置,其中,把每一个条带中的块数目乘以第一块尺寸等于由文件系统访问所述存储阵列所用的第二块尺寸。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/304,369 | 2005-12-15 | ||
US11/304,369 US7640484B2 (en) | 2001-12-28 | 2005-12-15 | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
PCT/US2006/047647 WO2007078803A2 (en) | 2005-12-15 | 2006-12-14 | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101512492A CN101512492A (zh) | 2009-08-19 |
CN101512492B true CN101512492B (zh) | 2012-02-22 |
Family
ID=38110480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800529131A Active CN101512492B (zh) | 2005-12-15 | 2006-12-14 | 用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术 |
Country Status (5)
Country | Link |
---|---|
US (5) | US7640484B2 (zh) |
EP (1) | EP1960883A2 (zh) |
JP (1) | JP5102776B2 (zh) |
CN (1) | CN101512492B (zh) |
WO (1) | WO2007078803A2 (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640484B2 (en) | 2001-12-28 | 2009-12-29 | Netapp, Inc. | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
US8402346B2 (en) * | 2001-12-28 | 2013-03-19 | Netapp, Inc. | N-way parity technique for enabling recovery from up to N storage device failures |
US7613984B2 (en) | 2001-12-28 | 2009-11-03 | Netapp, Inc. | System and method for symmetric triple parity for failing storage devices |
JP2006227856A (ja) * | 2005-02-17 | 2006-08-31 | Hitachi Ltd | アクセス制御装置及びそれに搭載されるインターフェース |
US9384818B2 (en) | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
KR101331569B1 (ko) * | 2005-04-21 | 2013-11-21 | 바이올린 메모리 인코포레이티드 | 상호접속 시스템 |
US8200887B2 (en) * | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US9632870B2 (en) | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US11010076B2 (en) | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US7971126B2 (en) * | 2007-06-27 | 2011-06-28 | International Business Machines Corporation | Apparatus, system, and method for hard disk drive redundancy |
US8020074B2 (en) * | 2007-08-24 | 2011-09-13 | Datadirect Networks, Inc. | Method for auto-correction of errors in a RAID memory system |
US8181089B1 (en) | 2007-08-24 | 2012-05-15 | Datadirect Networks, Inc. | Method for auto-correction of errors in a solid-state memory system |
CN101868785B (zh) * | 2007-09-21 | 2014-09-24 | 惠普开发有限公司 | 生成数据存储系统的并行恢复策略 |
US7757113B2 (en) * | 2008-02-19 | 2010-07-13 | Lsi Corporation | Enhanced RAID level 3 |
US20100325351A1 (en) * | 2009-06-12 | 2010-12-23 | Bennett Jon C R | Memory system having persistent garbage collection |
CN102667738B (zh) | 2009-10-09 | 2018-07-17 | 提琴存储器公司 | 具有多个raid组分条的内存系统及其方法 |
US8103904B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8645799B2 (en) | 2010-12-31 | 2014-02-04 | Microsoft Corporation | Storage codes for data recovery |
GB2492981B (en) * | 2011-07-18 | 2014-03-26 | Qando Service Inc | Data reconstruction |
US8645751B2 (en) | 2011-11-02 | 2014-02-04 | Empire Technology Development Llc | Triple parity encoding to facilitate data recovery |
US9026729B1 (en) * | 2011-11-15 | 2015-05-05 | Emc Corporation | Data recovery after triple disk failure |
WO2014003599A1 (en) | 2012-06-29 | 2014-01-03 | Ems Corparation | Redundant disc encoding via erasure decoding |
CN103577274B (zh) | 2012-07-31 | 2016-07-06 | 国际商业机器公司 | 管理存储器阵列的方法和装置 |
WO2014102565A1 (en) * | 2012-12-29 | 2014-07-03 | Emc Corporation | Polar codes for efficient encoding and decoding in redundant disk arrays |
DE102013209427A1 (de) * | 2013-05-22 | 2014-11-27 | Robert Bosch Gmbh | Verfahren und Vorrichtungen zum Bereitstellen von Informationen zu Wartungs- und Servicezwecken einer Batterieeinheit |
US9378084B2 (en) * | 2013-06-25 | 2016-06-28 | Microsoft Technology Licensing, Llc | Erasure coding across multiple zones |
US9244761B2 (en) * | 2013-06-25 | 2016-01-26 | Microsoft Technology Licensing, Llc | Erasure coding across multiple zones and sub-zones |
US9529675B2 (en) | 2013-07-26 | 2016-12-27 | Huawei Technologies Co., Ltd. | Data recovery method, data recovery device and distributed storage system |
CN103412799B (zh) * | 2013-07-26 | 2016-08-24 | 华为技术有限公司 | 数据恢复方法、数据恢复设备和分布式存储系统 |
US9672106B2 (en) * | 2014-12-30 | 2017-06-06 | Nutanix, Inc. | Architecture for implementing erasure coding |
US10348335B2 (en) * | 2015-05-15 | 2019-07-09 | SK Hynix Inc. | Miscorrection avoidance for turbo product codes |
CN104932836B (zh) * | 2015-05-31 | 2018-06-26 | 上海交通大学 | 一种提高单写性能的三盘容错编码和解码方法 |
US10198315B2 (en) | 2016-02-29 | 2019-02-05 | Sandisk Technologies Llc | Non-volatile memory with corruption recovery |
US9857990B1 (en) | 2016-03-24 | 2018-01-02 | EMC IP Holding Company LLC | Fast startup for modular storage systems |
US10101934B1 (en) | 2016-03-24 | 2018-10-16 | Emc Corporation | Memory allocation balancing for storage systems |
US10705907B1 (en) | 2016-03-24 | 2020-07-07 | EMC IP Holding Company LLC | Data protection in a heterogeneous random access storage array |
US10324782B1 (en) | 2016-03-24 | 2019-06-18 | Emc Corporation | Hiccup management in a storage array |
US9940196B2 (en) | 2016-04-21 | 2018-04-10 | Netapp, Inc. | Methods and systems for offloading RAID parity reconstruction |
US10567009B2 (en) | 2016-12-06 | 2020-02-18 | Nutanix, Inc. | Dynamic erasure coding |
US10567102B2 (en) | 2017-02-06 | 2020-02-18 | Valens Semiconductor Ltd. | Efficient double parity forward error correction on a communication network |
CN108170555B (zh) * | 2017-12-21 | 2021-07-20 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
US11016850B2 (en) * | 2018-03-20 | 2021-05-25 | Veritas Technologies Llc | Systems and methods for detecting bit rot in distributed storage devices having failure domains |
CN108733504B (zh) * | 2018-05-04 | 2021-08-13 | 西安电子科技大学 | 一种四维奇偶校验码与汉明码相结合的存储器校验编码及检错纠错方法 |
US11748009B2 (en) | 2018-06-01 | 2023-09-05 | Microsoft Technology Licensing, Llc | Erasure coding with overlapped local reconstruction codes |
CN109213626A (zh) * | 2018-08-20 | 2019-01-15 | 上海集成电路研发中心有限公司 | 一种状态机及其状态机的控制方法 |
US10470264B1 (en) * | 2018-08-24 | 2019-11-05 | Monolithic Power Systems, Inc. | Smart communication interface for LED matrix control |
CN111124738B (zh) * | 2018-10-31 | 2023-08-18 | 伊姆西Ip控股有限责任公司 | 用于独立冗余磁盘阵列的数据管理方法、设备和计算机程序产品 |
US20200264953A1 (en) * | 2019-02-20 | 2020-08-20 | Western Digital Technologies, Inc. | Error correction in data storage devices |
CN116679889B (zh) * | 2023-07-31 | 2023-11-03 | 苏州浪潮智能科技有限公司 | Raid设备配置信息的确定方法及装置、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1182913A (zh) * | 1990-06-21 | 1998-05-27 | 国际商业机器公司 | 恢复受奇偶校验保护数据的方法和装置 |
EP1324200A2 (en) * | 2001-12-28 | 2003-07-02 | Network Appliance, Inc. | Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array |
Family Cites Families (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3876978A (en) * | 1973-06-04 | 1975-04-08 | Ibm | Archival data protection |
US4092732A (en) * | 1977-05-31 | 1978-05-30 | International Business Machines Corporation | System for recovering data stored in failed memory unit |
US4205324A (en) * | 1977-12-23 | 1980-05-27 | International Business Machines Corporation | Methods and means for simultaneously correcting several channels in error in a parallel multi channel data system using continuously modifiable syndromes and selective generation of internal channel pointers |
US4201976A (en) * | 1977-12-23 | 1980-05-06 | International Business Machines Corporation | Plural channel error correcting methods and means using adaptive reallocation of redundant channels among groups of channels |
JPS5637883A (en) * | 1979-09-04 | 1981-04-11 | Fanuc Ltd | Information rewrite system |
US4467421A (en) * | 1979-10-18 | 1984-08-21 | Storage Technology Corporation | Virtual storage system and method |
DE3040004A1 (de) * | 1979-10-24 | 1981-05-07 | Matsushita Electric Industrial Co., Ltd., Kadoma, Osaka | Verfahren und vorrichtung zum codieren von pruefworten geringer redundanz aus ursprungsdaten |
US4435807A (en) | 1980-06-26 | 1984-03-06 | Scott Edward W | Orchard error correction system |
US4547882A (en) * | 1983-03-01 | 1985-10-15 | The Board Of Trustees Of The Leland Stanford Jr. University | Error detecting and correcting memories |
US4825403A (en) * | 1983-05-16 | 1989-04-25 | Data General Corporation | Apparatus guaranteeing that a controller in a disk drive system receives at least some data from an invalid track sector |
JPS60142418A (ja) * | 1983-12-28 | 1985-07-27 | Hitachi Ltd | 入出力エラ−回復方式 |
FR2561428B1 (fr) * | 1984-03-16 | 1986-09-12 | Bull Sa | Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques |
US4667326A (en) * | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives |
WO1986006077A1 (en) | 1985-04-08 | 1986-10-23 | Amgen | A method and a hybrid promoter for controlling exogenous gene transcription |
US5202979A (en) * | 1985-05-08 | 1993-04-13 | Thinking Machines Corporation | Storage system using multiple independently mechanically-driven storage units |
US4722085A (en) * | 1986-02-03 | 1988-01-26 | Unisys Corp. | High capacity disk storage system having unusually high fault tolerance level and bandpass |
JPH0675329B2 (ja) * | 1986-02-18 | 1994-09-21 | ソニー株式会社 | ディスクプレーヤ |
US4761785B1 (en) * | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
US4775978A (en) * | 1987-01-12 | 1988-10-04 | Magnetic Peripherals Inc. | Data error correction system |
USRE34100E (en) * | 1987-01-12 | 1992-10-13 | Seagate Technology, Inc. | Data error correction system |
US4796260A (en) * | 1987-03-30 | 1989-01-03 | Scs Telecom, Inc. | Schilling-Manela forward error correction and detection code method and apparatus |
US5257367A (en) * | 1987-06-02 | 1993-10-26 | Cab-Tek, Inc. | Data storage system with asynchronous host operating system communication link |
US4849976A (en) * | 1987-08-03 | 1989-07-18 | Scs Telecom, Inc. | PASM and TASM forward error correction and detection code method and apparatus |
US4849974A (en) * | 1987-08-03 | 1989-07-18 | Scs Telecom, Inc. | PASM and TASM forward error correction and detection code method and apparatus |
US4837680A (en) * | 1987-08-28 | 1989-06-06 | International Business Machines Corporation | Controlling asynchronously operating peripherals |
US4870643A (en) * | 1987-11-06 | 1989-09-26 | Micropolis Corporation | Parallel drive array storage system |
US4847842A (en) * | 1987-11-19 | 1989-07-11 | Scs Telecom, Inc. | SM codec method and apparatus |
US4899342A (en) * | 1988-02-01 | 1990-02-06 | Thinking Machines Corporation | Method and apparatus for operating multi-unit array of memories |
US4989206A (en) * | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US4989205A (en) * | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US5077736A (en) * | 1988-06-28 | 1991-12-31 | Storage Technology Corporation | Disk drive memory |
US5128810A (en) * | 1988-08-02 | 1992-07-07 | Cray Research, Inc. | Single disk emulation interface for an array of synchronous spindle disk drives |
US5218689A (en) * | 1988-08-16 | 1993-06-08 | Cray Research, Inc. | Single disk emulation interface for an array of asynchronously operating disk drives |
US5148432A (en) * | 1988-11-14 | 1992-09-15 | Array Technology Corporation | Arrayed disk drive system and method |
US5163131A (en) * | 1989-09-08 | 1992-11-10 | Auspex Systems, Inc. | Parallel i/o network file server architecture |
US5101492A (en) * | 1989-11-03 | 1992-03-31 | Compaq Computer Corporation | Data redundancy and recovery protection |
US5233618A (en) * | 1990-03-02 | 1993-08-03 | Micro Technology, Inc. | Data correcting applicable to redundant arrays of independent disks |
US5088081A (en) * | 1990-03-28 | 1992-02-11 | Prime Computer, Inc. | Method and apparatus for improved disk access |
US5210860A (en) * | 1990-07-20 | 1993-05-11 | Compaq Computer Corporation | Intelligent disk array controller |
US5166936A (en) * | 1990-07-20 | 1992-11-24 | Compaq Computer Corporation | Automatic hard disk bad sector remapping |
US5375128A (en) * | 1990-10-18 | 1994-12-20 | Ibm Corporation (International Business Machines Corporation) | Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders |
US5208813A (en) * | 1990-10-23 | 1993-05-04 | Array Technology Corporation | On-line reconstruction of a failed redundant array system |
US5235601A (en) * | 1990-12-21 | 1993-08-10 | Array Technology Corporation | On-line restoration of redundancy information in a redundant array system |
US5274799A (en) * | 1991-01-04 | 1993-12-28 | Array Technology Corporation | Storage device array architecture with copyback cache |
US5579475A (en) * | 1991-02-11 | 1996-11-26 | International Business Machines Corporation | Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity |
US5271012A (en) * | 1991-02-11 | 1993-12-14 | International Business Machines Corporation | Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs |
US5179704A (en) * | 1991-03-13 | 1993-01-12 | Ncr Corporation | Method and apparatus for generating disk array interrupt signals |
EP0519669A3 (en) * | 1991-06-21 | 1994-07-06 | Ibm | Encoding and rebuilding data for a dasd array |
US5237658A (en) * | 1991-10-01 | 1993-08-17 | Tandem Computers Incorporated | Linear and orthogonal expansion of array storage in multiprocessor computing systems |
US5305326A (en) * | 1992-03-06 | 1994-04-19 | Data General Corporation | High availability disk arrays |
US5410667A (en) * | 1992-04-17 | 1995-04-25 | Storage Technology Corporation | Data record copy system for a disk drive array data storage subsystem |
US5513192A (en) * | 1992-08-28 | 1996-04-30 | Sun Microsystems, Inc. | Fault tolerant disk drive system with error detection and correction |
US5574851A (en) * | 1993-04-19 | 1996-11-12 | At&T Global Information Solutions Company | Method for performing on-line reconfiguration of a disk array concurrent with execution of disk I/O operations |
JP3862274B2 (ja) * | 1993-06-03 | 2006-12-27 | ネットワーク・アプライアンス・インコーポレイテッド | Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法 |
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
EP1003103B1 (en) * | 1993-06-03 | 2008-10-01 | Network Appliance, Inc. | Write anywhere file-system layout method and apparatus |
US6138126A (en) | 1995-05-31 | 2000-10-24 | Network Appliance, Inc. | Method for allocating files in a file system integrated with a raid disk sub-system |
WO1994029795A1 (en) * | 1993-06-04 | 1994-12-22 | Network Appliance Corporation | A method for providing parity in a raid sub-system using a non-volatile memory |
US5537567A (en) * | 1994-03-14 | 1996-07-16 | International Business Machines Corporation | Parity block configuration in an array of storage devices |
US5623595A (en) * | 1994-09-26 | 1997-04-22 | Oracle Corporation | Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system |
US6079042A (en) | 1995-04-27 | 2000-06-20 | The Trustees Of The Stevens Institute Of Technology | High integrity transport for time critical multimedia networking applications |
US5657468A (en) * | 1995-08-17 | 1997-08-12 | Ambex Technologies, Inc. | Method and apparatus for improving performance in a reduntant array of independent disks |
US5812753A (en) * | 1995-10-13 | 1998-09-22 | Eccs, Inc. | Method for initializing or reconstructing data consistency within an array of storage elements |
US5774643A (en) * | 1995-10-13 | 1998-06-30 | Digital Equipment Corporation | Enhanced raid write hole protection and recovery |
US5862158A (en) * | 1995-11-08 | 1999-01-19 | International Business Machines Corporation | Efficient method for providing fault tolerance against double device failures in multiple device systems |
US5884098A (en) * | 1996-04-18 | 1999-03-16 | Emc Corporation | RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems |
US5805788A (en) * | 1996-05-20 | 1998-09-08 | Cray Research, Inc. | Raid-5 parity generation and data reconstruction |
US6041423A (en) | 1996-11-08 | 2000-03-21 | Oracle Corporation | Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment |
US5950225A (en) * | 1997-02-28 | 1999-09-07 | Network Appliance, Inc. | Fly-by XOR for generating parity for data gleaned from a bus |
KR100267366B1 (en) * | 1997-07-15 | 2000-10-16 | Samsung Electronics Co Ltd | Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor |
US6092215A (en) * | 1997-09-29 | 2000-07-18 | International Business Machines Corporation | System and method for reconstructing data in a storage array system |
JPH11134235A (ja) | 1997-10-31 | 1999-05-21 | Hitachi Ltd | 外部記憶装置故障時の回復支援方法 |
JP3616487B2 (ja) * | 1997-11-21 | 2005-02-02 | アルプス電気株式会社 | ディスクアレイ装置 |
US6138125A (en) * | 1998-03-31 | 2000-10-24 | Lsi Logic Corporation | Block coding method and system for failure recovery in disk arrays |
US6138201A (en) * | 1998-04-15 | 2000-10-24 | Sony Corporation | Redundant array of inexpensive tape drives using data compression and data allocation ratios |
US6247157B1 (en) * | 1998-05-13 | 2001-06-12 | Intel Corporation | Method of encoding data signals for storage |
US6223323B1 (en) * | 1998-07-17 | 2001-04-24 | Ncr Corporation | Method for storing parity information in a disk array storage system |
US6198413B1 (en) | 1999-07-01 | 2001-03-06 | International Business Machines Corporation | Partitioned DC balanced (0,6) 16B/18B transmission code with error correction |
US6557123B1 (en) * | 1999-08-02 | 2003-04-29 | Inostor Corporation | Data redundancy methods and apparatus |
US6742137B1 (en) | 1999-08-17 | 2004-05-25 | Adaptec, Inc. | Object oriented fault tolerance |
US6532548B1 (en) * | 1999-09-21 | 2003-03-11 | Storage Technology Corporation | System and method for handling temporary errors on a redundant array of independent tapes (RAIT) |
US6826580B2 (en) | 2000-01-20 | 2004-11-30 | Emc Corporation | Distributed storage resource management in a storage area network |
US6581185B1 (en) * | 2000-01-24 | 2003-06-17 | Storage Technology Corporation | Apparatus and method for reconstructing data using cross-parity stripes on storage media |
US7072256B2 (en) | 2000-03-08 | 2006-07-04 | Matsushita Electric Industrial Co., Ltd. | Information recording medium, information recording method and information reproduction method |
US6779095B2 (en) * | 2000-06-19 | 2004-08-17 | Storage Technology Corporation | Apparatus and method for instant copy of data using pointers to new and original data in a data location |
US7072916B1 (en) * | 2000-08-18 | 2006-07-04 | Network Appliance, Inc. | Instant snapshot |
US6671772B1 (en) * | 2000-09-20 | 2003-12-30 | Robert E. Cousins | Hierarchical file system structure for enhancing disk transfer efficiency |
US6745284B1 (en) | 2000-10-02 | 2004-06-01 | Sun Microsystems, Inc. | Data storage subsystem including a storage disk array employing dynamic data striping |
US6275410B1 (en) | 2000-11-09 | 2001-08-14 | Hewlett-Packard Co. | Data recording systems and methods for facilitating data recovery with emitter failure |
US20020124137A1 (en) * | 2001-01-29 | 2002-09-05 | Ulrich Thomas R. | Enhancing disk array performance via variable parity based load balancing |
US6571326B2 (en) * | 2001-03-08 | 2003-05-27 | Intel Corporation | Space allocation for data in a nonvolatile memory |
US6851082B1 (en) * | 2001-11-13 | 2005-02-01 | Network Appliance, Inc. | Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array |
US7613984B2 (en) | 2001-12-28 | 2009-11-03 | Netapp, Inc. | System and method for symmetric triple parity for failing storage devices |
US7640484B2 (en) | 2001-12-28 | 2009-12-29 | Netapp, Inc. | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
US7073115B2 (en) * | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
EP2799555B1 (en) | 2002-03-13 | 2017-02-22 | Genomic Health, Inc. | Gene expression profiling in biopsied tumor tissues |
US7873700B2 (en) | 2002-08-09 | 2011-01-18 | Netapp, Inc. | Multi-protocol storage appliance that provides integrated support for file and block access protocols |
US6826661B2 (en) | 2002-08-30 | 2004-11-30 | Veritas Operating Corporation | Methods and systems for storage architectures |
US7085953B1 (en) * | 2002-11-01 | 2006-08-01 | International Business Machines Corporation | Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array |
US7328305B2 (en) * | 2003-11-03 | 2008-02-05 | Network Appliance, Inc. | Dynamic parity distribution technique |
JP2005166016A (ja) * | 2003-11-11 | 2005-06-23 | Nec Corp | ディスクアレイ装置 |
US7945729B2 (en) | 2004-11-24 | 2011-05-17 | International Business Machines Corporation | System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts |
-
2005
- 2005-12-15 US US11/304,369 patent/US7640484B2/en active Active
-
2006
- 2006-12-14 CN CN2006800529131A patent/CN101512492B/zh active Active
- 2006-12-14 JP JP2008545792A patent/JP5102776B2/ja not_active Expired - Fee Related
- 2006-12-14 WO PCT/US2006/047647 patent/WO2007078803A2/en active Application Filing
- 2006-12-14 EP EP06845382A patent/EP1960883A2/en not_active Withdrawn
-
2008
- 2008-08-21 US US12/195,968 patent/US8015472B1/en not_active Expired - Fee Related
-
2009
- 2009-11-06 US US12/613,743 patent/US8010874B2/en not_active Expired - Fee Related
-
2011
- 2011-08-31 US US13/223,211 patent/US8181090B1/en not_active Expired - Lifetime
-
2012
- 2012-05-15 US US13/472,133 patent/US8516342B2/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1182913A (zh) * | 1990-06-21 | 1998-05-27 | 国际商业机器公司 | 恢复受奇偶校验保护数据的方法和装置 |
EP1324200A2 (en) * | 2001-12-28 | 2003-07-02 | Network Appliance, Inc. | Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array |
Non-Patent Citations (1)
Title |
---|
Cheng Huang."STAR:An Efficient Scheme for Triple Erasure Recovery".《EFFICIENT AND EFFECTIVE SCHEMES FOR STREAMING MEDIA DELIVERY》.2005,第5-27页. * |
Also Published As
Publication number | Publication date |
---|---|
JP2009524124A (ja) | 2009-06-25 |
US7640484B2 (en) | 2009-12-29 |
EP1960883A2 (en) | 2008-08-27 |
WO2007078803A3 (en) | 2009-05-07 |
US20100050015A1 (en) | 2010-02-25 |
US8181090B1 (en) | 2012-05-15 |
US8516342B2 (en) | 2013-08-20 |
WO2007078803A2 (en) | 2007-07-12 |
US8010874B2 (en) | 2011-08-30 |
US8015472B1 (en) | 2011-09-06 |
JP5102776B2 (ja) | 2012-12-19 |
US20120324284A1 (en) | 2012-12-20 |
CN101512492A (zh) | 2009-08-19 |
US20070089045A1 (en) | 2007-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101512492B (zh) | 用于实现从存储阵列中的三重故障中高效恢复的三重奇偶校验技术 | |
US7613984B2 (en) | System and method for symmetric triple parity for failing storage devices | |
CN102667727B (zh) | 用于实现从多达n个存储设备失效恢复的n路奇偶校验技术 | |
EP2096542B1 (en) | System and method of redundantly storing and retrieving data with cooperating storage devices | |
Xin et al. | Reliability mechanisms for very large storage systems | |
EP3014450B1 (en) | Erasure coding across multiple zones | |
US6993701B2 (en) | Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array | |
US8468304B1 (en) | Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array | |
US20090055682A1 (en) | Data storage systems and methods having block group error correction for repairing unrecoverable read errors | |
US20120017140A1 (en) | Non-mds erasure codes for storage systems | |
EP1685489A2 (en) | Method and apparatus for enabling high-reliability storage of distributed data on a plurality of independent storage devices | |
US6871317B1 (en) | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array | |
EP1695271A2 (en) | Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array | |
WO2014019549A1 (zh) | 编解码处理方法及装置 | |
US7398460B1 (en) | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array | |
Janakiram et al. | ExR: A scheme for exact regeneration of a failed node in a distributed storage system | |
Good et al. | A robust storage system architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: NETAPP incorporated company Address before: American California Patentee before: Network Appliance Inc. |