專利名稱:用于校驗子生成以及數(shù)據(jù)恢復的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明的實施例涉及校驗子(syndrome)生成和數(shù)據(jù)恢復,更具體地,涉及PQ RAID校驗子生成和數(shù)據(jù)恢復。
背景技術:
隨著大規(guī)模存儲系統(tǒng)(例如光纖信道和吉比特以太網(wǎng)系統(tǒng))的使用的增多,這些系統(tǒng)受到多個磁盤故障的影響也在增大。磁盤容量的迅速增長也延長了在磁盤故障情況下的磁盤恢復時間。在重建故障磁盤中存儲的用戶數(shù)據(jù)和奇偶校驗碼(parity)信息期間,所述延長的恢復時間增加了隨后出現(xiàn)磁盤故障的可能性。另外,在導致數(shù)據(jù)丟失的磁盤故障后,由長時間未讀取的數(shù)據(jù)所引起的潛在扇區(qū)故障可能阻礙數(shù)據(jù)恢復。在需要高度數(shù)據(jù)集成的陣列中使用較便宜的磁盤,例如ATA(高級技術配件)磁盤,也增加了出現(xiàn)這種磁盤故障的可能性。
人們已經(jīng)開發(fā)出了可以從磁盤故障中恢復的RAID(獨立磁盤冗余陣列)結構。典型地,在冗余磁盤上保持來自多個磁盤的數(shù)據(jù)的XOR(異或)。在磁盤故障的情況下,通過對未發(fā)生故障的磁盤上的數(shù)據(jù)進行XOR來重建故障磁盤上的數(shù)據(jù)。將重建的數(shù)據(jù)寫入備用磁盤。然而,如果在重建完成前第二個磁盤出現(xiàn)故障,則數(shù)據(jù)將會丟失。最多能防止一個磁盤的數(shù)據(jù)丟失的傳統(tǒng)磁盤陣列在數(shù)據(jù)恢復方面是有欠缺的,尤其是對于大規(guī)模存儲系統(tǒng)而言更是如此。
在附圖中示例性地而非限制性地示出了本發(fā)明,其中,相同的參考標號指示相同的單元。
圖1是示出可以從多個磁盤故障中恢復的系統(tǒng)的框圖。
圖2是迦羅華域(Galois Field)的示例性值的表格。
圖3是示出根據(jù)本發(fā)明的實施例的系統(tǒng)的框圖。
圖4是示出根據(jù)本發(fā)明的實施例的方法的流程圖。
具體實施例方式
描述了用于校驗子生成和數(shù)據(jù)恢復的系統(tǒng)和方法的實施例。在以下描述中,闡述了多個具體細節(jié)。然而,應當清楚,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實現(xiàn)。在其它示例中,沒有詳細示出公知的電路、結構和技術,以免混淆對本文描述的理解。
在本說明書中,所涉及的“一個實施例”或“實施例”表示結合該實施例所描述的特定的特征、結構或特性包括在本發(fā)明的至少一個實施例中。因此,在本說明書的多處地方中出現(xiàn)的短語“一個實施例”或“實施例”不必都涉及相同的實施例。此外,特定的特征、結構和特性可以在一個或多個實施例中以適當?shù)姆绞浇M合。
參考圖1,其中的框圖示出了可以從多個磁盤故障中恢復的系統(tǒng)100。系統(tǒng)100包括一個或多個用于存儲數(shù)據(jù)的存儲塊(例如102-124)以及兩個或多個用于存儲奇偶校驗碼或校驗子信息的存儲塊(例如130-144)。在一個實施例中,系統(tǒng)100是RAID(獨立磁盤冗余陣列)系統(tǒng)。在一個實施例中,生成和存儲了兩個校驗子P校驗子和Q校驗子。通過對于條帶(stripe)計算奇偶校驗碼來生成P校驗子。通過使用迦羅華域乘法來生成Q校驗子。用于數(shù)據(jù)恢復的再生方案同時使用了迦羅華域乘法和除法。
以下是用于為具有n個數(shù)據(jù)磁盤和兩個校驗磁盤的存儲陣列生成P和Q的方程P=D0D1D2......Dn-1(方程1)Q=g0*D0g1*D1g2*D2......gn-1*Dn-1(方程2)P是使用(XOR)運算對于條帶所計算出的數(shù)據(jù)(D)的簡單奇偶校驗碼。Q需要使用迦羅華域乘法器(g)進行的乘法(*)。
以下方程示出當更新數(shù)據(jù)塊Da時P和Q的生成P(新)=P(舊)Da(舊)Da(新)
Q(新)=Q(舊)ga*Da(舊)ga*Da(新)有四種多個磁盤故障的情況需要恢復。在第一種情況下,P和Q出現(xiàn)故障。在這種情況下,可以使用如上所示的方程1和2來再生P和Q。
在第二種情況下,Q和數(shù)據(jù)磁盤(Da)出現(xiàn)故障。在這種情況下,可以經(jīng)由方程1,使用P和剩余的數(shù)據(jù)磁盤來再生Da。然后,可以使用方程2來再生Q。
在第三種情況下,P和數(shù)據(jù)磁盤(Da)出現(xiàn)故障。在這種情況下,可以使用Q、剩余的數(shù)據(jù)磁盤和以下方程來再生DaDa=(QQa)*g-a=(QQa)*g255-a,其中Qa=g0D0g1D1...ga-1Da-1ga+1Da+1...gn-1Dn-1在再生Da之后,可以使用方程1來再生P。
在第四種情況下,兩個數(shù)據(jù)磁盤(Da和Db)出現(xiàn)故障。在這種情況下,可以使用P和Q、剩余的數(shù)據(jù)磁盤和以下方程來再生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以下是在上述情況下從磁盤故障中恢復的實例。在以下實例中,假設數(shù)據(jù)路徑的寬度為一字節(jié)或8比特。因此,使用迦羅華域GF(28)??梢詫τ趯挾榷嘤诨蛏儆谝蛔止?jié)的數(shù)據(jù)路徑來實現(xiàn)本發(fā)明,并且可以使用更大或更小的迦羅華域。
可以用以下方程來對兩個8比特元素(b和c)進行相乘,以產(chǎn)生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以下實例示出了對于具有四個數(shù)據(jù)磁盤和兩個奇偶校驗碼磁盤的磁盤陣列如何生成P和Q奇偶校驗碼。假設每個數(shù)據(jù)塊包含一個數(shù)據(jù)字節(jié)。用Di表示磁盤I(i=0、1、2、3)中所包含的數(shù)據(jù)??紤]以下數(shù)據(jù)條帶D0=1011 0100,D1=0010 1100,D2=1100 0110且D3=1101 0101。
從而,可以使用方程1生成P,如下P=D0D1D2D3=10110100001011001100011011010101=10001011可以使用方程2生成Q,如下Q=g0D0g1D1g2D2g3D3根據(jù)圖2中的表格,g0=00000001,g1=00000010,g2=00000100且g3=00001000。
因此,Q=00000001*1011010000000010*0010110000000100*1100011000001000*11010101=10110100010110000011111111100110=00110101以下實例示出了如何使用以上生成的陣列從兩個磁盤故障中恢復。在第一種情況下,P和Q出現(xiàn)故障。在這種情況下,使用以上所示的方程1和2來再生P和Q。在第二種情況下,Q和數(shù)據(jù)磁盤(Da)出現(xiàn)故障。在這種情況下,可以經(jīng)由方程1,使用P和剩余的數(shù)據(jù)磁盤再生Da。然后,可以使用方程2再生Q。在第三種情況下,P和數(shù)據(jù)磁盤(Da)出現(xiàn)故障。在這種情況下,可以使用Q、剩余的數(shù)據(jù)磁盤和以下方程來再生DaDa=(QQa)*g-a=(QQa)*g255-a,其中Qa=g0D0g1D1...ga-1Da-1ga+1Da+1...gn-1Dn-1例如,假設磁盤2出現(xiàn)故障。那么,D2=(QQ2)·g253=(Qg0D0g1D1g3D3)·g253=(0011010100000001*1011010000000010*0010110000001000)*g253使用圖2中的表格,g253=01000111。因此,D2=(00110101101101000101100011100110)*01000111=00111111*01000111=11000110因為此時所有數(shù)據(jù)塊都可用,所以可以使用方程1來再生P。
在第四種情況下,兩個數(shù)據(jù)磁盤(Da和Db)出現(xiàn)故障。在這種情況下,可以使用P和Q、剩余的數(shù)據(jù)磁盤和以下方程來再生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出現(xiàn)故障。那么,D1=(g-1·(QQ13)g3-1*(PP13))/(g3-100000001)=(g254*(QQ13)g2*(PP13))/(g200000001)QQ13=0011010100000001*1011010000000100*11000110=001101011011010000111111=10111110PP13=100010111011010011000110=11111001根據(jù)圖2中的表格,g254=10001110且g2=00000100。因此,D1=((10001110*10111110)(00000100*11111001))/(0000010000000001)=(0101111111000011)/(00000101)=(10111100)/(00000101)=00101100D3=D1(PP13)=0010110011111001=11010101圖3是根據(jù)本發(fā)明的實施例的系統(tǒng)300的框圖。系統(tǒng)300包括乘法器302以及一個或多個比較器,例如304和306。在一個實施例中,一個或多個比較器是XOR(異或)門。系統(tǒng)300還可以包括一個或多個緩沖器,例如308和310。緩沖器308存儲比較器306的輸出。比較器306將從圖1所示的存儲塊中讀取的數(shù)據(jù)320與緩沖器308的輸出進行比較。由此,比較器306可以用來計算上述的P校驗子,其為對于條帶的奇偶校驗碼。
乘法器302將被乘數(shù)330與從圖1所示的存儲塊中讀取的數(shù)據(jù)320相乘。在一個實施例中,被乘數(shù)330是例如圖2的表格200所示的迦羅華域。由比較器304將乘法器302的輸出與緩沖器310的輸出進行比較。由此,可以執(zhí)行迦羅華域乘法,并且可以計算Q校驗子。乘法器302還可以用于對以上針對多個磁盤故障的四種情況描述的方程執(zhí)行各種乘法運算??梢酝ㄟ^將被乘數(shù)330設置為等于一,來允許數(shù)據(jù)通過乘法器??梢杂眠x擇器312在乘法器302的輸出和比較器304的輸出之間進行選擇。在一個實施例中,選擇器312是多路復用器(MUX)。
系統(tǒng)300還可以包括除法器314,其用于對以上針對多個磁盤故障的四種情況描述的方程執(zhí)行除法運算。例如,在第四種情況中,用于再生Da的計算包括除法運算,其可以由除法器314執(zhí)行??梢酝ㄟ^將除數(shù)340設置為等于1,來允許數(shù)據(jù)通過除法器314。當不需要執(zhí)行除法運算時,可能希望進行這種設置。
如圖3所示,系統(tǒng)300并行執(zhí)行P和Q校驗子的生成。系統(tǒng)300還可以執(zhí)行其它所需要的乘法和除法運算??梢允褂眠x擇器316來選擇所需要的系統(tǒng)輸出。在一個實施例中,選擇器316是多路復用器(MUX)。
圖4示出根據(jù)本發(fā)明的一個實施例的用于生成奇偶校驗碼的方法,所述奇偶校驗碼用于協(xié)助一個或多個存儲塊中的數(shù)據(jù)恢復。在400處,基于對來自一個或多個存儲塊的數(shù)據(jù)的比較,計算第一奇偶校驗碼因子。在402處,將來自一個或多個存儲塊的所述數(shù)據(jù)與乘法因子相乘,以生成乘積。在404處,至少部分地基于所述乘積,計算第二奇偶校驗碼因子。在406處,在第一奇偶校驗碼因子和第二奇偶校驗碼因子之間進行選擇。在一個實施例中,如上所述,第一奇偶校驗碼因子是P校驗子,第二奇偶校驗碼因子是Q校驗子。在一個實施例中,進一步將第二奇偶校驗碼因子除以除數(shù)。在一個實施例中,對第一奇偶校驗碼因子和第二奇偶校驗碼因子進行緩存。在一個實施例中,并行計算第一奇偶校驗碼因子和第二奇偶校驗碼因子。
雖然基于若干實施例對本發(fā)明進行了描述,但是本領域普通技術人員將會認識到本發(fā)明并不限于所描述的實施例,而是可以在所附權利要求的精神和范圍內(nèi),通過進行修改和替換來實現(xiàn)本發(fā)明。因此,本說明書應被視為是示例性的而非限制性的。
權利要求
1.一種裝置,包括第一比較器,用于基于來自一個或多個存儲塊的數(shù)據(jù),生成第一奇偶校驗碼因子;乘法器,用于將來自所述一個或多個存儲塊的所述數(shù)據(jù)乘以乘法因子,以生成乘積;第二比較器,其耦接到所述乘法器,用于至少部分地基于所述乘積,生成第二奇偶校驗碼因子;以及選擇器,其耦接到所述第一比較器和所述第二比較器,用于在所述第一奇偶校驗碼因子和所述第二奇偶校驗碼因子之間進行選擇。
2.如權利要求1所述的裝置,還包括除法器,其耦接到所述第二比較器,用于對所述第二奇偶校驗碼因子執(zhí)行除法運算。
3.如權利要求1所述的裝置,還包括第一緩沖器,其耦接到所述第一比較器,用于存儲所述第一奇偶校驗碼因子。
4.如權利要求1所述的裝置,還包括第二緩沖器,其耦接到所述第二比較器,用于存儲所述第二奇偶校驗碼因子。
5.如權利要求1所述的裝置,其中,所述第一比較器是XOR(異或)門。
6.如權利要求1所述的裝置,其中,所述第二比較器是XOR(異或)門。
7.如權利要求1所述的裝置,其中,所述乘法器執(zhí)行伽羅華域乘法。
8.如權利要求1所述的裝置,其中,所述第一比較器基于來自所述一個或多個存儲塊的數(shù)據(jù),生成RAID(獨立磁盤冗余陣列)校驗子。
9.如權利要求8所述的裝置,其中,所述第二比較器使用所述乘法器的輸出,生成RAID(獨立磁盤冗余陣列)校驗子。
10.如權利要求9所述的裝置,其中,所述第一比較器生成RAIDP-校驗子,并且所述第二比較器生成RAID Q-校驗子。
11.一種方法,包括基于對來自一個或多個存儲塊的數(shù)據(jù)的比較,計算第一奇偶校驗碼因子;將來自所述一個或多個存儲塊的所述數(shù)據(jù)乘以乘法因子,以生成乘積;至少部分地基于所述乘積,計算第二奇偶校驗碼因子;以及在所述第一奇偶校驗碼因子和所述第二奇偶校驗碼因子之間進行選擇。
12.如權利要求11所述的方法,其中,計算第一奇偶校驗碼因子的步驟包括基于來自所述一個或多個存儲塊的數(shù)據(jù),計算RAID(獨立磁盤冗余陣列)校驗子。
13.如權利要求11所述的方法,其中,計算第二奇偶校驗碼因子的步驟包括至少部分地基于所述乘積,計算RAID(獨立磁盤冗余陣列)校驗子。
14.如權利要求11所述的方法,其中,將來自所述一個或多個存儲塊的所述數(shù)據(jù)乘以乘法因子的步驟包括將來自所述一個或多個存儲塊的所述數(shù)據(jù)乘以伽羅華域被乘數(shù)。
15.如權利要求11所述的方法,還包括將所述第二奇偶校驗碼因子除以除數(shù)。
16.如權利要求11所述的方法,還包括將所述第一奇偶校驗碼因子存儲到第一緩沖器中。
17.如權利要求11所述的方法,還包括將所述第二奇偶校驗碼因子存儲到第二緩沖器中。
18.如權利要求11所述的方法,其中,并行計算所述第一奇偶校驗碼因子和所述第二奇偶校驗碼因子。
19.一種系統(tǒng),包括一個或多個存儲設備,用于存儲數(shù)據(jù);以及奇偶校驗碼生成器,其耦接到所述一個或多個存儲設備,用于生成奇偶校驗碼以進行數(shù)據(jù)恢復,所述奇偶校驗碼生成器包括第一比較器,用于基于所述一個或多個存儲設備中的數(shù)據(jù),生成第一奇偶校驗碼因子;乘法器,用于將來自所述一個或多個存儲設備的數(shù)據(jù)乘以乘法因子,以生成乘積;第二比較器,其耦接到所述乘法器,用于至少部分地基于所述乘積,生成第二奇偶校驗碼因子;以及選擇器,其耦接到所述第一比較器和所述第二比較器,用于在所述第一奇偶校驗碼因子和所述第二奇偶校驗碼因子之間進行選擇。
20.如權利要求19所述的系統(tǒng),還包括除法器,其耦接到所述第二比較器,用于對所述第二奇偶校驗碼因子執(zhí)行除法運算。
21.如權利要求19所述的系統(tǒng),其中,所述乘法器執(zhí)行伽羅華域乘法。
22.如權利要求19所述的系統(tǒng),其中,所述第一比較器和所述第二比較器并行操作。
23.如權利要求19所述的系統(tǒng),其中,所述第一比較器基于來自所述一個或多個存儲設備的數(shù)據(jù),生成RAID(獨立磁盤冗余陣列)校驗子。
24.如權利要求19所述的系統(tǒng),其中,所述第二比較器至少部分地基于所述乘積,生成RAID(獨立磁盤冗余陣列)校驗子。
全文摘要
描述了一種用于校驗子生成和數(shù)據(jù)恢復的方法和系統(tǒng)。該系統(tǒng)包括奇偶校驗碼生成器,其耦接到一個或多個存儲設備,用于生成奇偶校驗碼以進行數(shù)據(jù)恢復。所述奇偶校驗碼生成器包括第一比較器,用于基于所述一個或多個存儲設備中的數(shù)據(jù),生成第一奇偶校驗碼因子;乘法器,用于將來自所述一個或多個存儲設備的數(shù)據(jù)乘以乘法因子,以生成乘積;第二比較器,其耦接到所述乘法器,用于至少部分地基于所述乘積,生成第二奇偶校驗碼因子;以及選擇器,用于在所述第一奇偶校驗碼因子和所述第二奇偶校驗碼因子之間進行選擇。
文檔編號G06F11/10GK101084486SQ200580044090
公開日2007年12月5日 申請日期2005年12月21日 優(yōu)先權日2004年12月23日
發(fā)明者S·埃迪里蘇里亞, G·特西, M·施密瑟爾, R·謝菲爾德 申請人:英特爾公司