欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用基于對象的存儲設備在文件系統(tǒng)上使用覆蓋對象進行故障處理的制作方法

文檔序號:6585880閱讀:156來源:國知局
專利名稱:使用基于對象的存儲設備在文件系統(tǒng)上使用覆蓋對象進行故障處理的制作方法
技術領域
本發(fā)明涉及計算機系統(tǒng),更具體來說,涉及計算機系統(tǒng)內的數(shù)據(jù)存儲子系統(tǒng)。
背景技術
計算機系統(tǒng)常常包括用于存儲數(shù)據(jù)的數(shù)據(jù)存儲子系統(tǒng)。具體來說,包括通過網(wǎng)絡 互連在一起的多個客戶端的計算機系統(tǒng)越來越多地通過網(wǎng)絡共享一個或多個數(shù)據(jù)存儲子 系統(tǒng)。數(shù)據(jù)存儲子系統(tǒng)可以包括或進一步連接到由一個或多個磁盤存儲設備、磁帶驅動器 或其他存儲介質組成的存儲器。計算機系統(tǒng)也可以包括一個或多個服務器,在這些服務器 中,維護描述所包括的存儲設備的內容的元數(shù)據(jù)。 數(shù)據(jù)存儲子系統(tǒng)可以帶有某種冗余地存儲數(shù)據(jù),以從存儲器錯誤中恢復。有各 種冗余地存儲數(shù)據(jù)的技術,包括擦除編碼技術,如里德-索羅蒙編碼和使用各種布局的 RAID(獨立磁盤冗余陣列),如RAID-l、RAID-5或RAID-6。這些RAID布局可以在基于對象 的文件系統(tǒng)內實現(xiàn),每一個獨立的存儲設備都被當作磁盤。每一個客戶端設備都可以通過 網(wǎng)絡向存儲設備傳輸數(shù)據(jù)。令人遺憾的是,可能需要某種仲裁來自多個客戶端的寫訪問請 求的方式,以避免在冗余數(shù)據(jù)中產(chǎn)生不一致。 一種仲裁方法是要求每一個客戶端在訪問存 儲位置之前獲取一個鎖。然而,此方法要求,每一個客戶端都負責執(zhí)行涉及使用鎖定機制的 序列化寫入的全部功能,并被信任。例如,在RAID-5或RAID-6的情況下,這些功能可以包 括讀取舊數(shù)據(jù)和舊奇偶校驗,計算新的奇偶校驗,記錄新的數(shù)據(jù)和新的奇偶校驗,并向一起 構成了 RAID布局中的行的一部分或整個行的它們的相應的存儲位置寫入新的數(shù)據(jù)和新的 奇偶校驗。此外,對于每一個向RAID布局中的單個位置的寫入操作,客戶端都可能需要從 元數(shù)據(jù)服務器(MDS)檢索信息。這些功能的執(zhí)行延長了寫入延遲,并增大了每一個客戶端 復雜性,并帶來了大量的計算和存儲開銷。 除上面的考慮之外,數(shù)據(jù)存儲子系統(tǒng)被設計為當一個或多個設備發(fā)生故障時最小 化可能發(fā)生的數(shù)據(jù)的損失。雖然RAID布局旨在提供高可用性和容錯,但是,如果客戶端負 責維護冗余,在復雜的讀取或寫入操作過程中,設備容易發(fā)生故障的可能性會增大。客戶端 可能不值得信任,或沒有足夠的資源處理由數(shù)據(jù)存儲子系統(tǒng)中的設備故障所引起的錯誤。 客戶端除了面臨冗余地存儲數(shù)據(jù)所需的任務,包括處理設備故障給帶來負擔,某些基于對 象的文件系統(tǒng)可能假設,客戶端不被信任,并依賴于單個對象存儲設備協(xié)作地管理冗余。然 而,甚至在這樣的協(xié)作系統(tǒng)中,也需要在處理設備故障時允許繼續(xù)執(zhí)行讀取和寫入操作,而 不會丟失數(shù)據(jù),并且也不會給系統(tǒng)的客戶端帶來負擔。還進一步需要當發(fā)生故障的設備從 故障恢復時能夠使發(fā)生故障的設備再同步,或如果發(fā)生故障的設備不能足夠快地恢復,完 全使更換設備同步,而不會降低存儲器的可用性。 考慮到上面的情況,需要能夠解決這些問題的用于管理基于對象的數(shù)據(jù)存儲子系 統(tǒng)中的設備故障的有效系統(tǒng)和方法。

發(fā)明內容
公開了計算機系統(tǒng)和方法的各種實施例。在一個實施例中,計算機系統(tǒng)包括連接
到存儲子系統(tǒng)的客戶端。存儲子系統(tǒng)包括可作為陣列中的行和列尋址的多個數(shù)據(jù)存儲位
置。陣列的每一列都包括單獨的存儲設備。陣列的每一行中存儲的數(shù)據(jù)包括至少某些冗余
數(shù)據(jù)。對于陣列中的給定行,協(xié)調存儲設備協(xié)調冗余數(shù)據(jù)的計算和存儲。計算機系統(tǒng)檢測
包括存儲設備的至少一部分的存儲區(qū)域的故障。作為對檢測到故障的響應,計算機系統(tǒng)配
置覆蓋存儲設備以臨時覆蓋發(fā)生故障的區(qū)域,維護覆蓋存儲設備和發(fā)生故障的區(qū)域之間的
關聯(lián),并維護在區(qū)域處于發(fā)生故障的狀態(tài)時對覆蓋存儲設備作出的更改的記錄。 在進一步的實施例中,作為對檢測到發(fā)生故障的區(qū)域已經(jīng)恢復的響應,計算機系
統(tǒng)使用該關聯(lián)來標識覆蓋存儲設備,并使用對覆蓋存儲設備進行的更改的記錄,使發(fā)生故
障的區(qū)域再同步。在更進一步的實施例中,響應于判斷區(qū)域的故障是永久的,計算機系統(tǒng)使
用該關聯(lián)來標識覆蓋存儲設備,并將以前存儲在發(fā)生故障的區(qū)域的數(shù)據(jù)復制到覆蓋存儲設備。 在進一步的實施例中,陣列中的行利用擦除-編碼布局,如鏡像布局、RAID-5布 局,或RAID-6布局。對于陣列中的給定行,協(xié)調存儲設備從以向覆蓋設備寫入數(shù)據(jù)為目標 的客戶端接收寫入請求,基于從給定行中的非覆蓋設備中檢索到的舊數(shù)據(jù),計算并存儲冗 余值,并將寫入數(shù)據(jù)轉發(fā)到至少包括所述覆蓋設備的給定行中的設備。此外,對于陣列中的 給定行,協(xié)調存儲設備從以從覆蓋設備讀取數(shù)據(jù)為目標的客戶端接收讀取請求,使用從給 定行中的非覆蓋設備中檢索到的數(shù)據(jù),從發(fā)生故障的區(qū)域重建數(shù)據(jù),并將重建的數(shù)據(jù)返回 到客戶端。在一個實施例中,由協(xié)調存儲設備檢測包括存儲設備的至少一部分的存儲區(qū)域 的故障。 在考慮下列描述以及附圖的情況下,這些及其他實施例將變得顯而易見。


