專利名稱:用于實(shí)現(xiàn)從多達(dá)n個(gè)存儲(chǔ)設(shè)備失效恢復(fù)的n路奇偶校驗(yàn)技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)系統(tǒng)并且更具體地涉及一種用于對(duì)奇偶校驗(yàn)數(shù)據(jù)編碼以實(shí)現(xiàn)從存儲(chǔ)陣列的多個(gè)失效存儲(chǔ)設(shè)備恢復(fù)的技術(shù)。
背景技術(shù):
存儲(chǔ)系統(tǒng)通常包括按照需要可以向其中錄入數(shù)據(jù)并且可以從其獲得數(shù)據(jù)的一個(gè)或者多個(gè)存儲(chǔ)設(shè)備??梢愿鶕?jù)多種存儲(chǔ)架構(gòu)(包括但不限于網(wǎng)絡(luò)附著存儲(chǔ)環(huán)境、存儲(chǔ)區(qū)域網(wǎng)絡(luò)和直接附著到客戶端或者主機(jī)計(jì)算機(jī)的盤組件)實(shí)施存儲(chǔ)系統(tǒng)。存儲(chǔ)設(shè)備通常為盤驅(qū)動(dòng)器,其中術(shù)語(yǔ)“盤”通常描述自足式(self-contained)旋轉(zhuǎn)磁介質(zhì)存儲(chǔ)設(shè)備。術(shù)語(yǔ)“盤”在本上下文中與硬盤驅(qū)動(dòng)器(HDD)或者直接存取存儲(chǔ)設(shè)備(DASD)同義。存儲(chǔ)系統(tǒng)內(nèi)的盤通常組織為一組或者多組,其中每組作為冗余獨(dú)立(或者蘑#)盤陣列(RAID)來(lái)操作。多數(shù)RAID實(shí)施通過跨RAID組中給定數(shù)量的物理盤的數(shù)據(jù)條的冗余寫入和適當(dāng)存儲(chǔ)關(guān)于條式數(shù)據(jù)的冗余信息來(lái)增強(qiáng)數(shù)據(jù)存儲(chǔ)的可靠性/完整性。冗余信息實(shí)現(xiàn)在存儲(chǔ)設(shè)備失效時(shí)丟失數(shù)據(jù)的恢復(fù)。在盤陣列的操作中,預(yù)期盤可能失效。高性能存儲(chǔ)系統(tǒng)的目的是使平均數(shù)據(jù)丟失時(shí)間(MTTDL)盡可能長(zhǎng),優(yōu)選地比系統(tǒng)的預(yù)計(jì)使用壽命長(zhǎng)得多。當(dāng)一個(gè)或者多個(gè)盤失效時(shí)可能丟失數(shù)據(jù),從而使得不可能從設(shè)備恢復(fù)數(shù)據(jù)。避免數(shù)據(jù)丟失的典型方案包括鏡像、備份和奇偶校驗(yàn)保護(hù)。鏡像在存儲(chǔ)資源(諸如盤)的消耗方面為一種昂貴的解決方案。備份未保護(hù)從創(chuàng)建備份起修改的數(shù)據(jù)。奇偶校驗(yàn)方案為常用,因?yàn)樗鼈兲峁?shù)據(jù)的冗余編碼,這允許單次擦除(一個(gè)盤的丟失)而向系統(tǒng)添加僅一個(gè)盤驅(qū)動(dòng)器。奇偶校驗(yàn)在計(jì)算機(jī)系統(tǒng)中用來(lái)防范丟失存儲(chǔ)設(shè)備(諸如盤)上的數(shù)據(jù)??梢酝ㄟ^跨越保持不同數(shù)據(jù)的多個(gè)相似盤對(duì)特定字大小(通常為一位)的數(shù)據(jù)求和(通常以2為模)并且然后在附加相似盤上存儲(chǔ)結(jié)果來(lái)計(jì)算奇偶校驗(yàn)值。也就是說,可以對(duì)由每個(gè)盤上的對(duì)應(yīng)位置的位組成的I位寬的矢量計(jì)算奇偶校驗(yàn)。當(dāng)對(duì)I位寬的矢量計(jì)算時(shí),奇偶校驗(yàn)可以是計(jì)算的和或者它的補(bǔ)碼;這些分別稱為偶奇偶校驗(yàn)和奇奇偶校驗(yàn)。對(duì)I位矢量的加法和減法均等同于異或(XOR)邏輯運(yùn)算。然后保護(hù)數(shù)據(jù)以免丟失任何一個(gè)盤或者任何一個(gè)盤上的數(shù)據(jù)的任何部分。如果存儲(chǔ)奇偶校驗(yàn)的盤丟失,則可以根據(jù)數(shù)據(jù)再生奇偶校驗(yàn)。如果數(shù)據(jù)盤之一丟失,則可以通過將幸存數(shù)據(jù)盤的內(nèi)容相加到一起并且然后從存儲(chǔ)的奇偶校驗(yàn)減去結(jié)果來(lái)再生數(shù)據(jù)。通常,盤劃分成奇偶校驗(yàn)組,每組包括一個(gè)或者多個(gè)數(shù)據(jù)盤和奇偶校驗(yàn)盤。奇偶校驗(yàn)集合是包括若干數(shù)據(jù)塊和一個(gè)奇偶校驗(yàn)塊的集合,其中奇偶校驗(yàn)塊為所有數(shù)據(jù)塊的X0R。奇偶校驗(yàn)組是從其選擇一個(gè)或者多個(gè)奇偶校驗(yàn)集合的盤集合。盤空間劃分成條而每條包含來(lái)自每個(gè)盤的一個(gè)塊。條的塊通常在奇偶校驗(yàn)組中的每個(gè)盤上的相同位置。在條內(nèi),除了一個(gè)塊之外的所有塊是包含數(shù)據(jù)的塊(“數(shù)據(jù)塊”),并且一個(gè)塊是包含通過所有數(shù)據(jù)的XOR而計(jì)算的奇偶校驗(yàn)的塊(“奇偶校驗(yàn)塊”)。如果奇偶校驗(yàn)塊都存儲(chǔ)于一個(gè)盤上、由此提供包含所有(并且僅有)奇偶校驗(yàn)信息的單個(gè)盤,則提供RAID-4實(shí)施。如果奇偶校驗(yàn)塊通常以旋轉(zhuǎn)模式被包含于每個(gè)條中的不同盤內(nèi),則實(shí)施為RAID-5。術(shù)語(yǔ)“RAID”及其各種實(shí)施是公知的并且公開于 D. A. Patterson、G. A. Gibson 和 R. H. Katz 的 1988 年 6 月的 Proceedingsof the International Conference on Management of Data (SIGMOD)的J Case forRedundant Arrays of Inexpensive Disks (RAID)中,通過引用將其內(nèi)容結(jié)合于此。如這里所用,術(shù)語(yǔ)“編碼”意味著在數(shù)據(jù)塊的預(yù)定子集上計(jì)算冗余值,而術(shù)語(yǔ)“解碼”意味著通過使用數(shù)據(jù)塊子集和冗余值來(lái)重建數(shù)據(jù)或者奇偶校驗(yàn)塊。如果一個(gè)盤在奇偶校驗(yàn)組中失效,則該的內(nèi)容可以在一個(gè)或者多個(gè)備用盤上通過將剩余數(shù)據(jù)塊的內(nèi)容相加并且從奇偶校驗(yàn)塊減去結(jié)果來(lái)解碼(重建)。由于對(duì)I位字段的二的補(bǔ)碼加法和減法均等同于XOR運(yùn)算,所以這一重建由所有幸存數(shù)據(jù)和奇偶校驗(yàn)塊的XOR構(gòu)成。類似地,如果奇偶校驗(yàn)盤丟失,則可以用相同方式根據(jù)幸存數(shù)據(jù)重新計(jì)算它。奇偶校驗(yàn)方案一般提供保護(hù)以防奇偶校驗(yàn)組內(nèi)的單個(gè)盤失效。這些方案也可以防范多個(gè)盤失效,只要每個(gè)失效出現(xiàn)于不同奇偶校驗(yàn)組內(nèi)。然而如果兩個(gè)盤在奇偶校驗(yàn)組內(nèi)同時(shí)失效,則遭受不可恢復(fù)的數(shù)據(jù)損失。兩個(gè)盤在奇偶校驗(yàn)組內(nèi)的同時(shí)失效是相當(dāng)普遍的事件,特別是因?yàn)楸P“磨損”以及由于與盤的操作有關(guān)的環(huán)境因素。在本上下文中,兩個(gè)盤在奇偶校驗(yàn)組內(nèi)同時(shí)失效稱為“雙失效”。通常由于一個(gè)盤失效并且在嘗試從第一失效恢復(fù)之時(shí)另一個(gè)盤隨后失效而出現(xiàn)雙失效?;謴?fù)或者重建時(shí)間依賴于存儲(chǔ)系統(tǒng)的活動(dòng)水平。也就是說,在重建失效盤期間,有可能的是存儲(chǔ)系統(tǒng)保持“在線”并且繼續(xù)服務(wù)于訪問(即讀取和/或?qū)懭?數(shù)據(jù)的請(qǐng)求(來(lái)自客戶端或者用戶)。如果存儲(chǔ)系統(tǒng)忙于服務(wù)于請(qǐng)求,則用于重建的流逝時(shí)間增加。重建過程時(shí)間也隨著存儲(chǔ)系統(tǒng)中的盤大小和數(shù)量增加而增加,因?yàn)楸仨氉x取所有幸存盤以重建丟失的數(shù)據(jù)。另外,雙盤失效率與奇偶校驗(yàn)組中的盤數(shù)量的平方成比例。然而具有小奇偶校驗(yàn)組是昂貴的,因?yàn)槊總€(gè)奇偶校驗(yàn)組需要專用于冗余數(shù)據(jù)的整個(gè)盤。盤的另一失效模式是介質(zhì)讀取錯(cuò)誤,其中不能讀取單個(gè)盤或者盤的扇區(qū)。如果在存儲(chǔ)陣列中維持奇偶校驗(yàn),則可以重建不可讀數(shù)據(jù)。然而如果一個(gè)盤已經(jīng)失效,則在陣列中的另一個(gè)盤上的介質(zhì)讀取錯(cuò)誤將造成丟失數(shù)據(jù)。這是第二雙失效形式。 在某些存儲(chǔ)環(huán)境中,普遍利用大量更低質(zhì)量的盤驅(qū)動(dòng)器(如例如用于在向帶或者其他長(zhǎng)期歸檔系統(tǒng)備份數(shù)據(jù)之前用作短期存儲(chǔ)的近線(near storage)存儲(chǔ)系統(tǒng))。然而隨著陣列中盤的數(shù)量增加,多個(gè)失效將出現(xiàn)的概率也增加。更廉價(jià)存儲(chǔ)設(shè)備的更低平均失效時(shí)間(MTTF)加重該概率。因此有可能讓存儲(chǔ)系統(tǒng)經(jīng)歷三重或者更大失效,也就是說,存儲(chǔ)陣列中的三個(gè)或者更多設(shè)備的同時(shí)失效。另外,諸如串行附著SCSI (SAS)、光纖信道(FC)等諸多存儲(chǔ)協(xié)議已經(jīng)造成用于盤架的越來(lái)越復(fù)雜的架構(gòu),這已經(jīng)造成這樣的架經(jīng)歷的失效數(shù)量隨之增加并且又造成丟失對(duì)連接到失效盤架的每個(gè)盤的訪問。更一般而言,需要一種高效并且可以用于奇偶校驗(yàn)組中的n路失效(S卩,陣列中多達(dá)n個(gè)存儲(chǔ)設(shè)備的失效)的廣義擦除代碼。針對(duì)n路失效的此類附加保護(hù)可能是保證服從受管制的產(chǎn)業(yè)、長(zhǎng)期歸檔存儲(chǔ)、災(zāi)難恢復(fù)等所需要的
發(fā)明內(nèi)容
本發(fā)明通過提供一種n路奇偶校驗(yàn)保護(hù)技術(shù)來(lái)克服現(xiàn)有技術(shù)的缺點(diǎn),該技術(shù)實(shí)現(xiàn)存儲(chǔ)陣列的奇偶校驗(yàn)組中多達(dá)n個(gè)存儲(chǔ)設(shè)備(例如盤)失效的恢復(fù),該奇偶校驗(yàn)組被編碼成防范n路盤失效。配置陣列使得在陣列的存儲(chǔ)設(shè)備失效的情況下可以使用用于求解線性方程組的任何技術(shù)(例如使用矩陣數(shù)學(xué)等)來(lái)重建陣列的內(nèi)容。通過首先用m個(gè)數(shù)據(jù)盤配置陣列來(lái)創(chuàng)建存儲(chǔ)陣列,其中m=p-l并且p為質(zhì)數(shù)(即僅可由I和其本身除盡的數(shù))。行奇偶校驗(yàn)可以例如以與RAID 4相似的方式存儲(chǔ)于專用行奇偶校驗(yàn)盤上或者可以例如以與RAID 5相似的方式在數(shù)據(jù)盤之中存儲(chǔ)和旋轉(zhuǎn)。然后向陣列添加/7-2個(gè)對(duì)角線奇偶校驗(yàn)盤以提供共計(jì)n個(gè)奇偶校驗(yàn)位(S卩I個(gè)行奇偶校驗(yàn)位和n-1個(gè)對(duì)角線奇偶校驗(yàn)位)。每個(gè)對(duì)角線奇偶校驗(yàn)集合(即對(duì)角線)與斜率關(guān)聯(lián),該斜率定義在對(duì)角線中包括的陣列的數(shù)據(jù)和行奇偶校驗(yàn)塊。也就是說,整個(gè)陣列內(nèi)的落在相同斜率上的所有數(shù)據(jù)和行奇偶校驗(yàn)塊與對(duì)角線關(guān)聯(lián)。將奇偶校驗(yàn)組內(nèi)的具有共同斜率的所有對(duì)角線組織為對(duì)角線奇偶校驗(yàn)類。對(duì)于每個(gè)對(duì)角線奇偶校驗(yàn)類,提供對(duì)角線奇偶校驗(yàn)存儲(chǔ)盤用于存儲(chǔ)對(duì)角線奇偶校驗(yàn)。如果對(duì)角線奇偶校驗(yàn)類的最大數(shù)量限于P-1,則添加的對(duì)角線奇偶校驗(yàn)盤的數(shù)量可以由系統(tǒng)管理員設(shè)置以實(shí)現(xiàn)所需保護(hù)水平。換而言之,根據(jù)這里描述的一個(gè)示例實(shí)施例,n < p,因?yàn)閚-1個(gè)對(duì)角線奇偶校驗(yàn)類的數(shù)量不能超過p-1以保證所得方程組可求解。一旦添加到陣列,就將每個(gè)對(duì)角線奇偶校驗(yàn)盤劃分成塊,以及數(shù)據(jù)盤的塊并且如果適用則將行奇偶校驗(yàn)盤組織成條。然后通過XOR行奇偶校驗(yàn)集合(即行)的數(shù)據(jù)塊來(lái)計(jì)算行奇偶校驗(yàn),并且計(jì)算的奇偶校驗(yàn)然后存儲(chǔ)于行奇偶校驗(yàn)盤或者適當(dāng)數(shù)據(jù)盤上的行奇偶校驗(yàn)塊中。然后向n-1個(gè)對(duì)角線奇偶校驗(yàn)類的對(duì)角線分配所有數(shù)據(jù)和行奇偶校驗(yàn)塊。選擇對(duì)角線奇偶校驗(yàn)類之一,并且計(jì)算用于該類的每個(gè)對(duì)角線(即具有共同(相同)斜率的對(duì)角線)的對(duì)角線奇偶校驗(yàn)。計(jì)算的對(duì)角線奇偶校驗(yàn)然后存儲(chǔ)于適當(dāng)對(duì)角線奇偶校驗(yàn)盤上。如果有附加對(duì)角線奇偶校驗(yàn)類,則該過程針對(duì)每個(gè)附加類重復(fù)。
通過結(jié)合附圖參考描述可以更好地理解本發(fā)明的上述和更多優(yōu)點(diǎn),在附圖中相同標(biāo)號(hào)指示相同或者功能相似元素
圖I是包括根據(jù)本發(fā)明一個(gè)示例實(shí)施例的存儲(chǔ)系統(tǒng)的環(huán)境的示意框 圖2是根據(jù)本發(fā)明一個(gè)示例實(shí)施例的用于在圖I的存儲(chǔ)系統(tǒng)上使用的示例性存儲(chǔ)操作系統(tǒng)的示意框 圖3是詳述根據(jù)本發(fā)明一個(gè)示例實(shí)施例的用于對(duì)奇偶校驗(yàn)編碼的過程的步驟的流程 圖4是根據(jù)本發(fā)明一個(gè)示例實(shí)施例的示出了奇偶校驗(yàn)條的盤陣列的示意框 圖5是根據(jù)本發(fā)明一個(gè)示例實(shí)施例的示出了奇偶校驗(yàn)條的盤陣列的示意框圖;并且圖6詳述是根據(jù)本發(fā)明一個(gè)示例實(shí)施例的用于從一個(gè)或者多個(gè)盤失效中恢復(fù)的過程的步驟的流程圖。
具體實(shí)施例方式A.存儲(chǔ)系統(tǒng)環(huán)境
圖I是環(huán)境100的示意框圖,該環(huán)境100包括根據(jù)本發(fā)明一個(gè)示例實(shí)施例的可能是有利的存儲(chǔ)系統(tǒng)系統(tǒng)120。這里描述的發(fā)明性技術(shù)可以應(yīng)用于任何類型的專用(例如,文件服務(wù)器或者文件管理器)或者通用計(jì)算機(jī)(包括獨(dú)立計(jì)算機(jī)或者其部分),計(jì)算機(jī)被具體化為或者包括存儲(chǔ)系統(tǒng)120。另外,本發(fā)明的技術(shù)可以適應(yīng)多種存儲(chǔ)系統(tǒng)架構(gòu)(包括但不限于網(wǎng) 絡(luò)附著存儲(chǔ)環(huán)境、存儲(chǔ)區(qū)域網(wǎng)絡(luò)和直接附著到客戶端或者主機(jī)計(jì)算機(jī)的盤組件)。術(shù)語(yǔ)“存儲(chǔ)系統(tǒng)”因此應(yīng)當(dāng)廣義理解為除了配置成執(zhí)行存儲(chǔ)功能并且與其他設(shè)備或者系統(tǒng)關(guān)聯(lián)的任何子系統(tǒng)之外還包括這樣的布置。在示例實(shí)施例中,存儲(chǔ)系統(tǒng)120包括系統(tǒng)總線132互連的處理器122、存儲(chǔ)器124、網(wǎng)絡(luò)適配器125和存儲(chǔ)適配器128。存儲(chǔ)器124包括處理器可尋址的存儲(chǔ)位置以及用于存儲(chǔ)與本發(fā)明關(guān)聯(lián)的軟件程序代碼和數(shù)據(jù)結(jié)構(gòu)的適配器。處理器和適配器又可以包括被配置成執(zhí)行軟件代碼并且操縱數(shù)據(jù)結(jié)構(gòu)的處理元件和/或邏輯電路。存儲(chǔ)操作系統(tǒng)200 (該系統(tǒng)的部分通常駐留于存儲(chǔ)器中并且由處理元件執(zhí)行)尤其通過調(diào)用由存儲(chǔ)系統(tǒng)執(zhí)行的存儲(chǔ)操作在功能上組織系統(tǒng)120。本領(lǐng)域技術(shù)人員將清楚其他處理和存儲(chǔ)器裝置(包括各種計(jì)算機(jī)可讀介質(zhì))可以用于存儲(chǔ)和執(zhí)行與這里描述的發(fā)明技術(shù)有關(guān)的程序指令。網(wǎng)絡(luò)適配器125包括適于通過點(diǎn)到點(diǎn)鏈路、廣域網(wǎng)、通過公共網(wǎng)絡(luò)(因特網(wǎng))實(shí)施的虛擬私有網(wǎng)絡(luò)或者共享的局域網(wǎng)將存儲(chǔ)系統(tǒng)120耦合到一個(gè)或者多個(gè)客戶端110的多個(gè)端口。網(wǎng)絡(luò)適配器125因此可以包括將節(jié)點(diǎn)連接到網(wǎng)絡(luò)而需要的機(jī)械、電和信令電路。作為示例,網(wǎng)絡(luò)105可以具體化為以太網(wǎng)網(wǎng)絡(luò)或者光纖信道(FC)網(wǎng)絡(luò)。每個(gè)客戶端110可以通過根據(jù)預(yù)定義協(xié)議(諸如TCP/IP)交換離散數(shù)據(jù)幀或者分組來(lái)通過網(wǎng)絡(luò)105與存儲(chǔ)系統(tǒng)120通信。存儲(chǔ)適配器128與在系統(tǒng)120上執(zhí)行的存儲(chǔ)操作系統(tǒng)200配合以訪問用戶(或者客戶端)所請(qǐng)求的信息。信息可以存儲(chǔ)于任何類型的可寫入存儲(chǔ)設(shè)備介質(zhì)(諸如視頻帶、光的、DVD、磁帶、磁泡存儲(chǔ)器、電子隨機(jī)訪問存儲(chǔ)器、微機(jī)電、閃存或者其他固態(tài)介質(zhì)和/或適于存儲(chǔ)信息(包括數(shù)據(jù)和奇偶校驗(yàn)信息)的任何其他類似介質(zhì))附著陣列上。然而,如這里示例描述的那樣,信息存儲(chǔ)于陣列140的盤150 (諸如HDD和/或DASD)上。存儲(chǔ)適配器包括通過I/O互連布置(諸如常規(guī)高性能、FC串行鏈路拓?fù)?耦合到盤的輸入/輸出(I/O)接口電路。陣列140上的信息存儲(chǔ)優(yōu)選地實(shí)施為包括物理存儲(chǔ)盤150的集群的一個(gè)或者多個(gè)存儲(chǔ)“卷”,從而定義盤空間的總體邏輯布置。每個(gè)卷雖然未必但是一般與它自己的文件系統(tǒng)關(guān)聯(lián)。在卷/文件系統(tǒng)內(nèi)的盤通常組織為一個(gè)或者多個(gè)組,其中每個(gè)組作為冗余獨(dú)立(或者廉價(jià))盤陣列(RAID)來(lái)操作。多數(shù)RAID實(shí)施通過跨RAID組中的給定數(shù)量物理盤的數(shù)據(jù)“條”的冗余寫入和適當(dāng)存儲(chǔ)關(guān)于條式數(shù)據(jù)的奇偶校驗(yàn)信息來(lái)增強(qiáng)數(shù)據(jù)存儲(chǔ)的可靠性/完整性。本發(fā)明包括一種使用行奇偶校驗(yàn)和盤陣列中的多個(gè)對(duì)角線奇偶校驗(yàn)來(lái)提供多存儲(chǔ)設(shè)備失效恢復(fù)的n路奇偶校驗(yàn)(nP)技術(shù)。發(fā)明性技術(shù)優(yōu)選地由存儲(chǔ)操作系統(tǒng)200的盤存儲(chǔ)模塊(在圖2的240示出)實(shí)施以提供一種用于跨存儲(chǔ)系統(tǒng)中的多個(gè)存儲(chǔ)設(shè)備(諸如盤)構(gòu)造條中的奇偶校驗(yàn)的方法和系統(tǒng)。本發(fā)明與先前已知的方案相比減少所需的奇偶校驗(yàn)信息的計(jì)算量而也減少用于從多個(gè)盤失效中恢復(fù)的計(jì)算。此外,本發(fā)明提供均勻條深度(每個(gè)盤包含每條相同塊數(shù)量)和與n個(gè)盤相當(dāng)相等的奇偶校驗(yàn)信息數(shù)量,該數(shù)量是允許從任何n個(gè)盤失效重建而需要的最小量。廣而言之,本發(fā)明包括 切個(gè)存儲(chǔ)設(shè)備,其中并且/7為質(zhì)數(shù)而且/7為可以恢復(fù)的失效數(shù)量。奇偶校驗(yàn)一般計(jì)算為數(shù)據(jù)塊的異或(XOR)以形成奇偶校驗(yàn)塊。一般對(duì)每個(gè) 輸入塊中的相同I位字段執(zhí)行XOR運(yùn)算以產(chǎn)生單個(gè)對(duì)應(yīng)位輸出。如所言,XOR運(yùn)算等同于兩個(gè)I位字段的二的補(bǔ)碼加法或者減法。冗余奇偶校驗(yàn)信息也可以被計(jì)算為所有輸入中的相同大小的多位字段(例如8、16、32、64、128位)之和。例如可以通過對(duì)32位字段使用二的補(bǔ)碼加法將數(shù)據(jù)相加以產(chǎn)生冗余信息的每個(gè)32位冗余信息來(lái)計(jì)算奇偶校驗(yàn)等同。這僅為如下情況,該情況假設(shè)未依賴于如下事實(shí)涉及兩次向塊中的相同輸入的XOR運(yùn)算產(chǎn)生塊的原始內(nèi)容,因?yàn)閴K與其本身的XOR產(chǎn)生零。本領(lǐng)域技術(shù)人員將清楚塊(用于奇偶校驗(yàn)計(jì)算的目的)可以或可以不對(duì)應(yīng)于文件塊、數(shù)據(jù)庫(kù)塊、盤扇區(qū)或者任何其他合宜大小的單元。不存在對(duì)用于奇偶校驗(yàn)計(jì)算的塊大小具有與系統(tǒng)中所用任何其他塊大小的任何關(guān)系的要求。然而預(yù)計(jì)一個(gè)或者多個(gè)整數(shù)個(gè)奇偶校驗(yàn)塊將適配成如下單元,該單元被定義為一個(gè)或多個(gè)整數(shù)個(gè)盤扇區(qū)。在許多情況下,某一數(shù)量的塊將對(duì)應(yīng)于文件系統(tǒng)或者數(shù)據(jù)庫(kù)塊并且將大小通常為4k (4096)字節(jié)或者兩個(gè)字節(jié)的某些高次冪(例如 8k、16k、32k、64k、128k、256k)。這里示例性描述的示例系統(tǒng)執(zhí)行全條寫入操作。具體而言,通常為4k或者8k字節(jié)的個(gè)別文件塊可以劃分成僅用于奇偶校驗(yàn)計(jì)算的更小塊,使得可以向陣列的盤寫入例如4k字節(jié)大小的塊的全條。當(dāng)向盤寫入全條時(shí),在向盤寫入結(jié)果之前可以在存儲(chǔ)器中執(zhí)行所有奇偶校驗(yàn)計(jì)算,因此減少計(jì)算和更新盤上的奇偶校驗(yàn)的負(fù)擔(dān)。B.存儲(chǔ)操作系統(tǒng)
為了促進(jìn)對(duì)盤的訪問,存儲(chǔ)操作系統(tǒng)200實(shí)施與虛擬化模塊配合以提供如下功能的隨處寫入文件系統(tǒng),該功能“虛擬化”由盤提供的存儲(chǔ)空間。文件系統(tǒng)將信息在邏輯上組織為盤上的已命名目錄和文件對(duì)象(下文為“目錄”和“文件”)的分級(jí)結(jié)構(gòu)。每個(gè)“盤上”文件可以實(shí)施為盤塊集合,這些盤塊被配置成存儲(chǔ)信息(諸如數(shù)據(jù)),而目錄可以實(shí)施為名稱以及指向其他文件和目錄的鏈接存儲(chǔ)于其中的具體格式化的文件。虛擬化系統(tǒng)允許文件系統(tǒng)將信息進(jìn)一步在邏輯上組織為盤上的已命名的vdisk的分級(jí)結(jié)構(gòu),由此提供一種用于通過實(shí)現(xiàn)對(duì)文件和目錄的基于文件(NAS)的訪問而又在基于文件的存儲(chǔ)平臺(tái)上進(jìn)一步實(shí)現(xiàn)對(duì)vdisk的基于塊(SAN)的訪問來(lái)存儲(chǔ)的集成NAS和SAN系統(tǒng)方式。在示例實(shí)施例中,存儲(chǔ)操作系統(tǒng)優(yōu)選為可從NetApp, Inc. , Sunnyvale,California獲得的NetApp Data ONTAP 操作系統(tǒng),該操作系統(tǒng)實(shí)施Write AnywhereFile Layout (WAFL )文件系統(tǒng)。然而清楚地設(shè)想可以增強(qiáng)任何存儲(chǔ)操作系統(tǒng)(包括在位(in-place)寫入文件系統(tǒng))用于根據(jù)這里描述的發(fā)明性原理來(lái)使用。這樣,當(dāng)運(yùn)用術(shù)語(yǔ)“ONTAP”時(shí),它應(yīng)當(dāng)被廣義理解為指代以否則可適應(yīng)本發(fā)明教導(dǎo)的任何存儲(chǔ)操作系統(tǒng)。如這里所用,術(shù)語(yǔ)“存儲(chǔ)操作系統(tǒng)”一般指代可在計(jì)算機(jī)上操作的計(jì)算機(jī)可執(zhí)行代碼,該計(jì)算機(jī)可執(zhí)行代碼管理數(shù)據(jù)訪問并且可以在存儲(chǔ)系統(tǒng)的情況下實(shí)施數(shù)據(jù)訪問語(yǔ)義(諸如Data ONTAP 存儲(chǔ)操作系統(tǒng)),其實(shí)施為微內(nèi)核。存儲(chǔ)操作系統(tǒng)也可以實(shí)施為被配置用于如這里描述的存儲(chǔ)應(yīng)用的、在通用操作系統(tǒng)(諸如UNIX 或者Windows XP )之上操作的應(yīng)用程序或者實(shí)施為具有可配置功能的通用操作系統(tǒng)。此外,本領(lǐng)域技術(shù)人員將理解這里描述的發(fā)明技術(shù)可以應(yīng)用于具體化為或者包括存儲(chǔ)系統(tǒng)的任何類型的專用(例如存儲(chǔ)服務(wù)裝置)或者通用計(jì)算機(jī)(包括獨(dú)立計(jì)算機(jī)或者其部分)。另外,本發(fā)明的教導(dǎo)可以適應(yīng)多種存儲(chǔ)系統(tǒng)架構(gòu),包括但不限于網(wǎng)絡(luò)附著存儲(chǔ)環(huán)境、存儲(chǔ)區(qū)域網(wǎng)絡(luò)和直接附著到客戶端或者主機(jī)計(jì)算機(jī)的盤組件。術(shù)語(yǔ)“存儲(chǔ)系統(tǒng)”因此應(yīng)當(dāng)廣義理解為除了被配置成執(zhí)行存儲(chǔ)功能并且與其他設(shè)備或者系統(tǒng)關(guān)聯(lián)的任何子系統(tǒng)之外還包括這樣的布置。 圖2是可以與本發(fā)明有利地一起使用的存儲(chǔ)操作系統(tǒng)200的示意框圖。存儲(chǔ)操作系統(tǒng)包括一系列軟件模塊和/或引擎,這些軟件模塊和/或引擎被組織以形成集成網(wǎng)絡(luò)協(xié)議棧或者更一般地為多協(xié)議引擎,該引擎提供用于客戶端使用塊和文件訪問協(xié)議來(lái)訪問多協(xié)議存儲(chǔ)系統(tǒng)上存儲(chǔ)的信息的數(shù)據(jù)路徑。協(xié)議棧包括網(wǎng)絡(luò)驅(qū)動(dòng)器(例如吉比特以太網(wǎng)驅(qū)動(dòng)器)的介質(zhì)訪問模塊210,該模塊對(duì)接到網(wǎng)絡(luò)協(xié)議模塊,諸如IP模塊212及其支持傳送機(jī)制、TCP模塊214和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)模塊216。文件系統(tǒng)協(xié)議模塊提供多協(xié)議文件訪問并且為此包括針對(duì)DAFS協(xié)議218、NFS協(xié)議220、CIFS協(xié)議222和超文本傳送協(xié)議(HTTP)協(xié)議224的支持。VI模塊226實(shí)施VI架構(gòu)以提供如DAFS協(xié)議218需要的直接訪問傳送(DAT)能力(諸如RDMA)。iSCSI驅(qū)動(dòng)器模塊228提供通過TCP/IP網(wǎng)絡(luò)協(xié)議層的塊協(xié)議訪問,而FC驅(qū)動(dòng)器模塊230與網(wǎng)絡(luò)適配器一起操作以接收和傳輸去往和來(lái)自存儲(chǔ)系統(tǒng)的塊訪問請(qǐng)求和響應(yīng)。FC和iSCSI驅(qū)動(dòng)器向Iun (vdisk)提供FC特定和iSCSI特定訪問控制,并且因此管理vdisk向iSCSI或者FCP或者替代地在訪問多協(xié)議存儲(chǔ)系統(tǒng)上的單個(gè)vdisk時(shí)向iSCSI和FCP兩者的導(dǎo)出。此外,存儲(chǔ)操作系統(tǒng)包括實(shí)施盤存儲(chǔ)協(xié)議(諸如RAID協(xié)議)的盤存儲(chǔ)模塊240(諸如RAID系統(tǒng))和實(shí)施盤訪問協(xié)議(如例如SCSI協(xié)議)的盤驅(qū)動(dòng)器模塊250。在本發(fā)明的示例實(shí)施例中,盤存儲(chǔ)模塊(例如RAID系統(tǒng)240)實(shí)施新穎的nP技術(shù)。作為示例,在寫入操作期間,RAID系統(tǒng)240根據(jù)下文描述的編碼技術(shù)對(duì)數(shù)據(jù)編碼并且響應(yīng)于檢測(cè)到存儲(chǔ)設(shè)備的一個(gè)或者多個(gè)失效來(lái)如下文進(jìn)一步描述的那樣重建數(shù)據(jù)。應(yīng)當(dāng)注意,在替代實(shí)施例中,新穎的nP技術(shù)可以由除了 RAID系統(tǒng)240之外的存儲(chǔ)操作系統(tǒng)的模塊實(shí)施。這樣,對(duì)實(shí)施新穎的nP技術(shù)的RAID系統(tǒng)240的描述應(yīng)當(dāng)理解為僅為示例性的。橋接盤軟件模塊與集成網(wǎng)絡(luò)協(xié)議棧層的是由文件系統(tǒng)265實(shí)施的虛擬化系統(tǒng)255,該文件系統(tǒng)265與示例地具體化為例如vdisk模塊270和SCSI目標(biāo)模塊260的虛擬化模塊交互。應(yīng)當(dāng)注意可以用軟件、硬件、固件或者其組合實(shí)施vdisk模塊270、文件系統(tǒng)265和SCSI目標(biāo)模塊260。vdisk模塊270與文件系統(tǒng)265交互以響應(yīng)于系統(tǒng)管理員向多協(xié)議存儲(chǔ)系統(tǒng)120發(fā)出命令來(lái)實(shí)現(xiàn)管理接口的訪問。實(shí)質(zhì)上,vdisk模塊270通過除其他之外來(lái)實(shí)施系統(tǒng)管理員通過用戶接口發(fā)出的vdisk (Iun)綜合集合來(lái)管理SAN部署。將這些vdisk命令轉(zhuǎn)換成與文件系統(tǒng)265和SCSI目標(biāo)模塊260交互以實(shí)施vdisk的原語(yǔ)文件系統(tǒng)操作(“原語(yǔ)”)。SCSI目標(biāo)模塊260繼而通過提供將Iun轉(zhuǎn)譯成特殊vdisk文件類型的映射過程來(lái)發(fā)起盤或者Iun的仿真。SCSI目標(biāo)模塊示例地布置于FC和iSCSI驅(qū)動(dòng)器230、228與文件系統(tǒng)265之間以由此提供在SAN塊(Iun)空間與文件系統(tǒng)空間之間的虛擬化系統(tǒng)255的轉(zhuǎn)譯層,其中Iun表示為vdisk。通過在文件系統(tǒng)265之上“布置” SAN虛擬化,多協(xié)議存儲(chǔ)系統(tǒng)反轉(zhuǎn)現(xiàn)有系統(tǒng)所采取的方式以由此提供用于實(shí)質(zhì)上所有存儲(chǔ)訪問協(xié)議的單個(gè)統(tǒng)一存儲(chǔ)
Tno文件系統(tǒng)265示例地是基于消息的系統(tǒng);這樣,SCSI目標(biāo)模塊260將SCSI請(qǐng)求改換成如下消息,該消息代表涉及文件系統(tǒng)的操作。例如,SCSI目標(biāo)模塊生成的消息可以包括操作類型(例如讀取、寫入)連同在文件系統(tǒng)中表示的Vdisk對(duì)象的路徑名(例如路徑描述符)和文件名(例如特殊文件名)。SCSI目標(biāo)模塊260將消息傳遞到文件系統(tǒng)265中例如作 為其中執(zhí)行操作的函數(shù)調(diào)用。文件系統(tǒng)265示例地實(shí)施WAFL文件系統(tǒng),該文件系統(tǒng)具有盤上格式表示,該盤上格式表示是使用例如4千字節(jié)(KB)塊并且使用inode以描述文件的基于塊的。WAFL文件系統(tǒng)使用文件以存儲(chǔ)如下元數(shù)據(jù),該元數(shù)據(jù)描述它的文件系統(tǒng)的布局;這些元數(shù)據(jù)文件除其他之外包括inode文件以及其他文件。文件句柄(即包括inode編號(hào)的標(biāo)識(shí)符)用來(lái)從盤取回inode。在操作上,來(lái)自客戶端110的請(qǐng)求作為分組通過計(jì)算機(jī)網(wǎng)絡(luò)105來(lái)轉(zhuǎn)發(fā)并且轉(zhuǎn)發(fā)到存儲(chǔ)系統(tǒng)120上,其中在網(wǎng)絡(luò)適配器125接收它。網(wǎng)絡(luò)驅(qū)動(dòng)器處理分組并且如果適合則將它傳遞到網(wǎng)絡(luò)協(xié)議和文件訪問模塊用于在向隨處寫入文件系統(tǒng)265轉(zhuǎn)發(fā)之前的附加處理。這里,文件系統(tǒng)生成如下操作,這些操作用于如果請(qǐng)求的數(shù)據(jù)未駐留于“核中”(即存儲(chǔ)器124中)則從盤150加載(取回)它。如果信息未在存儲(chǔ)器中,則文件系統(tǒng)265使用inode編號(hào)來(lái)索引到inode文件中以訪問適當(dāng)條目并且取回邏輯卷塊編號(hào)(vbn)。文件系統(tǒng)然后向RAID系統(tǒng)240傳遞包括邏輯vbn的消息結(jié)構(gòu);邏輯vbn映射到盤標(biāo)識(shí)符和盤塊編號(hào)(盤,dbn)并且發(fā)送到盤驅(qū)動(dòng)器器系統(tǒng)250的適當(dāng)驅(qū)動(dòng)器(例如SCSI)。盤驅(qū)動(dòng)器器訪問來(lái)自指定盤150的dbn并且在存儲(chǔ)器中加載所請(qǐng)求的(一個(gè)或多個(gè))數(shù)據(jù)塊用于由存儲(chǔ)系統(tǒng)處理。在完成請(qǐng)求時(shí),存儲(chǔ)系統(tǒng)(和操作系統(tǒng))通過網(wǎng)絡(luò)105向客戶端110返回答復(fù)。應(yīng)當(dāng)注意可以替代地用硬件實(shí)施針對(duì)在存儲(chǔ)系統(tǒng)接收的客戶端請(qǐng)求來(lái)執(zhí)行數(shù)據(jù)存儲(chǔ)訪問而需要的上文描述的經(jīng)過存儲(chǔ)操作系統(tǒng)層的軟件“路徑”。也就是說,在本發(fā)明的一個(gè)替代實(shí)施例中,存儲(chǔ)訪問請(qǐng)求數(shù)據(jù)路徑可以實(shí)施為現(xiàn)場(chǎng)可編程門陣列(FPGA)或者專用集成電路(ASIC)內(nèi)具體化的邏輯電路。這一類型的硬件實(shí)施增加存儲(chǔ)系統(tǒng)120響應(yīng)于客戶端110發(fā)出的請(qǐng)求而提供的存儲(chǔ)服務(wù)的性能。另外,在本發(fā)明的另一替代實(shí)施例中,適配器125、128的處理元件可以被配置成分別從處理器122卸下一些或者所有分組處理和存儲(chǔ)訪問操作以由此增加系統(tǒng)所提供的存儲(chǔ)服務(wù)的性能。清楚地設(shè)想可以用硬件、固件或者軟件實(shí)施這里描述的各種過程、架構(gòu)和程序。如這里所用,術(shù)語(yǔ)“存儲(chǔ)操作系統(tǒng)”一般指代可操作的計(jì)算機(jī)可執(zhí)行代碼以執(zhí)行存儲(chǔ)系統(tǒng)中的存儲(chǔ)功能,例如管理數(shù)據(jù)訪問并且可以實(shí)施文件系統(tǒng)語(yǔ)義。在該意義上,ONTAP軟件使此類存儲(chǔ)操作系統(tǒng)的示例,該存儲(chǔ)操作系統(tǒng)實(shí)施為微內(nèi)核并且包括實(shí)施WAFL文件系統(tǒng)語(yǔ)義并且管理數(shù)據(jù)訪問的WAFL層。存儲(chǔ)操作系統(tǒng)額可以實(shí)施為在通用操作系統(tǒng)(諸如UNIX 或者Windows XP )之上操作的應(yīng)用程序或者實(shí)施為具有可配置功能的通用操作系統(tǒng),其被配置用于如這里描述的存儲(chǔ)應(yīng)用。此外,本領(lǐng)域技術(shù)人員將理解這里描述的發(fā)明技術(shù)可以應(yīng)用于具體化為或者包括存儲(chǔ)系統(tǒng)120的任何類型的專用(例如文件服務(wù)器、文件管理器或存儲(chǔ)系統(tǒng))或者通用計(jì)算機(jī)(包括獨(dú)立計(jì)算機(jī)或者其部分)。另外,本發(fā)明的教導(dǎo)可以適應(yīng)多種存儲(chǔ)系統(tǒng)架構(gòu),包括但不限于網(wǎng)絡(luò)附著存儲(chǔ)環(huán)境、存儲(chǔ)區(qū)域網(wǎng)絡(luò)和直接附著到客戶端或者主機(jī)計(jì)算機(jī)的盤組件。術(shù)語(yǔ)“存儲(chǔ)系統(tǒng)”因此應(yīng)當(dāng)廣義理解為除了被配置成執(zhí)行存儲(chǔ)功能并且與其他設(shè)備或者系統(tǒng)關(guān)聯(lián)的任何子系統(tǒng)之外還包括這樣的布置。 C.奇偶校驗(yàn)編碼
本發(fā)明提供一種n路奇偶校驗(yàn)保護(hù)技術(shù),該技術(shù)實(shí)現(xiàn)存儲(chǔ)陣列的奇偶校驗(yàn)組中多達(dá)n個(gè)盤(或者其他存儲(chǔ)設(shè)備)失效的恢復(fù),該奇偶校驗(yàn)組被編碼成防范n路盤失效。配置陣列使得在陣列的存儲(chǔ)設(shè)備失效的情況下,可以使用用于求解線性方程組的任何技術(shù)來(lái)重建陣列的內(nèi)容。通過首先用m個(gè)數(shù)據(jù)盤配置陣列來(lái)創(chuàng)建存儲(chǔ)陣列,其中m=p-l并且p為質(zhì)數(shù)。行奇偶校驗(yàn)可以例如以與RAID 4相似的方式存儲(chǔ)于專用行奇偶校驗(yàn)盤上或者可以例如以與RAID 5相似的方式在數(shù)據(jù)盤之中存儲(chǔ)和旋轉(zhuǎn)。然后向陣列添加/7-2個(gè)對(duì)角線奇偶校驗(yàn)盤以提供共計(jì)n個(gè)奇偶校驗(yàn)位,即I個(gè)行奇偶校驗(yàn)位和n-1個(gè)對(duì)角線奇偶校驗(yàn)位。每個(gè)對(duì)角線奇偶校驗(yàn)集合(即對(duì)角線)與如下斜率關(guān)聯(lián),該斜率定義在對(duì)角線中包括的陣列的數(shù)據(jù)和行奇偶校驗(yàn)塊。將奇偶校驗(yàn)組內(nèi)具有共同斜率的所有對(duì)角線組織為對(duì)角線奇偶校驗(yàn)類。對(duì)于每個(gè)對(duì)角線奇偶校驗(yàn)類,提供對(duì)角線奇偶校驗(yàn)存儲(chǔ)盤用于存儲(chǔ)對(duì)角線奇偶校驗(yàn)。假如對(duì)角線奇偶校驗(yàn)類,提供對(duì)角線奇偶校驗(yàn)存儲(chǔ)盤以存儲(chǔ)對(duì)角線奇偶校驗(yàn)。如果對(duì)角線奇偶校驗(yàn)類的最大數(shù)量限制為P-1,則添加的對(duì)角線奇偶校驗(yàn)盤的數(shù)量可以由管理員設(shè)置以實(shí)現(xiàn)所需保護(hù)水平。換而言之,根據(jù)這里描述的一個(gè)示例實(shí)施例,n < p,因?yàn)閚-1個(gè)對(duì)角線奇偶校驗(yàn)類的數(shù)量不能超過p-1。一旦添加到陣列,將每個(gè)對(duì)角線奇偶校驗(yàn)盤劃分成塊,以及數(shù)據(jù)盤的塊并且如果適用則將行奇偶校驗(yàn)盤組織成條。然后通過XOR行奇偶校驗(yàn)集合(即,行)的數(shù)據(jù)塊來(lái)計(jì)算行奇偶校驗(yàn),并且計(jì)算的奇偶校驗(yàn)然后存儲(chǔ)于行奇偶校驗(yàn)盤或者適當(dāng)數(shù)據(jù)盤上的行奇偶校驗(yàn)塊中。然后向n-1個(gè)對(duì)角線奇偶校驗(yàn)類的對(duì)角線分配所有數(shù)據(jù)和行奇偶校驗(yàn)塊。選擇對(duì)角線奇偶校驗(yàn)類之一,并且計(jì)算用于該類的每個(gè)對(duì)角線(即具有共同斜率的對(duì)角線)的對(duì)角線奇偶校驗(yàn)。計(jì)算的對(duì)角線奇偶校驗(yàn)然后存儲(chǔ)于適當(dāng)對(duì)角線奇偶校驗(yàn)盤上。如果有附加的對(duì)角線奇偶校驗(yàn)類別,則該過程針對(duì)每個(gè)附加類重復(fù)。圖3是圖示了根據(jù)本發(fā)明一個(gè)示例實(shí)施例的用于實(shí)施n路奇偶校驗(yàn)技術(shù)的過程300的步驟的流程圖。過程300在步驟305中開始并且繼續(xù)步驟310,其中起初用等于數(shù)量m的多個(gè)存儲(chǔ)設(shè)備(諸如盤)來(lái)配置陣列,其中m=p-l而p為質(zhì)數(shù)。m個(gè)盤代表陣列內(nèi)的數(shù)據(jù)盤。陣列可以例如由管理員手動(dòng)配置或者可以由在存儲(chǔ)系統(tǒng)120上執(zhí)行的軟件代理(諸如存儲(chǔ)操作系統(tǒng)的盤存儲(chǔ)模塊240)自動(dòng)配置。在步驟315中,添加附加的奇偶校驗(yàn)盤使得整個(gè)陣列由多達(dá)m+n個(gè)盤構(gòu)成。作為示例,這些盤可以手動(dòng)或者由軟件代理(例如盤存儲(chǔ)模塊240)添加。在這一點(diǎn),陣列包括p-1個(gè)數(shù)據(jù)盤、一個(gè)行奇偶校驗(yàn)盤和多達(dá)n-1個(gè)對(duì)角線奇偶校驗(yàn)盤。作為示例,對(duì)于每個(gè)對(duì)角線奇偶校驗(yàn)類,提供對(duì)角線奇偶校驗(yàn)盤以存儲(chǔ)用于該對(duì)角線奇偶校驗(yàn)類的對(duì)角線奇偶校驗(yàn)。然而如下文進(jìn)一步討論的那樣,并未要求在配置陣列時(shí)利用最大數(shù)量的對(duì)角線奇偶校驗(yàn)類。根據(jù)本發(fā)明的教導(dǎo),陣列可以被配置成支持檢測(cè)n個(gè)設(shè)備的失效而又能夠支持糾正(例如重建)那些失效設(shè)備上包含的數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)示例實(shí)施例,n < p,因?yàn)閷?duì)角線奇偶校驗(yàn)類的數(shù)量不能超過p-1。
在步驟320中,盤例如由盤存儲(chǔ)模塊240劃分成塊,并且在步驟325中,將塊組織成條。在步驟330中,盤存儲(chǔ)模塊240然后將行的每個(gè)數(shù)據(jù)塊XOR成行的行奇偶校驗(yàn)塊,該行的奇偶校驗(yàn)塊包含每個(gè)數(shù)據(jù)盤上的相同位置的所有數(shù)據(jù)塊的X0R。這作為示例是以與常規(guī)RAID 4行奇偶校驗(yàn)編碼相似的方式執(zhí)行的。應(yīng)當(dāng)注意,在替代實(shí)施例中,與RAID 5布置相似,行奇偶校驗(yàn)的位置可以移動(dòng)。這樣,RAID 4編碼技術(shù)的描述應(yīng)當(dāng)理解為示例性。所有數(shù)據(jù)塊和行奇偶校驗(yàn)塊然后在步驟335中例如由盤存儲(chǔ)模塊240分配給對(duì)角線奇偶校驗(yàn)類的對(duì)角線。如上文所言,為每個(gè)對(duì)角線奇偶校驗(yàn)類提供單獨(dú)的對(duì)角線奇偶校驗(yàn)存儲(chǔ)設(shè)備以存儲(chǔ)該類內(nèi)的對(duì)角線的對(duì)應(yīng)對(duì)角線奇偶校驗(yàn)。應(yīng)當(dāng)注意,在本發(fā)明的一個(gè)示例實(shí)施例中,有具有可變斜率的三個(gè)或者更多對(duì)角線奇偶校驗(yàn)類。然而在替代實(shí)施例中,可以利用任何正整數(shù)數(shù)量(多達(dá)n-1)的對(duì)角線奇偶校驗(yàn)類。在上文并入的美國(guó)專利申請(qǐng)系列號(hào)11/304,369中,陣列可以配置有具有具體斜率值的每個(gè)對(duì)角線(例如斜率+1的對(duì)角線)和具有該對(duì)角線的反斜率的反對(duì)角線(例如斜率-I的反對(duì)角線)。作為示例,本發(fā)明通過使陣列能夠配置有具有任何整數(shù)值斜率的對(duì)角線并且無(wú)需具有對(duì)角線的反斜率的反對(duì)角線來(lái)對(duì)上文并入的申請(qǐng)的技術(shù)進(jìn)行改進(jìn)。如上文描述的那樣,并入的申請(qǐng)描述如下技術(shù),其中陣列可以配置有具有具體斜率值的每個(gè)對(duì)角線(例如斜率+1的對(duì)角線)和具有對(duì)角線的反斜率的反對(duì)角線(例如斜率-I的反對(duì)角線)。因此,例如,本發(fā)明使管理員能夠用例如具有斜率+1和+2的對(duì)角線奇偶校驗(yàn)類的對(duì)角線配置三重(例如n=3)奇偶校驗(yàn)陣列。作為示例,可以將數(shù)據(jù)塊和行奇偶校驗(yàn)塊的陣列的每個(gè)成員編索引到它們的分配位置A[i,j],其中i代表行索引并且j代表列索引并且A[]代表陣列。作為示例,這些索引值中的每個(gè)索引值可以范圍從0至p-1。使用二維陣列的這一表示,具有斜率s的對(duì)角線編號(hào)X可以由下式定義 A[(x+s*j) mod p, j],其中 j={0…p-1}
可以在常規(guī)幾何意義上理解術(shù)語(yǔ)斜率(即上/下移動(dòng)位置的數(shù)量除以左/右移動(dòng)位置的數(shù)量之比)。例如斜率+2將代表如下對(duì)角線,其中下一位置為向下兩個(gè)位置并且向右一個(gè)位置,斜率-4將代表如下對(duì)角線,其中下一位置為向上四并且向右一,等等。作為示例,n路奇偶校驗(yàn)由盤存儲(chǔ)模塊240實(shí)施。然而這里可以實(shí)施于其他模塊中或者可以分布于多個(gè)模塊之中。圖4是根據(jù)本發(fā)明一個(gè)示例實(shí)施例的示例性條化布置的示意框圖。該布置為示例性陣列,其中P=7并且s=+2。應(yīng)當(dāng)注意僅示出了數(shù)據(jù)盤和行奇偶校驗(yàn)盤,因?yàn)樵谄渌麑?duì)角線中未包括對(duì)角線奇偶校驗(yàn)盤。該布置中所示的每個(gè)編號(hào)代表向給定對(duì)角線分配的一個(gè)或者多個(gè)塊。因此,圖4內(nèi)的每個(gè)0代表在具有斜率+2的對(duì)角線0上存在的一個(gè)或者多個(gè)塊,等等。對(duì)角線從0到p-1編號(hào),使得在這一示例中,它們從0到6編號(hào)。示例圖4中所示的每個(gè)對(duì)角線具有相同斜率(即+2)并且因此是相同對(duì)角線奇偶校驗(yàn)類的部分,其對(duì)角線奇偶校驗(yàn)存儲(chǔ)于單個(gè)對(duì)角線奇偶校驗(yàn)存儲(chǔ)設(shè)備上。如將從圖4理解的那樣,對(duì)角線卷繞于陣列的邊緣周圍以保證陣列的所有數(shù)據(jù)和行奇偶校驗(yàn)塊由至少一個(gè)對(duì)角線覆蓋。假設(shè)最后一行(行p-1)包含預(yù)定義值(例如O)。這在圖4中由虛線中的最后一行指示。讓一行具有預(yù)定義值使對(duì)角線能夠跨越(即覆蓋)數(shù)據(jù)和行奇偶校驗(yàn)塊的全部并且還保證在每個(gè)對(duì)角線中有一個(gè)已知值。這輔助重建,因?yàn)樗鼜拇蠼獾姆匠探M去除潛在變量。圖4的示例性條化布置可以由A[(x+2*j) mod 7, j]表示,其中j范圍從0到p-1。圖5是根據(jù)本發(fā)明一個(gè)示例實(shí)施例的示例性條化布置的示意框圖。該布置為示例性陣列,其中P=7并且s=_3。與圖4相似,僅示出了數(shù)據(jù)盤和行奇偶校驗(yàn)盤,因?yàn)樵谄渌麑?duì)角線中未包括對(duì)角線奇偶校驗(yàn)盤。圖5的示例性條化布置可以由A[(x-3*j) mod 7,j]表示。圖4和圖5的示例性條化布置可以與n=3陣列一起利用。在這樣的示例性陣列中,三個(gè)奇偶校驗(yàn)位將由以下提供(a)行奇偶校驗(yàn)、(b)如圖4中所示對(duì)角線奇偶校驗(yàn)類內(nèi)的具有斜率+2的對(duì)角線的對(duì)角線奇偶校驗(yàn)以及(c)如圖5中所示對(duì)角線奇偶校驗(yàn)類內(nèi)的具有斜率-3的對(duì)角線的對(duì)角線奇偶校驗(yàn)。如將理解的那樣,這樣的布置可以具有附加對(duì)角線奇偶校驗(yàn)類(具有對(duì)應(yīng)的附加對(duì)角線奇偶校驗(yàn)/位)以增加奇偶校驗(yàn)保護(hù);然而,本發(fā)明的示例實(shí)施例并未要求利用最大數(shù)量的對(duì)角線奇偶校驗(yàn)類。本發(fā)明的又一明顯優(yōu)點(diǎn)是可以向陣列添加附加對(duì)角線奇偶校驗(yàn)類而無(wú)需重新計(jì)算所有奇偶校驗(yàn)。也就是說,假設(shè)陣列尚未配置有最大數(shù)量的對(duì)角線奇偶校驗(yàn)類,可以通過添加對(duì)角線奇偶校驗(yàn)存儲(chǔ)設(shè)備用于存儲(chǔ)用于新對(duì)角線奇偶校驗(yàn)類的奇偶校驗(yàn)來(lái)向陣列添加新對(duì)角線奇偶校驗(yàn)存儲(chǔ)設(shè)備。在這樣的情況下,需要計(jì)算的僅有奇偶校驗(yàn)是將存儲(chǔ)于新添加的存儲(chǔ)設(shè)備上的對(duì)角線奇偶校驗(yàn)。這為管理員提供了在陣列已經(jīng)投入使用之后增加陣列的保護(hù)水平而無(wú)需陣列內(nèi)的所有奇偶校驗(yàn)的耗時(shí)和資源密集的重新計(jì)算的能力。應(yīng)當(dāng)注意,雖然數(shù)據(jù)盤數(shù)量必須滿足條件m=p-l,其中P為質(zhì)數(shù),但是有可能構(gòu)造具有更少數(shù)據(jù)盤的陣列。附加盤(即在盤的物理數(shù)量與m之間的那些盤)可以是用于滿足m=p-l條件的假想零填充的盤。假想零填充的盤不影響奇偶校驗(yàn)計(jì)算。此外,必須以使得對(duì)角線奇偶校驗(yàn)類的斜率是用來(lái)構(gòu)造陣列的質(zhì)數(shù)P的不同模的方式選擇斜率。例如,如果質(zhì)數(shù)P=7,則斜率1、2和-3滿足這一條件。然而斜率4和-3不滿足該條件,因?yàn)?_3 mod 7=(7-3) mod 7=4 mod 7。再次參照?qǐng)D3,一旦已經(jīng)向?qū)蔷€分配所有數(shù)據(jù)和行奇偶校驗(yàn)塊,對(duì)角線奇偶校驗(yàn)類之一就在步驟340中例如由盤存儲(chǔ)模塊240選擇。例如通過執(zhí)行沿著所選對(duì)角線奇偶校驗(yàn)類內(nèi)的對(duì)角線的所有塊的XOR運(yùn)算來(lái)計(jì)算沿著該對(duì)角線奇偶校驗(yàn)類內(nèi)的那些對(duì)角線的對(duì)角線奇偶校驗(yàn)。計(jì)算的對(duì)角線奇偶校驗(yàn)塊然后在步驟350中存儲(chǔ)于與所選對(duì)角線奇偶校驗(yàn)類關(guān)聯(lián)的對(duì)角線奇偶校驗(yàn)盤上。這一存儲(chǔ)可以例如由與盤驅(qū)動(dòng)器器250結(jié)合工作的盤存儲(chǔ)模塊240執(zhí)行以使計(jì)算的奇偶校驗(yàn)存儲(chǔ)于盤150上。在步驟355中確定是否需要計(jì)算用于任何附加對(duì)角線奇偶校驗(yàn)類的對(duì)角線奇偶校驗(yàn)。如果需要計(jì)算用于附加對(duì)角線奇偶校驗(yàn)類的對(duì)角線奇偶校驗(yàn),則過程300循環(huán)回到步驟340并且選擇另一對(duì)角線奇偶校驗(yàn)類。過程300然后在步驟360完成。由于過程300,陣列被配置成實(shí)現(xiàn)從陣列內(nèi)的n個(gè)存儲(chǔ)設(shè)備(例如盤)的失效中恢復(fù)。隨后可以使用用于求解線性方程組的任何技術(shù)來(lái)重建陣列(例如響應(yīng)于錯(cuò)誤條件)。圖6是圖示了根據(jù)本發(fā)明一個(gè)示例實(shí)施例的用于在一個(gè)或者多個(gè)失效存儲(chǔ)設(shè)備的情況下執(zhí)行重建的示例性過程600的步驟的流程圖。過程600在步驟605中開始并且繼續(xù)步驟610,其中錯(cuò)誤條件例如由盤存儲(chǔ)模塊240檢測(cè)。錯(cuò)誤條件可以例如包括一個(gè)或者多個(gè)存儲(chǔ)設(shè)備的失效??梢岳缬捎趯?duì)介質(zhì)的物理?yè)p壞、失去連接等而出現(xiàn)失效??梢酝ā⑦^常規(guī)檢錯(cuò)技術(shù)(諸如例如向設(shè)備的輸入/輸出(I/o)失效、檢測(cè)到失去連接等)來(lái)檢測(cè)錯(cuò)誤。盤存儲(chǔ)模塊240然后在步驟615中確定失效數(shù)量是否小于或者等于n。如果失效數(shù)量小于或者等于n,則可以使用這里描述的nP技術(shù)來(lái)糾正失效。在該情況下,該過程繼續(xù)步驟620,其中重建丟失的數(shù)據(jù)。如上文所言,用于求解線性方程組的任何技術(shù)可以用來(lái)執(zhí)行nP陣列的重建。用于求解線性方程組的示例技術(shù)例如包括高斯消元、克萊姆規(guī)則、Cholesky分解、LU分解。在通過引用將內(nèi)容結(jié)合于此的James Lee Hafner等人在FAST’ 05: 4thUSENIX Conference on File and Storage Techno logies 的 Matrix Methods for LostData Reconstruction in Erasure Codes中描述了另一不例性技術(shù)。一旦已經(jīng)重建數(shù)據(jù),過程600然后在步驟625中完成。如果在步驟615中確定失效數(shù)量大于n,則過程600跳轉(zhuǎn)到步驟630,其中錯(cuò)誤條件在步驟625中過程完成之前被視為不可恢復(fù)。前文描述已經(jīng)涉及本發(fā)明的具體實(shí)施例。然而將清楚可以對(duì)描述的實(shí)施例做出其他變化和修改而達(dá)到一些或者所有它們的優(yōu)點(diǎn)。例如盡管在盤方面撰寫描述,但是可以根據(jù)替代實(shí)施例利用任何存儲(chǔ)設(shè)備,包括但不限于閃存和其他固態(tài)介質(zhì)。因此,所附權(quán)利要求書的目的是覆蓋如落入本發(fā)明的真實(shí)精神和范圍內(nèi)的所有這樣的變化和修改。
權(quán)利要求
1.一種用于實(shí)現(xiàn)從存儲(chǔ)陣列中的存儲(chǔ)設(shè)備的多達(dá)n個(gè)同時(shí)失效恢復(fù)的方法,包括 向所述陣列提供預(yù)定數(shù)量的存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括被配置成存儲(chǔ)數(shù)據(jù)和行奇偶校驗(yàn)的多個(gè)第一設(shè)備,其中所述存儲(chǔ)設(shè)備的預(yù)定數(shù)量m小于或者等于/7-1,并且其中/7為質(zhì)數(shù); 向所述陣列提供被配置成存儲(chǔ)至少三個(gè)對(duì)角線奇偶校驗(yàn)類的至少三個(gè)第二設(shè)備; 將每個(gè)設(shè)備劃分成塊; 將所述塊組織成包含每個(gè)設(shè)備中的塊的條; 計(jì)算用于每行數(shù)據(jù)的行奇偶校驗(yàn); 向?qū)蔷€分配來(lái)自存儲(chǔ)數(shù)據(jù)和行奇偶校驗(yàn)的所述設(shè)備的所有塊;并且對(duì)于每個(gè)對(duì)角線奇偶校驗(yàn)類,計(jì)算沿著具有共同斜率的所有對(duì)角線的對(duì)角線奇偶校驗(yàn),并且在與所述對(duì)角線奇偶校驗(yàn)類關(guān)聯(lián)的所述第二設(shè)備之一上存儲(chǔ)計(jì)算的對(duì)角線奇偶校 驗(yàn)。
2.根據(jù)權(quán)利要求I所述的方法,其中條中的行奇偶校驗(yàn)塊都存儲(chǔ)于單個(gè)設(shè)備上。
3.根據(jù)權(quán)利要求I所述的方法,其中所述第一設(shè)備包括多個(gè)數(shù)據(jù)設(shè)備,并且其中所述數(shù)據(jù)設(shè)備并未都存在并且不存在的數(shù)據(jù)設(shè)備被視為包含用于計(jì)算奇偶校驗(yàn)的所有零。
4.根據(jù)權(quán)利要求I所述的方法,其中奇偶校驗(yàn)塊的位置在不同條內(nèi)隨著設(shè)備移位。
5.根據(jù)權(quán)利要求I所述的方法,其中所述條在大小上是位數(shù)為二的冪。
6.根據(jù)權(quán)利要求I所述的方法,其中所述多個(gè)第二設(shè)備包括多達(dá)n-1個(gè)設(shè)備,并且其中n < P。
7.根據(jù)權(quán)利要求I所述的方法,其中所述第一和第二多個(gè)存儲(chǔ)設(shè)備包括盤驅(qū)動(dòng)器。
8.根據(jù)權(quán)利要求I所述的方法,還包括響應(yīng)于檢測(cè)到一個(gè)或者多個(gè)存儲(chǔ)設(shè)備的失效,對(duì)非失效的存儲(chǔ)設(shè)備執(zhí)行重建技術(shù)。
9.根據(jù)權(quán)利要求I所述的方法,還包括 添加附加第二設(shè)備用于存儲(chǔ)附加對(duì)角線奇偶校驗(yàn)類,其中僅計(jì)算沿著與所述附加對(duì)角線奇偶校驗(yàn)類具有共同斜率的所有對(duì)角線的所述對(duì)角線奇偶校驗(yàn);并且 在與所述附加對(duì)角線奇偶校驗(yàn)類關(guān)聯(lián)的所述附加第二設(shè)備上存儲(chǔ)計(jì)算的對(duì)角線奇偶校驗(yàn)。
10.根據(jù)權(quán)利要求I所述的方法,其中所述斜率包括在對(duì)角線中的兩個(gè)相鄰存儲(chǔ)設(shè)備之上以及之間的存儲(chǔ)設(shè)備的數(shù)量之比。
11.根據(jù)權(quán)利要求I所述的方法,其中所述共同斜率包括值相等的斜率。
12.根據(jù)權(quán)利要求I所述的方法,其中所述存儲(chǔ)設(shè)備包括閃存設(shè)備。
13.一種用于實(shí)現(xiàn)從存儲(chǔ)陣列中的存儲(chǔ)設(shè)備的多達(dá)n個(gè)同時(shí)失效恢復(fù)的系統(tǒng),包括 所述存儲(chǔ)陣列,被配置有預(yù)定數(shù)量的存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括被配置成存儲(chǔ)數(shù)據(jù)和行奇偶校驗(yàn)的多個(gè)第一設(shè)備以及被配置成存儲(chǔ)對(duì)角線奇偶校驗(yàn)的多個(gè)第二設(shè)備,其中所述存儲(chǔ)設(shè)備的預(yù)定數(shù)量m為/7-1,并且其中/7為質(zhì)數(shù),其中每個(gè)設(shè)備劃分成塊,并且所述塊組織成條,所述條包含每個(gè)設(shè)備中的相同數(shù)量的塊; 所述存儲(chǔ)陣列還被配置有至少三個(gè)第二設(shè)備,所述第二設(shè)備被配置成存儲(chǔ)對(duì)角線奇偶校驗(yàn)類,每個(gè)對(duì)角線奇偶校驗(yàn)類由沿著所述數(shù)據(jù)和行奇偶校驗(yàn)的斜率定義;以及 存儲(chǔ)操作系統(tǒng),包括被配置成計(jì)算和存儲(chǔ)用于所有所述對(duì)角線奇偶校驗(yàn)類的對(duì)角線奇偶校驗(yàn)的設(shè)備存儲(chǔ)模塊。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中條中的行奇偶校驗(yàn)塊都存儲(chǔ)于單個(gè)設(shè)備上。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述設(shè)備存儲(chǔ)模塊層為RAID系統(tǒng),并且其中所述存儲(chǔ)設(shè)備為盤。
16.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述設(shè)備為視頻帶、磁帶、光的、DVD、磁泡存儲(chǔ)器、磁盤、電子隨機(jī)訪問存儲(chǔ)器和微機(jī)電存儲(chǔ)設(shè)備之一。
17.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述第一設(shè)備包括多個(gè)數(shù)據(jù)設(shè)備,并且其中所述數(shù)據(jù)設(shè)備并未都存在并且不存在的數(shù)據(jù)設(shè)備被視為包含用于計(jì)算奇偶校驗(yàn)的所有零。
18.根據(jù)權(quán)利要求13所述的系統(tǒng),其中行奇偶校驗(yàn)塊在條中遍及多個(gè)設(shè)備旋轉(zhuǎn)。
19.根據(jù)權(quán)利要求13所述的系統(tǒng),其中存儲(chǔ)行奇偶校驗(yàn)、對(duì)角線奇偶校驗(yàn)或者數(shù)據(jù)的設(shè)備隨著條變化。
20.根據(jù)權(quán)利要求13所述的系統(tǒng),其中利用的不同斜率的數(shù)量至多為p-1。
21.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述設(shè)備存儲(chǔ)模塊還被配置成從所述第一或者第二多個(gè)設(shè)備的多個(gè)失效重建數(shù)據(jù)。
22.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述存儲(chǔ)設(shè)備為閃存設(shè)備。
23.一種用于實(shí)現(xiàn)從存儲(chǔ)陣列中的存儲(chǔ)設(shè)備的多達(dá)n個(gè)同時(shí)失效恢復(fù)的方法,包括 將斜率的集合與所述存儲(chǔ)陣列關(guān)聯(lián),每個(gè)斜率與所述存儲(chǔ)陣列內(nèi)的數(shù)據(jù)和行奇偶校驗(yàn)設(shè)備的集合的對(duì)角線奇偶校驗(yàn)類關(guān)聯(lián),其中沒有兩個(gè)斜率是與所述存儲(chǔ)陣列關(guān)聯(lián)的質(zhì)數(shù)的相等模數(shù); 在存儲(chǔ)系統(tǒng)上執(zhí)行的存儲(chǔ)操作系統(tǒng)的存儲(chǔ)模塊確定用于所述存儲(chǔ)陣列內(nèi)的每行數(shù)據(jù)的行奇偶校驗(yàn)并且在所述行奇偶校驗(yàn)設(shè)備的集合上存儲(chǔ)確定的行奇偶校驗(yàn);并且 針對(duì)每個(gè)對(duì)角線奇偶校驗(yàn)類確定跨越所述數(shù)據(jù)和行奇偶校驗(yàn)設(shè)備的對(duì)角線奇偶校驗(yàn)的集合,并且在所述存儲(chǔ)陣列內(nèi)的與所述對(duì)角線奇偶校驗(yàn)類關(guān)聯(lián)的對(duì)角線奇偶校驗(yàn)設(shè)備上存儲(chǔ)確定的對(duì)角線奇偶校驗(yàn)。
24.根據(jù)權(quán)利要求23所述的方法,其中所述存儲(chǔ)設(shè)備包括盤驅(qū)動(dòng)器。
25.根據(jù)權(quán)利要求23所述的方法,其中所述數(shù)據(jù)和行奇偶校驗(yàn)設(shè)備的集合包括p個(gè)設(shè)備,其中P為質(zhì)數(shù),并且其中所述對(duì)角線奇偶校驗(yàn)設(shè)備的集合包括n-1個(gè)設(shè)備。
全文摘要
一種n路奇偶校驗(yàn)保護(hù)技術(shù)實(shí)現(xiàn)存儲(chǔ)陣列的奇偶校驗(yàn)組中的上至n個(gè)存儲(chǔ)設(shè)備(例如盤)失效的恢復(fù),存儲(chǔ)陣列被編碼成防范n路盤失效。通過先配置具有m個(gè)數(shù)據(jù)盤的陣列來(lái)創(chuàng)建存儲(chǔ)陣列,其中m=p-1并且p為質(zhì)數(shù),并且然后向陣列添加行奇偶校驗(yàn)盤,n-1個(gè)對(duì)角線奇偶校驗(yàn)盤。每個(gè)對(duì)角線奇偶校驗(yàn)集合(將對(duì)角線)與斜率關(guān)聯(lián),該斜率定義陣列的在對(duì)角線中包括的數(shù)據(jù)和行奇偶校驗(yàn)塊。將奇偶校驗(yàn)組內(nèi)的具有共同斜率的所有對(duì)角線組織為對(duì)角線奇偶校驗(yàn)類。對(duì)于每個(gè)對(duì)角線奇偶校驗(yàn)類,提供對(duì)角線奇偶校驗(yàn)存儲(chǔ)盤用于存儲(chǔ)對(duì)角線奇偶校驗(yàn)。
文檔編號(hào)G06F11/10GK102667727SQ201080053524
公開日2012年9月12日 申請(qǐng)日期2010年9月23日 優(yōu)先權(quán)日2009年9月25日
發(fā)明者A.格爾, P.F.科爾貝特 申請(qǐng)人:網(wǎng)絡(luò)存儲(chǔ)技術(shù)公司