專利名稱:容許存儲系統(tǒng)中的多個存儲設(shè)備故障的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,并具體地涉及盤陣列系統(tǒng)。更具體地,本發(fā)明涉及用于構(gòu)造盤陣列系統(tǒng)的方法,所述的盤陣列系統(tǒng)容許故障存儲設(shè)備的多種組合,而不會丟失數(shù)據(jù)。
背景技術(shù):
計算機系統(tǒng)使用例如奇偶校驗計算的數(shù)據(jù)冗余方案來防止存儲設(shè)備上的數(shù)據(jù)丟失。通過計算跨一些同樣的存儲設(shè)備(也被稱為數(shù)據(jù)驅(qū)動器)的特定字長的數(shù)據(jù)(也被稱為數(shù)據(jù)單元)的函數(shù)而計算冗余值。這種冗余的一個示例是被計算為數(shù)據(jù)的二進(jìn)制和的異或(XOR)奇偶校驗。
下文中被稱為奇偶校驗值的冗余值被存儲于多個存儲設(shè)備上被稱為奇偶校驗單元的位置。在存儲設(shè)備故障致使奇偶校驗單元值丟失的情況下,能夠從存儲于一個或多個數(shù)據(jù)單元上的數(shù)據(jù)中重新生成奇偶校驗值。類似地,在存儲設(shè)備故障致使數(shù)據(jù)單元值丟失的情況下,能夠從存儲于一個或多個奇偶校驗單元和可能的一個或多個其他無故障數(shù)據(jù)單元上的值中重新生成數(shù)據(jù)值。
在獨立盤冗余陣列(RAID)系統(tǒng)中,跨盤驅(qū)動器將數(shù)據(jù)值和相關(guān)的奇偶校驗值劃為條。在將硬盤驅(qū)動器管理為單個邏輯直接(DASD)或連接網(wǎng)絡(luò)(NASD)的存儲設(shè)備的存儲子系統(tǒng)中,在所述子系統(tǒng)的陣列控制器中實現(xiàn)RAID邏輯。也可在主系統(tǒng)中以軟件或網(wǎng)絡(luò)存儲子系統(tǒng)中的某種其他設(shè)備的形式實現(xiàn)這種RAID邏輯。
盤陣列,特別是RAID-3和RAID-5盤陣列,已經(jīng)成為對于高可用的和可靠的盤子系統(tǒng)的可接受的設(shè)計。在這種陣列中,在冗余盤(奇偶校驗驅(qū)動器)上維護(hù)來自一些盤的數(shù)據(jù)的XOR。當(dāng)一個盤故障時,能夠通過對幸存盤上的數(shù)據(jù)和奇偶校驗進(jìn)行異或并且將此數(shù)據(jù)寫入備用盤而重新構(gòu)造所述盤上的數(shù)據(jù)。如果在完成重新構(gòu)造之前第二個盤故障,則數(shù)據(jù)丟失。
RAID-6是RAID-5的擴展,其防止兩個驅(qū)動器的故障。存在已提出容許兩個驅(qū)動器故障的許多其他的RAID算法例如,Reed-Solomon[參考I.S.Reed等人的“對于特定的有限領(lǐng)域的多項式代碼(Polynomial codes over certain finite fields)”,出自1960年的“工業(yè)和應(yīng)用數(shù)學(xué)社團(tuán)的雜志(Journal of the Society for Industrial andApplied Mathematics)”,卷8,300-304頁]、Blaum-Roth[參考M.Blaum等人的“在最低密度的MDS代碼上(On lowest density MDScodes)”,出自1999年的“IEEE關(guān)于信息理論的學(xué)報(IEEETransactions on Information Theory)”,卷45,46-59頁]、EvenOdd[參考M.Blaum等人的“EVENODD用于容許RAID體系結(jié)構(gòu)中的雙盤故障的有效方案(EVENODDan efficient scheme for toleratingdouble disk failures in RAID architecture)”,出自1995年的“IEEE關(guān)于計算機的學(xué)報(IEEE Transactions on Computers)”,卷44,192-202頁]、Row-Diagonal Parity[參考P.Corbett等人的“用于啟用對存儲陣列中的雙故障的恢復(fù)的行-對角線奇偶校驗技術(shù)(Row-Diagonal parity technique for enabling recovery from doublefailures in a storage array)”(美國專利申請US 20030126523)]、XCode[參考L.Xu等人的“X-Code具有最佳編碼的MDS陣列代碼(X-CodeMDS array codes with optimal encoding)”,出自1999年的“IEEE關(guān)于信息理論的學(xué)報(IEEE Transactions on Information Theory)”,272-276頁]、ZZS[參考G.V.Zaitsev等人的“用于校正字節(jié)錯誤最小檢查密度代碼(Minimum-check-density codes for correcting bytesof errors)”,出自1983年的“信息傳輸中的問題(Problems inInformation Transmission)”,卷19,29-37頁]、BCP[參考S.Baylor等人的“用于提供防止多設(shè)備系統(tǒng)中的雙設(shè)備故障的容錯的有效方法(Efficient method forproviding fault tolerance against double devicefailures in multiple device systems)”(美國專利US 5,862,158)]、LSI[參考A.Wilner等人的“可容許多驅(qū)動器故障的raid系統(tǒng)(Multipledrive failure tolerant raid system)”(美國專利US 6,327,672 B1)]、Samsung[參考T-D Han等人的“用于在外部存儲子系統(tǒng)及其裝置中存儲奇偶校驗并重建故障盤的數(shù)據(jù)內(nèi)容的方法(Method for storingparity and rebuilding data contents of failed disks in an externalstorage subsystem and apparatus thereof)”,美國專利6158017]以及Nanda[參考S.Nanda等人的“用于在盤陣列中的盤容錯的方法和系統(tǒng)(Method and system for disk fault tolerance in a disk array)”],[參考美國專利申請US 2004/0078642 A1]。已存在防止多驅(qū)動器故障的一些額外擴展例如,Reed-Solomon[參考如上]和EO+[參考M.Blaum等人的“具有獨立奇偶校驗符號的MDS陣列代碼(MDS array codeswith independent parity symbols)”,出自1996年的“IEEE關(guān)于信息理論的學(xué)報(IEEE Transactions on Information Theory)”,卷42,529-542頁]。
更近地,已經(jīng)設(shè)計了存儲系統(tǒng),其中,存儲系統(tǒng)是網(wǎng)絡(luò)中的節(jié)點(不是簡單的盤驅(qū)動器)。這種系統(tǒng)也可將RAID技術(shù)用于數(shù)據(jù)冗余和可靠性。本發(fā)明也適用于這些系統(tǒng)。盡管使用了盤陣列例示了此處的描述,但對于本領(lǐng)域的技術(shù)人員,怎樣將本發(fā)明擴展到網(wǎng)絡(luò)節(jié)點應(yīng)用或用除了盤之外的存儲設(shè)備構(gòu)建的其他系統(tǒng)應(yīng)該很清楚。
盡管已經(jīng)證明常規(guī)的RAID技術(shù)是有用的,但還想要提供額外的改進(jìn)。如通過已使用的或已提出的各種常規(guī)的RAID技術(shù)所能夠看出的,對于計算機行業(yè)對存儲子系統(tǒng)提出的各種需求,它們均不是完美的解決方案。許多常規(guī)的系統(tǒng)是復(fù)雜的,需要大量的計算機開銷。此外,許多常規(guī)的系統(tǒng)對于特定的操作具有過高的盤IO需求。其他系統(tǒng)需要系統(tǒng)中的大量驅(qū)動器,而對更多驅(qū)動器的使用會降低整體的系統(tǒng)可靠性。許多常規(guī)的代碼僅容許雙故障。其他代碼具有對代碼參數(shù)的約束,所述的約束在真實系統(tǒng)中是不切實際的或者會導(dǎo)致性能損失。此外,容許T個故障(即,T個驅(qū)動器故障的所有可能組合)的許多常規(guī)代碼無法容許大于T個驅(qū)動器故障的任何組合。能夠容許超過T個故障的額外組合的常規(guī)的RAID技術(shù)比那些做不到這樣的RAID技術(shù)具有更高的可靠性。
因此,所需要的是,用于使存儲系統(tǒng)中的故障能恢復(fù)的系統(tǒng)、計算機程序產(chǎn)品和相關(guān)聯(lián)的方法,其是簡單的,能夠處理許多故障情況以及具有合理的性能和參數(shù)的靈活性。迄今為止,對于這種解決方案的需要仍是未能滿足的。
發(fā)明內(nèi)容
本發(fā)明滿足了這種需要,并且提供了用于使用水平和垂直奇偶校驗而容許存儲系統(tǒng)中的多個存儲設(shè)備故障的系統(tǒng)、計算機程序產(chǎn)品和相關(guān)聯(lián)的方法(這里將它們?nèi)w稱為“所述系統(tǒng)”或“本系統(tǒng)”),從而使存儲子系統(tǒng)所需的操作能有效實現(xiàn)。
本發(fā)明的首要特征是特定數(shù)據(jù)和奇偶校驗布置,其結(jié)合了來自對于存儲系統(tǒng)提出的兩個基本系列的代碼中的特征。在對于存儲系統(tǒng)的許多擦除代碼中,所有奇偶校驗值被存儲于與所有數(shù)據(jù)分離的盤上,從所述所有數(shù)據(jù)中計算所述奇偶校驗值。例如,這是Reed-Solomon、Blaum-Roth、Even-Odd、Row-Diagonal Parity、LS1(所有均參考如上)以及許多其他示例中的情況。在下文中將這種代碼稱為“水平”代碼,因為用與數(shù)據(jù)值的水平關(guān)系放置奇偶校驗值。在大多數(shù)其他擦除代碼中,所有的奇偶校驗值與數(shù)據(jù)一起被存儲于盤上,如對于X-code、ZZS和BCP代碼的情況。在下文中將這種代碼稱為“垂直”代碼,因為用與數(shù)據(jù)值的垂直關(guān)系(在相同盤上垂直地對準(zhǔn))放置奇偶校驗值。本發(fā)明將一些奇偶校驗值放置在與從中計算奇偶校驗值的數(shù)據(jù)分離的盤上(以水平關(guān)系),以及將額外的奇偶校驗值與數(shù)據(jù)一起放置在盤上(以垂直關(guān)系)。在下文中,本發(fā)明的代碼被稱為“水平-垂直”代碼或簡短地稱為“HoVer”代碼。這種代碼被稱為具有“HoVer數(shù)據(jù)/奇偶校驗布置”或簡短地稱為“HoVer布置”。
Samsung[參考T-D Han等人的“用于在外部存儲子系統(tǒng)及其裝置中存儲奇偶校驗并重建故障盤的數(shù)據(jù)內(nèi)容的方法(Method forstoring parity and rebuilding data contents of failed disks in anexternal storage subsystem and apparatus thereof)”,美國專利6158017]中的代碼之一的DH2代碼具有與本發(fā)明相同的HoVer性質(zhì)。不過,它具有不適用于本發(fā)明的三個局限。第一,它僅能夠容許雙盤故障,而本發(fā)明具有容許三個盤故障的所有組合的至少兩個結(jié)構(gòu)以及容許四個盤故障的所有組合的一個結(jié)構(gòu)。第二,DH2代碼不能容許三個盤故障的任何組合,而對于本發(fā)明的能容許雙故障的實施例的設(shè)計參數(shù)的特定選擇能夠容許三個故障的一些組合。更一般地,對于本發(fā)明的能容許T個故障的實施例,一些參數(shù)選擇可容許T+1或更多故障的特定組合。第三,DH2代碼被限制為p+1個盤和p-2行數(shù)據(jù)以及一行奇偶校驗,其中p是素數(shù)。本發(fā)明的能容許雙故障實施例的優(yōu)選實施例對陣列大小沒有限制,并放寬了對行的數(shù)量的限制。
如之前的段落中提到的,本發(fā)明的另一特征是設(shè)計參數(shù)的靈活性。大多數(shù)擦除代碼將盤上的數(shù)據(jù)劃分為塊或單元,并將這些單元用作為用于計算奇偶校驗值的構(gòu)建塊。我們將每一盤上數(shù)據(jù)單元的數(shù)量稱為數(shù)據(jù)行的數(shù)量。數(shù)據(jù)行的數(shù)量越大,當(dāng)盤丟失時包括用于重構(gòu)或恢復(fù)的成本的特定操作就越昂貴。這種昂貴的成本既存在于讀恢復(fù)數(shù)據(jù)和奇偶校驗所需的IO的數(shù)量和大小,也存在于用于重新計算丟失數(shù)據(jù)的XOR或其他數(shù)學(xué)公式。在本領(lǐng)域的當(dāng)前狀態(tài)中,當(dāng)數(shù)據(jù)盤的數(shù)量增加時,行的數(shù)量也增加。更明確地,當(dāng)前系統(tǒng)需要行數(shù)量的固定關(guān)系作為數(shù)據(jù)盤的數(shù)量的函數(shù)(如例如以上參考的X-code、ZZS、BCP的垂直代碼或者以上參考的Samsung代碼中),或者行數(shù)量的下限作為數(shù)據(jù)盤的數(shù)量的函數(shù)(如以上參考的水平代碼Blaum-Roth、EvenOdd或Row-Diagonal Parity代碼中)。本發(fā)明具有更想要的特征由數(shù)據(jù)盤的數(shù)量的函數(shù)限定行數(shù)量的上限。即,對于固定數(shù)量的數(shù)據(jù)盤,能夠?qū)⑿袛?shù)量從最大值向下調(diào)節(jié)為任何其他值。這種向下調(diào)節(jié)或多或少地降低了代碼的整體效率(或速率),但提高了特定的性能和可靠性特征。
Nanda代碼[參考S.Nanda等人的“用于在盤陣列中的盤故障容許的方法和系統(tǒng)(Method and system for disk fault tolerance in a diskarray)”(美國專利申請US 2004/0078642 A1)]具有與HoVer布置類似的數(shù)據(jù)/奇偶校驗布置。此代碼對參數(shù)(行和盤的數(shù)量)幾乎沒有限制,不過它在一些方面與本發(fā)明不同。第一,它僅應(yīng)用到能容許雙故障的情況。第二,它在對每一奇偶校驗單元計算有貢獻(xiàn)的數(shù)據(jù)單元的數(shù)量上有很大變化,例如,在一些情況下,僅有一個數(shù)據(jù)單元涉及給定的奇偶校驗單元(即,數(shù)據(jù)單元的鏡像)。這種大的變化能夠?qū)е麓鎯ο到y(tǒng)中不想要的性能不平衡。第三,本發(fā)明施加限制h+v≤2=T,而Nanda代碼具有兩個水平奇偶校驗條(h=2)和一個垂直奇偶校驗行(v=1),以致這兩個值的和超過了故障容許值2。最后,比起本發(fā)明的相應(yīng)的容許雙故障的實施例,Nanda代碼的空間有效性顯著地較差。
在本發(fā)明的再一個特征中,陣列大小能夠擴展超過最小值,而不會改變計算機開銷的復(fù)雜性。事實上,這是行數(shù)量的靈活性的另一視點。一般而言,本系統(tǒng)對于固定數(shù)量的行能夠支持超過特定數(shù)量的任何數(shù)量的數(shù)據(jù)盤,所述的特定數(shù)量是行數(shù)量的函數(shù)。擴展陣列的大小不會顯著地增加恢復(fù)的總體成本,而是提供了實現(xiàn)的靈活性。此外,通過一些實施例,通過容許超過代碼的最小故障容許的故障的特定組合,對于固定行數(shù)的大量盤能夠提高可靠性。在以下的詳細(xì)描述中給出了示例。
本發(fā)明的特征在于,存在能夠容許對于某個參數(shù)T盡量多的T個故障的所有組合的實施例。本發(fā)明的另一特征在于,存在實施例,使得在恰好T個奇偶校驗單元中冗余地存儲每個數(shù)據(jù)單元;即,對于每個數(shù)據(jù)單元的數(shù)據(jù)出度(out-degree)恰好是T。這是對于容許T個故障的所有組合的任何代碼的最佳值。因此,本發(fā)明具有實施例,其具有在高故障容許的代碼之中的最佳更新IO需求。本系統(tǒng)的其他實施例也能夠放寬此限制。
通過參考以下描述、權(quán)利要求和附圖,將更加詳細(xì)地描述本發(fā)明的各種特征和實現(xiàn)它們的方式,在附圖中,在適當(dāng)?shù)牡胤街貜?fù)使用標(biāo)號,以表示所引用項目之間的對應(yīng)性,并且在附圖中圖1是其中執(zhí)行用于實現(xiàn)存儲冗余方案的系統(tǒng)和相關(guān)聯(lián)方法的示例性環(huán)境的示意圖,在所述方案中可部署HoVer數(shù)據(jù)/奇偶校驗布置;圖2是說明了示出圖1的系統(tǒng)中的二維數(shù)據(jù)和奇偶校驗HoVer布置的示例性布置的圖;圖3是表示了能夠容許兩個故障的本系統(tǒng)的示例性實施例的圖;圖4是表示了對于圖3的系統(tǒng)的兩個故障情形和重構(gòu)路徑的圖;圖5是表示了圖3中能夠容許兩個故障的系統(tǒng)的可選實施例的圖;圖6是表示了對于圖5的系統(tǒng)的兩個故障情形和重構(gòu)路徑的圖;圖7是表示了能夠容許三個盤故障的本系統(tǒng)的一示例性實施例的圖;圖8是表示了能夠容許三個盤故障但比圖7的實施例少一個垂直奇偶校驗行的本系統(tǒng)的可選示例性實施例的圖;以及圖9是表示了能夠容許四個盤故障的本系統(tǒng)的一示例性實施例的圖。
具體實施例方式
圖1說明了示例性的環(huán)境(數(shù)據(jù)存儲系統(tǒng)100),在所述環(huán)境中,系統(tǒng)和相關(guān)聯(lián)的方法(共同被稱為“系統(tǒng)”100)能夠被用于實現(xiàn)具有水平和垂直奇偶校驗層的故障容許存儲系統(tǒng)。主計算機115連接于系統(tǒng)100的陣列控制器120。主計算機115將數(shù)據(jù)存儲于N=n+h個盤驅(qū)動器的陣列125中,所述的陣列包括n個數(shù)據(jù)和垂直奇偶校驗盤驅(qū)動器盤驅(qū)動器0(130)、盤驅(qū)動器1(135)、盤驅(qū)動器2(140)直到盤驅(qū)動器n-1(145)(共同被稱為盤驅(qū)動器150),以及還包括h個水平奇偶校驗盤驅(qū)動器盤驅(qū)動器0(155)、盤驅(qū)動器1(160)直到盤驅(qū)動器n-1(165)(共同被稱為水平奇偶校驗驅(qū)動器170)。垂直奇偶校驗連同主數(shù)據(jù)被存儲于n個數(shù)據(jù)和垂直奇偶校驗盤驅(qū)動器150中。水平奇偶校驗被存儲于h個水平奇偶校驗盤驅(qū)動器170中。
進(jìn)一步參考圖2,示出了總體的數(shù)據(jù)布置,即對于圖1的數(shù)據(jù)存儲系統(tǒng)100的垂直奇偶校驗和水平奇偶校驗。選擇了每一數(shù)據(jù)和垂直奇偶校驗盤驅(qū)動器150的一部分,其包括數(shù)據(jù)和垂直奇偶校驗條210;選擇了每一水平奇偶校驗盤驅(qū)動器170的一部分,其包括水平奇偶校驗條220和未使用單元250。除了未使用部分之外,來自這兩組盤驅(qū)動器的這些部分共同地構(gòu)成條紋200,或系統(tǒng)100的一個實例。在下文中,條紋200的數(shù)據(jù)部分被稱為數(shù)據(jù)子條紋。在下文中,條紋中的每一盤驅(qū)動器的部分被稱為條。在下文中,數(shù)據(jù)和垂直奇偶校驗條的數(shù)據(jù)部分被稱為數(shù)據(jù)子條。在下文中,數(shù)據(jù)和垂直奇偶校驗條的垂直奇偶校驗部分被稱為垂直奇偶校驗子條。水平奇偶校驗條220也包含未使用部分250;這種未使用部分可被用于保存來自本發(fā)明的同一實例的額外數(shù)據(jù)或奇偶校驗值,或者來自本發(fā)明的另一實例的額外數(shù)據(jù)或奇偶校驗,或者可被用于其他系統(tǒng)信息,或者根本不使用。將每一條進(jìn)一步劃分為相同數(shù)量r+v的相同大小(例如字節(jié)、字、塊等等)的單元。將每一數(shù)據(jù)子條的單元進(jìn)一步指定為標(biāo)注為X(i,j)(0≤i≤r-1,0≤j ≤n-1)的數(shù)據(jù)單元,其中每個數(shù)據(jù)子條存在r個這樣的數(shù)據(jù)單元;垂直奇偶校驗子條的單元為V(i,j)(0≤i≤v-1,0≤j≤h-1),其中每個垂直奇偶校驗子條存在v個這樣的垂直奇偶校驗單元;水平奇偶校驗子條的單元為H(i,j)(0≤i≤r-1,0≤j≤h-1),其中每個水平奇偶校驗條存在r個這樣的垂直奇偶校驗單元。在此示例性實施例中共存在r·v個未使用單元。在前r行中水平對準(zhǔn)的數(shù)據(jù)和水平奇偶校驗單元構(gòu)成r個數(shù)據(jù)和水平奇偶校驗行230;在接下來v行中水平對準(zhǔn)的垂直奇偶校驗單元構(gòu)成v個垂直奇偶校驗行(除未使用單元之外)。本發(fā)明施加了額外的限制h+v≤T,其中T是代碼的故障容許。此限制允許實現(xiàn)在這樣的代碼中具有最大效率的HoVer數(shù)據(jù)/奇偶校驗布置。
其他實施例可將額外的數(shù)據(jù)或奇偶校驗單元放置于水平奇偶校驗條的未使用部分中。此外,其他實施例可首先放置垂直奇偶校驗行,或可改變?nèi)魏螚l的行的序列,或可將一些垂直或水平奇偶校驗單元轉(zhuǎn)換為未使用單元(例如,通過固定這些單元的內(nèi)容在某個值)。圖2中示出的示例性布置是系統(tǒng)100的優(yōu)選實施例。
本領(lǐng)域的當(dāng)前狀態(tài)中的許多擦除代碼沒有垂直奇偶校驗行,而僅將奇偶校驗值存儲于水平位置中(所謂的“水平代碼”);這是以上參考的Blaum-Roth、EvenOdd、Row-Diagonal Parity以及其他代碼的情況。而本領(lǐng)域的當(dāng)前狀態(tài)中的其他擦除代碼沒有水平奇偶校驗條,而僅將奇偶校驗值存儲于垂直位置中(所謂的“垂直代碼”);這是以上參考的X-code、BCP、ZZS代碼和其他代碼的情況。Samsung DH2代碼[參考T-D Han等人的“用于在外部存儲子系統(tǒng)及其裝置中存儲奇偶校驗并重建故障盤的數(shù)據(jù)內(nèi)容的方法(Method for storing parityand rebuilding data contents of failed disks in an external storagesubsystem and apparatus thereof)”,美國專利6158017]具有與圖2類似的布置,但它有額外的局限性。第一,它僅有一行垂直奇偶校驗(v=1)和一條水平奇偶校驗(h=1)。第二,它限制數(shù)據(jù)和垂直奇偶校驗條的數(shù)量為n=p,其中p是素數(shù);對于圖2的通用布置沒有這樣的首要限制。第三,DH2代碼中的數(shù)據(jù)和水平奇偶校驗行的數(shù)量被固定為r=p-2;如隨后所示,本發(fā)明能夠放寬此限制,允許額外的參數(shù)靈活性。第四,DH2代碼僅能夠從兩個盤故障中恢復(fù),而本發(fā)明的更通用布置可以具有能夠容許更多故障的配置;隨后給出容許三個和容許四個故障的示例。Nanda代碼[參考S.Nanda的“用于在盤陣列中的盤故障容許的方法和系統(tǒng)(Method and system for disk faulttolerance in a disk array)”(美國專利申請US 2004/0078642 A1)]具有HoVer數(shù)據(jù)/奇偶校驗布置,但具有兩條水平奇偶校驗(h=2)和一行垂直奇偶校驗(v=1)。這些代碼僅能夠容許兩個盤故障,并因此它們超過了對于本發(fā)明的雙故障容許實施例的限制h+v≤2。
能夠在數(shù)學(xué)上看出,圖2中的本系統(tǒng)的通用布置對參數(shù)r、n、h、v強加了一些必要關(guān)系,以使代碼容許某個數(shù)量T個故障盤。具體地,必須保持r≤vn-TT-h]]>或等價地,n≥rT-hv+T·---(1)]]>根據(jù)用于計算垂直和水平奇偶校驗的公式,可以出現(xiàn)其他限制。不過,一般而言的情況是,如果一配置對于一些值r、n、h、v具有正確的故障容許,則對于具有n、h、v的相同值的另一配置能夠?qū)τ诿恳籸’≤r的值具有相同的故障容許。類似地,如果一配置對于一些值r、n、h、v具有正確的故障容許,則具有對于r、n、h、v的相同值的另一配置能夠?qū)τ诿恳籲’≥n的值具有相同的故障容許,至多具有少量例外。相對于當(dāng)前系統(tǒng),這種參數(shù)選擇的靈活性具有顯著的優(yōu)點。對于當(dāng)前的所有水平代碼,數(shù)據(jù)行的數(shù)量r和數(shù)據(jù)條的數(shù)量n的關(guān)系或者是固定的,或者r的下限被n的某種函數(shù)所限制。Blaum-Roth和EvenOdd代碼要求對于某個素數(shù)p,r=p-1≥n-1(類似地,Row-Diagonal Parity代碼要求r=p-1≥n)。也將類似的行和陣列大小的限制施加于例如X-code、BCP和ZZS的垂直代碼。這種限制意味著,當(dāng)陣列大小增加時,則單元行的數(shù)量也增加。不過,這種增加在兩方面增加了性能損失。第一,它增加了重構(gòu)丟失單元所需的公式的復(fù)雜性,從而增加了計算成本和計算開銷。第二,它通常增加了收集重構(gòu)算法需要的數(shù)據(jù)值和奇偶校驗值所需的盤IO的數(shù)量和大小。稍后提供本發(fā)明在此方面怎樣改進(jìn)現(xiàn)有技術(shù)的示例。
當(dāng)然,當(dāng)h=1時,以及可能更一般地,本發(fā)明的實施例應(yīng)該存在,其中,每一數(shù)據(jù)單元恰好涉及(即,對其值有貢獻(xiàn))T個奇偶校驗單元。這是對于容許T個故障盤的任何擦除代碼的最佳值。在下文中給出的特定的示例性實施例均具有此性質(zhì)。
對于本領(lǐng)域中的技術(shù)人員以下應(yīng)是清楚的能夠?qū)⒈景l(fā)明實現(xiàn)于相同盤上的多個條中或一個實現(xiàn)的盤的子集或超集上。以下也應(yīng)是清楚的每一實現(xiàn)可以對于參數(shù)r、n、h、v和T具有不同值。此外,對于本領(lǐng)域的技術(shù)人員以下應(yīng)該清楚怎樣可以使用圖2的布置中的未使用單元250??蓪⒋宋词褂每臻g用于保存例如陣列狀態(tài)或條到物理盤的邏輯到物理映射的關(guān)于陣列的元數(shù)據(jù);當(dāng)在相同盤上實現(xiàn)系統(tǒng)100的多個實例時,可將一條紋的未使用空間與另一條紋的已使用空間(數(shù)據(jù)、垂直或水平奇偶校驗單元)進(jìn)行疊加。
圖3描述了能夠容許兩個故障盤并且具有h=1和v=1的本發(fā)明的一個示例性實施例。該配置與Samsung DH2代碼類似,盡管本實施例沒有DH2所施加的對于n的首要限制或?qū)τ趓的固定關(guān)系(在圖3的示例中,n=9和r=4)。在此實施例中,條紋200包括一垂直奇偶校驗行320、四個數(shù)據(jù)行310和四個水平奇偶校驗單元330。在圖3的實施例中僅有一個未使用的數(shù)據(jù)單元340。根據(jù)以下公式,將每一水平奇偶校驗單元H(i)計算為它的行中的數(shù)據(jù)單元的XOR(異或)H(i)=n-1⊕j=0X(i,j)·---(2)]]>此外,將每一垂直奇偶校驗單元U(i)計算為(數(shù)據(jù)子條紋310中斜率為+1的)上對角線數(shù)據(jù)單元的XOR,所述單元始于從垂直奇偶校驗單元條緊鄰向右(偏移=1)的數(shù)據(jù)單元,在數(shù)據(jù)子條紋310內(nèi)從右向左回轉(zhuǎn)。將符號U(i)用于表明“上對角線”。在數(shù)學(xué)上,這由以下公式表達(dá)U(j)=r-1⊕i=0X(i,mod(j+r-i,n))---(3)]]>其中,mod(k,n)表示k對n求模的值,即,k除以n的最小非負(fù)整數(shù)余數(shù)。
圖3的圖示出了怎樣將每一數(shù)據(jù)單元映射到它對應(yīng)的垂直奇偶校驗單元U(j)。每一數(shù)據(jù)單元格中的標(biāo)號對應(yīng)于它的垂直奇偶校驗單元U(j)的條號j。例如,將標(biāo)號為“3”的單元360、370、380、390進(jìn)行XOR,以形成垂直奇偶校驗單元U(3)350。將這種關(guān)系向右旋轉(zhuǎn),在數(shù)據(jù)子條紋內(nèi)從右向左回轉(zhuǎn),以進(jìn)一步生成其他垂直奇偶校驗單元。
當(dāng)一個數(shù)據(jù)盤故障時,本發(fā)明能夠使用或者水平奇偶校驗和一組數(shù)據(jù)單元(來自相同行)或者垂直奇偶校驗和一組數(shù)據(jù)單元(來自相同對角線)來恢復(fù)在關(guān)聯(lián)數(shù)據(jù)條上的每一單元。使用水平奇偶校驗需要讀n-1個數(shù)據(jù)單元和一個水平奇偶校驗單元,以及具有n個被加數(shù)的XOR計算。另一方面,使用垂直奇偶校驗僅需要讀r-1個數(shù)據(jù)單元和一個奇偶校驗單元,以及僅具有r個被加數(shù)的XOR計算。公式(1)隱含r≤n-2;這意味著,在這種故障情形下,使用垂直奇偶校驗值比使用水平奇偶校驗值得到更有效的重構(gòu)方法。與此相反以及一般地,平行代碼通常需要至少n-1個數(shù)據(jù)單元和至少一個水平奇偶校驗單元,以及至少n個被加數(shù)的XOR計算。因而本發(fā)明在此方面改進(jìn)了現(xiàn)有技術(shù)。同一命題對于當(dāng)前的垂直代碼適用,因為它們緊密地將行的數(shù)量與數(shù)據(jù)條的數(shù)量相關(guān)聯(lián)。
圖3的實施例具有r=4。對于公式(2)和公式(3),以及對于n=9,v=1,h=1,圖2的布置對于范圍1≤r≤5中的r的每個值產(chǎn)生有效的雙故障容許擦除代碼。這例示了本發(fā)明對于參數(shù)選擇的靈活性。如所述的,越小的行數(shù)量使得對丟失數(shù)據(jù)單元的恢復(fù)能夠越有效。
圖3的實施例能夠容許兩個盤故障的任何組合。不過,容易看出,通過移除首行,得到的擦除代碼也能夠容許三個盤故障的一些組合。例如,它能夠放松水平奇偶校驗條以及恰好為四個條偏移的任何兩個數(shù)據(jù)條。這一點容易看出來,因為能夠僅使用垂直奇偶校驗各自恢復(fù)兩個數(shù)據(jù)條。一般而言,當(dāng)對于固定值r,數(shù)據(jù)盤的數(shù)量n增加時(或類似地,對于固定值n,行數(shù)量r減少時),能夠被容許的三個盤故障的這樣的組合的數(shù)量也增加。
當(dāng)r=1時圖3中所例示的代碼與所謂的RAID51擦除代碼的子代碼類似。常規(guī)的RAID51代碼將常規(guī)RAID5代碼鏡像到單獨的盤上,并且能夠容許三個故障的任意組合。移除常規(guī)的RAID51代碼中的水平奇偶校驗的鏡像產(chǎn)生能夠容許任何兩故障的子代碼。在具有r=1的圖3的示例中,水平奇偶校驗正好是常規(guī)的RAID5代碼的RAID5奇偶校驗。垂直奇偶校驗正好是通過旋轉(zhuǎn)的數(shù)據(jù)行的鏡像(拷貝)。不存在RAID5奇偶校驗的鏡像,即,不存在水平奇偶校驗的鏡像。因而本系統(tǒng)與RAID51子代碼類似,除了所鏡像的數(shù)據(jù)出現(xiàn)于與數(shù)據(jù)子條紋相同的盤上,并且被向左旋轉(zhuǎn)一個盤。常規(guī)的RAID51子代碼需要2n+1個盤驅(qū)動器,而所描述的本系統(tǒng)僅需要n+1個盤驅(qū)動器。所需要的盤的這種較小的數(shù)量使得本發(fā)明的此實施例比常規(guī)的RAID51雙故障容許子代碼更可靠。
容許雙故障盤的所有組合的以及通過公式(2)和(3)構(gòu)建的v=1和h=1的本發(fā)明的實施例對于參數(shù)r和n具有以下限制r≤n-n/pr(n)-1,(4)其中pr(n)表示n的最小素因子。如果不保持此條件,則能夠示出,無法重構(gòu)故障條的特定對。相反地,如果保持此條件,則對于故障條對的任何組合,存在能夠用于重構(gòu)丟失單元的一組遞歸,并且所述的每一這種遞歸均具有僅需要單個垂直奇偶校驗單元的起始點和已知的(未丟失)數(shù)據(jù)單元。在圖4中給出了對于n=15和r=8時的情況的兩個示例,其滿足公式(4)的界限(因為pr(15)=3)。
圖4僅示出了當(dāng)n=15和r=8時對于圖3的實施例的實例的數(shù)據(jù)子條紋410,其中r是小于公式(4)的上限9的一個數(shù)。圖4的情況1示出了通過陰影所指示的丟失的數(shù)據(jù)條0和7(430)。(在情況1中,假定條11和12(440)是好的)。突顯單元450以示出,假定對應(yīng)于這些單元的垂直奇偶校驗已丟失,以致此類奇偶校驗無法被用于對于這些丟失的特定數(shù)據(jù)單元的任何重構(gòu)方法中。在每一丟失格中的數(shù)字是各自僅使用單個奇偶校驗值的不同奇偶校驗等式的最小數(shù)量,其是重構(gòu)所述格中的丟失單元所需的。換句話說,此數(shù)字表示重構(gòu)單元的最小遞歸中的步驟的數(shù)量。在最后一步從水平奇偶校驗單元(以及來自相同行的相關(guān)數(shù)據(jù)單元)中計算偶數(shù)數(shù)字的格,以及在最后一步從垂直(上對角線)奇偶校驗單元(以及來自相應(yīng)上對角線的相關(guān)數(shù)據(jù)單元)中計算奇數(shù)數(shù)字的格。例如,能夠從通過跟隨到單元455的虛線上對角線路徑而發(fā)現(xiàn)的條6中的垂直奇偶校驗單元中重構(gòu)具有標(biāo)號1的單元455。一旦重構(gòu)了單元455,能夠通過跟隨到單元460的虛線水平路徑,將來自行7的水平奇偶校驗單元用于重構(gòu)標(biāo)號為2的單元460。類似地,現(xiàn)在能夠跟隨從單元460到單元465的虛線的上對角線路徑以重構(gòu)單元465(在遞歸中的第三步)。最后,能夠通過跟隨始于單元465的虛線水平路徑重構(gòu)單元470。注意,對于這種故障情況,能夠在一步中從垂直奇偶校驗重構(gòu)許多單元(標(biāo)號為1的那些單元)。每一標(biāo)號為1的這種單元都是遞歸的開始;在許多情況下,這些遞歸也具有長度1,盡管剛才給出的所述實例示出了能夠出現(xiàn)較長的長度。
對于數(shù)據(jù)條11和12(440)丟失(而不是情況1中的條0和7丟失)的情況2,僅有一個單元452的垂直奇偶校驗丟失了。不過,僅存在一個能夠被用于重構(gòu)任何丟失數(shù)據(jù)單元的遞歸。即,僅存在一個標(biāo)號為1的單元480,其是遞歸的開始。每個其他的丟失單元必須通過開始于單元480的遞歸進(jìn)行重構(gòu)。單元485是遞歸中的最后一個單元,并且其標(biāo)號為16,表示在能夠重構(gòu)此單元之前在遞歸中存在16步。
圖4示出,對于具有公式(2)和(3)并且滿足條件(4)的圖3的實施例,在重構(gòu)丟失數(shù)據(jù)單元的成本(遞歸的長度)上存在很大變化,其極大地依據(jù)特定的故障實例。在所有情況下,所出現(xiàn)的最差情況是單一的長遞歸,而在許多情況下存在許多很短的遞歸。應(yīng)將此與其中一般對于每個故障對僅存在一個或兩個長遞歸的雙故障容許擦除代碼的本領(lǐng)域的當(dāng)前狀態(tài)比較。這突出了本發(fā)明的再一個優(yōu)點,即,對于本系統(tǒng)的代碼,恢復(fù)能夠更有效。
通過圖4和公式(3)例示的實施例具有垂直奇偶校驗單元,其被安置于緊鄰上對角線的開始數(shù)據(jù)單元(在最后的數(shù)據(jù)行中的數(shù)據(jù)單元)的左邊的條中。查看此單元的另一方法是對于特定垂直奇偶校驗單元的給定上對角線的開始點從所述奇偶校驗單元的條向右偏移一個條。其他實施例也是可能的,并具有其他優(yōu)點。圖5示出了與圖3類似的另一實施例,但現(xiàn)在垂直奇偶校驗單元開始將它的上對角線向右偏移兩個條。如圖3中,數(shù)據(jù)子條紋510的每一數(shù)據(jù)單元通過與它相關(guān)的上對角線奇偶校驗U(j)的條號j進(jìn)行標(biāo)注。例如,從四個標(biāo)號為“2”的數(shù)據(jù)單元560、570、580、590中計算上對角線奇偶校驗單元U(2)550。應(yīng)該清楚,其他偏移也是可能的。對于偏移值s,將上對角線奇偶校驗公式(3)修改為以下公式U(j)=r-1⊕i=0X(i,mod(j+r-1+s-i,n))---(5)]]>不過,不同的偏移限制對于r的值的范圍。對于偏移s≤n-r,能夠示出r≤n-s-n/pr(n)(6)當(dāng)n不是素數(shù)時,以及r≤n-max(s,2)當(dāng)n是素數(shù)時。
圖6示出了具有對于偏移值s的可選選擇的優(yōu)點。當(dāng)s=1時,在圖4中已示出,一些故障情形需要最大長度的單一遞歸以恢復(fù)兩個丟失條的數(shù)據(jù)單元。在圖6中,示出了對于圖4的實施例的實例的示例性數(shù)據(jù)子條紋610,當(dāng)s=2、n=15和r=8時的公式(6)的上限為8(因為pr(15)=3)。圖6的情況1示出了通過陰影表示的丟失的數(shù)據(jù)條0和7(630)。(在情況1中,假定條11和12(640)是好的)。突顯單元650以示出,假定對應(yīng)于這些單元的垂直奇偶校驗丟失,以致此類奇偶校驗無法被用于對于這些丟失的特定數(shù)據(jù)單元的任何重構(gòu)方法中。在每一丟失格中的數(shù)字是在該格中重建丟失單元所需的不同奇偶校驗等式的最小數(shù)量,每個等式僅使用單一奇偶校驗值。換句話說,所述數(shù)字表示在重構(gòu)單元的最小遞歸中的步驟的數(shù)量。在最后一步從水平奇偶校驗單元(以及來自相同行的相關(guān)數(shù)據(jù)單元)中計算偶數(shù)數(shù)字的格,以及在最后一步從垂直(上對角線)奇偶校驗單元(以及來自相應(yīng)上對角線的相關(guān)數(shù)據(jù)單元)中計算奇數(shù)數(shù)字的格。例如,能夠從條5(因為偏移值是2)中的垂直奇偶校驗單元重構(gòu)具有標(biāo)號1的單元660。一旦已重構(gòu)了單元660,則能夠?qū)碜孕?的水平奇偶校驗單元用于重構(gòu)標(biāo)號為2的單元665。
對于丟失數(shù)據(jù)條11和12(640)(而不是情況1中的條0和7丟失)的情況2,不存在丟失垂直奇偶校驗的單元(對于圖4中的偏移s=1,存在一個這樣的單元)。此外,與圖4中的示例相反,現(xiàn)在存在能夠被用于重構(gòu)任何丟失數(shù)據(jù)單元的兩個較短的遞歸?,F(xiàn)在兩單元680和685是遞歸的開始點(標(biāo)號1)。能夠示出,對于s=2,不存在其中僅需要一個遞歸的雙故障的情況;這與s=1的情況相反,在s=1的情況中,任何一對相鄰條的丟失需要一個長的遞歸。
圖6的兩個示例展示了本發(fā)明的靈活參數(shù)范圍的再一個優(yōu)點;即,通過仔細(xì)選擇參數(shù),能夠改善特定的重構(gòu)成本。在圖4的示例的情況1中,存在長度為4的一個遞歸,而在情況2中,存在長度為16的一個遞歸。在圖6的示例的情況1中,將長度為4的遞歸分別劃分為長度為2的兩個遞歸,而在情況2中,將長度為16的遞歸分別劃分為長度為8的兩個遞歸。
對于本領(lǐng)域的技術(shù)人員,應(yīng)該清楚,公式(2)和(3)或(5)不是當(dāng)h=1和v=1時能夠被用于生成本發(fā)明中的水平奇偶校驗值的條和垂直奇偶校驗值的行的唯一的公式。規(guī)則的(例如循環(huán)的)或不規(guī)則的其他奇偶校驗公式或模式是可能的,并將被包括于本發(fā)明的范圍中。
圖7示出了本系統(tǒng)的另一示例性實施例,其中存在一個水平奇偶校驗條(h=1)和兩個垂直奇偶校驗行(v=2),并且其能夠容許三個故障盤或條。通過如圖3和5中的公式(2)計算水平奇偶校驗單元730。通過具有s=1的公式(5)計算圖7中的奇偶校驗單元的首行715,并且該首行包括“上對角線”奇偶校驗。通過具有s=2的以下公式計算圖7中的奇偶校驗單元的第二行720,并且第二行包括“下對角線”奇偶校驗D(j)=r-1⊕i=0X(i,mod(j+i-r+1-t,n))·---(7)]]>在此示例的數(shù)據(jù)子條紋710中存在四行和8條的數(shù)據(jù)單元,并且存在兩個未使用單元740。每一數(shù)據(jù)單元用通過冒號()分隔的兩個標(biāo)志進(jìn)行標(biāo)注。在冒號左邊的第一個標(biāo)志是所述單元涉及的上對角線奇偶校驗U(j)的條號j。在冒號右邊的第二個標(biāo)志是所述單元涉及的下對角線奇偶校驗D(j)的條號j。例如,具有標(biāo)號“0:1”的單元770涉及條0的上對角線奇偶校驗U(0)752以及條1的下對角線奇偶校驗D(1)。公式(7)表明,通過下對角線計算第二奇偶校驗行720中的下對角線奇偶校驗值,從右到左回轉(zhuǎn),終止于數(shù)據(jù)子條紋的最后一行,接著將向右的t個條(圖7中t=2)放置于第二奇偶校驗行720中。例如,從數(shù)據(jù)單元755、760、765和770中計算下對角線奇偶校驗值D(1)750,如通過這些單元的每一個的右半個標(biāo)號中的“1”所表示的。
圖7的配置能夠容許三個條(或盤)故障的所有組合。更一般地,對于公式(5)中的s的一些值和公式(7)中的t的一些值以及r值的某個范圍,具有h=1和v=2和具有通過公式(2)、(5)和(7)計算的奇偶校驗值的HoVer布置具有三個故障容許。能夠示出,當(dāng)v=1時存在對r的限制,其超過了如對于圖3和5中的示例性布置的情況下的(1)的不等式中所給出的限制。在此情況下,所述限制更加復(fù)雜如果pr(n)=2,則對于任何s和t,必須是r≤n/2的情況;此外,如果s=1和t=2,則r≤n/2就夠了;如果pr(n)=3并且n不能被5整除,則對于任何s和t,必須是r≤2n/3-2的情況;如果pr(n)=3并且n能被5整除,則對于任何s和t,必須是r≤3n/5-3的情況;此外,如果s=1和t=3,則r ≤3n/5-3就夠了;如果pr(n)≥5,則對于任何s和t,必須是r≤n-n/pr(n)-1的情況;此外,可以推測,如果s=t=n/pr(n)+1,則r≤n-n/pr(n)-1就夠了。
這些命題不給出對于何時具有h=1和v=2以及具有由公式(2)、(5)和(7)計算的奇偶校驗值的HoVer布置具有三個故障容許的完整的必要和充分條件。具體地,最后一個命題僅給出了上限,但是在實踐中,對于n≤200,其包括n的所有實際范圍,沒有找到計數(shù)的示例。pr(n)=3并且n不能被5整除的情況也是不完整的,盡管對于n≤360以及s=1和t=3,界限r(nóng)≤2n/3-3足夠了。
在再一個示例性的HoVer布置中,圖8示出了本系統(tǒng)的實施例,其中存在一個水平奇偶校驗條(h=1)和一個垂直奇偶校驗行(v=1),并且其能夠容許三個故障盤或條。這與圖3和5的通用布置相同,但具有更大的故障容許。僅存在一個未使用單元840。通過如圖3和5中的公式(2)計算水平奇偶校驗單元830。通過如所指明的“小山”模式計算垂直奇偶校驗值720。通過XOR組合所有都標(biāo)號為“0”的上對角線上的單元860和下對角線上的單元870,以計算在第一條上的垂直奇偶校驗V(0)850。以向右的循環(huán)模式重復(fù)此模式,并從右向左回轉(zhuǎn)。在此示例中,對于給定奇偶校驗值,上對角線的開始向右偏移兩個條。此外,下對角線開始于從上對角線的末端向右偏移一個條。這兩個參數(shù)允許額外的設(shè)計靈活性。本領(lǐng)域的技術(shù)人員能夠看出,如果此設(shè)計具有對于r、n的一些值和兩個這種偏移的所需的故障容許,則具有n的相同值、上對角線偏移的相同值、但具有少一行和下對角線偏移增加2的設(shè)計也將具有相同的故障容許。
對于圖8中例示的具有三故障容許的通用的HoVer布置,公式(1)表達(dá)為r≤vn-32]]>或等價地,n≥2r+3。
也能夠存在額外的限制??梢钥闯鰧τ趎的給定值和任何偏移的可能的r的最大值近似為對于圖7例示的布置的可能值的一半。表1示出了r的一些最大值,對于如所表明的上對角線偏移以及等于一的下對角線偏移(如圖8所例示的),所述的最大值是可能的。
表1.圖8體現(xiàn)的系統(tǒng)100的示例
在再一個示例性的HoVer布置中,圖9示出了本系統(tǒng)的實施例,其中,存在一個水平奇偶校驗條(h=1)和三個垂直奇偶校驗行(v=3),以及本系統(tǒng)能夠容許四個故障盤或條。這擴展了圖7中的通用布置,但具有更高的故障容許。存在三個未使用單元940。通過如前的公式(2)計算水平奇偶校驗單元930。分別通過具有偏移s=1和t=1的公式(5)和(7)計算垂直奇偶校驗值的前兩行915。通過新公式計算垂直奇偶校驗的第三行920,所述公式看上去是下對角線,但斜率是-1/2,即,向下一以及向右二(這是國際象棋中的“騎士的移動”的示例)。數(shù)學(xué)上,對于某個偏移值u,此公式是K(j)=r-1⊕i=0X(i,mod(j+2(i-r+1)-u,n))·---(8)]]>在圖9的示例性布置中,偏移u=5。用由冒號()分別分隔的三個數(shù)字標(biāo)注數(shù)據(jù)子條紋910中的單元。標(biāo)號中的第一個數(shù)對應(yīng)于此數(shù)據(jù)單元被映射于其中的上對角線奇偶校驗單元的條號。標(biāo)號中的第二個數(shù)對應(yīng)于此數(shù)據(jù)單元被映射于其中的下對角線奇偶校驗單元的條號。這正如圖7中所示。標(biāo)號中的第三個數(shù)對應(yīng)于第三奇偶校驗行920中的騎士對角線的奇偶校驗單元的條號。例如,單元955、960、965和970各自在其標(biāo)號中的第三個數(shù)字等于“3”,因此它們出現(xiàn)于奇偶校驗值K(3)950中。以向右的循環(huán)模式重復(fù)這種模式,并從右向左回轉(zhuǎn)。這三個偏移參數(shù)允許額外的設(shè)計靈活性。本領(lǐng)域的技術(shù)人員能夠看出,如果對于r、n的一些值以及三個偏移s、t、u,此設(shè)計具有所需的四個故障容許,則具有對于n、s、t、u的相同值以及小于r的任意數(shù)量的行的設(shè)計也將具有相同的四個故障容許。
對于具有四個故障容許的圖9中例示的通用HoVer布置,公式(1)表達(dá)為r≤n-4或等價地,n≥r+4。
也能夠存在額外的限制。表2示出了r的一些最大值,其對于所表明的偏移是可能的(其他偏移可以適用于r的相同值——表2僅示出了對于每一特定情況的示例性的一組偏移)。
表2.圖9體現(xiàn)的系統(tǒng)100的示例
由圖7、8和9例示的HoVer代碼的每一代碼具有由圖3和5中的示例所例示的HoVer代碼的許多性質(zhì)。存在對于參數(shù)選擇的顯著的靈活性。對于參數(shù)不存在根本性的限制。此外,對于適用于r的某個值的每一設(shè)計,存在適用于r’≤r的每個值的修改設(shè)計。r的較小值提供更有效的重構(gòu)算法,尤其當(dāng)僅丟失一個數(shù)據(jù)條時。對于固定的r,當(dāng)n增加時,所述的布置能夠容許故障的更多組合,其中故障條的數(shù)量超過基本的故障容許(對于圖7和8此值為3,而對于圖9此值為4)。此外,每一設(shè)計具有每個數(shù)據(jù)單元恰好涉及T個奇偶校驗單元的性質(zhì),其中T是擦除代碼的故障容許。
應(yīng)當(dāng)理解,已經(jīng)描述的本發(fā)明的特定實施例僅僅說明了本發(fā)明的原理的特定應(yīng)用??梢詫Υ颂幩枋龅挠糜谠诰哂蠬oVer布置的存儲系統(tǒng)中容許多個存儲設(shè)備故障的系統(tǒng)和方法進(jìn)行各種修改,而不會背離本發(fā)明的精神和范圍。此外,盡管僅僅出于對故障容許盤陣列系統(tǒng)的說明目的而描述了本發(fā)明,但應(yīng)該清楚,本發(fā)明也適用于例如任何系統(tǒng),在所述系統(tǒng)中,圖2中給出數(shù)據(jù)和奇偶校驗單元布置,并且在所述系統(tǒng)中,存在大于或等于2的故障容許以及對于參數(shù)選擇的顯著靈活性。其他的這種系統(tǒng)的盤驅(qū)動器可被某些其他存儲設(shè)備或媒介替換。盡管使用盤陣列例示了此處的描述,但對于本領(lǐng)域的技術(shù)人員應(yīng)該清楚,能夠?qū)⒈景l(fā)明擴展為通過存儲設(shè)備而不是盤而構(gòu)建的網(wǎng)絡(luò)節(jié)點應(yīng)用或其他系統(tǒng)。
權(quán)利要求
1.一種在N個存儲設(shè)備的組中防止至少T個存儲設(shè)備故障的方法,所述方法包括設(shè)定參數(shù)n、r、v、h、s,其中n+h=N,v≥1,h≥1,并且v+h≤T,以及r≤vn-TT-h,]]>以及其中,滿足以下任一條件(a)T≥3;(b)T=2并且r≤n-n/pr(n)-1,其中n不是素數(shù),并且其中pr(n)是能整除n的最大素數(shù);(c)T=2并且r<n-2,并且其中n是素數(shù);或者(d)T=2并且r≤n-1-s,s≥2,其中n是素數(shù),并且其中垂直奇偶校驗單元相對于垂直奇偶校驗的所選擇的數(shù)據(jù)單元的相對位置被移位一個偏移參數(shù)s;將每一存儲設(shè)備的一部分邏輯地劃分為在每一存儲設(shè)備上的一個條;將存儲設(shè)備上的條組織成條紋;將n個條指定為數(shù)據(jù)和垂直奇偶校驗條;將h個條指定為水平奇偶校驗條;將每一數(shù)據(jù)和垂直奇偶校驗條劃分為r個數(shù)據(jù)單元和v個垂直奇偶校驗單元;將每一水平奇偶校驗條劃分為至少r個水平奇偶校驗單元,并且將其余的每一水平奇偶校驗條作為未使用單元;其中,對于每一奇偶校驗單元,從條紋中選擇一組數(shù)據(jù)單元,以使(a)所選擇的一組數(shù)據(jù)單元還未被選擇用于另一奇偶校驗單元;以及(b)所選擇的數(shù)據(jù)單元的存儲設(shè)備與奇偶校驗單元的存儲設(shè)備不同;確保每一數(shù)據(jù)單元被選擇用于至少T個不同的奇偶校驗單元;以及從存儲于所選擇的一組數(shù)據(jù)單元的數(shù)據(jù)單元中的數(shù)據(jù)值中生成奇偶校驗值,以及在奇偶校驗單元中存儲所述奇偶校驗值。
2.權(quán)利要求1的方法,其中每一數(shù)據(jù)單元和每一奇偶校驗單元的大小相同。
3.權(quán)利要求1的方法,其中所述的數(shù)據(jù)存儲設(shè)備包括盤陣列中的盤。
4.權(quán)利要求1的方法,其中所述的數(shù)據(jù)存儲設(shè)備是存儲設(shè)備網(wǎng)絡(luò)中的存儲節(jié)點。
5.權(quán)利要求1的方法,還包括以循環(huán)模式將所述的數(shù)據(jù)單元分配到對于每一奇偶校驗單元的數(shù)據(jù)單元組。
6.權(quán)利要求1的方法,還包括通過對所選擇的一組數(shù)據(jù)單元的數(shù)據(jù)單元中的數(shù)據(jù)塊進(jìn)行異或來計算奇偶校驗值。
7.權(quán)利要求1的方法,其中選擇對于每一行中的一個水平奇偶校驗單元的一組數(shù)據(jù)單元的步驟包括選擇相應(yīng)的數(shù)據(jù)單元的行中的所有數(shù)據(jù)單元。
8.權(quán)利要求1的方法,其中選擇對于來自條紋的至少一個垂直奇偶校驗單元的一組數(shù)據(jù)單元的步驟包括跟隨斜線通過數(shù)據(jù)單元,從右向左回轉(zhuǎn),其中從數(shù)據(jù)單元的每一行選擇一個數(shù)據(jù)單元。
9.權(quán)利要求1的方法,其中選擇對于來自條紋的至少一個垂直奇偶校驗單元的一組數(shù)據(jù)單元的步驟包括跟隨斜線向上通過數(shù)據(jù)單元,接著跟隨另一斜線向下通過數(shù)據(jù)單元,從右向左回轉(zhuǎn),其中從上斜線上的每一行選擇一個數(shù)據(jù)單元,以及從下斜線上的每一行選擇一個數(shù)據(jù)單元。
10.權(quán)利要求1的方法,其中垂直奇偶校驗單元相對于其選擇的數(shù)據(jù)單元之一的相對位置被移位一個偏移參數(shù)。
11.權(quán)利要求1的方法,其中每一數(shù)據(jù)單元恰好屬于T個奇偶校驗單元組。
12.一種具有多個可執(zhí)行指令代碼的計算機程序產(chǎn)品,所述代碼用于在N個存儲設(shè)備的組中防止至少T個存儲設(shè)備故障,所述計算機程序產(chǎn)品包括第一組指令代碼,用于設(shè)定參數(shù)n、r、v、h、s,其中n+h=N,v≥1,h≥1,并且v+h ≤T,以及r≤vn-TT-h,]]>以及其中,要滿足以下任一條件(a)T≥3;(b)T=2并且r≤n-n/pr(n)-1,其中n不是素數(shù),并且其中pr(n)是能整除n的最大素數(shù);(c)T=2并且r<n-2,并且其中n是素數(shù);或者(d)T=2并且r≤n-1-s,s≥2,其中n是素數(shù),并且其中垂直奇偶校驗單元相對于垂直奇偶校驗的所選擇的數(shù)據(jù)單元的相對位置被移位一個偏移參數(shù)s;第二組指令代碼,用于將每一存儲設(shè)備的一部分邏輯地劃分為在每一存儲設(shè)備上的一個條;第三組指令代碼,用于將存儲設(shè)備上的條組織成條紋;第四組指令代碼,用于將n個條指定為數(shù)據(jù)和垂直奇偶校驗條;第五組指令代碼,用于將h個條指定為水平奇偶校驗條;第六組指令代碼,用于將每一數(shù)據(jù)和垂直奇偶校驗條劃分為r個數(shù)據(jù)單元和v個垂直奇偶校驗單元;第七組指令代碼,用于將每一水平奇偶校驗條劃分為至少r個水平奇偶校驗單元,并且將其余的每一水平奇偶校驗條作為未使用單元;其中,對于每一奇偶校驗單元,第八組指令代碼從條紋中選擇一組數(shù)據(jù)單元,以使(a)所選擇的一組數(shù)據(jù)單元還未被選擇用于另一奇偶校驗單元;以及(b)所選擇的數(shù)據(jù)單元的存儲設(shè)備與奇偶校驗單元的存儲設(shè)備不同;第九組指令代碼,用于確保每一數(shù)據(jù)單元被選擇用于至少T個不同的奇偶校驗單元;以及第十組指令代碼,用于從存儲于所選擇的一組數(shù)據(jù)單元的數(shù)據(jù)單元中的數(shù)據(jù)值中生成奇偶校驗值,以及在奇偶校驗單元中存儲所述奇偶校驗值。
13.權(quán)利要求12的計算機程序產(chǎn)品,其中每一數(shù)據(jù)單元和每一奇偶校驗單元的大小相同。
14.權(quán)利要求12的計算機程序產(chǎn)品,其中所述的數(shù)據(jù)存儲設(shè)備包括盤陣列中的盤。
15.權(quán)利要求12的計算機程序產(chǎn)品,其中所述的數(shù)據(jù)存儲設(shè)備是存儲設(shè)備網(wǎng)絡(luò)中的存儲節(jié)點。
16.權(quán)利要求12的計算機程序產(chǎn)品,還包括第十一組指令代碼,用于以循環(huán)模式將所述的數(shù)據(jù)單元分配到對于每一奇偶校驗單元的數(shù)據(jù)單元組。
17.權(quán)利要求12的計算機程序產(chǎn)品,還包括第十二組指令代碼,用于通過對所選擇的一組數(shù)據(jù)單元的數(shù)據(jù)單元中的數(shù)據(jù)塊進(jìn)行異或計算奇偶校驗值。
18.權(quán)利要求12的計算機程序產(chǎn)品,其中第八組指令代碼通過選擇相應(yīng)的數(shù)據(jù)單元的行中的所有數(shù)據(jù)單元而選擇對于每一行中的一個水平奇偶校驗單元的一組數(shù)據(jù)單元。
19.權(quán)利要求12的計算機程序產(chǎn)品,其中第八組指令代碼通過跟隨斜線通過數(shù)據(jù)單元并從右向左回轉(zhuǎn)而選擇對于來自條紋的至少一個垂直奇偶校驗單元的一組數(shù)據(jù)單元,其中從數(shù)據(jù)單元的每一行選擇一個數(shù)據(jù)單元。
20.一種在N個存儲設(shè)備的組中防止至少T個存儲設(shè)備故障的系統(tǒng),所述系統(tǒng)包括用于設(shè)定參數(shù)n、r、v、h、s的裝置,其中n+h=N,v≥1,h≥1,并且v+h≤T,以及r≤vn-TT-h,]]>以及其中,要滿足以下任一條件(a)T≥3;(b)T=2并且r≤n-n/pr(n)-1,其中n不是素數(shù),并且其中pr(n)是能整除n的最大素數(shù);(c)T=2并且r<n-2,并且其中n是素數(shù);或者(d)T=2并且r≤n-1-s,s≥2,其中n是素數(shù),并且其中垂直奇偶校驗單元相對于垂直奇偶校驗的所選擇的數(shù)據(jù)單元的相對位置被移位一個偏移參數(shù)s;用于將每一存儲設(shè)備的一部分邏輯地劃分為在每一存儲設(shè)備上的一個條的裝置;用于將存儲設(shè)備上的條組織成條紋的裝置;用于將n個條指定為數(shù)據(jù)和垂直奇偶校驗條的裝置;用于將h個條指定為水平奇偶校驗條的裝置;用于將每一數(shù)據(jù)和垂直奇偶校驗條劃分為r個數(shù)據(jù)單元和v個垂直奇偶校驗單元的裝置;用于將每一水平奇偶校驗條劃分為至少r個水平奇偶校驗單元,并且將其余的每一水平奇偶校驗條作為未使用單元的裝置;其中,對于每一奇偶校驗單元,一種選擇裝置從條紋中選擇一組數(shù)據(jù)單元,以使(a)所選擇的一組數(shù)據(jù)單元還未被選擇用于另一奇偶校驗單元;以及(b)所選擇的數(shù)據(jù)單元的存儲設(shè)備與奇偶校驗單元的存儲設(shè)備不同;用于確保每一數(shù)據(jù)單元被選擇用于至少T個不同的奇偶校驗單元的裝置;以及用于從存儲于所選擇的一組數(shù)據(jù)單元的數(shù)據(jù)單元中的數(shù)據(jù)值中生成奇偶校驗值以及在奇偶校驗單元中存儲所述奇偶校驗值的裝置。
全文摘要
一種用于存儲陣列的故障容許系統(tǒng),所述陣列將奇偶校驗值存儲于與數(shù)據(jù)單元分離的盤上(水平對準(zhǔn))和與數(shù)據(jù)單元相同的盤上(垂直對準(zhǔn)),即所謂的水平-垂直代碼或HoVer代碼。所述的故障容許系統(tǒng)具有實施例,各種陣列大小均支持所述的實施例,并且其在參數(shù)選擇上具有顯著的靈活性。特定的實施例能夠容許T個故障盤的所有組合,并且,在這些實施例中,一些實施例能夠容許大于T個故障的許多實例。所述的故障容許系統(tǒng)具有高效的基于XOR的編碼、恢復(fù)和更新算法,以及具有簡單的冗余公式。
文檔編號G11B20/18GK1801105SQ20051012510
公開日2006年7月12日 申請日期2005年11月17日 優(yōu)先權(quán)日2004年11月24日
發(fā)明者詹姆斯·L·哈夫奈爾 申請人:國際商業(yè)機器公司