圖1顯示了計算機系統(tǒng)的一個實施例。 圖2是RAID-5數(shù)據(jù)存儲子系統(tǒng)的一個實施例的一般化方框圖。 圖3是RAID-6數(shù)據(jù)存儲子系統(tǒng)的一個實施例的一般化方框圖。 圖4是RAID-1數(shù)據(jù)存儲子系統(tǒng)的一個實施例的一般化方框圖。 圖5說明了用于處理鏡像布局中的設備故障的過程的一個實施例。 圖6是顯示了客戶端和鏡像布局中的行之間的I/O事務的一個實施例的順序圖。 圖7說明了用于處理RAID-5布局中的設備故障的過程的一個實施例。 圖8是說明了客戶端和RAID-5布局中的部分行之間的讀取事務的一個實施例的
順序圖,其中,讀取操作的目標存儲設備包括臨時存儲設備。 圖9是說明了客戶端和RAID-5布局中的部分行之間的寫入事務的一個實施例的 順序圖,其中,寫入操作的目標存儲設備包括臨時存儲設備。 圖10說明了用于處理RAID-6布局中的設備故障的過程的一個實施例。 圖11是說明了客戶端和RAID-6布局中的部分行之間的讀取事務的一個實施例的
順序圖,其中,讀取操作的其中一個目標存儲設備是臨時存儲設備,臨時存儲設備不是奇偶
校驗存儲設備。
圖12是說明了客戶端和RAID-6布局中的部分行之間的讀取事務的一個實施例的 順序圖,其中, 一個臨時存儲設備是接收讀取請求的奇偶校驗存儲設備,另一個臨時存儲設 備是讀取請求的其中一個目標存儲設備。 圖13是說明了客戶端和RAID-6布局中的部分行之間的寫入事務的一個實施例的 順序圖,其中,寫入操作的目標存儲設備包括臨時存儲設備。 圖14顯示了在存儲設備發(fā)生故障的情況下客戶端和存儲設備布局中的行之間的 I/O事務過程中可以使用的過程的一個實施例。 圖15說明了可以用來覆蓋和恢復存儲子系統(tǒng)中的發(fā)生故障的存儲設備的過程的 一個實施例。 圖16顯示了用于處理鏡像布局中的1/0請求的過程的一個實施例,其中,覆蓋存 儲設備以臨時覆蓋發(fā)生故障的存儲設備。 圖17顯示了用于處理RAID-5布局中的I/O請求的過程的一個實施例,其中,覆蓋 存儲設備以臨時覆蓋發(fā)生故障的存儲設備。 圖18顯示了用于處理RAID-6布局中的I/O請求的過程的一個實施例,其中,兩個 覆蓋存儲設備臨時覆蓋發(fā)生故障的存儲設備。 盡管本發(fā)明可以具有各種修改和替代形式,但是,這里將通過圖形中的示例顯示 特定實施例,并進行詳細描述。然而,應了解,圖形和詳細描述不打算將本發(fā)明只限于所說 明的特定形式,相反地,本發(fā)明可以覆蓋如所附權利要求所定義的本發(fā)明的精神和范圍內 的所有修改、等效內容和替代方案。
具體實施例方式
圖1顯示了計算機系統(tǒng)100的一個實施例。如圖所示,系統(tǒng)IOO包括通過網(wǎng)絡180 互連在一起的客戶端110、 120,以及130,存儲子系統(tǒng)150,以及元數(shù)據(jù)服務器(MDS)160。客 戶端110、120,以及130是任意數(shù)量的靜止或移動電腦的代表,如臺式PC、工作站、筆記本電 腦、手持式電腦、刀片式服務器等等。雖然所描述的系統(tǒng)ioo包括客戶端和服務器,但是,在 備選實施例中,由客戶端和服務器執(zhí)行的功能可以由對等網(wǎng)絡配置中的對等節(jié)點或由客戶 端、服務器,以及對等節(jié)點的組合來執(zhí)行。 在備選實施例中,客戶端、服務器,以及存儲設備的數(shù)量和類型不僅限于圖1中所 顯示的那些。通過調制解調器庫、直接LAN連接、無線連接、WAN鏈路等等的不同組合,在系 統(tǒng)100中可以有幾乎任何數(shù)量和組合的服務器、臺式機,以及移動客戶端互連在一起。此 外,在各種時間,可以有一個或多個客戶端離線操作。此外,在操作過程中,隨著移動用戶從 一處移動到另一處,連接到系統(tǒng)100,與其斷開,以及重新連接到系統(tǒng)100,單個客戶端連接 類型也會變化。 在系統(tǒng)100內,可能希望將與客戶端110、 120,以及130中的任何一個客戶端關聯(lián) 的數(shù)據(jù)存儲在存儲子系統(tǒng)150內。子系統(tǒng)150可以包括單個存儲設備151-155。存儲設備 151-155可以是諸如硬盤、服務器刀片,或專業(yè)化設備之類的各種設備中的任何一個設備, 并可以包括各種存儲器設備,如RAM、Flash RAM、MEMS(微型機電系統(tǒng))存儲器、帶蓄電池后 備電源的RAM,和/或非易失性RAM(NVRAM)等等。客戶端數(shù)據(jù)可以以諸如RAID_1、RAID_DP、 RAID-5、 RAID-6、擦除-編碼數(shù)據(jù)表示方案等等之類的各種已知的布局中的一種存儲在存
6儲子系統(tǒng)150內,其中,存儲器的可靠性可以通過冗余和/或錯誤校正功能來提高。描述 了存儲在存儲子系統(tǒng)150中的數(shù)據(jù)的布局的元數(shù)據(jù)可以存儲在MDS 160中。客戶端可以從 MDS 160中檢索元數(shù)據(jù),以便識別存儲子系統(tǒng)150內的所需的數(shù)據(jù)存儲位置。在備選實施例 中,MDS 160的功能可以由各種組件中的任何一個組件來執(zhí)行,如巻配置守護進程或其他存 儲管理進程或服務器,具體情況取決于存儲子系統(tǒng)150中的存儲設備的類型和布局。
在下面的討論中,數(shù)據(jù)可以存儲在取決于單個存儲設備位置的容量的具有給定大 小的條帶單元中。這些條帶單元可以是數(shù)據(jù)對象、數(shù)據(jù)片段、塊,或適合于單個存儲設備的 任何其他數(shù)據(jù)段。然而,從客戶端來看,數(shù)據(jù)條帶單元可以有不同大小。例如,客戶端可以 向條帶單元(大小足以填充以陣列方式排列的許多存儲設備中的一行)中的存儲子系統(tǒng)傳 輸數(shù)據(jù)??蛻舳艘部梢砸孕∮跅l帶單元的大小傳輸數(shù)據(jù)。各種條帶布局都是可以的,下面 將對其中一些布局進一步進行詳細描述。對于存儲子系統(tǒng)150內的給定行,其中一個存儲 設備可以被指定為協(xié)調存儲設備。在某些實施例中,數(shù)據(jù)可以無需奇偶校驗地進行存儲,每 一行中的協(xié)調存儲設備可以協(xié)調行中的其他存儲設備中的單個條帶單元的存儲。在涉及冗 余布局的其他實施例中,協(xié)調存儲設備可以協(xié)調數(shù)據(jù)的存儲以及協(xié)調奇偶校驗計算。很多 這樣的替代方案都是可以的。 現(xiàn)在請參看圖2,該圖顯示了存儲子系統(tǒng)150的一個實施例的一般化方框圖。在所 顯示的實施例中,存儲子系統(tǒng)150包括按RAID-5布局方式排列的存儲設備210、220、230、 240和250。每一個存儲設備210、220、230、240,以及250包括諸如隨機存取存儲器(RAM) 之類的一組臨時存儲設備215、225、235、245,以及255中的對應的一個。在一個實施例中, 存儲設備215、225、235、245,以及255可以包括非易失性RAM(NVRAM)。數(shù)據(jù)可以存儲在存 儲設備中的成排地分為條狀的條帶單元中。在各種RAID-5實施例中,在每一行中都可以有 一個奇偶校驗存儲設備和至少兩個數(shù)據(jù)存儲設備,具體情況取決于布局中的存儲設備的數(shù) 量。例如,在所顯示的實施例中,一行可以被定義為五個條帶單元,每一個條帶單元都存儲 在存儲設備210、220、230、240,以及250中的一個存儲設備中。數(shù)據(jù)可以跨行的一部分、完 整的行,或多行地分為條狀。每一行都可以包括四個數(shù)據(jù)條帶單元和一個奇偶校驗條帶單 元。更具體來說,所顯示的實施例中的第一行可以包括分別存儲在存儲設備210、220、230、 240,以及250中的數(shù)據(jù)條帶單元A1、A2、A3,以及A4和奇偶校驗條帶單元Ap。第二行可以包 括數(shù)據(jù)條帶單元B1、B2、B3,以及B4和奇偶校驗條帶單元Bp。與其中奇偶校驗條帶單元Ap 存儲在存儲設備250中的第一行不同,奇偶校驗條帶單元Bp可以存儲在存儲設備240中, 而數(shù)據(jù)條帶單元Bl、 B2、 B3,以及B4可以分別存儲在存儲設備210、220、230,以及250中。 奇偶校驗條帶單元的位置可以在諸如行C和D等等之類的每一個連續(xù)的行上在多個存儲設 備之間旋轉。 在操作過程中,客戶端可以將數(shù)據(jù)寫入到給定行中,好像向RAID-O布局中寫入。 更具體地說,可以告訴客戶端,數(shù)據(jù)被分為條狀,以便對于每一個RAID-5行,整行存儲在為 該行指定的容納了奇偶校驗條帶單元的存儲設備中,條帶大小等于行中的其他、非奇偶校 驗條帶單元的組合的大小。然后,客戶端可以將整行的數(shù)據(jù)發(fā)送到奇偶校驗存儲設備。然 后,奇偶校驗存儲設備可以根據(jù)下面將比較詳細地描述的進程,將數(shù)據(jù)的一個或多個部分 轉發(fā)到給定行中的組件數(shù)據(jù)存儲設備。每一個存儲設備都可以將奇偶校驗或數(shù)據(jù)存儲在其 關聯(lián)的RAM中,直到計算出新的奇偶校驗,此時,可以提交寫入操作,可以從RAM向關聯(lián)的條帶單元位置傳輸數(shù)據(jù)和奇偶校驗。在數(shù)據(jù)和奇偶校驗條帶單元被存儲在RAM中之后但是在 數(shù)據(jù)和奇偶校驗從RAM傳輸?shù)疥P聯(lián)的條帶單元位置之前,存儲子系統(tǒng)可以將寫入完成消息 返回到客戶端,最小化了寫入延遲。可以通過一系列寫入操作,寫入大于單一行的容量的數(shù) 據(jù)集,每一個寫入操作都具有一行或稍小的寬度,并且每一個寫入操作都發(fā)給其相應的行 中的對應的奇偶校驗存儲設備。 可以按類似的方式處理讀取操作。例如,讀取請求也可以從客戶端發(fā)送到給定行 中的奇偶校驗存儲設備。如果被請求的數(shù)據(jù)存儲在與奇偶校驗存儲設備關聯(lián)的RAM中,則 可以檢索數(shù)據(jù),并響應請求,將數(shù)據(jù)直接發(fā)送到客戶端。如果被請求的數(shù)據(jù)位于構成該行的 一個或多個其他存儲設備上,則奇偶校驗存儲設備可以將對應的讀取請求傳輸?shù)讲季种械?每一個存儲設備,作為回報,接收被請求的數(shù)據(jù)的一部分。然后,奇偶校驗存儲設備可以將 數(shù)據(jù)組合起來,將它返回到發(fā)出請求的客戶端。如果數(shù)據(jù)的一個或多個部分位于已經(jīng)發(fā)生 故障的存儲設備上,則奇偶校驗存儲設備可以從構成該行的足夠數(shù)量的其余存儲設備中檢 索數(shù)據(jù),然后使用可用的數(shù)據(jù)和奇偶校驗重建缺失的數(shù)據(jù)。 下面將描述許多錯誤恢復情況。在奇偶校驗存儲設備之外的存儲設備發(fā)生故障的 情況下,奇偶校驗存儲設備可以檢測故障,并向MDS發(fā)送消息,以報告設備故障?;蛘?,奇偶 校驗存儲設備可以向客戶端發(fā)送錯誤消息,代替寫入完成消息。作為響應,客戶端可以與 MDS進行接觸,以報告錯誤。在從客戶端或從奇偶校驗存儲設備接收到錯誤消息時,MDS可 以選擇新的存儲設備以覆蓋發(fā)生故障的設備,并基于存儲在其余存儲設備中的數(shù)據(jù),使條 帶的內容被重建。如果在行中的全部設備已經(jīng)接收到并存儲了數(shù)據(jù)的它們的相應的那些部 分之前設備發(fā)生故障,則可以從奇偶校驗存儲設備獲得寫入數(shù)據(jù)的完整的副本,以完成寫 入操作。 在奇偶校驗存儲設備發(fā)生故障的情況下,MDS可以通過諸如輪詢等等傳統(tǒng)技術來 識別奇偶校驗存儲設備的故障,并選擇新的存儲設備來覆蓋它。新的奇偶校驗存儲設備可 以通過從其他存儲設備讀取數(shù)據(jù)并將所產(chǎn)生的值存儲在新的存儲位置,來重新計算奇偶校 驗值。在某些實施例中,可以由諸如MDS之類的另一個設備進行奇偶校驗重新計算。
圖3是存儲子系統(tǒng)150的備選實施例的詳細方框圖。在所顯示的實施例中,數(shù)據(jù)可 以作為條帶單元存儲在存儲子系統(tǒng)150中。存儲子系統(tǒng)150包括按RAID-6布局方式排列的 存儲設備310、320、330、240、350,以及360。每一個存儲設備310、320、330、340、350和360 都包括諸如隨機存取存儲器(RAM)之類的一組臨時存儲設備315、325、335、345、355,以及 365中的對應的一個。在一個實施例中,存儲設備315、325、335、345、355,以及365可以包括 Flash RAM、MEMS(微型機電系統(tǒng))存儲器、帶蓄電池后備電源的RAM、非易失性RAM(NVRAM), 或其他永久性存儲設備。數(shù)據(jù)可以在存儲設備上成排地跨條帶單元地分為條狀。
在各種RAID-6實施例中,在每一行中都可以有兩個奇偶校驗條帶單元和至少兩
個數(shù)據(jù)條帶單元,具體情況取決于布局中的存儲設備的數(shù)量。例如,在所顯示的實施例中, 一行可以被定義為六個條帶單元,每一個條帶單元都存儲在存儲設備310、320、330、340、 350,以及360中的一個存儲設備中。數(shù)據(jù)可以跨行的一部分、完整的行,或多行地分為條 狀。每一行都可以包括四個數(shù)據(jù)條帶單元和兩個奇偶校驗條帶單元。更具體來說,所顯示 的實施例中的第一行可以包括分別存儲在存儲設備310、320、330、340、350,以及360中的 數(shù)據(jù)條帶單元Al、 A2、 A3,以及A4和奇偶校驗條帶單元Ap和Aq。第二行可以包括數(shù)據(jù)條帶單元Bl、 B2、 B3,以及B4和奇偶校驗條帶單元Bp和Bq。與其中奇偶校驗條帶單元Ap可 以存儲在存儲設備350以及Aq可以存儲在存儲設備360中的第一行不同,奇偶校驗條帶單 元Bp可以存儲在存儲設備340中以及Bq可以存儲在存儲設備350中,而數(shù)據(jù)條帶單元Bl 、 B2、B3,以及B4可以分別存儲在存儲設備310、320、330,以及360中。奇偶校驗存儲設備的 位置可以在諸如行C和D等等之類的每一個連續(xù)的行上在多個存儲設備之間旋轉。
在寫入操作過程中,客戶端可以將數(shù)據(jù)寫入到給定行中,好像向RAID-O布局中寫 入。更具體地說,可以告訴客戶端,數(shù)據(jù)被分為條狀,以便對于每一個RAID-6行,整行存儲 在為該行指定的主奇偶校驗存儲設備中(上面用下標字母"P"表示),客戶端條帶單元等于 行中的其他、非奇偶校驗條帶單元的組合的大小。然后,客戶端可以將整行的數(shù)據(jù)發(fā)送到主 奇偶校驗存儲設備。然后,主奇偶校驗存儲設備可以根據(jù)下面將比較詳細地描述的進程,將 數(shù)據(jù)轉發(fā)到給定行中的組件數(shù)據(jù)存儲設備和次要奇偶校驗存儲設備(上面用下標字母"q" 表示)。每一個存儲設備都可以將奇偶校驗和/或數(shù)據(jù)存儲在其關聯(lián)的RAM中,直到計算出 新的奇偶校驗,此時,可以提交寫入操作,可以從RAM向關聯(lián)的存儲設備傳輸數(shù)據(jù)和奇偶校 驗。在數(shù)據(jù)和奇偶校驗條帶單元被存儲在RAM中之后但是在數(shù)據(jù)和奇偶校驗從RAM傳輸?shù)?關聯(lián)的存儲設備之前,存儲子系統(tǒng)可以將寫入完成消息返回到客戶端,最小化了寫入延遲。 可以通過一系列寫入操作,寫入大于單一行的容量的數(shù)據(jù)集,每一個寫入操作都具有一行 或稍小的寬度,并且每一個寫入操作都發(fā)給其相應的行中的對應的主奇偶校驗存儲設備。
可以按類似的方式處理讀取操作。例如,讀取請求也可以從客戶端發(fā)送到給定行 中的主奇偶校驗存儲設備。如果被請求的數(shù)據(jù)存儲在與主奇偶校驗存儲設備關聯(lián)的RAM 中,則可以檢索數(shù)據(jù),并響應請求,將數(shù)據(jù)直接發(fā)送到客戶端。如果被請求的數(shù)據(jù)位于構成 該行的一個或多個其他存儲設備上,則主奇偶校驗存儲設備可以將對應的讀取請求傳輸?shù)?布局中的每一個存儲設備,作為回報,接收被請求的數(shù)據(jù)的一部分。然后,主奇偶校驗存儲 設備可以將數(shù)據(jù)組合起來,將它返回到發(fā)出請求的客戶端。如果數(shù)據(jù)的一個或多個部分位 于已經(jīng)發(fā)生故障的存儲設備上,則主奇偶校驗存儲設備可以從構成該行的足夠數(shù)量的其余 存儲設備中檢索數(shù)據(jù),然后使用可用的數(shù)據(jù)和奇偶校驗重建缺失的數(shù)據(jù)。請注意,在具有大 量的冗余RAID-6及其他布局的情況下,可能不需要從全部數(shù)據(jù)和奇偶校驗存儲單元中檢 索數(shù)據(jù);某些數(shù)據(jù)部分的子集可以足夠重建缺失的數(shù)據(jù)。 圖4是存儲子系統(tǒng)150的再一個備選實施例的詳細方框圖。在所顯示的實施例 中,數(shù)據(jù)可以作為條帶單元存儲在存儲子系統(tǒng)150中。存儲子系統(tǒng)150包括按RAID-1布局 方式排列的存儲設備410和420。在所顯示的實施例中,顯示了兩個存儲設備,雖然在備選 RAID-1布局中,也可以使用兩個以上的存儲設備,以提高冗余度。每一個存儲設備410和 420都包括諸如隨機存取存儲器(RAM)之類的一組臨時存儲設備415和425中的對應的一 個。在一個實施例中,存儲設備415和425可以包括閃存RAM、 MEMS(微型機電系統(tǒng))存儲 器、帶蓄電池后備電源的RAM、非易失性RAM(NVRAM),或其他永久性存儲設備。數(shù)據(jù)可以在 存儲設備410和420之間形成鏡像。數(shù)據(jù)可以存儲在行的一部分、完整的行,或多行中。每 一行都可以包括主數(shù)據(jù)條帶單元和次要條帶單元。例如,所顯示的實施例中的第一行可以 包括存儲在存儲設備410中的數(shù)據(jù)條帶單元Al和存儲在存儲設備420中的數(shù)據(jù)條帶單元 A2。第二行可以包括存儲在存儲設備410中的數(shù)據(jù)條帶單元B1和存儲在存儲設備420中的 數(shù)據(jù)條帶單元B2等等。主數(shù)據(jù)存儲設備的位置可以在存儲設備之間更換,如對于使存儲設
9備410和420分擔存儲主數(shù)據(jù)條帶單元的職責的每一個連續(xù)的行或任何其他模式而交替。
在操作過程中,可以告訴客戶端,數(shù)據(jù)被分為條狀,以便對于每一行數(shù)據(jù),數(shù)據(jù)存 儲在該行的主設備中??蛻舳丝梢韵蛑鲾?shù)據(jù)存儲設備發(fā)送數(shù)據(jù)。然后,主數(shù)據(jù)存儲設備可以 將數(shù)據(jù)轉發(fā)到給定行中的輔助數(shù)據(jù)存儲設備。每一個存儲設備都可以將數(shù)據(jù)存儲在其關聯(lián) 的RAM中,直到條帶單元準備還被提交,提供將存儲設備中的多個寫入請求排序的機會。在 數(shù)據(jù)條帶單元被存儲在RAM中之后但是在數(shù)據(jù)從RAM傳輸?shù)疥P聯(lián)的存儲設備之前,存儲子 系統(tǒng)可以將寫入完成消息返回到客戶端,最小化了寫入延遲??梢酝ㄟ^一系列寫入操作,寫 入大于單一行的容量的數(shù)據(jù)集,每一個寫入操作都具有一行或稍小的寬度,并且每一個寫 入操作都發(fā)給其相應的行中的對應的主數(shù)據(jù)存儲設備。對本領域技術人員顯而易見的是, 通過主數(shù)據(jù)存儲設備,可以類似地協(xié)調讀取操作。 在存儲子系統(tǒng)150的再進一步的實施例中,可以使用擦除-編碼方法。例如,在里 德_索羅蒙碼方案中,協(xié)調存儲設備可以對K塊接收到的數(shù)據(jù)進行計算,以產(chǎn)生M擦除-代 碼塊,以便只需要M塊的N塊,才能恢復原始數(shù)據(jù),其中,N〈M,通常,K〈N。對本領域技術人 員顯而易見的是,還有很多其他合適的冗余或擦除_編碼的存儲方案。在2007年9月28日 發(fā)明人George Mathew、CraigHarmer、01eg Kiselev,以及Ron Karr提出的標題為"System andMethod of Redundantly Storing and Retrieving Data withCooperating Storage Devices"的指定給本申請的轉讓人的待審批的美國專利申請序列號No. 60/976, 302中描 述了存儲設備150的許多實施例,為各種目的,該申請以引用的方式并入本文中。
上文引用的專利申請包括描述了許多寫入事務的順序圖,包括客戶端和RAID-l 布局、RAID-5布局中的整行或部分行、以及RAID-6布局中的整行或部分行之間的寫入。下 面呈現(xiàn)的圖形和討論基于那些順序圖,并描述了各種RAID布局的許多讀取和寫入錯誤情 況。 在鏡像布局中,可能會發(fā)生許多錯誤情況。例如,如果包括MDS的整個存儲系統(tǒng) 宕機,作為對向存儲設備發(fā)送1/0請求的響應,客戶端可能接收到錯誤。更具體地說,客戶 端可能對于其向存儲設備的1/0請求接收到超時錯誤,并可能試圖聯(lián)系MDS,以獲取新的布 局。當客戶端試圖聯(lián)系MDS以獲取新的布局時,它可能為布局請求接收到超時,因為MDS也
不可用。此時,客戶端請求可能會失敗,產(chǎn)生i/o錯誤。 或者,如果只是存儲設備發(fā)生故障,則作為對向第一存儲設備發(fā)送數(shù)據(jù)的響應,客 戶端可能接收到錯誤。存儲設備可能臨時發(fā)生故障,如由于網(wǎng)絡分隔或重新啟動操作,或由 于硬件出故障等等而永久地發(fā)生故障。不論是哪一種情況,作為對向發(fā)生故障的存儲設備 發(fā)送I/0請求的響應,客戶端都可以接收到超時錯誤。 一旦客戶端獲得超時錯誤,它可以向 MDS發(fā)送標識布局圖和給出錯誤的對象的消息。此時,MDS可以開始發(fā)生故障的存儲設備的 錯誤恢復,并向客戶端返回新的布局。 在進一步的備選方案中,作為對由于一個或多個目的地存儲設備可能不可用而向 其他存儲設備轉發(fā)數(shù)據(jù)的響應,存儲設備可能接收到錯誤。轉發(fā)了數(shù)據(jù)的存儲設備,而不是 如在前一示例中客戶端,可以向MDS發(fā)送消息。 一旦MDS執(zhí)行恢復過程,則接收到錯誤的存 儲設備可以重試失敗的操作。 現(xiàn)在請參看圖5,該圖顯示了用于處理鏡像布局中的設備故障的過程500的一個 實施例。在所顯示的實施例中,顯示了連接到包括數(shù)據(jù)存儲設備501-503和臨時存儲設備504的行的客戶端510。設備501-503可以被配置為三路鏡像布局。在所顯示的實施例中, 為便于理解,顯示的設備501-504中的每一個都是單獨的設備。然而,在備選實施例中,每 一個設備都代表存儲對象,多個存儲對象都可以位于單一物理存儲設備上。假設數(shù)據(jù)大小 等于一行的容量。過程500可以以客戶端510和存儲設備501-503之間的1/0序列開始 (方框520),在一個實施例中,這些序列可以遵循在上文引用的專利申請中呈現(xiàn)的序列,直 到設備發(fā)生故障。作為示例,假設設備501發(fā)生了故障(方框530)。作為對設備故障的響 應,可以向鏡像布局中添加臨時存儲設備504(方框540)。可以給臨時設備504分配指向 設備501的克隆屬性。隨后,從客戶端510指向包括設備501的存儲器的1/0序列(方框 550)可以繼續(xù)進行,根據(jù)下面進一步描述的過程,設備504覆蓋設備501。從客戶端510的 觀點來看,設備504覆蓋布局中的設備501,布局的其他方面保持不變。臨時設備504可以被 配置為跟蹤修改最初存儲在設備501中的數(shù)據(jù)的寫入操作。作為進一步的示例,假設在某 個時間點,設備501可以被恢復(方框560)。因此,可以說,設備504覆蓋設備501,而不是 替換設備501。作為對設備501被恢復的響應,可以進行再同步過程570,其中,在設備501 不可用時已經(jīng)存儲在設備504中的數(shù)據(jù)被復制到設備501中。隨后,根據(jù)在方框520中所 使用的過程,客戶端510和存儲設備之間的I/0序列(方框580)可以恢復。在備選實施例 中,1/0序列可以在完成再同步過程570之前恢復。如果請求了指向設備501的還沒有被 再同步的區(qū)域,則該I/0操作可以延遲,直到對于目標區(qū)域,完成了再同步。值得注意的是, 在備選實施例中,上文所描述的某些步驟可以彼此并行地執(zhí)行或以與所顯示的順序不同的 順序執(zhí)行。 雖然在上面的描述中,假設發(fā)生故障的設備最終被恢復,可以操作,但是,在某些 情況下,故障可能持續(xù)很長時間,恢復和數(shù)據(jù)再同步不切實際。在這樣的情況下,可以將臨 時設備提升到永久狀態(tài),替換布局中的發(fā)生故障的設備。根據(jù)需要,在預定時間長度之后 或由于某些其他原因,如配額故障、enospace故障等等,提升臨時設備的決定可以由MDS作 出。 一旦臨時設備被提升,則指向臨時設備中的地址的寫入事務可以使數(shù)據(jù)存儲在現(xiàn)在已 提升的設備中。此外,指向現(xiàn)在已提升的設備中的地址的讀取事務可以使數(shù)據(jù)被緩存在其 中。經(jīng)過一段時間以后,隨著鏡像布局的數(shù)據(jù)被重建,現(xiàn)在已提升的設備可以與發(fā)生故障的 設備再同步。再同步過程可以以惰性的方式進行,而不要求隨后的文件1/0操作等待。
在故障使覆蓋設備被添加到鏡像布局之后,如果讀取事務指向非發(fā)生故障的存儲 設備,則它可以被處理得好像從來沒有發(fā)生故障一樣。圖6中顯示了其他情況,該圖是顯示 了客戶端和鏡像布局中的行之間的1/0事務的一個實施例的順序圖。在所顯示的實施例 中,如在圖5中那樣,顯示了連接到包括數(shù)據(jù)存儲設備501-503和臨時存儲設備504的行的 客戶端510。在時間tO,客戶端510可以通過向橫跨發(fā)生故障的設備503的目標地址發(fā)送 讀取請求620,來開始讀取事務??蛻舳?10不必意識到行的單個組件。相反,客戶端510 可以向協(xié)調存儲設備傳輸請求。協(xié)調存儲設備可以從元數(shù)據(jù)服務器獲取數(shù)據(jù)存儲器的布 局,包括行的大小和現(xiàn)在被臨時設備504覆蓋的目標對象的位置,并將請求傳輸?shù)侥繕藢?象?;蛘?,客戶端510可以從元數(shù)據(jù)服務器獲取數(shù)據(jù)存儲器的布局,包括行的大小和現(xiàn)在被 臨時設備504覆蓋的目標對象的位置。 一旦存儲設備504接收到讀取請求,在時間tl,設 備504可以將讀取請求622轉發(fā)到另一個存儲設備,因為被請求的數(shù)據(jù)不存儲在臨時存儲 設備中。在時間t2,存儲設備502可以向設備504傳輸返回數(shù)據(jù)623,而設備504可以通過
11轉發(fā)到客戶端510,在時間t3作出響應,完成讀取事務。值得注意 的是,在備選實施例中,上文所描述的某些步驟可以彼此并行地執(zhí)行或以與所顯示的順序 不同的順序執(zhí)行。 在時間t4,客戶端510可以通過向橫跨發(fā)生故障的設備503的對象地址發(fā)送寫入 請求630,開始寫入事務??蛻舳?10不必意識到行的單個組件。相反,客戶端510可以向 協(xié)調存儲設備傳輸請求。協(xié)調存儲設備可以從元數(shù)據(jù)服務器獲取數(shù)據(jù)存儲器的布局,包括 行的大小和現(xiàn)在被臨時設備504覆蓋的目標對象的位置,并將請求傳輸?shù)侥繕藢ο蟆;蛘撸?客戶端510可以從元數(shù)據(jù)服務器獲取數(shù)據(jù)存儲器的布局,包括行的大小和現(xiàn)在被臨時設備 504覆蓋的目標對象的位置。一旦存儲設備504接收到寫入請求,它可以將接收到的數(shù)據(jù)存 儲在RAM中,在時間t5和t6,設備504可以分別將寫入請求632和634(包括寫入數(shù)據(jù)的 副本)轉發(fā)到鏡像布局中的其他存儲設備。存儲設備502可以接收寫入請求632,作為響 應,在t7,將接收到的數(shù)據(jù)存儲在RAM中,并向設備504傳輸確認636。存儲設備501可以 接收寫入請求634,作為響應,在t8,將接收到的數(shù)據(jù)存儲在RAM中,并向設備504傳輸確認 638。 一旦設備504從鏡像布局中的所有活動設備接收到了確認,在t9,確認639可以被傳 輸?shù)娇蛻舳?10。值得注意的是,寫入完成確認639可能不會被發(fā)送到客戶端,直到由數(shù)據(jù) 存儲設備接收到新的數(shù)據(jù)并確認。這確保了數(shù)據(jù)被冗余地存儲,并可以在任何單一設備發(fā) 生故障的情況下恢復。隨后,設備501、502,以及504中的每一個都可以在t10將存儲的數(shù) 據(jù)從RAM傳輸?shù)酱疟P,完成寫入事務。值得注意的是,在備選實施例中,上文所描述的某些 步驟可以彼此并行地執(zhí)行或以與所顯示的順序不同的順序執(zhí)行。 在時間tll,客戶端510可以通過向其位置在設備502中的對象地址發(fā)送寫入請求 650,開始第二寫入事務??蛻舳?10不必意識到行的單個組件。 一旦存儲設備502接收到 寫入請求,它可以將接收到的數(shù)據(jù)存儲在RAM中,在時間t12和t13,設備502可以分別將寫 入請求652和654(包括寫入數(shù)據(jù)的副本)轉發(fā)到鏡像布局中的其他存儲設備。存儲設備 501可以接收寫入請求652,作為響應,在tl4,將接收到的數(shù)據(jù)存儲在RAM中,并向設備502 傳輸確認656。存儲設備502可以接收寫入請求654,作為響應,在tl5,將接收到的數(shù)據(jù)存 儲在RAM中,并向設備502傳輸確認658。 一旦設備502從鏡像布局中的所有活動設備接收 到了確認,在tl6,確認659可以被傳輸?shù)娇蛻舳?10。隨后,設備501 、502,以及504中的每 一個都可以在tl7將存儲的數(shù)據(jù)從RAM傳輸?shù)酱疟P,完成寫入事務。值得注意的是,在備選 實施例中,上文所描述的某些步驟可以彼此并行地執(zhí)行或以與所顯示的順序不同的順序執(zhí) 行。 現(xiàn)在請參看圖7,該圖顯示了用于處理RAID-5布局中的設備故障的過程700的一 個實施例。在所顯示的實施例中,顯示了客戶端710連接到包括數(shù)據(jù)存儲設備701-704、奇 偶校驗存儲設備705,以及臨時存儲設備706的行。在所顯示的實施例中,為便于理解,顯 示的設備701-706中的每一個都是單獨的設備。然而,在備選實施例中,每一個設備都代表 存儲對象,多個存儲對象都可以位于單一物理存儲設備上。假設數(shù)據(jù)大小等于一行的容量。 過程700可以以客戶端710和存儲設備701-705之間的I/O序列開始(方框720),在一個 實施例中,這些序列可以遵循在上文引用的專利申請中呈現(xiàn)的序列,直到設備發(fā)生故障。作 為示例,假設設備704發(fā)生了故障(方框730)。作為對設備故障的響應,可以向RAID-5布 局中添加臨時存儲設備706 (方框740)??梢越o臨時設備706分配指向設備704的克隆屬
12性。隨后,從客戶端710指向包括設備704的存儲器的I/0序列(方框750)可以繼續(xù)進行, 根據(jù)下面進一步描述的過程,設備706替換設備704。從客戶端710的觀點來看,設備706 覆蓋布局中的設備704,布局的其他方面保持不變。臨時設備706可以被配置為跟蹤修改最 初存儲在設備704中的數(shù)據(jù)的寫入操作。作為進一步的示例,假設在某個時間點,設備704 可以被恢復(方框760)。作為對設備704被恢復的響應,可以進行再同步過程770,其中, 在設備704不可用時已經(jīng)存儲在設備706中的數(shù)據(jù)被復制到設備704中。隨后,根據(jù)在方 框720中所使用的過程,客戶端710和存儲設備之間的I/0序列(方框780)可以恢復。在 備選實施例中,I/0序列可以在完成再同步過程770之前恢復。值得注意的是,在備選實施 例中,上文所描述的某些步驟可以彼此并行地執(zhí)行或以與所顯示的順序不同的順序執(zhí)行。
雖然在上面的描述中,假設發(fā)生故障的設備最終被恢復,可以操作,但是,在某些 情況下,故障可能持續(xù)很長時間,恢復和數(shù)據(jù)再同步不切實際。在這樣的情況下,可以將臨 時設備提升到永久狀態(tài),替換布局中的發(fā)生故障的設備。根據(jù)需要,在預定時間長度之后 或由于某些其他原因,如配額故障、enospace故障等等,提升臨時設備的決定可以由MDS作 出。 一旦臨時設備被提升,則指向臨時設備中的地址的寫入事務可以使數(shù)據(jù)存儲在現(xiàn)在已 提升的設備中。此外,指向現(xiàn)在已提升的設備中的地址的讀取事務可以使數(shù)據(jù)被緩存在其 中。經(jīng)過一段時間以后,隨著RAID-5布局的數(shù)據(jù)和奇偶校驗被重建,現(xiàn)在已提升的設備可 以與發(fā)生故障的設備再同步。再同步過程可以以惰性的方式進行,而不要求隨后的文件1/ O操作等待。 在RAID-5布局中,可能會發(fā)生許多錯誤情況。例如,如果包括MDS的整個存儲系 統(tǒng)宕機,作為對向奇偶校驗存儲設備發(fā)送1/0請求的響應,客戶端可能接收到錯誤。更具體 地說,客戶端可能對于其向奇偶校驗存儲設備的I/O請求接收到超時錯誤,并可能試圖聯(lián) 系MDS,以獲取新的布局。當客戶端試圖聯(lián)系MDS以獲取新的布局時,它可能為布局請求接 收到超時,因為MDS也不可用。此時,客戶端請求可能會失敗,產(chǎn)生I/0錯誤。
或者,如果只有奇偶校驗存儲設備發(fā)生故障,則作為對向奇偶校驗存儲設備發(fā)送 數(shù)據(jù)的響應,客戶端可能接收到錯誤。奇偶校驗存儲設備可能臨時發(fā)生故障,如由于網(wǎng)絡分 隔或重新啟動操作,或由于硬件出故障等等而永久地發(fā)生故障。不論是哪一種情況,作為對 向發(fā)生故障的奇偶校驗存儲設備發(fā)送1/0請求的響應,客戶端都可以接收到超時錯誤。一 旦客戶端獲得超時錯誤,它可以向MDS發(fā)送標識布局圖和給出錯誤的對象的消息。此時, MDS可以開始發(fā)生故障的奇偶校驗存儲設備的錯誤恢復,并向客戶端返回新的布局。
在進一步的備選方案中,作為對由于一個或多個目的地存儲設備可能不可用而向 其他存儲設備轉發(fā)數(shù)據(jù)的響應,奇偶校驗存儲設備可能接收到錯誤。轉發(fā)了數(shù)據(jù)的奇偶校 驗存儲設備,而不是如在前一示例中客戶端,可以向MDS發(fā)送消息。一旦MDS執(zhí)行恢復過程, 則接收到錯誤的奇偶校驗存儲設備可以重試失敗的操作。在更進一步的備選方案中,如果 在完成復制操作之前一個或多個設備發(fā)生故障,則在成功地將數(shù)據(jù)傳輸?shù)狡渌鎯υO備之 后但是在設備將數(shù)據(jù)復制到磁盤之前,奇偶校驗存儲設備可以接收到錯誤。在此情況下,除 聯(lián)系MDS以獲取新的布局之外, 一旦標識了覆蓋存儲設備,奇偶校驗存儲設備可以向覆蓋 存儲設備傳輸新的數(shù)據(jù)。 可以對于RAID-5布局中包括的一個臨時存儲設備,繼續(xù)讀取事務。例如,如果讀 取操作指向其中奇偶校驗存儲設備是臨時存儲設備的行,則可以通過由臨時存儲設備將請求轉發(fā)到目標存儲設備來完成讀取事務?;蛘?,如果客戶端向奇偶校驗存儲(不是臨時存儲設備)發(fā)送讀取請求,并且讀取操作的目標存儲設備不包括臨時存儲設備,則奇偶校驗存儲設備可以將讀取操作轉發(fā)到目標存儲設備。在進一步的備選方案中,如果讀取操作的目標存儲設備包括臨時存儲設備,則讀取事務可以遵循如圖8所描述的序列。
圖8是說明了客戶端和RAID-5布局中的部分行之間的讀取事務的一個實施例的順序圖,其中,讀取操作的目標存儲設備包括臨時存儲設備。在所顯示的實施例中,顯示了客戶端710從包括數(shù)據(jù)存儲設備701-704、奇偶校驗存儲設備705,以及臨時覆蓋存儲設備706的行讀取數(shù)據(jù)。假設數(shù)據(jù)大小小于一行的容量。在時間t0,客戶端710可以通過向為目標行標識的奇偶校驗存儲設備(將從其中讀取數(shù)據(jù),在所顯示的示例中,是奇偶校驗存儲設備705)發(fā)送讀取請求810來開始讀取事務。 一旦存儲設備705接收到讀取請求,在時間tl、t2,以及t3,設備705可以將讀取請求811、812,以及813分別轉發(fā)到存儲設備701、703和704,以便代表臨時存儲設備706,重建存儲在發(fā)生故障的存儲設備702中的數(shù)據(jù)。在時間t4、 t5,以及t6,存儲設備701、703,以及704分別可以將響應821、822,以及823分別傳輸?shù)桨ㄟ@樣的數(shù)據(jù)的奇偶校驗存儲設備705,利用奇偶校驗存儲設備705中的這些數(shù)據(jù),可以重建存儲在發(fā)生故障的存儲設備702中的數(shù)據(jù)。在時間t7,奇偶校驗存儲設備705可以為臨時設備706重建數(shù)據(jù)(方框830)。在時間t8,奇偶校驗存儲設備705可以向客戶端710發(fā)送響應840,完成讀取事務。值得注意的是,在備選實施例中,上文所描述的某些步驟可以彼此并行地執(zhí)行或以與所顯示的順序不同的順序執(zhí)行。 也可以對于RAID-5布局中包括的一個臨時存儲設備,繼續(xù)寫入事務。例如,如果寫入操作指向RAID-5布局中的完整的行,則數(shù)據(jù)可以被寫入到行中的每個存儲設備。臨時存儲設備可以用與其他存儲設備相同的方式保存新的數(shù)據(jù)。臨時奇偶校驗存儲設備可以存儲新的數(shù)據(jù),也可以與其他存儲設備一樣,計算并存儲新的奇偶校驗值。沒有指向臨時存儲設備的部分條帶寫入操作可以照常進行。然而,指向臨時存儲設備的部分條帶寫入操作可以根據(jù)圖9中所顯示的序列進行。 圖9是說明了客戶端和RAID-5布局中的部分行之間的寫入事務的一個實施例的順序圖,其中,寫入操作的目標存儲設備包括臨時存儲設備。在時間t0,客戶端710可以通過向奇偶校驗存儲設備705發(fā)送目標是向存儲設備703和706進行寫入的寫入請求910,來開始寫入事務。 一旦奇偶校驗存儲設備705接收到寫入請求,它可以將接收到的數(shù)據(jù)存儲在RAM中(在時間tl,方框920),在時間t2,將包括寫入數(shù)據(jù)的副本的寫入請求921轉發(fā)到存儲設備703。存儲設備703可以接收寫入請求921,作為響應,在t3,將接收到的數(shù)據(jù)存儲在RAM中,并向設備705傳輸確認922,包括將被寫入事務修改的舊數(shù)據(jù)的副本。設備705可以存儲從設備703接收到的舊數(shù)據(jù),用于計算新的奇偶校驗值。在時間t5和t6,設備705可以分別向設備701和704發(fā)送對舊數(shù)據(jù)941和942的請求。設備701和704分別作為響應943在時間t7以及響應944在時間t8向設備705返回舊數(shù)據(jù)。設備705可以分別在時間t9和時間t10通過確認945和946向設備701和704確認收到舊數(shù)據(jù)。在時間tll,設備705可以向設備703發(fā)送確認,設備703可以通過向磁盤中寫入存儲在RAM中的新的數(shù)據(jù)來作出響應。設備705也可以使用其舊奇偶校驗值和從設備701、703,以及704接收到的舊數(shù)據(jù)值,計算新的奇偶校驗值,并將他們存儲在RAM中(方框970)。在計算出新的奇偶校驗值之后,在時間tl2,設備705可以在寫入請求980中向臨時存儲設備706發(fā)
14送新的寫入數(shù)據(jù)。設備706可以在時間t13以確認985作出響應,當在時間t14收到確認985之后,設備705可以向磁盤寫入新的奇偶校驗值(方框990),而設備706可以向磁盤寫入新的數(shù)據(jù)值(方框995),完成寫入事務。在時間t14,設備705可以向客戶端710傳輸確認(未顯示),表明完成了寫入事務。值得注意的是,在備選實施例中,上文所描述的某些步驟可以彼此并行地執(zhí)行或以與所顯示的順序不同的順序執(zhí)行。 現(xiàn)在請參看圖IO,該圖顯示了用于處理RAID-6布局中的設備故障的過程1000的一個實施例。在所顯示的實施例中,顯示了客戶端IOIO連接到包括奇偶校驗存儲設備1001和1002,數(shù)據(jù)存儲設備1003-1005,以及臨時存儲設備1006和1007的行。在所顯示的實施例中,為便于理解,顯示的設備1001-1007中的每一個都是單獨的設備。然而,在備選實施例中,每一個設備都代表存儲對象,多個存儲對象都可以位于單一物理存儲設備上。假設數(shù)據(jù)大小等于一行的容量。過程1000可以以客戶端1010和存儲設備1001-1005之間的I/O序列開始(方框1020),在一個實施例中,這些序列可以遵循在上文引用的專利申請中呈現(xiàn)的序列,直到設備發(fā)生故障。作為示例,假設設備1003發(fā)生了故障(方框1030)。作為對設備故障的響應,可以向RAID-6布局中添加臨時存儲設備1006 (方框1035)??梢越o臨時設備1006分配指向設備1003的克隆屬性。隨后,從客戶端1010指向包括設備1003的存儲器的序列(方框1040)可以繼續(xù)進行,根據(jù)下面進一步描述的類似于RAID-5布局中所使用的過程的過程,設備1006替換設備1003。從客戶端1010的觀點來看,設備1006覆蓋布局中的設備1003,布局的其他方面保持不變。臨時設備1006可以被配置為跟蹤修改最初存儲在設備1003中的數(shù)據(jù)的寫入操作。繼續(xù)所顯示的示例,假設在某個時間點,可能發(fā)生第二設備故障(方框1050),在此情況下,設備1004發(fā)生故障。作為對設備故障的響應,可以向RAID-6布局中添加第二臨時存儲設備1007 (方框1055)。可以給臨時設備1007分配指向設備1004的克隆屬性。隨后,從客戶端1010指向包括設備1004的存儲器的序列(方框1060)可以繼續(xù)進行,根據(jù)下面進一步描述的過程,設備1007替換設備1004。隨后,設備1003和/或1004可以恢復,可以作為響應,執(zhí)行類似于上文針對鏡像布局和RAID-5布局所描述的過程的再同步過程?;蛘撸梢詫⑴R時設備提升到永久狀態(tài),替換布局中的發(fā)生故障的設備。 在RAID-6布局中,可能發(fā)生類似于在RAID-5布局中遇到的那樣的錯誤情況。然而,I/O事務也可以繼續(xù),直到RAID-6布局中包括的兩個臨時存儲設備。例如,如果讀取操作指向其中兩個奇偶校驗存儲設備都是臨時存儲設備的行,則可以通過由其中一個臨時存儲設備將請求轉發(fā)到目標存儲設備來完成讀取事務?;蛘?,如果只有一個臨時存儲設備是奇偶校驗存儲設備,并且它接收到讀取請求,則它可以將讀取請求轉發(fā)到?jīng)]有被臨時存儲設備覆蓋的任何目標存儲設備。此外,如果兩個臨時存儲設備都是目標非奇偶校驗存儲設備,則讀取事務可以遵循如圖ll所描述的序列。如果其中一個臨時存儲設備是接收到讀取請求的奇偶校驗存儲設備,并且目標存儲設備被臨時存儲設備覆蓋,則讀取事務可以遵循如圖12所描述的序列。 圖11是說明了客戶端和RAID-6布局中的部分行之間的讀取事務的一個實施例的順序圖,其中,讀取操作的其中一個目標存儲設備是臨時存儲設備,臨時存儲設備不是奇偶校驗存儲設備。在所顯示的實施例中,顯示了客戶端IOIO從包括數(shù)據(jù)存儲設備1001-1003、奇偶校驗存儲設備1004和1005,以及臨時覆蓋存儲設備1006和1007的行讀取數(shù)據(jù)。假設讀取請求指向設備1003和1006。在時間t0,客戶端1010可以通過向為目標行標識的奇偶校驗存儲設備(將從其中讀取數(shù)據(jù),在所顯示的示例中,是奇偶校驗存儲設備1004)發(fā)送讀取請求1120來開始讀取事務。 一旦存儲設備1004接收到讀取請求,在時間tl和t2,設備1004可以將讀取請求1221和1222分別轉發(fā)到存儲設備1005和1003,以便代表臨時存儲設備1006,重建存儲在發(fā)生故障的存儲設備1002中的數(shù)據(jù)。在時間t3和t4,存儲設備1005和1003分別可以將響應1123和1124分別傳輸?shù)桨ㄟ@樣的數(shù)據(jù)的奇偶校驗存儲設備1004,利用奇偶校驗存儲設備1004中的這些數(shù)據(jù),可以重建存儲在發(fā)生故障的存儲設備1002中的數(shù)據(jù)。在時間t5,奇偶校驗存儲設備1004可以為臨時設備1006重建數(shù)據(jù)(方框1130)。在時間t5,奇偶校驗存儲設備1004可以向客戶端1010發(fā)送響應1140,完成讀取事務。 圖12是說明了客戶端和RAID-6布局中的部分行之間的讀取事務的一個實施例的順序圖,其中, 一個臨時存儲設備是接收讀取請求的奇偶校驗存儲設備,另一個臨時存儲設備是讀取請求的其中一個目標存儲設備。 在所顯示的實施例中,顯示了客戶端1010從包括數(shù)據(jù)存儲設備1001-1003、奇偶校驗存儲設備1004和1005,以及臨時覆蓋存儲設備1006和1007的行讀取數(shù)據(jù)。假設讀取請求指向設備1002和1007。在時間tO,客戶端1010可以通過向為目標行標識的奇偶校驗存儲設備(將從其中讀取數(shù)據(jù),在所顯示的示例中,是臨時奇偶校驗存儲設備1006)發(fā)送讀取請求1220來開始讀取事務。 一旦存儲設備1006接收到讀取請求,在時間tl、t2,以及t3,設備1006可以將讀取請求1221、 1222,以及1223分別轉發(fā)到存儲設備1002、 1003和1004,以便代表臨時存儲設備1007,重建存儲在發(fā)生故障的存儲設備1001中的數(shù)據(jù)。在時間t4、t5,以及t6,存儲設備1002、 1003,以及1004分別可以將響應1224、 1225,以及1226分別傳輸?shù)竭@樣的數(shù)據(jù)的奇偶校驗存儲設備1006,利用奇偶校驗存儲設備1006中的這些數(shù)據(jù),可以重建存儲在發(fā)生故障的存儲設備1001中的數(shù)據(jù)。在時間t7,奇偶校驗存儲設備1006可以為臨時設備1007重建數(shù)據(jù)(方框1230)。在時間t8,奇偶校驗存儲設備1006可以向客戶端1010發(fā)送響應1240,完成讀取事務。值得注意的是,在備選實施例中,上文所描述的某些步驟可以彼此并行地執(zhí)行或以與所顯示的順序不同的順序執(zhí)行。 寫入事務也可以繼續(xù),直到RAID-6布局中包括的兩個臨時存儲設備。例如,如果寫入操作指向RAID-6布局中的完整的行,則數(shù)據(jù)可以被寫入到行中的每個存儲設備。臨時存儲設備可以用與其他存儲設備相同的方式保存新的數(shù)據(jù)。臨時奇偶校驗存儲設備可以存儲新的數(shù)據(jù),也可以與其他存儲設備一樣,計算并存儲新的奇偶校驗值。沒有指向臨時存儲設備的并且不被發(fā)送到臨時奇偶校驗存儲設備的部分條帶寫入操作可以照常進行。然而,指向臨時存儲設備的部分條帶寫入操作可以根據(jù)圖13中所顯示的序列進行。
圖13是說明了客戶端和RAID-6布局中的部分行之間的寫入事務的一個實施例的順序圖,其中,寫入操作的目標存儲設備包括臨時存儲設備。在時間to,客戶端IOIO可以通過向奇偶校驗存儲設備1004發(fā)送目標是向存儲設備1002和1007進行寫入的寫入請求1320,來開始寫入事務。 一旦奇偶校驗存儲設備1004接收到寫入請求,它可以將接收到的數(shù)據(jù)存儲在RAM中(在時間tl,方框1325),在時間t2,將包括寫入數(shù)據(jù)的副本的寫入請求1331轉發(fā)到存儲設備1002。存儲設備1002可以接收寫入請求1331,作為響應,在t3,將接收到的數(shù)據(jù)存儲在RAM中,并向設備1004傳輸確認1333。設備1004也可以在時間t4將包括寫入數(shù)據(jù)的副本的寫入請求1341轉發(fā)到臨時存儲設備1007。存儲設備1007可以接 收寫入請求1341,作為響應,在t5,將接收到的數(shù)據(jù)存儲在RAM中,并向設備1004傳輸確認 1343。在從兩個設備1002和1007接收到確認之后,設備1004可以在時間t6向客戶端1010 傳輸寫入完成響應1350。在時間t7,設備1002可以作為響應1335,向設備1004返回舊數(shù) 據(jù),用于計算新的奇偶校驗值。在時間t8,設備1004可以向設備1003發(fā)送對舊數(shù)據(jù)1361 的請求。在時間t9,作為響應1363,設備1003可以向設備1004返回舊數(shù)據(jù)。設備1004可 以存儲從設備1002和1003接收到的舊數(shù)據(jù),用于計算新的奇偶校驗值。分別在時間tll 和tll,通過確認1337和1365,設備1004可以向設備1002和1003確認收到舊數(shù)據(jù)。作為 對從設備1002和1003接收到舊數(shù)據(jù)的響應,設備1004可以使用其舊奇偶校驗值和從設備 701、703,以及704接收到的舊數(shù)據(jù)值,計算新的奇偶校驗值,并將他們存儲在RAM中(在時 間t12,方框1370)。在時間t13,設備1002和1007可以將存儲在RAM中的新的數(shù)據(jù)寫入磁 盤中(方框1380和1385)。此外,在時間tl4,設備1004可以向磁盤中寫入新的奇偶校驗 值(方框1390),完成寫入事務。值得注意的是,在備選實施例中,上文所描述的某些步驟可 以彼此并行地執(zhí)行或以與所顯示的順序不同的順序執(zhí)行。 圖14顯示了在存儲設備發(fā)生故障的情況下客戶端和存儲設備布局中的行之間的 1/0事務過程中可以使用的過程1400的一個實施例。當客戶端從MDS請求布局時,過程 1400可以開始(方框1410)。發(fā)出請求的客戶端可以從MDS接收包括布局并標識協(xié)調存 儲設備的響應(方框1420)。 一旦已知協(xié)調存儲設備,則客戶端可以向協(xié)調設備傳輸1/0 請求(方框1430)。如果作為對I/0請求的響應,客戶端接收到系統(tǒng)停機錯誤(判斷方框 1440),則I/O事務可以中止(方框1445),完成過程1400 (方框1495)。系統(tǒng)停機錯誤可以 表示,例如,包括MDS的存儲子系統(tǒng)的大多數(shù)或全部不可用。如果相反作為對1/0請求的響 應,客戶端接收到設備錯誤,表示,例如,雖然MDS可用,所指出的協(xié)調設備不可用(判斷方 框1450),則客戶端可以將設備錯誤轉發(fā)到MDS(方框1452)。如果MDS判斷覆蓋存儲設備 可用(判斷方框1454),則MDS可以向客戶端傳輸新的布局,包括標識覆蓋設備的信息(方 框1456),過程1400的流程可以返回到方框1430。如果MDS判斷覆蓋存儲設備不可用(判 斷方框1454),則I/O事務可以中止(方框1490),完成過程1400 (方框1495)。
如果作為対I/0請求的響應,客戶端沒有接收到系統(tǒng)停機錯誤或設備錯誤,但是, 在I/O事務過程中,向協(xié)調設備返回設備錯誤(判斷方框1460),則協(xié)調設備可以向發(fā)出了 1/0請求的設備轉發(fā)設備錯誤(方框1470)。有關設備錯誤的信息也可以轉發(fā)到發(fā)出了 1/ O請求的設備,如哪一個存儲設備產(chǎn)生了錯誤,發(fā)生了什么類型的錯誤等等。發(fā)出了 1/0請 求的設備可以向MDS轉發(fā)設備錯誤(方框1475)。如果MDS判斷覆蓋存儲設備可用(判斷 方框1480),則MDS可以向協(xié)調設備傳輸新的布局,包括標識覆蓋設備的信息(方框1482), I/O事務可以退去(方框1484)。 然后,過程1400可以在方框1460恢復。如果MDS判斷覆蓋存儲設備不可用(判 斷方框1480),則1/0事務可以中止(方框1490),完成過程1400 (方框1495)。如果作為對 I/O請求的響應,客戶端沒有接收到系統(tǒng)停機錯誤或設備錯誤,但是,在I/O事務過程中,協(xié) 調設備沒有接收到任何設備錯誤(判斷方框1460),則可以執(zhí)行事務(方框1465),完成過 程1400 (方框1495)。 圖15說明了可以用來覆蓋和恢復存儲子系統(tǒng)中的發(fā)生故障的存儲設備的過程1500的一個實施例。過程1500可以以發(fā)生了存儲設備錯誤的通知開始(方框1510)。例 如,MDS可以從客戶端或者存儲子系統(tǒng)中的其中一個存儲設備接收到與存儲設備的通信不 可用的通知。作為對設備錯誤通知的響應,可以分配臨時覆蓋設備,覆蓋發(fā)生故障的存儲設 備(方框1520)。 一旦分配了覆蓋設備,則通過向發(fā)出請求的客戶端或設備傳輸包括覆蓋設 備的新的范圍,響應I/0操作過程中的對存儲范圍的請求(方框1530)。隨后的I/0操作可 以包括覆蓋設備代替發(fā)生故障的設備(方框1540)。如果發(fā)生故障的設備被恢復(判斷方框 1550),則可以從覆蓋設備使其再同步(方框1555)。更具體地說,通過寫入操作被修改的覆 蓋設備的區(qū)域可以被用作被恢復的設備中的要更新的區(qū)域的日志。例如,在一個實施例中, 覆蓋設備可以被用作新恢復的設備的臟區(qū)域日志(DRL)。一旦新恢復的設備被再同步,則可 以恢復存儲子系統(tǒng)的故障之前的操作(方框1580)。如果發(fā)生故障的設備沒有恢復(判斷 方框1550)并且故障不被視為永久性的(判斷方框1560),則I/O操作可以繼續(xù)執(zhí)行,以包 括覆蓋設備代替發(fā)生故障的設備(方框1540)。由于種種原因,故障可以被視為永久性的, 如,如果發(fā)生故障的設備在預定的時間長度內不可用,如果操作員輸入指明,故障是永久性 的等等。如果發(fā)生故障的設備被認為永久地發(fā)生故障,則在存儲子系統(tǒng)中可以給覆蓋設備 分配永久性的狀態(tài)(方框1570)。作為布局的永久成員,可以在覆蓋設備中重新創(chuàng)建存儲在 發(fā)生故障的設備中的數(shù)據(jù),并可以恢復存儲子系統(tǒng)的故障之前的操作(方框1580)。
圖16顯示了用于處理鏡像布局中的1/0請求的過程1600的一個實施例,其中,覆 蓋存儲設備臨時覆蓋發(fā)生故障的存儲設備。當接收到I/O請求時,過程1600可以開始(方 框1610)。如果接收到的請求是讀取請求(判斷方框1620),并且請求不是指向覆蓋設備 (判斷方框1630),則可以從非覆蓋設備中檢索讀取數(shù)據(jù)(方框1635),完成I/O操作(方框 1660)。如果讀取請求指向覆蓋設備(判斷方框1630),則可以將讀取請求重定向到鏡像設 備(方框1640)。然后,可以從鏡像設備中檢索讀取數(shù)據(jù)(方框1650),完成I/O操作(方 框1660)。)如果接收到的請求是寫入請求(判斷方框1620),則數(shù)據(jù)可以被寫入到布局中 的覆蓋設備和鏡像設備(方框1622)。對覆蓋設備進行的更改的記錄也可以存儲在覆蓋設 備中(方框1624),萬一發(fā)生故障的設備隨后被恢復,允許再同步發(fā)生故障的設備。 一旦寫 入數(shù)據(jù)已經(jīng)存儲在覆蓋設備中,則1/0操作完成(方框1660)。 圖17顯示了用于處理RAID-5布局中的1/0請求的過程1700的一個實施例,其 中,覆蓋存儲設備臨時覆蓋發(fā)生故障的存儲設備。當接收到1/0請求時,過程1700可以開 始(方框1710)。如果接收到的請求是讀取請求(判斷方框1720),并且RAID-5布局中的 奇偶校驗設備是覆蓋設備(判斷方框1730),則可以從被尋址的設備中檢索讀取數(shù)據(jù)(方 框1735),并返回讀取數(shù)據(jù)(方框1756),完成I/O操作(方框1760)。如果奇偶校驗設備 不是覆蓋設備,并且讀取請求不指向包括覆蓋設備的區(qū)域(判斷方框1740),則可以從非覆 蓋設備中檢索讀取數(shù)據(jù)(方框1745),并返回讀取數(shù)據(jù)(方框1756),完成I/O操作(方框 1760)。如果讀取請求指向包括覆蓋設備的區(qū)域(判斷方框1740),則可以從布局中的所有 非覆蓋存儲設備中檢索數(shù)據(jù)(方框1750)。然后,可以從檢索到的數(shù)據(jù)重建發(fā)生故障的設 備中的數(shù)據(jù)(方框1752),計算并存儲新的奇偶校驗值(方框1754),返回讀取數(shù)據(jù)(方框 1756),完成I/O操作(方框1760)。 如果接收到的請求是寫入請求(判斷方框1720),并且如果寫入請求指向完全條 帶(判斷方框1770),則數(shù)據(jù)可以被寫入到行中的所有存儲設備(方框1775),完成1/0操作(方框1760)。如果寫入請求指向部分行,不是修改覆蓋設備的請求(判斷方框1780), 則數(shù)據(jù)可以存儲在非覆蓋設備中,計算并存儲新的奇偶校驗值(方框1795),完成1/0操作 (方框1760)。如果寫入請求指向部分行,并且是修改覆蓋設備的請求(判斷方框1780), 則寫入數(shù)據(jù)可以存儲在奇偶校驗設備中(方框1782),并轉發(fā)到覆蓋設備之外的所有目標 設備(方框1784)。然后,可以讀取行中的非覆蓋設備中的舊數(shù)據(jù),并返回到奇偶校驗設備 (方框1786)。然后,奇偶校驗設備可以計算并存儲新的奇偶校驗值(方框1788),并將新的 數(shù)據(jù)轉發(fā)到覆蓋設備(方框1790)。 一旦新的數(shù)據(jù)已經(jīng)存儲在覆蓋設備中,則1/0操作完成 (方框1760)。 圖18顯示了用于處理RAID-6布局中的1/0請求的過程1800的一個實施例,其 中,兩個覆蓋存儲設備臨時覆蓋發(fā)生故障的存儲設備。值得注意的是,RAID-6布局中的單一 設備故障可以以與RAID-5布局中的設備故障同樣的方式處理。當接收到I/0請求時,過程 1800可以開始(方框1810)。如果接收到的請求是讀取請求(判斷方框1820),并且RAID-6 布局中的兩個奇偶校驗設備都是覆蓋設備(判斷方框1830),則可以從被尋址的設備中檢 索讀取數(shù)據(jù)(方框1835),并返回讀取數(shù)據(jù)(方框1856),完成I/O操作(方框1860)。如 果讀取請求指向非覆蓋奇偶校驗設備(判斷方框1840),可以使用行中的奇偶校驗值,以及 從非覆蓋設備檢索到的其他讀取數(shù)據(jù),對于任何覆蓋設備,重建讀取數(shù)據(jù)(方框1845),返 回讀取數(shù)據(jù)(方框1856),完成I/O操作(方框1860)。如果兩個覆蓋設備中的一個是讀取 操作被指向的奇偶校驗設備(判斷方框1840),并且讀取操作不涉及其他覆蓋設備(判斷 方框1850),則可以從被尋址的設備中檢索讀取數(shù)據(jù)(方框1835),并返回讀取數(shù)據(jù)(方框 1856),完成I/0操作(方框1860)。如果兩個覆蓋設備中的一個是讀取操作被指向的奇偶 校驗設備(判斷方框1840),并且讀取操作不涉及其他覆蓋設備(判斷方框1850),則可以 使用非覆蓋奇偶校驗設備的存儲的值,為覆蓋設備重建讀取數(shù)據(jù)(方框1852)。然后,可以 從重建的數(shù)據(jù)計算出新的奇偶校驗值(方框1854),并返回讀取數(shù)據(jù)(方框1856),完成1/ 0操作(方框1860)。 如果接收到的請求是寫入請求(判斷方框1820),并且如果寫入請求指向完全條 帶(判斷方框1870),則數(shù)據(jù)可以被寫入到行中的所有存儲設備(方框1S75),完成1/0操 作(方框I860)。如果寫入請求指向部分行,不是修改覆蓋設備的請求(判斷方框1880), 則數(shù)據(jù)可以存儲在非覆蓋設備中,計算并存儲新的奇偶校驗值(方框1S95),完成1/0操作 (方框1860)。如果寫入請求指向部分行,并且是修改至少一個覆蓋設備的請求(判斷方框 1880),則寫入數(shù)據(jù)可以存儲在奇偶校驗設備中(方框1882),并轉發(fā)到覆蓋設備之外的所 有目標設備(方框1884)。然后,可以讀取行中的非覆蓋設備中的舊數(shù)據(jù),并返回到奇偶校 驗設備(方框1886)。然后,奇偶校驗設備可以計算并存儲新的奇偶校驗值(方框1888), 并將新的數(shù)據(jù)轉發(fā)到覆蓋設備(方框1890)。 一旦新的數(shù)據(jù)已經(jīng)存儲在覆蓋設備中,則1/0 操作完成(方框I860)。 值得注意的是,前面的流程圖只用于討論目的。在備選實施例中,流程圖中所描述 的組成要素可以按不同的順序進行,或者,在某些情況下同時進行。另外,一些流程圖的組 成要素可以在各種實施例中不存在,或者,也可以與其他組成要素相結合。所有這樣的替代 方案也是可以的。 值得進一步注意的是,上文所描述的實施例可以包括軟件。在這樣的實施例中,
19實現(xiàn)了方法和/或機制的程序指令可以利用計算機可讀介質傳輸或存儲。有很多被配置 為存儲程序指令的介質類型可用,它們包括硬盤、軟盤、CD-R0M、 DVD、快擦寫存儲器、可編程 ROM (PROM)、隨機存取存儲器(RAM),以及各種其他形式的易失性或非易失性存儲器。
雖然非常詳細地描述了上文的實施例,一旦完全理解了上面的說明,很多變化和 修改方案對于那些所屬領域的技術人員將變得顯而易見。下面的權利要求應被解釋為包括 所有這樣的變化和修改方案。
權利要求
一種計算機系統(tǒng),包括客戶端;以及連接到所述客戶端的存儲子系統(tǒng);其中,所述計算機系統(tǒng)被配置為檢測包括存儲設備的至少一部分的存儲區(qū)域的故障;作為對檢測到所述故障的響應,配置覆蓋存儲設備以臨時覆蓋發(fā)生故障的區(qū)域;維護所述覆蓋存儲設備和所述發(fā)生故障的區(qū)域之間的關聯(lián);以及維護在區(qū)域處于發(fā)生故障的狀態(tài)時對覆蓋存儲設備進行的更改的記錄。
2. 根據(jù)權利要求1所述的系統(tǒng),其中,作為對檢測到所述發(fā)生故障的區(qū)域已經(jīng)恢復的響應,所述計算機系統(tǒng)進一步被配置為使用所述關聯(lián)標識所述覆蓋存儲設備;以及使用所述對覆蓋存儲設備進行的更改的記錄,再同步所述發(fā)生故障的區(qū)域。
3. 根據(jù)權利要求1所述的系統(tǒng),其中,響應于判斷所述區(qū)域的故障是永久性的,所述計算機系統(tǒng)進一步被配置為使用所述關聯(lián)標識所述覆蓋存儲設備;以及將以前存儲在所述發(fā)生故障的區(qū)域中的數(shù)據(jù)復制到所述覆蓋存儲設備。
4. 根據(jù)權利要求1所述的系統(tǒng),其中,所述存儲子系統(tǒng)包括可作為陣列中的行和列尋址的多個存儲位置,所述陣列的每一列都包括多個存儲設備的單獨的存儲設備,并且其中,對于陣列中的給定行,協(xié)調存儲設備被配置為協(xié)調所述給定行中冗余數(shù)據(jù)的計算和存儲。
5. —種在存儲子系統(tǒng)的存儲位置維護數(shù)據(jù)的方法,所述方法包括檢測包括存儲設備的至少一部分的存儲區(qū)域的故障;作為對檢測到所述故障的響應,配置覆蓋存儲設備以臨時覆蓋發(fā)生故障的區(qū)域;維護所述覆蓋存儲設備和所述發(fā)生故障的區(qū)域之間的關聯(lián);以及維護在區(qū)域處于發(fā)生故障的狀態(tài)時對覆蓋存儲設備進行的更改的記錄。
6. 根據(jù)權利要求5所述的方法,其中,作為對檢測到所述發(fā)生故障的區(qū)域已經(jīng)恢復的響應,所述方法進一步包括使用所述關聯(lián)標識所述覆蓋存儲設備;以及使用所述對覆蓋存儲設備進行的更改的記錄,再同步所述發(fā)生故障的區(qū)域。
7. 根據(jù)權利要求5所述的方法,其中,響應于判斷所述區(qū)域的故障是永久性的,所述方法進一步包括使用所述關聯(lián)標識所述覆蓋存儲設備;以及將以前存儲在所述發(fā)生故障的區(qū)域中的數(shù)據(jù)復制到所述覆蓋存儲設備。
8. 根據(jù)權利要求5所述的方法,其中,所述存儲子系統(tǒng)包括可作為陣列中的行和列尋址的多個存儲位置,所述陣列的每一列都包括單獨的存儲設備,并且對于陣列中的給定行,協(xié)調存儲設備被配置為協(xié)調所述給定行中冗余數(shù)據(jù)的計算和存儲。
9. 一種存儲由處理器可執(zhí)行的計算機指令以便執(zhí)行下列操作的計算機可讀存儲介質訪問存儲子系統(tǒng)的存儲位置;檢測包括存儲設備的至少一部分的存儲區(qū)域的故障;作為對檢測到所述故障的響應,配置覆蓋存儲設備以臨時覆蓋發(fā)生故障的區(qū)域; 維護所述覆蓋存儲設備和所述發(fā)生故障的區(qū)域之間的關聯(lián);以及 維護在區(qū)域處于發(fā)生故障的狀態(tài)時對覆蓋存儲設備進行的更改的記錄。
10. 根據(jù)權利要求9所述的計算機可讀存儲介質,其中,作為對檢測到所述發(fā)生故障的 區(qū)域已經(jīng)恢復的響應,所述指令進一步可被處理器執(zhí)行,以便使用所述關聯(lián)標識所述覆蓋存儲設備;以及使用所述對覆蓋存儲設備進行的更改的記錄,再同步所述發(fā)生故障的區(qū)域。
11. 根據(jù)權利要求9所述的計算機可讀存儲介質,其中,響應于判斷所述區(qū)域的故障是 永久性的,所述指令進一步可被處理器執(zhí)行,以便使用所述關聯(lián)標識所述覆蓋存儲設備;以及將以前存儲在所述發(fā)生故障的區(qū)域中的數(shù)據(jù)復制到所述覆蓋存儲設備。
12. 根據(jù)權利要求9所述的計算機可讀存儲介質,其中,所述存儲子系統(tǒng)包括可作為陣 列中的行和列尋址的多個存儲位置,所述陣列的每一列都包括單獨的存儲設備,并且對于 陣列中的給定行,協(xié)調存儲設備協(xié)調所述給定行中冗余數(shù)據(jù)的計算和存儲。
13. 根據(jù)權利要求1所述的系統(tǒng),根據(jù)權利要求5所述的方法,或根據(jù)權利要求9所述 的計算機可讀介質,其中,由協(xié)調存儲設備檢測包括存儲設備的至少一部
14. 根據(jù)權利要求4所述的系統(tǒng),根據(jù)權利要求8所述的方法,或根據(jù)權利要求12所述 的計算機可讀介質,其中,對于陣列中的給定行,所述協(xié)調存儲設備進一步被配置為從客戶端接收從對應于所述覆蓋設備的位置讀取數(shù)據(jù)的讀取請求; 使用從給定行中的非覆蓋設備檢索到的數(shù)據(jù),從所述發(fā)生故障的區(qū)域重建數(shù)據(jù);以及 將重建的數(shù)據(jù)返回到所述客戶端。
15. 根據(jù)權利要求4所述的系統(tǒng),或根據(jù)權利要求8所述的方法,其中,對于陣列中的給 定行,協(xié)調存儲設備進一步被配置為從客戶端接收向對應于所述覆蓋設備的位置寫入數(shù)據(jù)的寫入請求;基于從給定行中的非覆蓋設備檢索到的舊數(shù)據(jù),計算和存儲冗余值;以及將寫入數(shù)據(jù)轉發(fā)到包括至少所述覆蓋設備的給定行中的設備。
全文摘要
在陣列中進行數(shù)據(jù)存儲的系統(tǒng)和方法。系統(tǒng)包括連接到存儲子系統(tǒng)的客戶端,存儲子系統(tǒng)包括可作為陣列中的行和列尋址的數(shù)據(jù)存儲位置。每一列都包括單獨的存儲設備。每一行都包括冗余數(shù)據(jù)。對于給定行,協(xié)調存儲設備協(xié)調冗余數(shù)據(jù)的計算和存儲。系統(tǒng)檢測存儲區(qū)域的故障,作為響應,配置覆蓋存儲設備以臨時覆蓋所述發(fā)生故障的區(qū)域,維護所述覆蓋存儲設備和所述發(fā)生故障的區(qū)域之間的關聯(lián),以及,維護在區(qū)域處于發(fā)生故障的狀態(tài)時對覆蓋存儲設備進行的更改的記錄。作為對檢測到所述發(fā)生故障的區(qū)域已經(jīng)恢復的響應,系統(tǒng)使用該關聯(lián)標識覆蓋設備,并使用對覆蓋設備進行的更改的記錄來使發(fā)生故障的區(qū)域再同步。
文檔編號G06F11/10GK101770408SQ20091025230
公開日2010年7月7日 申請日期2009年12月2日 優(yōu)先權日2008年12月30日
發(fā)明者B·拉詹, C·K·哈默, G·馬修 申請人:賽門鐵克公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
江都市| 东方市| 昌江| 紫阳县| 客服| 华蓥市| 柳河县| 上思县| 汤原县| 团风县| 巍山| 大兴区| 兴义市| 临夏市| 嘉峪关市| 华亭县| 通渭县| 巫山县| 内黄县| 梁山县| 乐陵市| 陇西县| 新田县| 和政县| 金寨县| 武山县| 新昌县| 浏阳市| 中西区| 固始县| 绵阳市| 凤庆县| 伊吾县| 抚顺县| 龙游县| 静海县| 桐乡市| 陆丰市| 正宁县| 石河子市| 湖州市|