CN1300433A - 用于存储数据信号的编码方式 - Google Patents

用于存储数据信号的编码方式 Download PDF

Info

Publication number
CN1300433A
CN1300433A CN99806126A CN99806126A CN1300433A CN 1300433 A CN1300433 A CN 1300433A CN 99806126 A CN99806126 A CN 99806126A CN 99806126 A CN99806126 A CN 99806126A CN 1300433 A CN1300433 A CN 1300433A
Authority
CN
China
Prior art keywords
signal
storage unit
parity
piece
data
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.)
Granted
Application number
CN99806126A
Other languages
English (en)
Other versions
CN1201336C (zh
Inventor
S·J·W·埃迪里索里雅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1300433A publication Critical patent/CN1300433A/zh
Application granted granted Critical
Publication of CN1201336C publication Critical patent/CN1201336C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks

Abstract

按照本发明中的一个实施例,一种用于编码存储的数据信号以对存储介质中的存储单元进行容错的方法包含以下内容:有N+2个存储单元(110,120,130,140,150,160),N是一个正整数,又将每个存储单元分成N个存储块(D0,0…D3,0;D0,1…D3,1;D0,2…D3,2;D0,3…D3,3;D0,4…D3,4;D0,5…D3,5),则由(N)(N)块数据信号会产生出2N个奇偶校验信号块。将2N个奇偶校验信号块分配存储在N+2个存储单元中,以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元的其中两个单元中。

Description

用于存储数据信号的编码方式
背景
技术领域
本发明涉及数据信号的编码,更具体地说涉及用于存储的数据信号的编码。
背景技术
数据信号在诸如硬盘、磁盘或磁盘阵列等辅助存储介质中的存储与个人计算机(PC)或其他计算机的运算是相关的,这一点是普遍公知的。可以用冗余磁盘阵列来建立高可用性、高稳定性的磁盘子系统。数据信号一般是由一些磁盘经异或运算而得且将其保存在冗余磁盘上,这样当某个磁盘受损时,就可利用在现存磁盘和写到备份磁盘上的数据将受损磁盘上的数据信号重建出来。但是,如果在重建完成之前又有一个磁盘受损,就可能造成数据信号的丢失。令人感到遗憾的是:在一个以上的磁盘受损的情况下,利用传统的磁盘阵列就无法防止数据丢失了。因此,人们就希望获得一种即使在多个磁盘损坏的情况下仍不会丢失数据的技术,同时,这项技术应具有优良的性能。
概述
简单地说,按照本发明中的一个实施例,用于编码存储的数据信号以对存储介质中的存储单元进行容错的方法包含以下内容:有N+2个存储单元,N是一个正整数,又将每个存储单元分成N个存储块,则由(N)(N)块数据信号会产生出2N个奇偶校验信号块。将N(N+2)个奇偶校验信号块和数据信号块分配在存储介质的N+2个存储单元中,这样就可使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元中。
简单地说,按照本发明中的另一个实施例,一存储介质包含:N+2个存储二进制数字信号的存储单元,N是一个正整数,又将每个存储单元分成N个存储块,在N+2个存储单元上存储了2N个奇偶校验信号块和(N)(N)个数据信号块,其中2N个奇偶校验信号块是以(N)(N)个数据信号为基础的。将2N个奇偶校验信号块分配存储在N+2个存储单元中,这样就可使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元中。
附图的简要说明
尽管在说明书的结论部分,指出了本发明的发明主题和清晰的权利要求,仍旧相信当结合下述附图阅读时参照其详细说明将帮助大家更好的理解本发明所述主题内容的操作方法和结构,目的,特征,和优点。
图1说明了按照本发明中所述的一种用于存储的数据信号的编码方法的应用;
图2说明了现有技术中用于存储的数据信号的编码方法的应用;
图3是一个用于说明按照本发明的一种对已经编码的用于存储的数据信号进行重建的方法的一个实施例中的一部分内容的流程图;
图4说明了按照图1所示应用更新用于存储的已经编码的数据信号的处理的一个实施例。
发明的详细描述
为了全面的理解本发明,在以下的内容中阐述了许多个实施例。但是不具备实施例中所述的各个具体细节也可以实施本发明,这对于本领域技术人员来说是可以理解的。为了不使本发明变得模糊,在他处对公知的方法、步骤,组成和线路进行了详细地描述。
图2是用于说明采用现有技术来对要存储的数据信号进行编码的方法的应用的一个简略示图。这个方案称为“EVENODD”方法,是在载于1995年2月出版的第44卷第2期的IEEE计算机报上的第192-202页的题为"EVENODD:An efficient scheme for toleratingdouble disk failures in Raid architectures"文章中提出的,在图2所示的这一具体实施例中,使用了很多的冗余磁盘来存储以二进制数字信号形式存在的奇偶校验或冗余信息。也可参见于1996年11月授予Blaum,Brady,Bruck,Menon的题为"Methods and means forencoding and rebuilding data contents up to two unavailableDASDSs in a DASD array using simple non-recursive diagonal androw parity"的第5,579,475号美国专利。还可参见下述书籍:PaulMassiglia,The RAID book,RAID Advisory Board,1997(在这本书的第6章描述了RAID Level 6)。方便地话,用于存储数据信号的磁盘数N应设定为一个质数。但是,这并不会对上述方案造成任何限制,这是由于通过假定在某些磁盘上没有容纳任何信息,即在某些磁盘上所存储的所有二进制数字信号或字节都是零,这样就可以处理存储数据信号的任意磁盘数。因此,当数据磁盘数不是质数时,例如就可以对N值进行选择以使其为大于数据磁盘数的最近质数。
如图2所示,以5个数据磁盘为例来说明上述方案的实施过程。在标有“冗余磁盘”的磁盘中存储了奇偶校验数据信息,上述磁盘标志成下数据块:
D(0,5),D(1,5),D(2,5),D(3,5),D(0,6),D(1,6),D(2,6),和D(3,6)。在这一实施例中,如图2所示磁盘被分成了数据信号块或奇偶校验信号块。奇偶校验信号信息可按照下述等式进行计算:
D(0,5)=D(0,0)_D(0,1)_D(0,2)_D(0,3)_D(0,4)
D(1,5)=D(1,0)_D(1,1)_D(1,2)_D(1,3)_D(1,4)
D(2,5)=D(2,0)_D(2,1)_ D(2,2)_D(2,3)_D(2,4)
D(3,5)=D(3,0)_D(3,1)_ D(3,2)_D(3,3)_D(3,4)
D(0,6)=S_(0,0)_D(3,2)_D(2,3)_D(1,4)
D(1,6)=S_D(1,0)_D(0,1)_D(3,3)_D(2,4)
D(2,6)=S_D(2,0)_D(1,1)_D(0,2)_D(3,4)
D(3,6)=S_D(3,0)_D(2,1)_D(1,2)_D(0,3)
S=D(3,1)_D(2,2)_D(1,3)_D(0,4)
采用这种方法,对于一个带有五个磁盘数据容量的磁盘阵列上的奇偶校验信号信息进行编码的话,就需要执行35次的异或运算(“XOR”)。在这个例子中,如果假定在数据存储块D(0,4),D(1,4),D(2,4),D(3,4)中存储的均为零,则如果仅有四个数据磁盘的话,要对数据信号进行编码就需要执行27次的异或运算(XOR)。
应用已编码的冗余信号信息的一个方面是在更新数据块时执行写操作方法的效率。例如采用这种技术时,只要写的数据块不是图2中所示的主对角线上的部分时,每次写该技术应用都需要执行附加的两个写操作(“写”)。如果要写的数据块是主对角线上的部分,则需要使用附加的5个写操作。总之,需要使用N次另外的写操作。因此,如果都要以相同的概率访问数据块,则对于一个含有5个数据磁盘的阵列来说,进行更新所需的附加写操作的预期值为2.6。如果有四个数据磁盘,则每次更新所要进行的附加写操作的预期值为2.56。总之,每次更新所进行的附加写操作的预期值为3-(1/N),因此对大值N越接近3。
如果两个冗余磁盘都受到损坏,则采用上述的编码步骤可以由数据磁盘或数据存储单元中的存储信息计算出所丢失的奇偶校验信号信息。因此,重建的复杂性与编码的复杂性是相等的。然而如果两个数据磁盘受到损坏,则需要执行44次异或(XOR)运算来重建所丢失的数据。例如,假设存储单元或磁盘0和2受到了损坏,则所丢失的数据存储块D(0,0),D(1,0),D(2,0),D(3,0),D(0,2),D(1,2),D(2,2),和D(3,2)可采用下述的运算顺序获得:
S=D(0,5)_D(1,5)_D(2,5)_D(3,5)_D(0,6)_D(1,6)_D(2,6)_D(3,6)
S(0)0=D(0,1)_D(0,3)_D(0,4)
S(0)1=D(1,1)_D(1,3)_D(1,4)
S(0)2=D(2,1)_D(2,3)_D(2,4)
S(0)3=D(3,1)_D(3,3)_D(3,4)
S(0)4=D(4,1)_D(4,3)_D(4,4)
S(1)0=S_D(0,6)_D(4,1)_D(2,3)_D(1,4)
S(1)1=S_D(1,6)_D(0,1)_D(3,3)_D(2,4)
S(1)2=S_D(2,6)_D(1,1)_D(4,3)_D(3,4)
S(1)3=S_D(3,3)_D(2,1)_D(0,3)_D(4,4)
S(1)4=S_D(4,6)_D(3,1)_D(1,3)_D(0,4)
D(2,2)=S(1)4
D(2,0)=S(0)2_D(2,2)
D(0,2)=S(1)2_D(2,0)
D(0,0)=S(0)0_D(0,2)
D(3,2)=S(1)0_D(0,0)
D(3,0)=S(0)3_D(3,2)
D(1,2)=S(1)3_D(3,0)
D(1,0)=S(0)1_D(1,2)
因此,执行44次的XOR运算就可重建出包含在两个受损坏的存储单元中的数据信号。同样,指示如果存储单元的个数是4,则执行34次XOR运算就可重建出所丢失的数据存储块。假设阵列中的所有数据存储单元受到损坏的概率相同,则在四个存储单元阵列中有两个单元受到损坏的情况下重建数据所要执行的XOR运算的预期次数为大约29.8。
图1是说明了按照本发明中所述存储数据编码方法的一个实施例的应用情况示意图。在这个例子中,存储阵列包含6个存储单元,其中既有数据信号单元也有奇偶校验信号存储单元。因此,该存储阵列具有匹配等效储存能力的数据存储单元数为N。在这个例子中,N=4。当然,本发明并不局限于这一数据存储容量也不局限于这一特定实施例。存储总数据量是N个存储单元的容量,在这一实施例中N为4,N个存储单元中的每一个单元又被分成N个数据存储块。另外,从(N)(N)数据信号块中产生了2N个奇偶校验信号块,在下面的内容中将对此进行更为详细的描述。而且,在这一特定实施例中,N(N+2)个奇偶校验和数据信号被分配在存储介质的N+2个存储单元中,这样便可使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元中,在这一点上与EVENODD方案是不相同的。
在这一实施例中,奇偶校验信号既有水平奇偶校验信号也有对角奇偶校验信号。如图1所示,在这一实施例中,对角奇偶校验信号只存储在N+2个存储单元中的一个单元中。同样,在这一实施例中,不同于EVENODD方案,水平奇偶校验信号被分配存储在N+2个存储单元中的N个单元中。而且,如图1所示在这一实施例中,N+2个存储单元中的一个单元只存储数据信号。
在这一实施例中,假设N+1是一个质数。与EVENODD方案那样,只要通过假设存储单元中没有存储数据信号,因此在那些单元中的所有数据均为零,该技术就可处理任意的存储单元数。为了简单化,如图1所示假定每个存储单元有N个数据块,在这一实施例中,N即为4。当然,在这方面本发明并不局限于这一范围。例如,通过分开进行处理每个N个数据块组就可以处理任意存储单元容量。在这一方案中,一个数据块也可以包含有任意位数。在这一例子中,奇偶校验信号信息D(0,3),D(1,2),D(2,1),D(3,0),D(0,5),D(1,5),D(2,5),和D(3,5)可按照下列等式计算出:
水平奇偶校验:
D(0,3)=D(0,0)_D(0,1)_D(0,2)_D(0,4)
D(1,2)=D(1,0)_D(1,1)_D(1,3)_D(1,4)
D(2,1)=D(2,0)_D(2,2)_D(2,3)_D(2,4)
D(3,0)=D(3,1)_D(3,2)_D(3,3)_D(3,4)
对角奇偶校验:
D(0,5)=D(3,4)_D(2,0)_D(1,1)_D(0,2)
D(1,5)=D(3,3)_D(2,4)_D(1,0)_D(0,1)
D(2,5)=D(3,2)_D(2,3)_D(1,4)_D(0,0)
D(3,5)=D(3,1)_D(2,2)_D(1,3)_D(0,4)
如这个例子所示,对于一个存储容量相当于由四个存储单元所组成的存储阵列中的奇偶校验信号信息进编码要执行24次XOR运算。而在前所述的EVENODD方案中,要对相等数据容量进行编码则需要执行27次XOR运算。因此,由这一实施例便可看出:按照本发明中所述的编码方法进行编码储存的数据信号的复杂性小于EVENODD方案中的编码复杂性。总之,需执行2N(N-1)次XOR运算。
在数据块更新方面,所建议的技术仅采用执行两次额外的写操作,与数据块的位置无关,这一点将在下面的内容作详细的描述。因此,本方案的更新性能也优于EVENODD方案中的更新性能。
按照本发明中所述的编码存储数据信号方法的这一实施例在双盘或受损存储单元的恢复方面也提供更好的性能。设F1和F2为受到损坏的存储单元。如果F1大于或等于零且小于或等于N,F2等于N+1,则使用水平奇偶校验便可重建F1。在F1重建之后,由于可以获得这些受损的所有数据块,则使用编码步骤便可直接重建出存储在F2中的对角奇偶信号信息了。因此,在这种情况下,这一实施例执行24次XOR运算就可重建存储在两个受损的存储单元中的信号信息了。但是,如果F1小于F2且F1大于或等于零,F2小于或等于N,则两个存储单元含有数据信号信息或既有数据也有奇偶校验信号信息。在这一例子中,即使在上述情况下,按照本发明所述的方法也仅需执行24次XOR运算便可恢复丢失的数据和/或奇偶校验信号信息。
通过下面的几个例子可以说明本发明中所提出的编码技术只需执行24次XOR运算便可重建所丢失的数据,而按照EVENODD方案则需执行34次运算。在有两个相独立的受损存储单元的实施例中,本发明中的所述方案总是正好执行24次XOR运算以从保持完好的存储单元中重建数据信号。而在EVENODD方案中则需执行29.8次XOR运算才能恢复受损的两个存储单元。因此,本发明中编码存储的数据信号方法的这一实施例中的重建复杂性小于EVENODD方案中的重建复杂性。
例如,假设存储单元1和4受到损坏,则在这一实施例中所对应的丢失块为D(0,1),D(1,1),D(2,1),D(3,1),D(0,4),D(1,4),D(2,4)和D(3,4)。采用这一本发明中编码存储的数据信号方法的具体实施例,一个对角奇偶校验组不包含存储单元1中的任何数据块,另一对角校验组不包含存储单元4中的任何数据块。因此,在这一实施中,两者都可以作为起始点。在这一实施例中,我们先从不包含任何存储单元1中的数据块的那个对角奇偶校验组开始,即D(3,2),D(2,3),D(1,4),D(0,0)。那么,可按以下等式来建立D(1,4):
D(1,4)=D(3,2)_D(2,3)_D(0,0)_D(2,5)
在这一例子中,使用水平奇偶校验组D(1,0),D(1,2),D(1,3),D(1,4),按如下等式来建立D(1,1):
D(1,1)=D(1,0)_D(1,2)_D(1,3)_D(1,4)
使用含有D(1,1)的对角奇偶校验组按如下等式来获得D(3,4):
D(3,4)=D(2,0)_D(1,1)_D(0,2)_D(0,5)
使用水平奇偶校验组D(3,1),D(3,2),D(3,3),D(3,4),按如下等式来建立D(3,1):
D(3,1)=D(3,0)_D(3,2)_D(3,3)_D(3,4)
然后,使用含有D(3,1)的对角奇偶校验组按如下等式来获得D(0,4):
D(0,4)=D(3,1)_D(2,2)_D(1,3)_D(3,5)
然后,使用下述的水平组来建立D(0,1):
D(0,1)=D(0,0)_D(0,2)_D(0,3)_D(0,4)
然后,使用含有D(0,1)的对角奇偶校验组来获得D(2,4):
D(2,4)=D(3,3)_D(1,0)_D(0,1)_D(1,5)
然后,使用下述的水平组来建立D(2,1):
D(2,1)=D(2,0)_D(2,2)_D(2,3)_D(2,4)
在这一例子中,一个受损存储单元4中只有数据块。而用下一个例子来说明两个受损的存储单元只包含数据和奇偶校验信号。
代之以,假设存储单元0和2受到了损坏。在这个例子中,也就是意味着块D(0,0),D(1,0),D(2,0),D(3,0),D(0,2),D(1,2),D(2,2)和D(3,2)丢失了。在这一例子中,对角奇偶校验组D(3,1),D(2,2),D(1,3)和D(0,4)没有包含存储单元0的数据块。因此,按如下等式来建立D(2,2):
D(2,2)=D(3,1)_D(3,5)_D(1,3)_D(0,4)
利用如下的水平奇偶校验组来建立D(2,0):
D(2,0)=D(2,1)_D(2,2)_D(2,3)_D(2,4)
利用含有D(2,0)的对角奇偶校验组来获得D(0,2):
D(0,2)=D(3,4)_D(2,0)_D(1,1)_D(0,5)
利用如下的水平奇偶校验组来建立D(0,0):
D(0,0)=D(0,3)_D(0,1)_D(0,2)_D(0,4)
利用含有D(0,0)的对角奇偶校验组来获得D(3,2):
D(3,2)=D(2,5)_D(2,3)_D(1,4)_D(0,0)
利用如下的水平奇偶校验组来建立D(3,0):
D(3,0)=D(3,1)_D(3,2)_D(3,3)_D(3,4)
在这个例子中,D(3,0)是一个水平奇偶校块。因此,为了从一个对角奇偶校验组中获得另一个块,利用了不含存储单元2的数据块D(3,3),D(4,4),D(1,0),D(0,1)按下式来建立D(1,0):
D(1,0)=D(3,3)_D(2,4)_D(1,5)_D(0,1)
在这一例子中,通过利用如下的水平奇偶校验组来获得D(1,2)的重建工作就完成了:D(1,2)=D(1,0)_D(1,1)_D(1,3)_D(1,4)
总之,对于这一具体实施例,当两个存储单元同时受损时,则重建过程需要执行2N(N-1)次XOR运算,这与在这一实施例中对数据信号进行编码所需执行的XOR运算次数是相等的。因此,由前述内容可以看出:当两个存储单元受损时,本发明中编码存储的数据信号方法的具体实施例在编码、更新以及在重建数据信号方面都具有比EVENODD方案更好的性能。
图1阐明了一个具有四个数据存储单元的具体实施例,下面将描述另一个实施例,其中数据存储单元的个数可以是不确定的。考虑一个具有N+2个存储单元的存储阵列。在这个具体实施例中,与EVENODD方案相同使用两个有存储容量价值的存储单元来存储奇偶校验信号信息。为了使这个实施例简化,如果N-1是一个质数,则假设N+2个存储单元每个单元都有N个存储块;在其他情况下,则假设有M个存储块,其中M+1为大于N-1的最小质数。当然,在另外的实施例中,通过考虑每个与一个存储单元单独相关的N个(如果N+1不是质数则为M个)存储块,可以处理具有不同容量的存储单元。如果一个存储单元中的一个存储块含有奇偶校验信号信息,则在这里将其称为奇偶校验块。同样,如果一个存储单元中的一个存储块含有数据信号信息,则将其称为数据块。
考虑一个N(N+2)个数据块阵列以使D(i,j)(其中i大于或等于零且小于或等于N-1,j大于或等于零且小于或等于N+1)为第j个存储单元中的第i个数据块。数据阵列中有(N)(N)个数据信号块和2N个奇偶校验信号块。问题是如何获得奇偶校验信号并将其放在存储阵列中的2N个奇偶校验块中,以使得任意两个存储单元都可以由阵列中的其他N个存储单元的内容建立起来。在这一实施例中,按照以下等式只需使用XOR运算便可生成奇偶校验信号信息且可将其放在存储阵列中:
D(i,N-1-i)=_D(i,j),其中j=0至N,j≠N-1-i,0≤i≤N-1(1)
D(i,N+1)=_D(N-1-j,(N-i+j)mod(N+1)),其中j=0至N,0≤i≤N-1(2)
等式(1)定义出了水平校验信号的产生和放置。存储单元块D(0,N-1),D(1,N-2),…D(N-1,0)中包含了水平奇偶校验信号信息。等式(2)定义出了奇偶校验块中产生的对角奇偶校验信号。按照等式(2),奇偶校验块D(0,N+1),D(1,N+1),…D(N-1,N+1)中包含了对角奇偶校验信号信息。所前所示,在这一实施例中,对角奇偶校验信号信息只存储在第N+1个存储单元中。
如前所述,这一优选实施例的一次更新操作中每次写需执行两次附加的写运算,这与要写的块无关。假设要写对块D(i,j)进行写操作,为了完成这一写操作,就要对奇偶校验块D(i,N-1-i)(水平奇偶校验)和D((2N-1-i-j)mod(N+1),N+1)(对角奇偶校验)执行附加的写运算。利用上述的等式(1)和(2)就可获得要写的信号值。
图4是一说明这个优选实施例所执行的一次更新过程的方框图。如图所示,由存储单元发出了一个写请求510。在这一实施例中,该请求继发到存储阵列管理软件520,虽然在这一方面本发明并不局限于此。在这个实施例中,更新数据信号也涉及到更新相关的奇偶校验信号。因此,如图所示分别执行了3个读操作。在这一实施例中,设定与一次写操作相比执行一次读操作的时间相对小一些,这归因于超高速缓冲存储器的存在;但是,在这一方面,本发明也并不局限于此。如图所示,除了读取要被更新的数据信号外,也读取了相关的水平和对角奇偶校验信号。在560和580,获得了一个新的或更新过的水平和对角奇偶校验信号。在这一优选实施例中,这些新的信号是通过利用更新前的水平和对角奇偶校验信号,要被更新的数据信号以及用于替代被更新数据信号的数据信号来获得的。在570、590和610,对更新后的数据和奇偶校验信号执行了写操作。当然,本发明并不限止是以并行,顺序或其他的方式来执行上述这些操作,采取什么方式将取决于许多与如何实施本发明无关的其他因素。
在这一优选实施例中,与编码过程相同只需通过XOR运算就可完成解码过程以使受损的一个或两个存储单元得到恢复。在这一实施例中,对这两种损坏方式是分别进行处理的。假设F1是损坏的存储单元。如果F1大于或等于零且小于或等于N,则利用水平奇偶校验信号编码便可恢复所丢失的数据信号(当F1等于N时)或数据和奇偶校验信号(当F1小于或等于N-1且大于或等于零时)。以F1替代上述等式(1)中的N-1-i得到:
D(i,F1)=_D(i,j),其中j=0至N,j≠F1,0≤i≤N-1    (3)
如果F1等于N+1(即:对角奇偶校验存储单元已损坏),则按照等式(2)处理便可将其重建出来。
另外如果有两个存储单元被损坏。设F1和F2就是这两个受损的存储单元。一种情况下,假设F1大于或等于零且小于或等于N,而F2等于N+1。则在这种情况下,按照上述的等式(3)便可恢复F1。同样,利用等式(2)和重建的存储单元F1便可恢复F2。
在另一种情况下,F1可能小于F2且F1可能大于或等于零。同样,F2也可能小于或等于N。在这种情况下,在两个受损的存储单元中都存储着数据或数据和奇偶校验信号信息。同样,由于上述情况,F1大于或等于零且小于或等于N-1。因此,按照上述的等式(2),存储单元F1含有(N-1)个数据块和1个奇偶校验块。在这种情况下,则需采用如图3中所示的一种较为复杂的方法。
当然,可以理解到本发明并不局限于如图3中所示的方法。可以采用其他方式且采用其他方式也会得到满意的结果。对于这一实施例,如果F1小于或等于N-1且F2等于N,则在如图3所示的第一环中,利用对角奇偶校验便可获得D(F1,N),然后使用水平奇偶校验和D(F1,N)可获得D(F1,F1)。然后,利用包含D(F1,F1)的对角奇偶校验组使t得到更新以获得D(t,N),这一过程进行循环直到t=N-1-F1为止。由于在这一实施例中存储单元N只含有数据块且设定N+1为质数,则通过以“Z字”模式“来回穿过”数据块的方法便可恢复丢失的块。但是,如果F2不等于N,那么存储单元中就既包含数据块也包含奇偶校验块,这样我们就不能采用前述的方法来恢复D(N-1-F1,N)块了。对此为了完成重建,当t=N-1-F1时,如图3中的第二环所示使t复位。通过上文中结合图2所详细描述的前两个重建例子也阐明了这一优选的重建术。
尤其是在发生双重损坏的情况下,上述实施例的一个缺点是:如果丢失的数据被访问,则只要有访问请求数据就会被再次重建。在另一实施例中,存储阵列可以包含备份的存储空间。因此,当数据被重建时就可将其存储在备份空间中,这样在以后访问丢失数据时就不额外地重建了,至少对于已经重建且保存过的数据信号可以做到这样。同样,也可采用其他分配备份存储空间的其他方法,本发明并不局限于一种优选方式。例如,为此可以在该阵列中提供两个备份存储单元。另外,也可以将两块备份存储空间分配给各个存储单元,以使分配备份存储空间跨接不同的存储单元。而且也可以对更少或更多的备份空间进行分配。根据具体情况可以采用各种不同的方法。
尽管在这里已对本发明的某些特征进行了描述,但对于本领域的技术人员来说,还可以由此进行许多种变形,替代,改变和等效替换。因此,应理解为希望通过所附的各项权利要求可以覆盖具有本发明实质内容的各种变形和改变。

Claims (36)

1.一种对用于存储的数据信号进行编码以对一种存储介质中的一个存储单元进行容错的方法包括:
对于N+2个存储单元,N是一个正整数,又将每个存储单元分成N个存储块,由(N)(N)个数据信号块产生出2N个奇偶校验信号块;
将N(N+2)个奇偶校验信号块和数据信号块分配在存储介质的N+2个存储单元中,以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上。
2.如权利要求1所述的方法,其特征在于所述的2N个奇偶校验信号块中包含水平奇偶校验信号和对角奇偶校验信号。
3.如权利要求2所述的方法,其特征在于对角奇偶校验信号实质上是按照下述等式产生的:
D(i,N-1-i)=_D(i,j),其中j=0至N,j≠N-1-i,0≤i≤N-1。
4.如权利要求2所述的方法,其特征在于水平奇偶校验信号实质上是按照下述等式产生的:
D(i,N+i)=_D(N-1-j,(N-i+j)mod(N+1)),其中j=0至N,0≤i≤N-1。
5.如权利要求2所述的方法,其特征在于对角奇偶校验信号只存储在N+2个存储单元的其中一个单元中。
6.如权利要求5所述的方法,其特征在于水平奇偶校验信号被分配存储在N+2个存储单元的其中N个单元中。
7.如权利要求6所述的方法,其特征在于N+2个存储单元的其中1个单元中只存储数据信号。
8.一种存储介质包含:
N+2个存储二进制数字信号的存储单元,N是一个正整数,又将每个存储单元分成N个存储块,在所述的N+2个存储单元上存储了2N个奇偶校验信号块和(N)(N)个数据信号块,其中2N个奇偶校验信号块是以(N)(N)个数据信号为基础的;
将所述的2N个奇偶校验信号块分配存储在N+2个存储单元中,以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上。
9.如权利要求8所述的存储介质,其特征在于所述的2N个奇偶校验信号块中包含水平奇偶校验信号和对角奇偶校验信号。
10.如权利要求9所述的存储介质,其特征在于对角奇偶校验信号实质上是按照下述等式产生的:
D(i,N-1-i)=_D(i,j),其中j=0至N,j≠N-1-i,0≤i≤N-1
11.如权利要求9所述的存储介质,其特征在于水平奇偶校验信号实质上是按照下述等式产生的:
D(i,N+1)=_D(N-1-j,(N-i+j)mod(N+1)),其中j=0至N,0≤i≤N-1。
12.如权利要求9所述的存储介质,其特征在于对角奇偶校验信号只存储在N+2个存储单元的其中一个单元中。
13.如权利要求12所述的存储介质,其特征在于水平奇偶校验信号只被分配存储跨接N+2个存储单元的其中N个单元。
14.如权利要求13所述的方法,其特征在于N+2个存储单元的其中1个单元中只存储数据信号。
15.一种设备包括:采用N+2个存储单元来存储二进制数字信号,N是一个正整数,又将所采用的每个存储单元分成N个存储块,在所采用N+2个存储单元中存储着2N个奇偶校验信号块和(N)(N)个数据信号块,其中2N个奇偶校验信号块是以(N)(N)个数据信号为基础的;
采用了所述的N+2个存储单元以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上。
16.如权利要求15所述的设备,其特征在于所述的2N个奇偶校验信号块中将包含水平奇偶校验信号和对角奇偶校验信号。
17.如权利要求16所述的设备,其特征在于对角奇偶校验信号实质上将是按照下述等式产生的:
D(i,N-1-i)=_D(i,j),其中j=0至N,j≠N-1-i,0≤i≤N-1。
18.如权利要求16所述的设备,其特征在于水平奇偶校验信号实质上将是按照下述等式产生的:
D(i,N+1)=_D(N-1-j,(N-i+j)mod(N+1)),其中j=0至N,0≤i≤N-1。
19.如权利要求16所述的设备,其特征在于对角奇偶校验信号将只存储在N+2个存储单元的其中一个单元中。
20.如权利要求19所述的设备,其特征在于水平奇偶校验信号将只被分配存储跨接N+2存储单元的其中N个单元。
21.如权利要求20所述的设备,其特征在于N+2个存储单元的其中1个单元中只存储数据信号。
22.一种产品包含:一种存储介质,在所述的存储介质中已存储着指令,该指令由一处理器来执行,其结果为:
N+2个存储二进制数字信号的存储单元,N是一个正整数,又将每个存储单元分成N个存储块,在所述的N+2个存储单元上存储了2N个奇偶校验信号块和(N)(N)个数据信号块,其中2N个奇偶校验信号块是以(N)(N)个数据信号为基础的;
将所述的2N个奇偶校验信号块分配存储在N+2个存储单元中,以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上。
23.如权利要求22所述的产品,其特征在于所述的2N个奇偶校验信号块中包含水平奇偶校验信号和对角奇偶校验信号。
24.如权利要求23所述的产品,其特征在于对角奇偶校验信号实质上是按照下述等式产生的:
D(i,N-1-i)=_D(i,j),其中j=0至N,j≠N-1-i,0≤i≤N-1。
25.如权利要求23所述的方法,其特征在于水平奇偶校验信号实质上是按照下述等式产生的:
D(i,N+1)=_D(N-1-j,(N-i+j)mod(N+1)),其中j=0至N,0≤i≤N-1。
26.如权利要求22所述的产品,其特征在于N含有一个正质数。
27.一种对用于储存的已编码的数据信号进行重建以对一种存储介质中的一个存储单元进行容错的方法包含有N+2个存储单元,N是一个正整数,又将每个存储单元分成N个存储块,由(N)(N)个数据信号块产生出2N个奇偶校验信号块,将N(N+2)个奇偶校验信号块和数据信号块分配在存储介质的N+2个存储单元中,以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上,所述方法包含:
在至少其中一个存储单元受损后,利用选择的数据和奇偶校验信号来重建由于存储单元受损而丢失的数据信号。
28.如权利要求27所述的方法,其特征在于所述的至少其中一个存储单元包括两个存储单元。
29.一种对用于储存的已编码的数据信号进行更新以对一种存储介质中的一个存储单元进行容错的方法包含有N+2个存储单元,N是一个正整数,又将每个存储单元分成N个存储块,由(N)(N)个数据信号块产生出2N个奇偶校验信号块,将N(N+2)个奇偶校验信号块和数据信号块分配在存储介质的N+2个存储单元中,以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上,所述方法包含:
读取要被更新的数据信号以及任何与之相关的奇偶校验信号;
处理要被更新的数据信号,任何与之相关的奇偶校验信号,以及正在更新要被更新以产生已更新的奇偶校验信号的数据信号;以及
写入正在更新要被更新的数据信号和已经更新的奇偶校验信号的数据信号,以取代要被更新的数据信号和任何与之相关的奇偶校验信号。
30.如权利要求29所述的方法,其特征在于所述的任何相关的奇偶校验信号包含与要被更新的数据信号相应水平奇偶校验信号和对角奇偶校验信号;以及已更新的奇偶校验信号包含一个已更新的水平奇偶校验信号和一个已更新的对角奇偶校验信号。
31.一种设备包含:
采用N+2个存储单元来存储二进制数字信号,N是一个正整数,又将所采用的每个存储单元分成N个存储块,在所述的N+2个存储单元中存储着(N)(N)个数据信号块和奇偶校验信号块,其中奇偶校验信号块是以数据信号块为基础的;
采用了所述的N+2个存储单元以使2N个奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上;采用了所述的N+2个存储单元以使所述块中有2N个块含有用于备份数据信号和奇偶校验信号之中的任一种信号的备份存储空间。
32.如权利要求31所述的设备,其特征在于2N个备份存储空间块只处在所述的N+2存储单元的其中两个单元中。
33.如权利要求31所述的设备,其特征在于2N个备份存储空间块被分配跨接所述的N+2个存储单元。
34.一种存储介质包含:N+2个存储单元,储存二进制数字信号,N是一个正整数,又将每个存储单元分成N个存储块,在所述的N+2存储单元上已存储着(N)(N)个数据和奇偶校验信号块,奇偶校验信号块是以数据信号块为基础的;
所述的奇偶校验信号块被分配存储在所述的N+2个存储单元中以使所述的奇偶校验信号块不是仅仅存储在N+2个存储单元中的其中两个单元上;
所述N+2个存储单元中的所述2N个块含有用于备份数据信号和奇偶校验信号之中的任一种信号的备份存储空间。
35.如权利要求34所述的方法,其特征在于2N个备份存储空间块只处在所述的N+2存储单元的其中两个存储单元中。
36.如权利要求34所述的方法,其特征在于2N个备份存储空间块被分配跨接所述的N+2个存储单元。
CNB998061263A 1998-05-13 1999-04-27 用于存储数据信号的编码方式 Expired - Fee Related CN1201336C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/078,389 US6247157B1 (en) 1998-05-13 1998-05-13 Method of encoding data signals for storage
US09/078,389 1998-05-13

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CNA031530656A Division CN1574024A (zh) 1998-05-13 1999-04-27 用于存储数据信号的编码方式

Publications (2)

Publication Number Publication Date
CN1300433A true CN1300433A (zh) 2001-06-20
CN1201336C CN1201336C (zh) 2005-05-11

Family

ID=22143745

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB998061263A Expired - Fee Related CN1201336C (zh) 1998-05-13 1999-04-27 用于存储数据信号的编码方式
CNA031530656A Pending CN1574024A (zh) 1998-05-13 1999-04-27 用于存储数据信号的编码方式

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNA031530656A Pending CN1574024A (zh) 1998-05-13 1999-04-27 用于存储数据信号的编码方式

Country Status (7)

Country Link
US (1) US6247157B1 (zh)
JP (1) JP2002515620A (zh)
CN (2) CN1201336C (zh)
AU (1) AU3767099A (zh)
DE (1) DE19983218B4 (zh)
TW (1) TW442751B (zh)
WO (1) WO1999059157A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100375045C (zh) * 2004-11-24 2008-03-12 国际商业机器公司 容许存储系统中的多个存储设备故障的系统和方法

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675318B1 (en) * 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6904556B2 (en) * 2001-08-09 2005-06-07 Emc Corporation Systems and methods which utilize parity sets
US6871317B1 (en) * 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
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
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double 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
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7613984B2 (en) 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7080278B1 (en) 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
US7024585B2 (en) * 2002-06-10 2006-04-04 Lsi Logic Corporation Method, apparatus, and program for data mirroring with striped hotspare
US6848022B2 (en) * 2002-10-02 2005-01-25 Adaptec, Inc. Disk array fault tolerant method and system using two-dimensional parity
US6792391B1 (en) * 2002-11-15 2004-09-14 Adeptec, Inc. Method and system for three disk fault tolerance in a disk array
US7093159B1 (en) * 2002-12-12 2006-08-15 Adaptec, Inc. Method and system for four disk fault tolerance in a disk array
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7188303B2 (en) * 2003-12-29 2007-03-06 Intel Corporation Method, system, and program for generating parity data
US7206899B2 (en) * 2003-12-29 2007-04-17 Intel Corporation Method, system, and program for managing data transfer and construction
US20050228745A1 (en) * 2004-04-09 2005-10-13 Cmarket, Inc. Method and apparatus for conducting on-line auction events in coordination with incentive promotion for bidders
US7318190B2 (en) * 2004-06-10 2008-01-08 Intel Corporation Storage device parity computation
US7467281B2 (en) * 2004-06-10 2008-12-16 Intel Corporation Mapping data blocks to storage blocks to wrap around storage devices
US7330998B2 (en) * 2004-09-20 2008-02-12 Intel Corporation Data integrity verification
US7594075B2 (en) 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8131969B2 (en) * 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
US8131926B2 (en) * 2004-10-20 2012-03-06 Seagate Technology, Llc Generic storage container for allocating multiple data formats
US7343546B2 (en) * 2004-12-23 2008-03-11 Intel Corporation Method and system for syndrome generation and data recovery
US7398460B1 (en) * 2005-01-31 2008-07-08 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
JP4630828B2 (ja) * 2006-01-31 2011-02-09 株式会社東芝 情報処理装置、raidコントローラおよび情報処理装置のディスク制御方法
JP4829632B2 (ja) * 2006-02-10 2011-12-07 株式会社リコー データ暗号化装置、データ暗号化方法、データ暗号化プログラム、および記録媒体
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7664915B2 (en) * 2006-12-19 2010-02-16 Intel Corporation High performance raid-6 system architecture with pattern matching
US8667379B2 (en) * 2006-12-20 2014-03-04 International Business Machines Corporation Apparatus and method to generate, store, and read, a plurality of error correction coded data sets
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US7787204B2 (en) 2008-03-20 2010-08-31 International Business Machines Corporation Error correction coding of longitudinal position information
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US20150142863A1 (en) * 2012-06-20 2015-05-21 Singapore University Of Technology And Design System and methods for distributed data storage
JP6375886B2 (ja) * 2014-11-14 2018-08-22 富士通株式会社 パリティレイアウト決定プログラム、パリティレイアウト決定方法、ストレージ装置およびストレージシステム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4092732A (en) * 1977-05-31 1978-05-30 International Business Machines Corporation System for recovering data stored in failed memory unit
US4796260A (en) * 1987-03-30 1989-01-03 Scs Telecom, Inc. Schilling-Manela forward error correction and detection code method and apparatus
US4914656A (en) * 1988-06-28 1990-04-03 Storage Technology Corporation Disk drive memory
US5265098A (en) 1990-08-03 1993-11-23 International Business Machines Corporation Method and means for managing DASD array accesses when operating in degraded mode
JP3409859B2 (ja) * 1991-01-31 2003-05-26 株式会社日立製作所 制御装置の制御方法
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
US5258984A (en) 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays
DE69408498D1 (de) * 1993-06-30 1998-03-19 Ibm Kodierung und Rekonstruktion des Dateninhaltes von bis zu zwei nichtverfügbaren DASDs in einer DASD-Anordnung
US5883903A (en) * 1993-09-20 1999-03-16 Fujitsu Limited Semiconductor memory of XN type having parity corresponding to n×m bits
US5889795A (en) * 1995-04-21 1999-03-30 International Business Machines Corporation Disk array system and method for storing data
US5883904A (en) * 1997-04-14 1999-03-16 International Business Machines Corporation Method for recoverability via redundant cache arrays

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100375045C (zh) * 2004-11-24 2008-03-12 国际商业机器公司 容许存储系统中的多个存储设备故障的系统和方法

Also Published As

Publication number Publication date
DE19983218T1 (de) 2001-05-17
JP2002515620A (ja) 2002-05-28
CN1201336C (zh) 2005-05-11
DE19983218B4 (de) 2005-07-07
US6247157B1 (en) 2001-06-12
CN1574024A (zh) 2005-02-02
WO1999059157A1 (en) 1999-11-18
TW442751B (en) 2001-06-23
AU3767099A (en) 1999-11-29

Similar Documents

Publication Publication Date Title
CN1201336C (zh) 用于存储数据信号的编码方式
US10387250B2 (en) Recovering data from microslices in a dispersed storage network
US9594639B2 (en) Configuring storage resources of a dispersed storage network
US8972692B2 (en) Dispersed storage network virtual address space
US7933876B2 (en) Data storage system and method by shredding and deshredding
EP2993585B1 (en) Distributed object storage system comprising performance optimizations
US10133616B2 (en) Hybrid distributed storage system
US9727427B2 (en) Synchronizing storage of data copies in a dispersed storage network
US11531593B2 (en) Data encoding, decoding and recovering method for a distributed storage system
US9146810B2 (en) Identifying a potentially compromised encoded data slice
US20130198226A1 (en) Retrieving data utilizing a distributed index
WO2013130630A2 (en) Listing data objects using a hierarchical dispersed storage index
WO2015152993A1 (en) Generating molecular encoding information for data storage
CN1484151A (zh) 用于将存储器压缩数据存储到存储器压缩磁盘上的方法和系统
US10996894B2 (en) Application storage segmentation reallocation
US10241872B2 (en) Hybrid distributed storage system
US20220091937A1 (en) Determining Segmentation Size In A Distributed Storage Network
GB2482112A (en) Distributed data storage and recovery
CN1898650A (zh) 数据存储阵列
CN1737769A (zh) 容错数据存储设备
WO2023274531A1 (en) Data storage system and method of managing the data storage system
KR20140066498A (ko) 멀티 레벨 셀 플래시 메모리의 페이지 단위 클러스터링 장치 및 방법
GB2555549A (en) Distributed data storage and recovery

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050511

Termination date: 20100427