专利名称:用于校验子生成以及数据恢复的方法和系统的制作方法
技术领域:
本发明的实施例涉及校验子(syndrome)生成和数据恢复,更具体地,涉及PQ RAID校验子生成和数据恢复。
背景技术:
随着大规模存储系统(例如光纤信道和吉比特以太网系统)的使用的增多,这些系统受到多个磁盘故障的影响也在增大。磁盘容量的迅速增长也延长了在磁盘故障情况下的磁盘恢复时间。在重建故障磁盘中存储的用户数据和奇偶校验码(parity)信息期间,所述延长的恢复时间增加了随后出现磁盘故障的可能性。另外,在导致数据丢失的磁盘故障后,由长时间未读取的数据所引起的潜在扇区故障可能阻碍数据恢复。在需要高度数据集成的阵列中使用较便宜的磁盘,例如ATA(高级技术配件)磁盘,也增加了出现这种磁盘故障的可能性。
人们已经开发出了可以从磁盘故障中恢复的RAID(独立磁盘冗余阵列)结构。典型地,在冗余磁盘上保持来自多个磁盘的数据的XOR(异或)。在磁盘故障的情况下,通过对未发生故障的磁盘上的数据进行XOR来重建故障磁盘上的数据。将重建的数据写入备用磁盘。然而,如果在重建完成前第二个磁盘出现故障,则数据将会丢失。最多能防止一个磁盘的数据丢失的传统磁盘阵列在数据恢复方面是有欠缺的,尤其是对于大规模存储系统而言更是如此。
在附图中示例性地而非限制性地示出了本发明,其中,相同的参考标号指示相同的单元。
图1是示出可以从多个磁盘故障中恢复的系统的框图。
图2是迦罗华域(Galois Field)的示例性值的表格。
图3是示出根据本发明的实施例的系统的框图。
图4是示出根据本发明的实施例的方法的流程图。
具体实施例方式
描述了用于校验子生成和数据恢复的系统和方法的实施例。在以下描述中,阐述了多个具体细节。然而,应当清楚,本发明的实施例可以在没有这些具体细节的情况下实现。在其它示例中,没有详细示出公知的电路、结构和技术,以免混淆对本文描述的理解。
在本说明书中,所涉及的“一个实施例”或“实施例”表示结合该实施例所描述的特定的特征、结构或特性包括在本发明的至少一个实施例中。因此,在本说明书的多处地方中出现的短语“一个实施例”或“实施例”不必都涉及相同的实施例。此外,特定的特征、结构和特性可以在一个或多个实施例中以适当的方式组合。
参考图1,其中的框图示出了可以从多个磁盘故障中恢复的系统100。系统100包括一个或多个用于存储数据的存储块(例如102-124)以及两个或多个用于存储奇偶校验码或校验子信息的存储块(例如130-144)。在一个实施例中,系统100是RAID(独立磁盘冗余阵列)系统。在一个实施例中,生成和存储了两个校验子P校验子和Q校验子。通过对于条带(stripe)计算奇偶校验码来生成P校验子。通过使用迦罗华域乘法来生成Q校验子。用于数据恢复的再生方案同时使用了迦罗华域乘法和除法。
以下是用于为具有n个数据磁盘和两个校验磁盘的存储阵列生成P和Q的方程P=D0D1D2......Dn-1(方程1)Q=g0*D0g1*D1g2*D2......gn-1*Dn-1(方程2)P是使用(XOR)运算对于条带所计算出的数据(D)的简单奇偶校验码。Q需要使用迦罗华域乘法器(g)进行的乘法(*)。
以下方程示出当更新数据块Da时P和Q的生成P(新)=P(旧)Da(旧)Da(新)
Q(新)=Q(旧)ga*Da(旧)ga*Da(新)有四种多个磁盘故障的情况需要恢复。在第一种情况下,P和Q出现故障。在这种情况下,可以使用如上所示的方程1和2来再生P和Q。
在第二种情况下,Q和数据磁盘(Da)出现故障。在这种情况下,可以经由方程1,使用P和剩余的数据磁盘来再生Da。然后,可以使用方程2来再生Q。
在第三种情况下,P和数据磁盘(Da)出现故障。在这种情况下,可以使用Q、剩余的数据磁盘和以下方程来再生DaDa=(QQa)*g-a=(QQa)*g255-a,其中Qa=g0D0g1D1...ga-1Da-1ga+1Da+1...gn-1Dn-1在再生Da之后,可以使用方程1来再生P。
在第四种情况下,两个数据磁盘(Da和Db)出现故障。在这种情况下,可以使用P和Q、剩余的数据磁盘和以下方程来再生Da和DbDa=(g-a*(QQab) gb-a*(PPab))/(gb-a0000 0001)Da=Da(PPab),其中Pab=D0D1...Da-1Da+1...Db-1Db+1...Dn-1Qab=g0D0g1D1...ga-1Da-1ga+1Da+1...gb-1Db-1gb+1Db+1...
gn-1Dn-1以下是在上述情况下从磁盘故障中恢复的实例。在以下实例中,假设数据路径的宽度为一字节或8比特。因此,使用迦罗华域GF(28)。可以对于宽度多于或少于一字节的数据路径来实现本发明,并且可以使用更大或更小的迦罗华域。
可以用以下方程来对两个8比特元素(b和c)进行相乘,以产生8比特乘积(a)。
b=[b7 b6 b5 b4 b3 b2 b1 b0]且c=[c7 c6 c5 c4 c3 c2 c1 c0]a0=b0.c0b7.c1b6.c2b5.c3b4.c4b3.c5b7.c5b2.c6b7.c6b6.c6b1.c7b7.c7b6.c7b5.c7a1=b1.c0b0.c1b7.c2b6.c3b5.c4b4.c5b3.c6b7.c6
b2.c7b7.c7b6.c7a2=b2.c0b1.c1b7.c1b0.c2b6.c2b7.c3b5.c3b6.c4b4.c4b5.c5b3.c5b7.c5b2.c6b7.c6b6.c6b4.c6b1.c7b3.c7b6.c7b5.c7a3=b3.c0b2.c1b7.c1b1.c2b7.c2b6.c2b0.c3b6.c3b5.c3b7.c4b5.c4b4.c4b6.c5b4.c5b3.c5b7.c5b2.c6b6.c6b5.c6b3.c6b2.c7b4.c7b1.c7b5.c7a4=b4.c0b3.c1b7.c1b2.c2b7.c2b6.c2b1.c3b7.c3b6.c3b5.c3b0.c4b6.c4b5.c4b4.c4b5.c5b4.c5b3.c5b2.c6b4.c6b3.c6b1.c7b7.c7b2.c7b3.c7a5=b5.c0b4.c1b3.c2b7.c2b2.c3b7.c3b6.c3b1.c4b7.c4b6.c4b5.c4b0.c5b6.c5b5.c5b4.c5b5.c6b4.c6b3.c6b2.c7b4.c7b3.c7a6=b6.c0b5.c1b4.c2b3.c3b7.c3b2.c4b7.c4b6.c4b1.c5b7.c5b6.c5b5.c5b0.c6b6.c6b5.c6b4.c6b5.c7b4.c7b3.c7a7=b7.c0b6.c1b5.c2b4.c3b3.c4b7.c4b2.c5b7.c5b6.c5b1.c6b7.c6b6.c6b5.c6b0.c7b6.c7b5.c7b4.c7图2示出表格200,其提供了迦罗华域乘法器ga的示例性值,其中g=0000 0010。用于GF(28)的生成器的负乘方可以使用以下方程来计算g-a=g255-a以下实例示出了对于具有四个数据磁盘和两个奇偶校验码磁盘的磁盘阵列如何生成P和Q奇偶校验码。假设每个数据块包含一个数据字节。用Di表示磁盘I(i=0、1、2、3)中所包含的数据。考虑以下数据条带D0=1011 0100,D1=0010 1100,D2=1100 0110且D3=1101 0101。
从而,可以使用方程1生成P,如下P=D0D1D2D3=10110100001011001100011011010101=10001011可以使用方程2生成Q,如下Q=g0D0g1D1g2D2g3D3根据图2中的表格,g0=00000001,g1=00000010,g2=00000100且g3=00001000。
因此,Q=00000001*1011010000000010*0010110000000100*1100011000001000*11010101=10110100010110000011111111100110=00110101以下实例示出了如何使用以上生成的阵列从两个磁盘故障中恢复。在第一种情况下,P和Q出现故障。在这种情况下,使用以上所示的方程1和2来再生P和Q。在第二种情况下,Q和数据磁盘(Da)出现故障。在这种情况下,可以经由方程1,使用P和剩余的数据磁盘再生Da。然后,可以使用方程2再生Q。在第三种情况下,P和数据磁盘(Da)出现故障。在这种情况下,可以使用Q、剩余的数据磁盘和以下方程来再生DaDa=(QQa)*g-a=(QQa)*g255-a,其中Qa=g0D0g1D1...ga-1Da-1ga+1Da+1...gn-1Dn-1例如,假设磁盘2出现故障。那么,D2=(QQ2)·g253=(Qg0D0g1D1g3D3)·g253=(0011010100000001*1011010000000010*0010110000001000)*g253使用图2中的表格,g253=01000111。因此,D2=(00110101101101000101100011100110)*01000111=00111111*01000111=11000110因为此时所有数据块都可用,所以可以使用方程1来再生P。
在第四种情况下,两个数据磁盘(Da和Db)出现故障。在这种情况下,可以使用P和Q、剩余的数据磁盘和以下方程来再生Da和DbDa=(g-a*(QQab) gb-a*(PPab))/(gb-a00000001)Db=Da(PPab),其中Pab=D0D1...Da-1Da+1...Db-1Db+1...Dn-1Qab=g0D0g1D1...ga-1Da-1ga+1Da+1...gb-1Db-1gb+1Db+1...
gn-1Dn-1例如,假设磁盘1和3出现故障。那么,D1=(g-1·(QQ13)g3-1*(PP13))/(g3-100000001)=(g254*(QQ13)g2*(PP13))/(g200000001)QQ13=0011010100000001*1011010000000100*11000110=001101011011010000111111=10111110PP13=100010111011010011000110=11111001根据图2中的表格,g254=10001110且g2=00000100。因此,D1=((10001110*10111110)(00000100*11111001))/(0000010000000001)=(0101111111000011)/(00000101)=(10111100)/(00000101)=00101100D3=D1(PP13)=0010110011111001=11010101图3是根据本发明的实施例的系统300的框图。系统300包括乘法器302以及一个或多个比较器,例如304和306。在一个实施例中,一个或多个比较器是XOR(异或)门。系统300还可以包括一个或多个缓冲器,例如308和310。缓冲器308存储比较器306的输出。比较器306将从图1所示的存储块中读取的数据320与缓冲器308的输出进行比较。由此,比较器306可以用来计算上述的P校验子,其为对于条带的奇偶校验码。
乘法器302将被乘数330与从图1所示的存储块中读取的数据320相乘。在一个实施例中,被乘数330是例如图2的表格200所示的迦罗华域。由比较器304将乘法器302的输出与缓冲器310的输出进行比较。由此,可以执行迦罗华域乘法,并且可以计算Q校验子。乘法器302还可以用于对以上针对多个磁盘故障的四种情况描述的方程执行各种乘法运算。可以通过将被乘数330设置为等于一,来允许数据通过乘法器。可以用选择器312在乘法器302的输出和比较器304的输出之间进行选择。在一个实施例中,选择器312是多路复用器(MUX)。
系统300还可以包括除法器314,其用于对以上针对多个磁盘故障的四种情况描述的方程执行除法运算。例如,在第四种情况中,用于再生Da的计算包括除法运算,其可以由除法器314执行。可以通过将除数340设置为等于1,来允许数据通过除法器314。当不需要执行除法运算时,可能希望进行这种设置。
如图3所示,系统300并行执行P和Q校验子的生成。系统300还可以执行其它所需要的乘法和除法运算。可以使用选择器316来选择所需要的系统输出。在一个实施例中,选择器316是多路复用器(MUX)。
图4示出根据本发明的一个实施例的用于生成奇偶校验码的方法,所述奇偶校验码用于协助一个或多个存储块中的数据恢复。在400处,基于对来自一个或多个存储块的数据的比较,计算第一奇偶校验码因子。在402处,将来自一个或多个存储块的所述数据与乘法因子相乘,以生成乘积。在404处,至少部分地基于所述乘积,计算第二奇偶校验码因子。在406处,在第一奇偶校验码因子和第二奇偶校验码因子之间进行选择。在一个实施例中,如上所述,第一奇偶校验码因子是P校验子,第二奇偶校验码因子是Q校验子。在一个实施例中,进一步将第二奇偶校验码因子除以除数。在一个实施例中,对第一奇偶校验码因子和第二奇偶校验码因子进行缓存。在一个实施例中,并行计算第一奇偶校验码因子和第二奇偶校验码因子。
虽然基于若干实施例对本发明进行了描述,但是本领域普通技术人员将会认识到本发明并不限于所描述的实施例,而是可以在所附权利要求的精神和范围内,通过进行修改和替换来实现本发明。因此,本说明书应被视为是示例性的而非限制性的。
权利要求
1.一种装置,包括第一比较器,用于基于来自一个或多个存储块的数据,生成第一奇偶校验码因子;乘法器,用于将来自所述一个或多个存储块的所述数据乘以乘法因子,以生成乘积;第二比较器,其耦接到所述乘法器,用于至少部分地基于所述乘积,生成第二奇偶校验码因子;以及选择器,其耦接到所述第一比较器和所述第二比较器,用于在所述第一奇偶校验码因子和所述第二奇偶校验码因子之间进行选择。
2.如权利要求1所述的装置,还包括除法器,其耦接到所述第二比较器,用于对所述第二奇偶校验码因子执行除法运算。
3.如权利要求1所述的装置,还包括第一缓冲器,其耦接到所述第一比较器,用于存储所述第一奇偶校验码因子。
4.如权利要求1所述的装置,还包括第二缓冲器,其耦接到所述第二比较器,用于存储所述第二奇偶校验码因子。
5.如权利要求1所述的装置,其中,所述第一比较器是XOR(异或)门。
6.如权利要求1所述的装置,其中,所述第二比较器是XOR(异或)门。
7.如权利要求1所述的装置,其中,所述乘法器执行伽罗华域乘法。
8.如权利要求1所述的装置,其中,所述第一比较器基于来自所述一个或多个存储块的数据,生成RAID(独立磁盘冗余阵列)校验子。
9.如权利要求8所述的装置,其中,所述第二比较器使用所述乘法器的输出,生成RAID(独立磁盘冗余阵列)校验子。
10.如权利要求9所述的装置,其中,所述第一比较器生成RAIDP-校验子,并且所述第二比较器生成RAID Q-校验子。
11.一种方法,包括基于对来自一个或多个存储块的数据的比较,计算第一奇偶校验码因子;将来自所述一个或多个存储块的所述数据乘以乘法因子,以生成乘积;至少部分地基于所述乘积,计算第二奇偶校验码因子;以及在所述第一奇偶校验码因子和所述第二奇偶校验码因子之间进行选择。
12.如权利要求11所述的方法,其中,计算第一奇偶校验码因子的步骤包括基于来自所述一个或多个存储块的数据,计算RAID(独立磁盘冗余阵列)校验子。
13.如权利要求11所述的方法,其中,计算第二奇偶校验码因子的步骤包括至少部分地基于所述乘积,计算RAID(独立磁盘冗余阵列)校验子。
14.如权利要求11所述的方法,其中,将来自所述一个或多个存储块的所述数据乘以乘法因子的步骤包括将来自所述一个或多个存储块的所述数据乘以伽罗华域被乘数。
15.如权利要求11所述的方法,还包括将所述第二奇偶校验码因子除以除数。
16.如权利要求11所述的方法,还包括将所述第一奇偶校验码因子存储到第一缓冲器中。
17.如权利要求11所述的方法,还包括将所述第二奇偶校验码因子存储到第二缓冲器中。
18.如权利要求11所述的方法,其中,并行计算所述第一奇偶校验码因子和所述第二奇偶校验码因子。
19.一种系统,包括一个或多个存储设备,用于存储数据;以及奇偶校验码生成器,其耦接到所述一个或多个存储设备,用于生成奇偶校验码以进行数据恢复,所述奇偶校验码生成器包括第一比较器,用于基于所述一个或多个存储设备中的数据,生成第一奇偶校验码因子;乘法器,用于将来自所述一个或多个存储设备的数据乘以乘法因子,以生成乘积;第二比较器,其耦接到所述乘法器,用于至少部分地基于所述乘积,生成第二奇偶校验码因子;以及选择器,其耦接到所述第一比较器和所述第二比较器,用于在所述第一奇偶校验码因子和所述第二奇偶校验码因子之间进行选择。
20.如权利要求19所述的系统,还包括除法器,其耦接到所述第二比较器,用于对所述第二奇偶校验码因子执行除法运算。
21.如权利要求19所述的系统,其中,所述乘法器执行伽罗华域乘法。
22.如权利要求19所述的系统,其中,所述第一比较器和所述第二比较器并行操作。
23.如权利要求19所述的系统,其中,所述第一比较器基于来自所述一个或多个存储设备的数据,生成RAID(独立磁盘冗余阵列)校验子。
24.如权利要求19所述的系统,其中,所述第二比较器至少部分地基于所述乘积,生成RAID(独立磁盘冗余阵列)校验子。
全文摘要
描述了一种用于校验子生成和数据恢复的方法和系统。该系统包括奇偶校验码生成器,其耦接到一个或多个存储设备,用于生成奇偶校验码以进行数据恢复。所述奇偶校验码生成器包括第一比较器,用于基于所述一个或多个存储设备中的数据,生成第一奇偶校验码因子;乘法器,用于将来自所述一个或多个存储设备的数据乘以乘法因子,以生成乘积;第二比较器,其耦接到所述乘法器,用于至少部分地基于所述乘积,生成第二奇偶校验码因子;以及选择器,用于在所述第一奇偶校验码因子和所述第二奇偶校验码因子之间进行选择。
文档编号G06F11/10GK101084486SQ200580044090
公开日2007年12月5日 申请日期2005年12月21日 优先权日2004年12月23日
发明者S·埃迪里苏里亚, G·特西, M·施密瑟尔, R·谢菲尔德 申请人:英特尔公司