專利名稱:針對raid系統(tǒng)中的多種故障進行保護的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明一般地涉及存儲設備的使用。更特別地,本發(fā)明的實施例涉及在存儲設備上實現(xiàn)RAID。更為具體地,本發(fā)明的一些實施例涉及RAID的分布式實施方式。
背景技術:
對許多實體來說數(shù)據(jù)代表著重要的財富。因此,無論是意外還是惡意行為造成的數(shù)據(jù)丟失都可以在浪費人力、失去與顧客的友好關系、喪失時間和潛在的法律責任等方面付出沉重代價。為了確保妥善保護用于商業(yè)、法律或其他目的的數(shù)據(jù),許多實體可能期望使用多種技術保護其數(shù)據(jù),包括數(shù)據(jù)存儲技術、冗余技術、安全技術等等。然而,這些技術可能與其他競爭約束、由國家施加的要求或用于處理或存儲這種數(shù)據(jù)的計算設備的配置相沖突。應對這些緊張狀態(tài)的一種方法是執(zhí)行獨立磁盤冗余陣列(RAID)。一般地,RAID系統(tǒng)在共同被稱作陣列的多個硬盤驅動器(或其他類型的存儲介質)之間分割和復制數(shù)據(jù), 從而增大可靠性并且在一些情況下使用這些用于存儲的RAID系統(tǒng)提高計算設備(已知為主機)的吞吐量。對于主機來說,RAID陣列可以作為一個或多個單片存儲器區(qū)域。當主機期望與RAID系統(tǒng)通信(讀、寫等等)時,主機將RAID陣列視為單個磁盤進行通信。反過來, RAID系統(tǒng)處理這些通信以結合這些通信執(zhí)行特定的RAID級別。這些RAID級別可以被設計為在例如可靠性、容量、速度等多種權衡之間獲得一些期望的平衡。例如,RAID(級別)0以提高的速度并且基本使用磁盤的全部容量的方式在一些磁盤間分布數(shù)據(jù),但是如果磁盤發(fā)生故障則磁盤上的全部數(shù)據(jù)將丟失;RAID(級別)1使用兩個(或更多個)磁盤,所述磁盤中的每一個均存儲相同數(shù)據(jù),使得只要一個磁盤沒有故障,數(shù)據(jù)就不會丟失。陣列的全部容量基本等于單個磁盤的容量并且RAID (級別)5以保護任意一個磁盤的數(shù)據(jù)免于丟失的方式結合三個或更多個磁盤;陣列的存儲容量減少為一個磁盤。目前RAID的實施方式可能具有多種問題。這些問題可能源自這些RAID系統(tǒng)的構造所施加的限制,例如在許多情況下,與RAID系統(tǒng)的全部通信必須尋址到控制和管理所述 RAID系統(tǒng)的一個服務器的事實。其他問題可能源自數(shù)據(jù)在包括RAID系統(tǒng)的磁盤上的配置或布置。例如,在一些情況下,必須選擇RAID級別并且在RAID系統(tǒng)能夠被使用前在RAID 系統(tǒng)內分派存儲。因此,最初選擇的RAID級別必須結合存儲在RAID系統(tǒng)上的數(shù)據(jù)來實現(xiàn), 無論該RAID級別是否是被期望或需要的。此外,在許多情況下,現(xiàn)有的問題可能因為需要使用定制硬件或軟件來執(zhí)行這些方案而惡化,增大與實現(xiàn)這種方案相關聯(lián)的成本。因此,期望充分地改善這些問題。
發(fā)明內容
公開了可以結合分布式RAID系統(tǒng)使用以針對多種故障進行保護的多種方法的實施例。更特別地,分布式RAID系統(tǒng)中的每個數(shù)據(jù)庫可以存儲數(shù)據(jù)段和NP段。在一些實施例中,不僅結合卷在多個數(shù)據(jù)庫間實現(xiàn)的RAID的級別(例如使用與其相應的數(shù)據(jù)段存儲在不同數(shù)據(jù)庫上的NP段),而且額外的RAID級別也可以在分布式RAID系統(tǒng)的每個數(shù)據(jù)庫內實現(xiàn),從而保護每個數(shù)據(jù)庫內的數(shù)據(jù)。除了在多個數(shù)據(jù)庫間使用RAID外,通過在一個數(shù)據(jù)庫內使用RAID可以實現(xiàn)針對整個分布式RAID系統(tǒng)的故障的額外保護。具體地,在一個實施例中,除了結合一組數(shù)據(jù)庫間的卷實現(xiàn)RAID級別外,RAID級別還可以結合存儲在每個數(shù)據(jù)庫中的數(shù)據(jù)段實現(xiàn)。例如,RAID級別5可以在一個數(shù)據(jù)庫內實現(xiàn),使得POD段可以產生并存儲在與相應的數(shù)據(jù)段位于不同磁盤的數(shù)據(jù)庫中,從而可以使用這些POD恢復所述相應的數(shù)據(jù)段。類似地,POP段可以產生并存儲在與相應的NP段位于不同磁盤的數(shù)據(jù)庫中,從而可以使用這些POP恢復所述相應的NP段。此外,在一些實施例中,RAID級別6可以在一個數(shù)據(jù)庫內實現(xiàn),使得除了每個POD 段外,還可以產生相應的QOD段。通過將QOD段存儲在與相應的POD不同的磁盤上,還可以使用QOD恢復相應的數(shù)據(jù)段。同樣地,相應于POP段的QOP段可以產生并存儲在與相應的 POP段不同的磁盤上的數(shù)據(jù)庫中,使得相應的網(wǎng)絡奇偶校驗段可以額外地使用這些QOP段恢復。本公開的實施例提供了保護RAID系統(tǒng)避免多種故障的方法,所述方法消除或至少充分減少了之前可用的保護RAID系統(tǒng)避免多種故障的方法的缺點。特別地,本發(fā)明的實施例可以相對于之前可用的數(shù)據(jù)存儲設備提供多個優(yōu)點,包括提供保護數(shù)據(jù)庫或磁盤故障的能力。事實上,一些實施例可以針對四個、五個或可能更多個磁盤故障提供保護。因此, 培養(yǎng)職員修理或替換發(fā)生故障的數(shù)據(jù)庫或磁盤可用的時間可能增大并且分布式RAID系統(tǒng)的故障間的平均時間增大。一些實施例還可以通過即使在內部故障損壞數(shù)據(jù)時,仍允許數(shù)據(jù)庫內部再生被損壞的數(shù)據(jù),而提供在所述數(shù)據(jù)庫之間減少的網(wǎng)絡流量的優(yōu)點。本發(fā)明的這些和其他方面將在結合以下說明和附圖考慮時被更好地認識和理解。 以下說明雖然指示了本發(fā)明的各種實施例及其多個具體細節(jié),但其是以示例而非限制的方式給出的??梢栽诒景l(fā)明的范圍內進行許多替換、修改、添加或重置,并且本發(fā)明包括全部這些替換、修改、添加或重置。
附圖以及本說明書的構成部分被包括以描述本發(fā)明的一些方面。對本發(fā)明以及本發(fā)明提供的系統(tǒng)的組件和操作的更清楚的印象將通過參考附圖中顯示的示例性的,并且因此是非限制性的實施例而變得更為顯然,其中相同的附圖標記代表相同的組件。注意,附圖中顯示的特征未必按比例繪制。圖1是應用分布式RAID系統(tǒng)的構造的一個實施例的框圖。圖2A是數(shù)據(jù)庫的一個實施例的框圖。圖2B是用于數(shù)據(jù)庫的構造的一個實施例的框圖。圖3是通過分布式RAID系統(tǒng)實現(xiàn)的方法的一個實施例的流程圖。圖4是應用分布式RAID系統(tǒng)的構造的一個實施例的示例的框圖。圖5是一種表格的一個實施例的框圖。圖6是一種表格的一個實施例的框圖。圖7是一種表格的一個實施例的框圖。圖8是通過分布式RAID系統(tǒng)實現(xiàn)的方法的一個實施例的流程圖。
圖9A是通過分布式RAID系統(tǒng)實現(xiàn)的方法的一個實施例的流程圖。圖9B是通過分布式RAID系統(tǒng)實現(xiàn)的方法的一個實施例的流程圖。圖10是寫入式高速緩沖存儲器的一個實施例的框圖。圖11是通過分布式RAID系統(tǒng)實現(xiàn)的方法的一個實施例的流程圖。圖12是通過分布式RAID系統(tǒng)實現(xiàn)的方法的一個實施例的流程圖。圖13A-13C是一個數(shù)據(jù)庫內的RAID級別的一個實施方式的示例的框圖。
具體實施例方式本發(fā)明及其多個特征和有益細節(jié)通過參考在附圖和具體實施方式
中說明的非限制性的實施例被更全面地解釋。省略了對公知的原始材料、工藝技術、組件和儀器的說明以免不必要地在細節(jié)上混淆本發(fā)明。然而,應該理解,雖然詳細的說明和具體的示例指示了本發(fā)明的優(yōu)選實施例,但其僅以示例性方式而非限制的方式給出。通過本公開,重要的創(chuàng)造性概念的精神和/或范圍內的各種替換、修改、添加和/或重置對本領域技術人員將變得顯然。此處討論的實施例能夠以可以存儲在計算機可讀介質(例如,HD)、硬件電路或類似物或任意組合上的適當?shù)挠嬎銠C可執(zhí)行的指令實現(xiàn)。在討論具體實施例之前,此處說明用于實現(xiàn)特定實施例的硬件構造的實施例。一個實施例可以包括與網(wǎng)絡通信地耦接的一臺或多臺計算機。如本領域技術人員公知的,計算機可以包括中央處理單元(“CPU”)、至少一個只讀存儲器(“ROM”)、至少一個隨機存取存儲器(“RAM”)、至少一個硬盤驅動器(“HD”)和一個或多個輸入/輸出(“I/O”)設備。 所述I/O設備可以包括鍵盤、監(jiān)視器、打印機、電子指向設備(例如,鼠標、軌跡球、指示筆等等)或類似物。在多個實施例中,計算機通過網(wǎng)絡訪問至少一個數(shù)據(jù)庫。R0M、RAM和HD是用于存儲由CPU可執(zhí)行的計算機可執(zhí)行指令的計算機存儲器。在本公開內,術語“計算機可讀介質”不限于ROM、RAM和HD,而是可以包括可由處理器讀取的任意類型的數(shù)據(jù)存儲介質。在一些實施例中,計算機可讀介質可以涉及數(shù)據(jù)磁帶、數(shù)據(jù)備份磁帶、軟磁盤、閃存驅動器、光學數(shù)據(jù)存儲驅動器、CD-ROM、ROM、RAM、HD或類似物。此處說明的功能或處理中的至少部分能夠以適當?shù)挠嬎銠C可執(zhí)行指令實現(xiàn)。計算機可執(zhí)行指令可以被存儲為一個或多個計算機可讀介質(例如,非易失性存儲器、易失性存儲器、DASD陣列、磁帶、軟磁盤、硬盤驅動器、光學存儲設備等等,或任意其他適當?shù)挠嬎銠C可讀介質或存儲設備)上的軟件代碼組件或模塊。在一個實施例中,計算機可執(zhí)行指令可以包括多行匯編C++、Java, HTML或任意其他編程或腳本代碼。此外,公開的實施例的功能可以在一臺計算機上實現(xiàn)或者在網(wǎng)絡中或橫跨網(wǎng)絡的兩臺或更多臺計算機中共享/分布。實現(xiàn)實施例的計算機之間的通信可以使用任意的電子、光學、射頻信號或者遵從已知網(wǎng)絡協(xié)議的其他適當?shù)耐ㄐ欧椒ê凸ぞ邅硗瓿?。如此處所使用的,術語“包括”、“包含”、“具有”、“有”或其任意其他變體意圖覆蓋非獨占性的內容物。例如,包括一列元件的處理、工藝、物品或裝置不必僅限于那些元件,而是可以包括未特別列出或這些處理、工藝、物品或裝置固有的其他元件。進一步地,除非特別聲明相反的情況,“或”涉及開放的或而不涉及獨占的或。例如,條件A或B滿足以下任意一個:A是真(或存在)并且B是假(或者不存在),A是假(或者不存在)并且B是真 (或者存在),并且A和B是真(或者存在)。
此外,此處給出的任意示例或說明不被視為以任何方式約束、限制或表示其所使用的任意一個或多個術語的定義。而是,這些示例或說明被視為關于一個特定的實施例加以說明并且僅是示例性的。本領域技術人員將意識到,這些示例或說明所使用的任意一個或多個術語將包含可能在說明書中隨后或任意位置給出或未給出的其他實施例,并且全部這些實施例意圖被包括在所述一個或多個術語的范圍內。指明這種非限制性示例和說明的語言包括但不限于“例如”、“比如”、“如”、“在一個實施例中”。本申請涉及由Galloway等人于2009年6月5日提交的名為“Method and System for Distributed RAID Implementation” 的美國專利申請 No. 12/479,319 ;由 Galloway 等人于 2009 年 6 月 5 日提交的名為“Method and System for Data Migration in a Distributed RAIDImplementation"的美國專利申請 No. 12/479,360 ;由 Galloway 等人于 2009 年 6 月 5 日提交的名為“Method and System for Distributing Commands to Targets”的美國專利申請No. 12/479,403 ;由feilloway等人于2009年6月5日提交的名為“Method and System for Initializing Storage in a Storage System,,的美國專利申請 No. 12/479,377 ;由 Galloway 等人于 2009 年 6 月 5 日提交的名為 “Method and System for Rebuilding Data in a Distributed RAID System”的美國專利申請 No. 12/479,434 ; 以及由Galloway等人于2009年6月5日提交的名為“Method and System for Placement of Data on aStorage Device”的美國專利申請No. 12/479,394 ;所有這些專利申請的全部內容均作為參考并入本文?,F(xiàn)在特別地關于數(shù)據(jù)存儲的內容的簡要討論可能是有幫助的。如上所述,RAID系統(tǒng)在共同被稱作陣列的多個硬盤驅動器(或者其他類型的存儲介質)間分割并且復制數(shù)據(jù),從而增大可靠性并且在一些情況下使用這些用于存儲的RAID系統(tǒng)提高計算設備(已知為主機)的吞吐量。然而,RAID的目前的實施方式可能具有多種問題。這些問題可能源于由這些RAID系統(tǒng)的構造施加的限制,例如在許多情況下與RAID系統(tǒng)的全部通信必須尋址到控制和管理RAID系統(tǒng)的單個服務器的事實。其他問題可能由包括RAID系統(tǒng)的磁盤上的數(shù)據(jù)的配置或布置引起。例如,在特定情況下,必須選擇RAID級別并且在RAID系統(tǒng)能夠被使用前在RAID系統(tǒng)內分派存儲。因此,最初選擇的RAID級別必須結合存儲在RAID系統(tǒng)上的數(shù)據(jù)來實現(xiàn),無論該RAID級別是否是被期望或需要的。此外,在許多情況下,現(xiàn)有的問題可能因為需要使用定制硬件或軟件來執(zhí)行這些方案而惡化,增大與實現(xiàn)這種方案相關聯(lián)的成本。因此,期望充分改善這些問題以及其他問題。為此,現(xiàn)在注意力被指向本發(fā)明的系統(tǒng)和方法。這些系統(tǒng)和方法的實施例提供了包括一組數(shù)據(jù)庫的分布式RAID系統(tǒng)。更特別地,在分布式RAID系統(tǒng)的特定實施例中,每個數(shù)據(jù)庫具有一組相關聯(lián)的存儲介質并且執(zhí)行類似的分布式RAID應用。每個數(shù)據(jù)庫上的分布式RAID應用自身進行協(xié)調以分布和控制數(shù)據(jù)流,所述數(shù)據(jù)流與結合存儲在數(shù)據(jù)庫的相關聯(lián)的存儲介質上的數(shù)據(jù)而實現(xiàn)RAID的級別相關聯(lián)。具體地,在一些實施例中,可以使用分布式RAID系統(tǒng)產生具有相關聯(lián)的RAID級別的卷。每個分布式RAID應用之后可以協(xié)調與所述卷的數(shù)據(jù)相關聯(lián)的操作,從而使與所述卷相關聯(lián)的數(shù)據(jù)或結合所述卷的期望的RAID級別的實施方式可以被存儲在分布式RAID系統(tǒng)的多個數(shù)據(jù)庫上。通過由使用類似的分布式RAID應用在這些數(shù)據(jù)庫中的每個數(shù)據(jù)庫上執(zhí)行的將所述卷的數(shù)據(jù)和與RAID的實施方式相關聯(lián)的數(shù)據(jù)存儲在多個數(shù)據(jù)庫上,而協(xié)調結合卷的 RAID的級別的實施方式,可以獲得多個優(yōu)點。即,可以指派不同的存儲卷,其中一個或多個卷結合不同的RAID級別實現(xiàn)。此外,當使用基本相同的分布式RAID應用完成數(shù)據(jù)庫間存儲的協(xié)調和RAID的實施方式時,在許多情況下,可以使用標準的或現(xiàn)貨供應的硬件,例如基于標準x86的服務器和存儲介質。使用此處呈現(xiàn)的實施例或其他實施例還可以實現(xiàn)許多其他的優(yōu)點,并且這些可能或未能被特別詳細地指出的優(yōu)點將在閱讀本公開后發(fā)現(xiàn)。現(xiàn)在轉到圖1,描述了使用分布式RAID系統(tǒng)的一個實施例的系統(tǒng)的構造的框圖。 分布式RAID系統(tǒng)100包括一組數(shù)據(jù)庫110,每個數(shù)據(jù)庫110與兩個開關120通信地耦接。 每個開關120還與每個主機102通信地耦接,從而使主機102可以通過相應于特定數(shù)據(jù)庫 110的一組路徑與每個數(shù)據(jù)庫110通信,每個路徑包括開關120中的一個。可以使用幾乎任何期望的傳輸介質(有線或無線的)來實現(xiàn)數(shù)據(jù)庫110、開關120 和主機102之間的通信耦接,包括以太網(wǎng)、SCSI (小型計算機系統(tǒng)接口)、iSCSI (因特網(wǎng)小型計算機系統(tǒng)接口)、光纖信道、串行連接的SCSI ( “SAS”)、高級技術附加裝置(“ΑΤΑ”)、 串行ATA( “SATA”)或本領域公知的其他協(xié)議。此外,通信耦接可以結合通信網(wǎng)絡實現(xiàn),例如因特網(wǎng)、LAN、WAN、無線網(wǎng)絡或本領域公知的任何其他的通信網(wǎng)絡。之后,在一個實施例中,使用命令協(xié)議,例如iSCSI、SCSI等等,主機102可以與數(shù)據(jù)庫110通信以操控數(shù)據(jù)。更特別地,每個數(shù)據(jù)庫110包括存儲介質(如之后將在本文中更詳細地說明的)。共同地,數(shù)據(jù)庫110中的存儲介質可以被虛擬化并作為存儲器、存儲設備、等等的一個或多個相鄰的單元呈現(xiàn)到主機102。例如,當使用iSCSI協(xié)議時,數(shù)據(jù)庫110 中的存儲介質可以作為SCSI目標被呈現(xiàn)給主機102,所述SCSI目標在一個實施例中具有多個端口。因此,在操作期間,在一個實施例中,主機102(或主機102處的用戶或與數(shù)據(jù)庫 110接合的用戶)可以請求創(chuàng)建卷并且指定將結合所述卷實現(xiàn)的RAID的級別。與所述卷相關聯(lián)的數(shù)據(jù)以及與所述卷相關聯(lián)的期望級別的RAID的實施方式存儲在數(shù)據(jù)庫110間。主機102之后可以使用相應于所述卷或其一部分的邏輯地址訪問該卷。以此方式,主機102 可以利用創(chuàng)建的存儲器的卷,并且可以結合這些卷實現(xiàn)幾乎不被主機102察覺的容錯性。存儲器的虛擬化以及使用數(shù)據(jù)庫110的RAID的實施方式可以參考圖2A被更好地理解,圖2A描述了可操作為實現(xiàn)分布式RAID的數(shù)據(jù)庫110計算機的一個實施例的框圖。此處,數(shù)據(jù)庫110包括數(shù)據(jù)貯存器250以及可操作為執(zhí)行存儲在計算機可讀介質上的指令的處理器202,其中所述指令可操作為實現(xiàn)分布式RAID應用210。分布式RAID應用210可以周期性地發(fā)布心跳通信到其他數(shù)據(jù)庫110上的分布式RAID應用210,以確定是否存在關于所述數(shù)據(jù)庫110的故障。如果分布式RAID應用210確定另一個數(shù)據(jù)庫110正經(jīng)歷故障,則所述分布式RAID應用210可以設置相應于所述數(shù)據(jù)庫110的一個或多個故障標記。使用這些用于每個數(shù)據(jù)庫110上的分布式RAID應用210的故障標記,特定的分布式RAID應用 210可以確定某個數(shù)據(jù)庫110是否存在故障。分布式RAID應用210還可以訪問(例如,以讀取、寫入、發(fā)布命令,等等)到包括一個或多個存儲介質的數(shù)據(jù)貯存器250,所述存儲介質可以例如為根據(jù)已知的幾乎任何協(xié)議操作的磁盤252,例如根據(jù)SATA、PATA、FC、等等。在每個數(shù)據(jù)庫110上執(zhí)行的分布式RAID 應用210可以允許使用數(shù)據(jù)庫110間的數(shù)據(jù)貯存器250的卷的分派和使用,以及利用一組全局表格240結合這些卷的RAID的實施方式,所述全局表格240在數(shù)據(jù)庫110、一組本地表格245和寫入式高速緩沖存儲器260之間共享,全部這些均可以存儲在存儲器230中(其可以是數(shù)據(jù)貯存器250或其他存儲器)。圖2B描述了硬件構造的一個實施例的框圖,所述硬件構造可以用于實現(xiàn)可操作為實現(xiàn)分布式RAID的數(shù)據(jù)庫110計算機。在這種構造的示例中,數(shù)據(jù)庫110包括一個或多個處理器202和存儲器230,所述處理器202可以連接英特爾(Intel)X86構造或其他一些構造,所述存儲器230通過總線耦接到I/O控制器網(wǎng)絡集線器212,所述I/O控制器網(wǎng)絡集線器212在一個實施例中可以是南橋芯片或類似物。反過來,所述I/O控制器網(wǎng)絡集線器 212可以耦接到總線272并且控制總線272,例如PCI-X總線、PCI-express總線、等等。耦接到這個總線272的是一個或多個磁盤控制器沈2,例如,如LSI 1068 SATA/SAS控制器。 這些磁盤控制器262中的每一個均耦接到一個或多個磁盤252,其中這些磁盤252可以共同地包括數(shù)據(jù)貯存器250。此外,一個或多個網(wǎng)絡接口 282還可以耦接到總線272。這些網(wǎng)絡接口 282可以是包括在母板上的網(wǎng)絡接口(例如,以太網(wǎng),等等),所述網(wǎng)絡接口 282可以包括配置為經(jīng)由一個或多個協(xié)議(例如以太網(wǎng)、光纖信道、等等)接合的一個或多個網(wǎng)絡接口卡,或者所述網(wǎng)絡接口 282可以是其他一些類型的網(wǎng)絡接口,所述網(wǎng)絡接口使得數(shù)據(jù)庫110 可以通過這些網(wǎng)絡接口 282與開關120通信?,F(xiàn)在參考圖3,說明了一種用于卷的分派以及與數(shù)據(jù)庫110間的數(shù)據(jù)貯存器250中的這些卷相關聯(lián)的數(shù)據(jù)的布置的方法的一個實施例。最初,在卷被分派到數(shù)據(jù)貯存器250 的磁盤252上之前,磁盤252可以在步驟305處被格式化。如上所述,為了具有從任何故障容易且簡單地恢復的能力,冗余數(shù)據(jù)可能需要關于任意相應的存儲數(shù)據(jù)是精確的。在許多情況下,這可能使得使用的磁盤252通過自磁盤252上的區(qū)域中的當前數(shù)據(jù)計算冗余數(shù)據(jù)而存儲被格式化的卷,其中即便存儲在這些區(qū)域的數(shù)據(jù)可能在當前普遍為無用值,部分卷也將被存儲。這些計算可能耗費不希望看到的大量時間。此外,在例如關于圖1詳細說明的分布式RAID環(huán)境中,可能本身存在其他問題。更具體地,由于卷的不同部分可以存儲在不同的數(shù)據(jù)庫110上,并且相應于所述卷的冗余數(shù)據(jù)還可以被存儲在各個數(shù)據(jù)庫110上,因此完成這種類型的格式化可以額外地要求數(shù)據(jù)庫 110上的分布式RAID應用210之間的大量通信,耗費了處理器周期和通信帶寬。因此,在一個實施例中,為了確保相應于磁盤的將存儲卷的數(shù)據(jù)的區(qū)域的冗余數(shù)據(jù)關于磁盤252的將存儲所述卷的數(shù)據(jù)的所述區(qū)域是精確的,可以在磁盤252上將存儲相應于所述卷的數(shù)據(jù)的所述區(qū)域以及磁盤252上將存儲冗余數(shù)據(jù)的所述區(qū)域中寫入零值。通過將磁盤252上將存儲卷的數(shù)據(jù)的區(qū)域和磁盤252上將存儲冗余數(shù)據(jù)的區(qū)域調整為零,可以保證所述卷中的任何數(shù)據(jù)均可以通過其相應的冗余數(shù)據(jù)重建。將磁盤252調整為零可以具有其他優(yōu)點。即,可以不需要執(zhí)行復雜的計算來確定冗余數(shù)據(jù),并且分布式RAID應用210之間可以不進行通信以在將存儲卷的區(qū)域和將存儲相應于這些區(qū)域的冗余數(shù)據(jù)的區(qū)域之間獲得相對的精確。重要的是,通過將磁盤252的用于卷及其相應的冗余數(shù)據(jù)的區(qū)域調整為零,可以避免RAID系統(tǒng)100的可用性中的顯著延遲。這些優(yōu)點可以通過使用在操作期間基本連續(xù)地將磁盤252的未分派區(qū)域調整為零的處理而獲得,所述磁盤252的未分派區(qū)域源自例如分布式RAID系統(tǒng)100的最初的使用、新磁盤252的安裝、卷的刪除、等等。在這些情況下,每個數(shù)據(jù)庫110上的磁盤252的當前未分派(S卩,目前未分派)區(qū)域可以具有寫入其中的零值(被稱作將所述區(qū)域“調整為零”)。被調整為零的磁盤252的未分派區(qū)域可以被跟蹤,從而當相應于卷的某部分的命令或與卷的某部分相關聯(lián)的冗余數(shù)據(jù)在所述部分被分配的數(shù)據(jù)庫110處被接收時,分布式 RAID應用210可以檢查以確定所述部分是否被分配了所述部分被分配的數(shù)據(jù)庫110上的磁盤252的相應區(qū)域。如果未分配數(shù)據(jù)庫110上的磁盤252的相應區(qū)域,則分布式RAID應用210可以選擇被調整為零的磁盤252的區(qū)域,并且將磁盤252的該區(qū)域分配到所述卷或相應的冗余數(shù)據(jù)的所述部分。通過同時將之前未被調整為零的任意未分配的區(qū)域調整為零并且等待直到相應于卷或冗余數(shù)據(jù)的某部分的命令被接收以將磁盤252的被調整為零的區(qū)域分配到所述部分,分布式RAID系統(tǒng)100可以幾乎立即工作而不需要較長的相關格式化處理,且可以添加新磁盤252,并且卷的刪除或釋放對分布式RAID系統(tǒng)100的操作是相對不易被察覺的。因此,將注意到,在閱讀了以上內容之后,所述步驟305 (其中磁盤252被格式化) 可以在創(chuàng)建關于分布式RAID系統(tǒng)100的卷之前、期間或之后完成并且步驟305(以及在本文的全部流程圖中的其他全部步驟)的放置暗示各步驟之間是無序的。還將注意到,在徹底瀏覽了圖1中的其余步驟以及本公開的剩余內容后,可以創(chuàng)建卷,并且所述卷和相應于所述卷的冗余數(shù)據(jù)的部分在這些數(shù)據(jù)庫110上的磁盤252上的物理區(qū)域被分配為存儲所述卷或冗余數(shù)據(jù)的所述部分之前被分配到數(shù)據(jù)庫110,并且進一步地,將用于存儲相應于這些部分的數(shù)據(jù)的磁盤252上的物理區(qū)域調整為零可以發(fā)生在創(chuàng)建所述卷之前或創(chuàng)建所述卷之后但在這些物理區(qū)域被分配到所述卷或冗余數(shù)據(jù)的相應部分之前(如以下更詳細的討論)。這些位置可以參考段的概念被更好地解釋,所述段可以由分布式RAID應用210的實施例使用,其中段可以具有2048邏輯塊地址(LBA)的尺寸(或者其他一些尺寸),并且所述邏輯塊地址的尺寸相應于磁盤252的扇區(qū)尺寸。每個數(shù)據(jù)庫110上的數(shù)據(jù)貯存器250中的磁盤252因此可以在步驟310處被分離成等尺寸的段(例如,1MB)。這些段可以相應于磁盤驅動器252的一個或多個相鄰數(shù)據(jù)塊。因此,當用戶或主機102在步驟320處請求自分布式RAID應用210創(chuàng)建卷,并且指定在步驟330處將與所述卷結合使用的RAID的級別時, 相應于被請求的所述卷的尺寸的多個這些段加上期望結合所述卷實現(xiàn)RAID的期望級別的段的數(shù)量可以在步驟340處被分配到所述卷。因此,所述卷包括多個段(同樣被稱作邏輯段),其中這些段中的每一個可以與特定的數(shù)據(jù)庫110相關聯(lián),從而使數(shù)據(jù)庫110可以被分配為管理所述卷的該段。該段可以例如具有2048邏輯塊地址(LBA)的尺寸,其中邏輯塊地址的尺寸相應于磁盤252的扇區(qū)尺寸 (其他配置和尺寸也將是可行的)。在絕大多數(shù)情況下,包括所述卷的該段的物理存儲將被存儲在管理該段的數(shù)據(jù)庫110的數(shù)據(jù)貯存器250中,然而,在其他情況下,相應于該段的數(shù)據(jù)可以存儲在不同的數(shù)據(jù)庫110的數(shù)據(jù)貯存器205中(換句話說,在特定情況下,包括管理該段的分布式RAID應用的數(shù)據(jù)庫110可以與包括存儲相應于該段的數(shù)據(jù)的數(shù)據(jù)貯存器250 的數(shù)據(jù)庫110相區(qū)別)。在一個實施例中,對相應于特定卷的數(shù)據(jù)庫110的段分派可以通過確定相應于分布式RAID系統(tǒng)100的一組數(shù)據(jù)庫110的隨機排列而完成。因此,如果存在六個數(shù)據(jù)庫,則可以確定尺寸為6的隨機排列,其中所述隨機排列包括每個數(shù)據(jù)庫,使得所述段可以以所述隨機排列的順序被連續(xù)地分配到每個數(shù)據(jù)庫。例如,假設分布式RAID系統(tǒng)中具有四個數(shù)據(jù)庫110(將其稱作數(shù)據(jù)庫1、數(shù)據(jù)庫2、 等等)??梢源_定數(shù)據(jù)庫2、數(shù)據(jù)庫4、數(shù)據(jù)庫1和數(shù)據(jù)庫3的隨機排列。在這種情況下,相應于卷的第一段在數(shù)據(jù)庫2上,第二段可以在數(shù)據(jù)庫4上,第三段在數(shù)據(jù)庫1上,第四段在數(shù)據(jù)庫3上并且第五段再次回到數(shù)據(jù)庫4上。以此方式,如果已知相應于所述卷的隨機排列,則相應于所述卷的特定段的位置可以數(shù)學方式確定。如上所述,在步驟330處,用戶可以指定RAID的級別結合卷實現(xiàn)。在此情況下,分布式RAID應用210可以確保相應于結合卷的RAID的實施方式的任何數(shù)據(jù)均在步驟350處被存儲在適當位置,使得RAID信息恰當?shù)胤植荚跀?shù)據(jù)庫110間,以確保獲得期望的RAID的級別。例如,如果期望結合卷實現(xiàn)RAID 5,則分布式RAID應用210可以確定期望的RAID 奇偶校驗群組尺寸(例如,基于用戶配置的RAID集合或另外確定的RAID集合)。這種確定可以基于分布式RAID系統(tǒng)中的數(shù)據(jù)庫110的數(shù)量并且在一個實施例中, 可以是一個小于數(shù)據(jù)庫110的數(shù)量的數(shù)(額外地加1以說明奇偶校驗數(shù)據(jù))。為了說明,如果存在五個數(shù)據(jù)庫110,對于每四個存儲了與卷相關聯(lián)的數(shù)據(jù)的段 (被稱作數(shù)據(jù)段),一個段專用于奇偶校驗并且用于四個段的所述奇偶校驗被計算并存儲在該奇偶校驗段中,其中所述奇偶校驗段專用于數(shù)據(jù)庫110,該數(shù)據(jù)庫110的數(shù)據(jù)貯存器 250不包括用于計算奇偶校驗段的奇偶校驗數(shù)據(jù)的數(shù)據(jù)段。這樣,相應于邏輯卷的每個段均被分配到特定的數(shù)據(jù)庫110,并且被用于存儲相應于所述卷的RAID數(shù)據(jù)的任何段100(此處被可替換地稱作冗余段或奇偶校驗段,不失一般的適用性地使用所述段以存儲與結合卷的RAID的任何級別的實施方式相關聯(lián)的任意類型的冗余數(shù)據(jù))同樣被分配到數(shù)據(jù)庫110,然而,數(shù)據(jù)庫的數(shù)據(jù)貯存器250的磁盤252的物理扇區(qū)可能未被分配為存儲相應于那些段的數(shù)據(jù)。因此,在步驟360處,所述卷的邏輯段被分配到的數(shù)據(jù)庫110上的磁盤252的物理段可以被確定并被分配到所述邏輯段。這種段映射可以被存儲在每個數(shù)據(jù)庫110的本地表格M5中。如前所述,這種分配可以在稍后的某點處發(fā)生,例如,當命令首先試圖寫入邏輯段時。當作出該分配時,在一個實施例中,磁盤252的區(qū)域不同性能特征可以關于被訪問的邏輯段說明。換句話說,磁盤252可以具有比相同磁盤的其他段更有效地訪問的段。因此,在一個實施例中,可能期望基于與邏輯段相關聯(lián)的標準分配磁盤252的物理段。所述特征可以包括例如,與相應于所述邏輯段的卷相關聯(lián)的服務質量、對包括所述邏輯段的所述卷的多次訪問等等。之后,在步驟370處,相應于所述卷的信息可以被存儲,使得可以從這種被存儲的信息確定相應于所述卷的段的位置或相應于結合所述卷的RAID的實施方式的段的位置。 這種被存儲的信息(共同被稱作映射數(shù)據(jù))可以因此包括對所述卷的標識、相應于所述卷的隨機排列(例如,指示所述段所在的數(shù)據(jù)庫110的順序)和任何RAID實施方式的奇偶校驗群組尺寸(例如,所述卷是否相應于4+1個RAID集合、所述卷是否相應于7+1個RAID集合、RAID 1是否被實現(xiàn)、等等)。例如,這種數(shù)據(jù)可以被存儲在全局表格240中,使得其可以被傳輸?shù)狡渌麛?shù)據(jù)庫110上的其他分布式RAID應用210,從而確保與每個分布式RAID應用210相關聯(lián)的表格MO的集合的至少一部分保持基本一致并且保持所述位置。以上說明可以參考圖4被更好地理解,圖4說明了具有五個數(shù)據(jù)庫110的分布式 RAID系統(tǒng)的一個實施例的一個示例。此處,每個數(shù)據(jù)庫110的每個數(shù)據(jù)貯存器250被布置為等尺寸的段402的集合,為本示例中的目的,假設具有1MB的尺寸。設想,現(xiàn)在主機102 請求來自數(shù)據(jù)庫IlOb上的分布式RAID應用210b的具有RAID級別5的8MB的卷。在此情況下,分布式RAID應用210b可以確定所述卷的數(shù)據(jù)部分要求八個段402,而可能要求兩個段402以結合用于所述卷的期望RAID級別的實施方式來存儲所述卷的冗余數(shù)據(jù)。分布式 RAID應用210b之后可以確定用于所述卷的隨機排列。為本示例中的目的,假設隨機排列是數(shù)據(jù)庫110b、數(shù)據(jù)庫110d、數(shù)據(jù)庫110a、數(shù)據(jù)庫IlOc和數(shù)據(jù)庫110e。因此,數(shù)據(jù)庫IlOb 可以是分配段40加,即被請求的卷的第一段,數(shù)據(jù)庫IlOd可以是分配段402b,即被請求的卷的第二段,數(shù)據(jù)庫IlOa可以是分配段402c,即被請求的卷的第三段,數(shù)據(jù)庫IlOc可以是分配段402d,即被請求的卷的第四段,并且數(shù)據(jù)庫IlOe可以是分配段402e,即被請求的卷的第五段。接著,所述分配再次開始于隨機順序的第一數(shù)據(jù)庫110,使得數(shù)據(jù)庫IlOb可以是分配段402f,即被請求的卷的第六段,數(shù)據(jù)庫IlOd可以是分配段402g,即被請求的卷的第七段,并且數(shù)據(jù)庫IlOa可以是分配段40池,即被請求的卷的第八段。一旦用于存儲與所述卷相關聯(lián)的數(shù)據(jù)的數(shù)據(jù)段40加-40池被分配,則分布式RAID 應用210b可以為段402分配與該RAID級別的實施方式相關聯(lián)的任何數(shù)據(jù)。在本示例中, 由于所述卷期望RAID 5,因此分布式RAID應用210b可以確定當使用五個數(shù)據(jù)庫110時,可以期望(4+1)個奇偶校驗集合。分布式RAID應用210b之后可以確定為了存儲所述奇偶校驗以結合八個段402實現(xiàn)RAID 5,可能需要額外的兩個段402。此外,可能期望利用數(shù)據(jù)段402的特定集合產生的奇偶校驗不存儲于在其數(shù)據(jù)貯存器中具有數(shù)據(jù)段402的那些集合中的任意集合的數(shù)據(jù)庫110上。因此,分布式RAID應用 210b還可以確定每個奇偶校驗段將基于被確定的RAID奇偶校驗群組尺寸分派的位置,所述第一數(shù)據(jù)段40 的位置等等。此處,奇偶校驗段402i將被分派在數(shù)據(jù)庫IlOc的數(shù)據(jù)貯存器250c中,所述奇偶校驗段402i將存儲相應于存儲在數(shù)據(jù)段4(^a、402b、402c和402d 中的數(shù)據(jù)的奇偶校驗數(shù)據(jù),而奇偶校驗段402 j將被分派在數(shù)據(jù)庫IlOe的數(shù)據(jù)貯存器250e 中,所述奇偶校驗段402 j將存儲相應于存儲在數(shù)據(jù)段4(^e、402f、402g和40 中的數(shù)據(jù)的奇偶校驗數(shù)據(jù)。此處注意,奇偶校驗段402i、402j被布置并設計尺寸為基本等同于存儲與卷相關聯(lián)的數(shù)據(jù)的那些段40h-402h,所述奇偶校驗段402i、402j將存儲與結合包括數(shù)據(jù)段40h-402h的卷的RAID的實施方式相關聯(lián)的奇偶校驗信息。因此,當主機102訪問所述卷時,具有相應于所述卷的第一數(shù)據(jù)段的邏輯地址的請求可以相應于數(shù)據(jù)庫IlOb上的數(shù)據(jù)段40 ,具有相應于所述卷的第二數(shù)據(jù)段的邏輯地址的請求可以相應于數(shù)據(jù)庫IlOd上的數(shù)據(jù)段402b,等等。此處注意,被分派的數(shù)據(jù)段 402a-402h可以位于不同的數(shù)據(jù)庫110上,并且任何被分派的數(shù)據(jù)段40加-40濁的位置可以使用與所述卷相關聯(lián)的隨機排列來確定(例如,當存儲在數(shù)據(jù)庫110處的全局表格MO中時)。然而,如上所述,數(shù)據(jù)庫110上的數(shù)據(jù)貯存器250被虛擬化,因此,發(fā)出請求的主機可能不知道數(shù)據(jù)貯存器250中的數(shù)據(jù)段402的位置、多個數(shù)據(jù)貯存器250的存在、數(shù)據(jù)貯存器 250在多個數(shù)據(jù)庫110間分布、等等。主機102相信其正尋址單個連續(xù)的卷。顯然的是,在本示例中,數(shù)據(jù)庫110上的數(shù)據(jù)段402的位置(以及數(shù)據(jù)庫110的相應的隨機排列)為的是說明,并且卷的數(shù)據(jù)段402可以根據(jù)幾乎任意隨機排列或其他排列而位于任意數(shù)據(jù)庫110上的任意數(shù)據(jù)貯存器250上。此外,應該注意到,雖然每個段402在本示例中為1MB,但這些段可以不失一般性地為任意尺寸,并且選擇1MB的尺寸僅是為了易于說明。如可從以上說明中看到的,特定的數(shù)據(jù)段402或奇偶校驗段402的位置可以使用與所述卷和RAID奇偶校驗群組尺寸相關聯(lián)的隨機排列,通過算法確定(例如,使用與用于分配所述卷的段、定位所述卷的奇偶校驗段等等的隨機排列相同的隨機排列)。因此,所述信息可以結合相應于所述卷的標識被存儲在例如全局表格MO的集合中。進一步地,這些全局表格240可以在數(shù)據(jù)庫110之間傳輸或者被更新,使得在每個數(shù)據(jù)庫110中的所述全局表格MO的集合的至少部分可以被保持為基本一致。此處簡單地進行對與分布式RAID應用210相關聯(lián)的全局表格MO的更為詳細的研究可能是有益的。如上所述,在一個實施例中,全局表格240可以存儲與由分布式RAID 應用210產生的卷相關聯(lián)的信息,在所述分布式RAID應用210中,那些表格240可以用于確定與該卷內的數(shù)據(jù)段相關聯(lián)的數(shù)據(jù)庫110,或者與相應于該卷的數(shù)據(jù)段相關聯(lián)的奇偶校驗段被定位。因此,全局表格240可以包括表格的集合,每個表格相應于關于數(shù)據(jù)庫110實現(xiàn)的卷。特別地,這些表格240中的一個可以包含數(shù)據(jù),該數(shù)據(jù)可以用于識別其數(shù)據(jù)貯存器 250包括卷的特定段的數(shù)據(jù)庫110。具體地,這種表格可以用于使與卷相關聯(lián)的邏輯地址與存儲有相應于該邏輯地址的段(數(shù)據(jù)、冗余、等等)的數(shù)據(jù)庫110相關。圖5說明了這種類型的表格的一個實施例的圖示,其中每個卷可以具有這種相關聯(lián)的表格的相關聯(lián)的實例。表格550包括用于LV數(shù)字504、段尺寸508、段計數(shù)512、服務質量(QOS) 514、范圍計數(shù)518的項目、用于范圍項目的信息,所述范圍項目包括在說明第一范圍52 和第二范圍524b以及任意額外的范圍項目52 的實施例中。LV數(shù)字504是用于識別特定卷的唯一數(shù)字,段尺寸508相應于用于實現(xiàn)所述卷的段的尺寸,段計數(shù)512相應于與邏輯卷相應的段的數(shù)量(例如,數(shù)據(jù)段和冗余段兩者的數(shù)量、僅數(shù)據(jù)段的數(shù)量、等等),QOS 514表示期望關于所述卷實現(xiàn)的服務質量(注意,這種 QOS指示符可以表示給予該卷相對于數(shù)據(jù)庫110上存儲的其他卷的優(yōu)先級)并且范圍計數(shù) 518表示與所述卷相關聯(lián)的多個范圍,而范圍項目5 中的每一個均相應于這些范圍中的一個。范圍可以相應于特定的數(shù)據(jù)庫110順序和RAID實施方式。多個范圍可以被用于實現(xiàn)卷的原因是多種多樣的。具體地,例如,多個范圍可以結合卷使用,因為不同數(shù)據(jù)庫110 處的不同數(shù)據(jù)貯存器250可以具有在數(shù)據(jù)貯存器250中可被利用的不同數(shù)量的存儲。這可以導致的情況例如為,對于卷的第一范圍,全部數(shù)據(jù)庫110可以結合第一 RAID實施方式被使用,而在卷的第二范圍中,可利用的少于全部的數(shù)據(jù)庫110可以結合第二 RAID實施方式使用(其中實際上,第一和第二 RAID實施方式可以具有彼此不同的級別)。這些范圍中的每一個因此可以相應于根據(jù)不同數(shù)據(jù)庫110順序(例如,隨機排列,等等)布置的段,具有可用的不同數(shù)量的數(shù)據(jù)庫110、不同類型的RAID,等等。為了說明而使用具體的示例,再次簡要地參考圖4。假設具有RAID級別5的8MB 的卷如圖所示布置,其中數(shù)據(jù)段根據(jù)數(shù)據(jù)庫110b、數(shù)據(jù)庫110d、數(shù)據(jù)庫110a、數(shù)據(jù)庫IlOc和數(shù)據(jù)庫IlOe的順序布置并且RAID 5結合使用的所述卷實現(xiàn),可能期望(4+1)個奇偶校驗集合,其中奇偶校驗段被分配在數(shù)據(jù)庫IlOc的數(shù)據(jù)貯存器250c和數(shù)據(jù)庫IlOe的數(shù)據(jù)貯存器250e中?,F(xiàn)在假設請求向這種卷增加額外的3MB。然而,在此情況下,假設數(shù)據(jù)庫110e、 IlOc和IlOd的數(shù)據(jù)貯存器250沒有更多的空間。因此,在此情況下,唯一的解決方案可能是將額外期望的3MB在數(shù)據(jù)庫IlOa和IlOb之間分派,所述數(shù)據(jù)庫IlOa和IlOb在數(shù)據(jù)庫 250中具有剩余的存儲。進一步地,由于僅有兩個數(shù)據(jù)庫110可用,因此可能僅可以利用 RAID級別1,而不是如在第一個8MB的卷中使用的RAID 5。因此,在此情況下,所述第一個 8MB的卷可以相應于第一范圍,并且在相應于具有第一組值的卷的表格中具有第一范圍項目,而下一個3MB的卷可以相應于第二范圍,并且在相應于具有第二組值的卷的表格中具有第二范圍項目。如在閱讀了本公開后可以清楚了解的,這種類型的事件可能以一定頻率發(fā)生?;氐綀D5,在許多情況中,為了應對這些類型的情況,卷的每個范圍可以在表格 550中具有一個項目,使得在該特定的范圍中的段的位置可以自相應于該范圍的范圍項目確定。用于相應于表格陽0的卷的每個范圍的項目5M與范圍計數(shù)518相關聯(lián)。在一個實施例中,范圍計數(shù)518可以相應于卷的范圍的數(shù)量,使得范圍項目5M的數(shù)量相應于范圍計數(shù)518。雖然僅顯示了范圍項目52 和524b,但應該注意表格中范圍項目5 的數(shù)量將基于范圍的數(shù)量,所述范圍的數(shù)量相應于該表格對應的卷。因此,如果一個卷被劃分為三個范圍,則表格550中將具有三個范圍項目524,使得存在范圍項目524,該范圍項目5M包括用于相應于表格550的卷的每個范圍的信息。用于范圍項目5M的信息包括類型526、開始530、結束534、網(wǎng)絡RAID 538、網(wǎng)絡 RAID尺寸M2、磁盤RAID M6、磁盤RAID尺寸550、數(shù)據(jù)庫計數(shù)554、數(shù)據(jù)庫順序558以及磁盤計數(shù)562和磁盤順序566,該磁盤計數(shù)562和磁盤順序566相應于用于存儲與范圍5M 相關聯(lián)的段的每個數(shù)據(jù)庫110(換句話說,存在等于所述范圍項目5M的數(shù)據(jù)庫計數(shù)554的磁盤計數(shù)562和磁盤順序566)。類型5 說明了相應于范圍項目5 的信息的范圍類型; 例如,常態(tài)、源(SRC)、目的地(DST)或其他類型的范圍。開始230是相應于范圍項目5M的卷的范圍的第一個邏輯段地址。結束234是相應于信息的所述范圍的最后的邏輯段地址, 所述信息針對相應于范圍項目5M的卷的范圍。其他配置也是可行的,例如,結束5M可以是一個計數(shù),該計數(shù)是所述范圍中的段或塊的最大數(shù)量,等等。數(shù)據(jù)庫計數(shù)562可以相應于數(shù)據(jù)庫110的數(shù)量,在所述數(shù)據(jù)庫110上具有相應于范圍項目的范圍,數(shù)據(jù)庫順序558可以是該范圍中的段被分配到數(shù)據(jù)庫110的順序,而網(wǎng)絡 RAID 538、網(wǎng)絡RAID尺寸M2、磁盤RAID 546和磁盤RAID尺寸552可以相應于結合相應于范圍項目5M的卷的范圍實現(xiàn)的RAID的類型。網(wǎng)絡RAID 538是與相應于表格550的卷相關聯(lián)地實現(xiàn)的RAID的類型,例如,RAID 0、RAID 1或RAID 5或者其他RAID類型。網(wǎng)絡RAID尺寸542是在所述范圍中使用的RAID 類型的奇偶校驗群組尺寸。網(wǎng)絡RAID尺寸542可以由所述范圍中的數(shù)據(jù)庫110的數(shù)量限制,從而小于或等于相應于范圍524的信息的范圍中的數(shù)據(jù)庫的數(shù)量。磁盤RAID546是在所述范圍中的數(shù)據(jù)庫中的磁盤間實現(xiàn)的RAID的類型。磁盤RAID尺寸552可以是RAID類型的奇偶校驗群組尺寸,該RAID類型用于每個數(shù)據(jù)庫110的數(shù)據(jù)貯存器250中的磁盤252 間,并且磁盤RAID尺寸552可以被限制為小于或等于數(shù)據(jù)庫中的磁盤的數(shù)量。在多個實施例中,所述范圍中的數(shù)據(jù)庫110中的磁盤間的RAID是可選的并且可以使用或者不使用。在這些實施例中,可以不使用或者可以省略磁盤RAID 546和磁盤RAID尺寸552中的一者或兩者。數(shù)據(jù)庫計數(shù)5M是所述范圍中的數(shù)據(jù)庫的數(shù)量并且數(shù)據(jù)庫順序558是在所述范圍中的數(shù)據(jù)庫110間實現(xiàn)的RAID的順序(例如,呈條型)。例如,數(shù)據(jù)庫110可以具有以特定順序保存的相應于所述卷的邏輯地址的數(shù)據(jù),并且數(shù)據(jù)庫順序558相應于這種順序。磁盤計數(shù)562是所述范圍的數(shù)據(jù)庫110內的磁盤的數(shù)量,并且磁盤順序566是RAID在特定的數(shù)據(jù)庫110的磁盤間實現(xiàn)的順序。例如,磁盤252可以具有以特定順序保存于所述磁盤中的段,并且磁盤順序566是段在數(shù)據(jù)庫110中的磁盤252間存儲的順序。因此,對于用于存儲與范圍項目5M相關聯(lián)的范圍的段的每個數(shù)據(jù)庫110,存在相應的磁盤計數(shù)562和磁盤順序 566(換句話說,在一個實施例中,磁盤計數(shù)562和磁盤順序566的數(shù)量將等于該范圍項目 524的數(shù)據(jù)庫計數(shù)554)。在多個實施例中,數(shù)據(jù)庫110中的磁盤252間的RAID是可選的并且可以不使用。應該注意到雖然表格550被具體地說明,但本說明是示例性方式而非限制性方式的,并且可以使用其他形式的表格陽0。例如,可以使用虛擬表格取代表格550,并且可以清楚地列出相應于每個邏輯地址的段402和數(shù)據(jù)庫110。因此,如前所述,表格550中的信息可以用于識別包括相應于邏輯地址的數(shù)據(jù)段 402的數(shù)據(jù)庫110(所述邏輯地址在命令或任意其他背景中被主機102引用)。例如,已知段402的尺寸并且使用開始530、結束534、相應于地址的范圍項目524、等等,可以確定相應于卷的邏輯地址的特定的數(shù)據(jù)庫110。雖然表格240的一個或多個部分可以在全部數(shù)據(jù)庫110間基本相同并且可以說明如上所述跨越一個或多個數(shù)據(jù)庫110的一個或多個邏輯卷,但數(shù)據(jù)庫110上的其他表格M5 可以與其相應的數(shù)據(jù)庫110不同(例如,表格245可以對其上執(zhí)行有相應的分布式RAID應用210的數(shù)據(jù)庫110是唯一的)。這種表格245可以包括數(shù)據(jù),該數(shù)據(jù)屬于包括在相應的數(shù)據(jù)庫110的數(shù)據(jù)貯存器250中的每個磁盤252,并且這種表格245可以包括存儲在數(shù)據(jù)貯存器的磁盤252上或數(shù)據(jù)貯存器的磁盤252間的信息,例如,具有被分配到數(shù)據(jù)庫110的段 402的磁盤252的扇區(qū)位于數(shù)據(jù)貯存器250中。在圖6中,說明了這種類型的表格的一個實施例的圖示。表格660可以存儲在特定的數(shù)據(jù)庫110中并且包括多個磁盤表格670,每個磁盤表格670相應于數(shù)據(jù)庫110內的數(shù)據(jù)貯存器250的磁盤252,并且列出了存儲在該磁盤252內的段的位置。更具體地,在絕大多數(shù)情況下,磁盤252被劃分為物理扇區(qū),每個物理扇區(qū)具有相應的地址或地址范圍。磁盤表格670可以是映射表格,該映射表格可以被利用以確定存儲有卷的段的數(shù)據(jù)庫110的磁盤252的扇區(qū)的位置。因此,使用表格670,可以確定相應于卷的段的磁盤252 上的扇區(qū)的地址。進一步地,所述表格可以在相應于所述磁盤的段或扇區(qū)的每個項目中包含一個或多個標記或描述位,從而說明所述扇區(qū)或存儲在該扇區(qū)中的段。現(xiàn)在參考圖7,說明了磁盤表格670的一個實施例的圖示。磁盤表格670具有多個項目,每個項目相應于相應的磁盤的物理段,使得磁盤表格670的項目說明磁盤252的物理段。磁盤表格670中的每個項目還可以包括一個或多個標記或位域,該一個或多個標記或位域說明存儲在相應的扇區(qū)中的所述卷的物理段或段。更特別地,如圖7所示,在一個實施例中,磁盤表格670中的項目包括域,該域針對邏輯卷(LV)數(shù)量、邏輯段數(shù)量、地址空間和扇區(qū)狀態(tài)。LV數(shù)量識別邏輯卷,該邏輯卷相應于存儲在所述物理段中的數(shù)據(jù)。邏輯段數(shù)量識別相應于所述數(shù)據(jù)的邏輯卷的段。地址空間識別存儲為“數(shù)據(jù)”或“冗余”的段?!皵?shù)據(jù)” 的值可以表示數(shù)據(jù)被存儲在由所述項目表示的扇區(qū)中,而“冗余”的值表示存儲在所述扇區(qū)中的信息可以被用于RAID數(shù)據(jù)保護,并且基于RAID級別,所述信息可以是冗余數(shù)據(jù)、鏡像數(shù)據(jù)或奇偶校驗信息。扇區(qū)狀態(tài)表示段的狀態(tài)為“已分派”、“歸零”或“無效(dirty)”?!耙逊峙伞北硎舅龆我驯环峙刹⑶铱梢园ㄓ行?shù)據(jù)?!皻w零”表示所述段通過向該段中寫入零而被調整為零,而“無效”表示所述段可能包括無用值,該無用值為不可用或不需要的值, 例如,因為所述段未被調整為零或分派,因此可以存儲隨機位或數(shù)據(jù)。在一個實施例中,例如,對于一個新磁盤,在相應于該新磁盤或新增加的磁盤的磁盤表格中,該磁盤的全部段可以被標記為無效。在閱讀了表格的以上說明后,顯然的是分布式RAID應用210可以利用全局表格 240來確定哪個段相應于卷的邏輯地址、相應于卷的段(數(shù)據(jù)段或冗余段)位于哪個數(shù)據(jù)庫 110上、卷的哪個段相應于卷的邏輯地址、與卷的段相關聯(lián)的RAID數(shù)據(jù)(奇偶校驗數(shù)據(jù)、鏡像數(shù)據(jù)、等等)位于何處、特定的數(shù)據(jù)庫110上的哪個磁盤包括段或關于相應于該特定的數(shù)據(jù)庫110的卷、段、或磁盤252的其他信息、或關于卷、段402、數(shù)據(jù)庫110、RAID數(shù)據(jù)等等的其他信息。同樣,每個獨立的數(shù)據(jù)庫110上的分布式RAID應用210可以使用該數(shù)據(jù)庫110上的本地表格245來確定特定的段位于該數(shù)據(jù)庫110上的何處(磁盤252的哪個扇區(qū),等等) 或者確定關于相應于該特定的數(shù)據(jù)庫110的卷、段或磁盤252的其他信息。使用在數(shù)據(jù)庫110和相應于每個獨立的數(shù)據(jù)庫110的本地表格245之間共享的全局表格240的組合,可以通過相互協(xié)作的數(shù)據(jù)庫110上的分布式RAID應用210來執(zhí)行一些操作?,F(xiàn)在將更詳細地討論這些類型的操作。具體地,現(xiàn)在將通過以下關于一個示例性的分布式RAID系統(tǒng)的READ命令和WRITE 命令的實施方式的具體示例來更詳細地討論READ命令和WRITE命令在卷上的實施方式的一個實施例,其中,結合卷實現(xiàn)RAID級別5。在通篇瀏覽本公開后,應該注意到如何可以實現(xiàn)其他類型的實施例、命令、RAID級別、等等。首先看圖8,說明了一種用于在分布式RAID系統(tǒng)中實現(xiàn)READ命令的方法的一個實施例的流程圖。這種READ命令可以經(jīng)過開關120由主機102發(fā)送到數(shù)據(jù)庫110或者從一個數(shù)據(jù)庫110發(fā)送到另一個數(shù)據(jù)庫110。在一些實施例中,主機102可以包括一個或多個應用以及相關聯(lián)的路由信息,使得READ命令可以從發(fā)布該命令的主機102沿發(fā)布主機102和適當?shù)臄?shù)據(jù)庫110之間的路徑被路由到適當?shù)臄?shù)據(jù)庫110。然而,在其他情況下,主機102 上可以不存在這種應用或路由信息,并且因此從主機102發(fā)布的READ命令可以被路由到任意數(shù)據(jù)庫110。這是稍后將在本實施例中說明的情況,然而,在瀏覽了本實施例的說明后,本領域技術人員將注意到所述稍后說明的情況中的步驟同樣適用于之前所述的情況。在步驟810處,接著可以在數(shù)據(jù)庫110處接收READ命令。在步驟820處,數(shù)據(jù)庫 110上的分布式RAID應用210可以確定卷的段,該卷的段相應于在接收到的READ命令中引用的邏輯地址,并且在步驟830處,數(shù)據(jù)庫110上的分布式RAID應用210可以確定所述卷的段存儲在哪個數(shù)據(jù)庫110上。如上所述,可以使用與分布式RAID應用210相關聯(lián)的全局表格240來確定這種信息。如果存儲所述段的數(shù)據(jù)庫110與接收到所述READ命令的數(shù)據(jù)庫110相同(如在步驟832處所確定的),則在步驟840處,可以自接收數(shù)據(jù)庫110上的數(shù)據(jù)貯存器250的適當?shù)拇疟P252獲得被請求的數(shù)據(jù),并且在步驟850處,READ命令作出響應。如上所述,存儲有段的數(shù)據(jù)庫110的數(shù)據(jù)貯存器250的特定的磁盤252可以使用全局表格240確定,而相應于所述段的數(shù)據(jù)在那個磁盤252上的存儲位置可以使用本地表格245 確定,所述本地表格245可以用于將卷的段映射到磁盤252上的物理位置。如果接收數(shù)據(jù)庫110從主機102接收到READ命令,則主機102可以作出響應,而如果接收數(shù)據(jù)庫110從其他數(shù)據(jù)庫110接收到READ命令,則所述響應可以被發(fā)送到發(fā)布READ命令的數(shù)據(jù)庫110 上的分布式RAID應用210。然而,如果在步驟860處段被存儲在遠程數(shù)據(jù)庫110上(與接收到命令的數(shù)據(jù)庫不同的數(shù)據(jù)庫110) JUREAD命令可以被發(fā)送到遠程數(shù)據(jù)庫110處的分布式RAID應用210。 在一個實施例中,這種READ命令可以使用由分布式RAID應用210使用的命令格式被傳輸?shù)竭h程數(shù)據(jù)庫110處的分布式RAID應用210。在提供了原始READ命令的相關信息的同時, 這種命令還可以指示分布式RAID應用將READ命令的結果返回到最初接收該READ命令的數(shù)據(jù)庫110或執(zhí)行其他功能。因此,在步驟870處將READ命令發(fā)送到遠程數(shù)據(jù)庫110后, 包括被請求的數(shù)據(jù)的響應可以自遠程數(shù)據(jù)庫110接收并且在步驟880處,接收到的READ命令對使用在該響應中接收到的數(shù)據(jù)作出響應。現(xiàn)在移動到圖9A和9B,說明了一種用于實現(xiàn)分布式RAID系統(tǒng)中的WRITE命令的方法的一個實施例的流程圖。這種WRITE命令可以由主機102經(jīng)過開關120發(fā)送到數(shù)據(jù)庫 110或從一個數(shù)據(jù)庫110發(fā)送到另一個數(shù)據(jù)庫110。在一些實施例中,主機102可以包括一個或多個應用以及相關聯(lián)的路由信息,使得WRITE命令可以自發(fā)布所述命令的主機102沿發(fā)布主機102和適當?shù)臄?shù)據(jù)庫110之間的路徑路由到適當?shù)臄?shù)據(jù)庫110。然而,在其他情況下,主機102上可以不存在這種應用或路由信息,并且因此從主機102發(fā)布的WRITE命令可以被路由到任意數(shù)據(jù)庫110。這是稍后將在本實施例中說明的情況,然而,在瀏覽了本實施例的說明后,本領域技術人員將注意到所述稍后說明的情況中的步驟同樣適用于之前所述的情況。在步驟910處,之后,可以在接收數(shù)據(jù)庫110處接收WRITE命令。接收數(shù)據(jù)庫110 上的分布式RAID應用210之后可以在步驟920、930和940處確定相應于由WRITE命令引用的邏輯地址的卷的段、該段的位置(例如,哪個數(shù)據(jù)庫110存儲了相應于該段的數(shù)據(jù))和相應于該段的奇偶校驗的位置(例如,哪個數(shù)據(jù)庫110存儲了所述段,該段中存儲了自相應于該段的數(shù)據(jù)產生的奇偶校驗數(shù)據(jù))。如上所述,可以使用存儲在接收數(shù)據(jù)庫110上的全局表格240來確定數(shù)據(jù)段和奇偶校驗段兩者的位置。如果數(shù)據(jù)段(存儲所述數(shù)據(jù)的段)和冗余段(換句話說,所述奇偶校驗或自所述數(shù)據(jù)段產生的其他類型的冗余數(shù)據(jù))均未存儲在接收數(shù)據(jù)庫110上(如在步驟950和960 處確定的),則WRITE命令可以被傳輸?shù)竭h程數(shù)據(jù)庫110上的分布式RAID應用210和遠程奇偶校驗數(shù)據(jù)庫110上的分布式RAID應用210,數(shù)據(jù)段在步驟964處存儲于所述遠程數(shù)據(jù)庫110上,奇偶校驗段在步驟966處存儲于所述遠程奇偶校驗數(shù)據(jù)庫110上。在一個實施例中,這種WRITE命令可以使用由分布式RAID應用210使用的命令格式被傳輸?shù)竭h程數(shù)據(jù)庫110和遠程奇偶校驗數(shù)據(jù)庫110處的分布式RAID應用210。在提供了原始WRITE命令的相關信息的同時,這種命令還可以指示分布式RAID應用210執(zhí)行其他期望的功能。
因此,在WRITE命令被發(fā)送到遠程數(shù)據(jù)庫110和遠程奇偶校驗數(shù)據(jù)庫后,在步驟 968和970處,可以自遠程數(shù)據(jù)庫110和遠程奇偶校驗數(shù)據(jù)庫110上的分布式RAID應用210 接收到完成通知。一旦接收到這些確認,則WRITE命令可以通過接收數(shù)據(jù)庫110上的分布式RAID應用210作出響應。返回到步驟950,然而,如果數(shù)據(jù)段被存儲在接收數(shù)據(jù)庫110中,則可以在步驟952 處確定所述WRITE命令是接收自主機102還是其他數(shù)據(jù)庫1IO0如果WRITE命令自主機102 接收,則WRITE命令可以在步驟976處被傳輸?shù)竭h程奇偶校驗數(shù)據(jù)庫110上的分布式RAID 應用210,并且在步驟974處被置于接收數(shù)據(jù)庫110的寫入式高速緩沖存儲器中。當在步驟 978處自遠程奇偶校驗數(shù)據(jù)庫110上的分布式RAID應用210接收到完成通知后,WRITE命令可以在步驟980處通過接收數(shù)據(jù)庫110上的分布式RAID應用210作出響應(例如,被發(fā)送到主機102的響應)。進一步地,WRITE命令本身可以在步驟982處被處理。這種處理使接收數(shù)據(jù)庫110上存儲的數(shù)據(jù)段或其他功能承擔與WRITE命令相關聯(lián)的數(shù)據(jù)的存儲。換句話說,如果在步驟952處,未自主機接收到WRITE命令,則這可以表示自其他數(shù)據(jù)庫Iio接收到所述WRITE命令(所述其他數(shù)據(jù)庫110在許多情況下可以是最初自主機 102接收到WRITE命令的數(shù)據(jù)庫110)。在此情況下,數(shù)據(jù)庫110可以在步驟984處將接收到的WRITE命令置于其寫入式高速緩沖存儲器中,并且在步驟986處將完成通知發(fā)送到發(fā)布數(shù)據(jù)庫110。在此后的某個點處,WRITE命令本身可以在步驟988處被處理。再次返回到步驟950,如果如在步驟960處所確定的,數(shù)據(jù)段未存儲于接收數(shù)據(jù)庫 110中,而奇偶校驗段被存儲在接收數(shù)據(jù)庫110中,則在步驟962處可以確定所述WRITE命令是接收自主機102還是其他數(shù)據(jù)庫110。如果WRITE命令接收自主機102,則在步驟1002 處,所述WRITE命令可以被傳輸?shù)竭h程數(shù)據(jù)庫110上的分布式RAID應用210,其中,相應于所述WRITE命令的數(shù)據(jù)段存儲在所述遠程數(shù)據(jù)庫110上,并且在步驟1000處,所述WRITE 命令被置于接收數(shù)據(jù)庫110的寫入式高速緩沖存儲器中。當在步驟1004處從遠程數(shù)據(jù)庫 110上的分布式RAID應用210接收到完成通知后,所述WRITE命令可以在步驟1006處通過接收數(shù)據(jù)庫110上的分布式RAID應用210作出響應,并且在步驟1008處通過接收數(shù)據(jù)庫 110處理所述寫入命令。此處,處理所述寫入命令可以使得存儲在接收數(shù)據(jù)庫110中的奇偶校驗段可以基于所述寫入命令而更新。奇偶校驗段的這種更新可以多種方式完成,本文不會對全部方式進行詳細描述,但這些方式將是本領域普通技術人員公知的。例如,奇偶校驗數(shù)據(jù)庫110上的分布式RAID應用210可以執(zhí)行逆序寫入以便更新奇偶校驗段。執(zhí)行這種逆序寫入可以使得自所述奇偶校驗段獲得數(shù)據(jù)段并且使用獲得的數(shù)據(jù)段和將與WRITE命令相關聯(lián)地寫入的數(shù)據(jù)來執(zhí)行邏輯操作(例如,異或O(OR)操作)。可替換地,如果接收數(shù)據(jù)庫110上的分布式RAID應用210具有相應于產生奇偶校驗段的每個數(shù)據(jù)段的多個WRITE命令,則可以計算新的奇偶校驗段并且可以通過將原始奇偶校驗段替換為新計算的奇偶校驗段而更新所述原始奇偶校驗段。用于更新所述奇偶校驗段的其他方法可以通過瀏覽此處的公開而實現(xiàn),并且用于通過分布式RAID應用更新奇偶校驗段的特定方法可以基于多種因數(shù),包括結構參數(shù)、一些數(shù)據(jù)的有效性(例如,相應于用于產生奇偶校驗的全部數(shù)據(jù)段的WRITE命令, 等等)或多個其他因數(shù)中的任何參數(shù)?,F(xiàn)在回到步驟962,如果未從主機接收到所述WRITE命令,則這可能表示所述WRITE命令接收自其他數(shù)據(jù)庫110(在許多情況下,所述其他數(shù)據(jù)庫110可以是最初自主機 102接收到WRITE命令的數(shù)據(jù)庫110)。在此情況下,WRITE命令可以在步驟990處被置于接收數(shù)據(jù)庫110的寫入式高速緩沖存儲器中,并且在步驟992處完成通知被發(fā)送到發(fā)布數(shù)據(jù)庫。WRITE命令之后可以在步驟994處被處理(例如,奇偶校驗段可以被如上所述地更新)。在瀏覽了以上討論后,應該注意到在許多情況下,特定的數(shù)據(jù)庫110處的分布式 RAID應用210可能不能處理接收到的WRITE命令直至自奇偶校驗數(shù)據(jù)庫110接收到通知, 當可能期望存儲一個或多個WRITE命令或評估這些存儲的WRITE命令的集合時,奇偶校驗數(shù)據(jù)庫可能需要評估多個接收到的WRITE命令,以確定或實現(xiàn)用于更新所述奇偶校驗或多個其他實例中的任何實例的方法。為了便于WRITE (或其他)命令的存儲和評估,每個分布式RAID應用210可以具有相關聯(lián)的寫入式高速緩沖存儲器沈0。圖10說明了寫入式高速緩沖存儲器的一個實施例的圖示。當通過分布式RAID應用210接收到WRITE命令時,所述WRITE命令被置于寫入式高速緩沖存儲器1100中。這些 WRITE命令1160中的每一個可以具有相關聯(lián)的時戳,該時戳表示何時接收到所述WRITE命令1160。因此,在一個實施例中,寫入式高速緩沖存儲器1100可以包括一系列時戳的WRITE 命令1160。在一些點處,時戳標志可以由分布式RAID應用210發(fā)布。這種時戳標志可以包括時間并且被傳輸?shù)矫總€分布式RAID應用210。當要發(fā)布時,可以多種方式確定時戳標志, 例如當寫入式高速緩沖存儲器1100以特定的百分率充滿或當以特定的時間間隔或多種其他方法論接收到一定數(shù)量的WRITE命令1160時。無論如何,這種時戳標志1110將與每個分布式RAID應用210相關聯(lián)的每個寫入式高速緩沖存儲器1110分割成至少兩個段,包括WRITE命令1160的封閉標志1150在時戳標志1110之前接收(在本示例中為WRITE命令1160a、1160b、1160c和1160d),并且包括 WRITE命令1160的開放標志1140在時戳標志1110之后接收(在本示例中為WRITE命令 1160e、1160f和1160g)。分布式RAID應用210之后可以評估封閉標志1150中的WRITE命令1160的集合(在本示例中為WRITE命令1160a、1160b、1160c和1160d)以確定如何在仍可以將接收到的WRITE命令添加到開放標志1140的同時處理這些WRITE命令1160。相反,當封閉標志1150包括不再改變的WRITE命令的集合時,分布式RAID應用可以相對于彼此(或其他標準)評估該WRITE命令1160的集合,以確定執(zhí)行的順序(并且因此可以對封閉標志1160中的WRITE命令1160重新排序),評估方法論以更新奇偶校驗段(例如,在封閉標志1150中是否存在相應于用于產生奇偶校驗的每個數(shù)據(jù)段的WRITE命令)或進行與WRITE命令1160的處理相關聯(lián)的其他判斷。應該注意到,由于時戳標志1110 可以因多種理由通過每個數(shù)據(jù)庫110上的任意分布式RAID應用210發(fā)布,因此任意一個點上可以存在多個封閉標志,例如,當多個時戳標志1110由分布式RAID應用210在所述時間中發(fā)布時,寫入式高速緩沖存儲器被分布式RAID應用210中的任意一個評估。在瀏覽了上述內容后,讀者現(xiàn)在可能理解了數(shù)據(jù)庫110上的分布式RAID應用210 如何協(xié)力操作以實現(xiàn)虛擬化存儲和RAID實施方式。然而,理解特定的實施例可能是更為有益的,從而討論在故障發(fā)生后分布式RAID應用210的特定實施例的機能。如上所述,分布式RAID應用210可以獲知(例如,存儲了)故障的數(shù)據(jù)庫(換句話說,所述數(shù)據(jù)庫可能具有硬件、軟件、通信或其他故障,所述故障阻止或妨礙了數(shù)據(jù)庫110操作或訪問數(shù)據(jù)的能力)。分布式RAID應用210可能能夠解決這些故障,同時滿足來自主機102的命令。為了說明,圖11描述了用于實現(xiàn)分布式RAID系統(tǒng)中的READ命令的方法的一個實施例的流程圖。將理解,這種方法應用于結合卷的范圍實現(xiàn)RAID 5的實施例,并且其他實施例可以同樣良好地應用于實現(xiàn)RAID的其他級別(或無級別)的情況。READ命令可以由主機102經(jīng)過開關120發(fā)送到數(shù)據(jù)庫110或從其他數(shù)據(jù)庫110發(fā)送到接收數(shù)據(jù)庫110。接著,在步驟1110處,可以在數(shù)據(jù)庫110處接收READ命令。在步驟1220處,數(shù)據(jù)庫110上的分布式RAID應用210可以確定相應于在接收到的READ命令中引用的邏輯地址的數(shù)據(jù)段并且在步驟1230處確定所述數(shù)據(jù)段存儲于哪個數(shù)據(jù)庫110上。如果存儲所述數(shù)據(jù)段的數(shù)據(jù)庫110與接收到所述READ命令的數(shù)據(jù)庫110相同(如在步驟1240處確定的),則在步驟 1250處,可以自接收數(shù)據(jù)庫110上的數(shù)據(jù)貯存器250的適當?shù)拇疟P252獲得被請求的數(shù)據(jù), 并且在步驟1252處,接收到的READ命令使用獲得的數(shù)據(jù)作出響應。如果接收數(shù)據(jù)庫110 自主機102接收到READ命令,則主機102可以作出響應,而如果接收數(shù)據(jù)庫110自其他數(shù)據(jù)庫110接收到READ命令,則所述響應可以被發(fā)送到發(fā)布READ命令的數(shù)據(jù)庫110上的分布式RAID應用210。然而,如果在步驟12M處,數(shù)據(jù)段被存儲在遠程數(shù)據(jù)庫110上(與接收所述命令的數(shù)據(jù)庫不同的數(shù)據(jù)庫110),則可以確定存儲有待讀取的數(shù)據(jù)段的遠程數(shù)據(jù)庫110是否經(jīng)歷了故障。如果沒有,則READ命令可以被發(fā)送到遠程數(shù)據(jù)庫110處的分布式RAID應用。當在步驟1258處自遠程數(shù)據(jù)庫110接收到包括被請求的數(shù)據(jù)的響應后,在步驟1260處,接收到的READ命令可以使用該數(shù)據(jù)作出響應。然而,如果遠程數(shù)據(jù)庫110經(jīng)歷了故障,則可以在步驟12M處確定接收數(shù)據(jù)庫110 是否具有相應于與READ命令相關聯(lián)的數(shù)據(jù)段的奇偶校驗段。如果奇偶校驗段被存儲在接收數(shù)據(jù)庫110中,則可以使用存儲在接收數(shù)據(jù)庫110中的奇偶校驗段獲得相應于READ命令的數(shù)據(jù)段??梢远喾N方式完成自奇偶校驗數(shù)據(jù)獲得所述數(shù)據(jù)段,這將不再作更為詳細的說明,包括自其他數(shù)據(jù)庫110獲得其他數(shù)據(jù)段(與相應于READ命令的數(shù)據(jù)段不同的數(shù)據(jù)段) 以及通過在其他數(shù)據(jù)段和奇偶校驗段之間執(zhí)行邏輯操作而獲得期望的數(shù)據(jù)段。一旦在步驟 1268處使用奇偶校驗數(shù)據(jù)獲得了被請求的數(shù)據(jù)段,則在步驟1270處,接收到的READ命令可以作出響應。如果接收數(shù)據(jù)庫110從主機102接收到READ命令,則主機102可以作出響應,而如果接收數(shù)據(jù)庫110自其他數(shù)據(jù)庫110接收到READ命令,則所述響應可以被發(fā)送到發(fā)布READ命令的數(shù)據(jù)庫110上的分布式RAID應用210。如果接收數(shù)據(jù)庫110不是存儲奇偶校驗塊的數(shù)據(jù)庫110,則在步驟1262處,READ 命令可以被發(fā)送到遠程數(shù)據(jù)庫110,該遠程數(shù)據(jù)庫110存儲了相應于在READ命令中引用的數(shù)據(jù)段的奇偶校驗段。當在步驟1264處,自遠程奇偶校驗數(shù)據(jù)庫110接收到包括被請求的數(shù)據(jù)的響應后,接收到的READ命令可以在步驟1266處使用該數(shù)據(jù)作出響應。移動到圖12,說明了一種用于在分布式RAID系統(tǒng)中實現(xiàn)WRITE命令的方法的一個實施例的流程圖。這種WRITE命令可以由主機102經(jīng)過開關120發(fā)送到數(shù)據(jù)庫110或從一個數(shù)據(jù)庫110發(fā)送到其他數(shù)據(jù)庫110。之后,在步驟1310處,可以在接收數(shù)據(jù)庫110處接收WRITE命令。之后在步驟1312、1314和1320處,接收數(shù)據(jù)庫110上的分布式RAID應用 210可以確定相應于在WRITE命令中引用的邏輯地址的數(shù)據(jù)段、所述數(shù)據(jù)段的位置(例如,哪個數(shù)據(jù)庫110存儲了相應于該段的數(shù)據(jù))以及相應于該數(shù)據(jù)段的奇偶校驗段的位置(例如,哪個數(shù)據(jù)庫110存儲了所述段,在該數(shù)據(jù)庫中,存儲了自相應于該段的數(shù)據(jù)產生的奇偶校驗數(shù)據(jù))。如上所述,可以使用存儲在接收數(shù)據(jù)庫110上的表格240的集合來確定數(shù)據(jù)段和奇偶校驗段兩者的位置。之后可以確定存儲了數(shù)據(jù)段的數(shù)據(jù)庫110或存儲了奇偶校驗段的數(shù)據(jù)庫110是否經(jīng)歷了故障。如果這些數(shù)據(jù)庫Iio均未經(jīng)歷故障,則可以在步驟13 處通過分布式RAID 應用執(zhí)行常規(guī)寫入操作。之前關于圖9A和9B討論了常規(guī)寫入操作,并且將不再進一步討論。然而,如果那些數(shù)據(jù)庫110中的任意一個經(jīng)歷了故障,則考慮寫入操作,故障的數(shù)據(jù)庫110可以在步驟13 處被管理。這種寫入操作可以與關于圖9A和9B說明的寫入操作基本同等地并行,除了在寫入命令被發(fā)送到數(shù)據(jù)庫110之前,確定所述寫入命令被發(fā)送到的數(shù)據(jù)庫110是否存在故障并且確定是否使得寫入命令未被發(fā)送到故障的數(shù)據(jù)庫110。 在全部其他方面中,寫入操作基本相同。在瀏覽了前述流程圖后,特定實施例的操作可以參考操作中的分布式RAID系統(tǒng)的一個實施例的具體示例被更好地理解。至此,注意力被引導回到說明了具有五個數(shù)據(jù)庫 110的分布式RAID系統(tǒng)的一個實施例的圖4。為了開始第一個示例,假設主機102b向數(shù)據(jù)庫IlOc發(fā)布了 READ命令,其中READ命令引用了相應于數(shù)據(jù)庫IlOa上的數(shù)據(jù)段“2”402c 的邏輯地址。此處,數(shù)據(jù)庫IlOc上的分布式RAID應用210c可以確定接收到的READ命令的邏輯地址引用了數(shù)據(jù)段“2” 402c并且該數(shù)據(jù)段“2” 402c被存儲在數(shù)據(jù)庫IlOa上。分布式RAID應用210c之后可以向數(shù)據(jù)庫IlOa發(fā)送相應的READ命令。數(shù)據(jù)庫IlOa上的分布式RAID應用210a可以接收這種READ命令,確定READ命令引用了相應于數(shù)據(jù)段“2”402c的邏輯地址并且該數(shù)據(jù)段“2”402c位于其被執(zhí)行的數(shù)據(jù)庫 IlOa上。分布式RAID應用210a之后可以訪問數(shù)據(jù)貯存器250a以獲得自數(shù)據(jù)段“2” 402c 請求的數(shù)據(jù),并且將該獲得的數(shù)據(jù)返回到發(fā)布數(shù)據(jù)庫IlOc處的分布式RAID應用210c。數(shù)據(jù)庫IlOc上的分布式RAID應用210c可以自數(shù)據(jù)庫IlOa上的分布式RAID應用210a接收這種響應,并且使用來自這種響應的數(shù)據(jù)來響應自主機102b發(fā)布的原始READ命令?,F(xiàn)在假設主機102b向數(shù)據(jù)庫IlOc發(fā)布了 READ命令,其中READ命令引用了相應于數(shù)據(jù)庫IlOa上的數(shù)據(jù)段“2”402c的邏輯地址,但該數(shù)據(jù)庫IlOa經(jīng)歷了故障并且不再工作。在此情況下,數(shù)據(jù)庫IlOc上的分布式RAID應用210c可以確定接收到的READ命令的邏輯地址引用了數(shù)據(jù)段“ 2 ” 402c并且數(shù)據(jù)段“ 2 ” 402c被存儲在數(shù)據(jù)庫1 IOa上。此外,數(shù)據(jù)庫IlOc上的分布式RAID應用210c還可以確定數(shù)據(jù)庫IlOa經(jīng)歷了故障。因此,分布式RAID應用210c可以確定相應于數(shù)據(jù)段“2”402c的奇偶校驗段402 j 的位置是數(shù)據(jù)庫110e。分布式RAID應用210c之后可以向數(shù)據(jù)庫IlOe發(fā)送READ命令。數(shù)據(jù)庫IlOe上的分布式RAID應用2IOe可以接收這種READ命令,確定該READ命令引用了相應于數(shù)據(jù)段“2”402c的邏輯地址,并且相應于數(shù)據(jù)段“2”402c的奇偶校驗段402j位于其被執(zhí)行的數(shù)據(jù)庫IlOe上。分布式RAID應用210e之后可以訪問數(shù)據(jù)貯存器250e以訪問奇偶校驗段402j并且使用所述奇偶校驗段402j獲得自數(shù)據(jù)段“2102c請求的數(shù)據(jù)。這種獲得的數(shù)據(jù)可以被返回到發(fā)布數(shù)據(jù)庫IlOc處的分布式RAID應用210c。應該注意到,分布式RAID應用210e可能需要其他數(shù)據(jù)以確定數(shù)據(jù)段“2”402c請求的數(shù)據(jù)。因此,分布式RAID 應用210e可以確定結合數(shù)據(jù)段“2”402c使用的數(shù)據(jù)段“0”402a、數(shù)據(jù)段“l(fā)”402b和數(shù)據(jù)段“3”402d的位置,以產生分別位于數(shù)據(jù)庫IlObUlOd和IlOc上的奇偶校驗段402j。分布式RAID應用210e因此可以通過將READ請求發(fā)送到這些數(shù)據(jù)庫110b、IlOd和IlOc而獲得數(shù)據(jù)段“0” 40 、數(shù)據(jù)段“ 1,,402b和數(shù)據(jù)段“3” 402d,并且結合奇偶校驗段402 j使用數(shù)據(jù)段“0”402a、數(shù)據(jù)段“l(fā)”402b和數(shù)據(jù)段“3” 402d,以獲得自數(shù)據(jù)段“2” 402c請求的數(shù)據(jù)。數(shù)據(jù)庫IlOc上的分布式RAID應用210c可以接收來自數(shù)據(jù)庫IlOe上的分布式 RAID應用210e的響應,并且使用來自該響應的數(shù)據(jù)以響應于自主機102b發(fā)布的原始READ 命令。以此方式,盡管在分布式RAID系統(tǒng)中發(fā)生故障,相應于數(shù)據(jù)段的數(shù)據(jù)仍可以被主機讀取。繼續(xù)討論WRITE命令,假設主機102b向數(shù)據(jù)庫1 IOc發(fā)布了 WRITE命令,其中WRITE 命令引用了相應于數(shù)據(jù)庫IlOa上的數(shù)據(jù)段“2”402c的邏輯地址。此處,數(shù)據(jù)庫IlOc上的分布式RAID應用210c可以確定接收到的WRITE命令的邏輯地址引用了數(shù)據(jù)段“2”402c, 并且該數(shù)據(jù)段“2102c被存儲在數(shù)據(jù)庫IlOa上。此外,分布式RAID應用210c可以確定相應于數(shù)據(jù)段“2102c的奇偶校驗段402j位于數(shù)據(jù)庫IlOe上。分布式RAID應用210c之后可以向數(shù)據(jù)庫IlOa和IlOe發(fā)送相應的WRITE命令?;谧苑植际絉AID應用210a和210e 接收的完成通知,分布式RAID應用210c可以響應于原始接收的WRITE命令。數(shù)據(jù)庫1 IOe上的分布式RAID應用210e可以接收其相應的WRITE命令,確定WRITE 命令引用了相應于數(shù)據(jù)段“2”402c的邏輯地址,并且確定相應于數(shù)據(jù)段“2” 402c的奇偶校驗段402 j位于其被執(zhí)行的數(shù)據(jù)庫IlOe上。分布式RAID應用2IOe可以將WRITE命令置于其寫入式高速緩沖存儲器中,并且向數(shù)據(jù)庫IlOc發(fā)送完成通知。分布式RAID應用210e之后可以訪問數(shù)據(jù)貯存器250e以訪問奇偶校驗段402j并且使用在接收到的WRITE命令中引用的數(shù)據(jù)更新奇偶校驗段402 j。數(shù)據(jù)庫IlOa上的分布式RAID應用210a可以接收其相應的WRITE命令,確定WRITE 命令引用了相應于數(shù)據(jù)段“2” 402c的邏輯地址,并且確定數(shù)據(jù)段“2” 402c位于其被執(zhí)行的數(shù)據(jù)庫1 IOa上。分布式RAID應用2IOa可以將WRITE命令置于其寫入式高速緩沖存儲器中并且發(fā)送完成通知到數(shù)據(jù)庫110c。分布式RAID應用210a之后可以訪問數(shù)據(jù)貯存器250a 以使用在接收到的WRITE命令中引用的數(shù)據(jù)更新段“2”402c?,F(xiàn)在再次假設主機102b發(fā)布WRITE命令到數(shù)據(jù)庫110c,其中WRITE命令引用了相應于數(shù)據(jù)庫IlOa上的數(shù)據(jù)段“2”402c的邏輯地址,但該數(shù)據(jù)庫IlOa經(jīng)歷了故障并且不再工作。在此情況下,數(shù)據(jù)庫IlOc上的分布式RAID應用210c可以確定接收到的WRITE命令的邏輯地址引用了數(shù)據(jù)段“2”402c,并且確定數(shù)據(jù)段“2”402c被存儲在數(shù)據(jù)庫IlOa上。此外,數(shù)據(jù)庫IlOc上的分布式RAID應用210c還可以確定數(shù)據(jù)庫IlOa經(jīng)歷了故障。此外,分布式RAID應用210c可以確定相應于數(shù)據(jù)段“2”402c的奇偶校驗段402j位于數(shù)據(jù)庫IlOe 上。分布式RAID應用210c之后可以發(fā)送相應的WRITE命令到數(shù)據(jù)庫110e?;谧苑植际?RAID應用210e接收到完成通知,分布式RAID應用210c可以響應于原始接收到的WRITE命令。數(shù)據(jù)庫IlOe上的分布式RAID應用210e可以接收相應的WRITE命令,確定所述 WRITE命令引用了相應于數(shù)據(jù)段“2102c的邏輯地址,并且確定相應于數(shù)據(jù)段“2102c的奇偶校驗段402j位于其被執(zhí)行的數(shù)據(jù)庫IlOe上。分布式RAID應用210e可以將WRITE命令置于其寫入式高速緩沖存儲器中并且發(fā)送完成通知到數(shù)據(jù)庫110c。分布式RAID應用210e 之后可以訪問數(shù)據(jù)貯存器250e以訪問奇偶校驗段402j并且使用在接收到的WRITE命令中引用的數(shù)據(jù)來更新奇偶校驗段402j。以此方式,盡管分布式RAID系統(tǒng)中發(fā)生故障,相應于數(shù)據(jù)段的數(shù)據(jù)仍可以被主機寫入。通過瀏覽本公開,應該注意到,雖然如所述的分布式的方式實現(xiàn)RAID可以避免這種分布式RAID系統(tǒng)內的磁盤或數(shù)據(jù)庫的故障。然而,隨之而來的是邏輯卷的不斷增長(可能以1拍字節(jié)(petabyte)的級數(shù)或更大)使可以在這種分布式RAID系統(tǒng)中應用的磁盤和數(shù)據(jù)庫的數(shù)量達到相稱的增量,并且使所使用的數(shù)據(jù)庫和磁盤的數(shù)量的增量帶來磁盤或數(shù)據(jù)庫的故障的更大風險,并且更特別地,可能在任意給定時間內發(fā)生多個故障的風險的增大。更特別地,一旦數(shù)據(jù)庫或磁盤故障,則磁盤和數(shù)據(jù)庫的數(shù)量越大,在關于已存在的故障的補救行動能夠完成之前,一個或多個額外的數(shù)據(jù)庫、磁盤或其組合可能隨后發(fā)生故障的可能性越大。因此,多種分布式RAID系統(tǒng)可以變?yōu)樵馐芏鄠€數(shù)據(jù)庫或磁盤的故障。因此,可能有用的是避免在分布式RAID系統(tǒng)中使用的數(shù)據(jù)庫或磁盤的多個故障。 至此,現(xiàn)在注意力被引導到多種方法的實施例,所述方法可以結合分布式RAID系統(tǒng)使用以避免這些分布式RAID系統(tǒng)中的多個故障。更特別地,如上所述,分布式RAID系統(tǒng)中的每個數(shù)據(jù)庫可以存儲包括卷的數(shù)據(jù)的段(數(shù)據(jù)段)和存儲相應于所述卷的數(shù)據(jù)段的冗余數(shù)據(jù)的段,其中對于這些冗余段中的每一個,用于生成在冗余段中存儲的冗余數(shù)據(jù)的數(shù)據(jù)段未存儲在該數(shù)據(jù)庫上。對于本公開的剩余部分的目的,存儲自所述卷的數(shù)據(jù)段生成的冗余數(shù)據(jù)的那些冗余段將被稱作網(wǎng)絡奇偶校驗(NP)段,所述卷的數(shù)據(jù)段存儲在不同數(shù)據(jù)庫上(但是應該自以上討論理解,這些NP段可以包含任意類型的冗余數(shù)據(jù),并且名稱NP應該意為NP 段僅能夠存儲與RAID級別5的實施例相關聯(lián)的冗余數(shù)據(jù))。因此,每個數(shù)據(jù)庫包括卷的數(shù)據(jù)段以及自存儲在其他數(shù)據(jù)庫上的數(shù)據(jù)段生成的NP 段。這種配置可以避免磁盤驅動器或數(shù)據(jù)庫故障。然而,可能期望避免這種分布式RAID系統(tǒng)中的額外的磁盤或數(shù)據(jù)庫故障。為了完成此目的,之后,在一些實施例中,在結合卷的數(shù)據(jù)庫間實現(xiàn)的RAID的級別(例如,使用存儲在與其相應的數(shù)據(jù)段不同的數(shù)據(jù)庫上的NP段) 和額外的RAID的級別均可以實現(xiàn)在分布式RAID系統(tǒng)的每個數(shù)據(jù)庫內以保護每個數(shù)據(jù)庫內的數(shù)據(jù)。通過利用數(shù)據(jù)庫內的RAID以及各數(shù)據(jù)庫間的RAID,可以實現(xiàn)針對整個分布式RAID 系統(tǒng)的故障的額外保護。更特別地,在一個實施例中,除了結合一組數(shù)據(jù)庫間的卷實現(xiàn)的RAID的級別, RAID級別還可以結合存儲在每個數(shù)據(jù)庫中的數(shù)據(jù)段實現(xiàn)。換句話說,在一個實施例中,除以上討論的功能外,分布式RAID應用210可以額外地被配置為關于存儲在特定數(shù)據(jù)庫內的數(shù)據(jù)段或NP段實現(xiàn)RAID的一個或多個級別。例如,RAID級別5可以在數(shù)據(jù)庫內實現(xiàn),使得冗余段可以形成自存儲在數(shù)據(jù)庫內的相應的數(shù)據(jù)段(這些類型的冗余段在此處將被稱作數(shù)據(jù)的奇偶校驗(POD)段)以及存儲在與相應的數(shù)據(jù)段不同的磁盤上的數(shù)據(jù)庫中的相應的數(shù)據(jù)段,從而可以使用這些POD恢復所述相應的數(shù)據(jù)段。同樣地,冗余段可以形成自存儲在數(shù)據(jù)庫內的相應的網(wǎng)絡奇偶校驗段(這些類型的冗余段在此處將被稱作奇偶校驗的奇偶校驗(POP)段)以及存儲在與相應的NP段不同的磁盤上的數(shù)據(jù)庫中的相應的網(wǎng)絡奇偶校驗段,使得可以使用這些POP恢復相應的NP段。
此外,在一些實施例中,RAID級別6可以在數(shù)據(jù)庫內實現(xiàn),使得除了自相應的數(shù)據(jù)段生成的每個POD段外,還可以使用里德所羅門(Reed-Solomon)ECC代碼生成或其他代碼生成技術(有時被稱作Q)自相同的相應數(shù)據(jù)段生成冗余段(這些類型的冗余段將在此處被稱作數(shù)據(jù)的(KQOD)段)。通過將QOD段存儲在與相應的POD不同的磁盤上,相應的數(shù)據(jù)段還可以使用QOD恢復。類似地,RAID級別6冗余段可以自相同的相應網(wǎng)絡奇偶校驗段生成(這些類型的冗余段將在此處被稱作奇偶校驗的(KQOP)段)并且存儲在與相應POP段不同的磁盤上的數(shù)據(jù)庫中,使得相應的網(wǎng)絡奇偶校驗段可以額外地使用這些QOP段恢復。期望結合卷使用的冗余和保護的數(shù)量可以在產生卷的時刻基于用戶所期望的結合該卷的協(xié)議(trade-off)而被選擇。這種選擇可以包括單獨使用結合卷的RAID的某一級別的選項,使得這種RAID的級別在數(shù)據(jù)庫間實現(xiàn)(換句話說,僅使用每個數(shù)據(jù)庫上的NP 段)。這種選項可以避免至少任意一個驅動故障或任意一個數(shù)據(jù)庫故障。另一個選項可以是實現(xiàn)結合卷的RAID的某一級別的使用(使用NP段),連同使用每個數(shù)據(jù)庫內的RAID級別5 (POD和POP)。這種選項可以通過避免至少1個數(shù)據(jù)庫和1個磁盤的故障或者通過避免 3個磁盤的故障而提供增大的容錯性。然而,這種選項與僅在數(shù)據(jù)庫間實現(xiàn)RAID相比,可能施加了性能和容量懲罰。最具容錯性的選項可以是讓用戶選擇以實現(xiàn)結合卷的RAID的某一級別(使用NP段),連同使用數(shù)據(jù)庫內的RAID級別6(P0D、P0P、Q0D和Q0P)。雖然這種選項具有最高的容錯性級別從而避免1個數(shù)據(jù)庫和2個驅動器故障或避免5個驅動器故障,但其同樣可能施加關于性能和容量的最高代價??赡苡杏玫氖钦f明這些實施例的具體示例以幫助讀者理解。將理解的是,雖然關于單個數(shù)據(jù)庫說明了具體示例,從而實現(xiàn)與本發(fā)明的實施例相關聯(lián)的優(yōu)點,但分布式RAID 系統(tǒng)中的分布式的其他數(shù)據(jù)庫可以類似地配置。換句話說,雖然所述示例將用于說明如何在特定的數(shù)據(jù)庫內實現(xiàn)RAID的級別,但應該注意到在本發(fā)明的實施例中,RAID的級別可以實現(xiàn)在分布式RAID系統(tǒng)的每個數(shù)據(jù)庫內。還將注意到以下示例不被視為限制本發(fā)明的實施例,而將僅用于說明數(shù)據(jù)庫內的RAID的實施方式的特定實施例的非限制性示例。為了幫助本說明,現(xiàn)在將注意力引導到圖13A-13C。為了說明本示例的目的,假設圖13A-13C中描述的數(shù)據(jù)庫IllOb類似于以上關于圖4說明的數(shù)據(jù)庫110b,并且位于具有五個數(shù)據(jù)庫的分布式RAID系統(tǒng)中,其中卷被布置在五個數(shù)據(jù)庫間,數(shù)據(jù)庫IllOb是隨機排列中的第一數(shù)據(jù)庫。因此,數(shù)據(jù)庫11 IOb可以被分配數(shù)據(jù)段“O ” 1102a,即所述卷的第一數(shù)據(jù)段;數(shù)據(jù)段“5” 1102b,即所述卷的第六數(shù)據(jù)段;數(shù)據(jù)段“10” 1102c,即所述卷的第十一數(shù)據(jù)段;數(shù)據(jù)段“15”1102d,即所述卷的第十六數(shù)據(jù)段;數(shù)據(jù)段“20”1102e,即所述卷的第二十一數(shù)據(jù)段;數(shù)據(jù)段“25”1102f,即所述卷的第二十六數(shù)據(jù)段;數(shù)據(jù)段“30”1102g,即所述卷的第三十一數(shù)據(jù)段,等等。由于數(shù)據(jù)庫IllOb可以在數(shù)據(jù)貯存器中具有六個磁盤2252,因此被分配到數(shù)據(jù)庫IllOb的數(shù)據(jù)段1102可以被布置在這些磁盤間。此處,數(shù)據(jù)段“0” 1102a被存儲在磁盤 2252a上,數(shù)據(jù)段“5”1102b被存儲在磁盤2252b上,數(shù)據(jù)段“ 10”1102c被存儲在磁盤2252c 上,數(shù)據(jù)段“15” 1102d被存儲在磁盤2252d上,數(shù)據(jù)段“20” 1102e被存儲在磁盤225 上并且數(shù)據(jù)段“25” 1102f被存儲在磁盤2252f上。所述分配之后再次從第一磁盤開始數(shù)據(jù)段“30” 1102g被存儲在磁盤225 上,等等。為了進一步說明本示例的目的,假設RAID級別5結合所述卷實現(xiàn),并且使用(4+1)的奇偶校驗集合。因此,如上所述,與所述卷相關聯(lián)的網(wǎng)絡奇偶校驗段還可以被存儲在數(shù)據(jù)庫IllOb上,其中用于生成這些網(wǎng)絡奇偶校驗段的相應數(shù)據(jù)段被分配,并且存儲在分布式 RAID系統(tǒng)的其他數(shù)據(jù)庫上。在本示例中,使用卷的相應數(shù)據(jù)段“16”、所述卷的數(shù)據(jù)段“17”、 所述卷的數(shù)據(jù)段“18”和所述卷的數(shù)據(jù)段“19”生成的NP段“l(fā)”1102ar被存儲在磁盤225 上;使用所述卷的相應數(shù)據(jù)段“36”、所述卷的數(shù)據(jù)段“37”、所述卷的數(shù)據(jù)段“38”和所述卷的數(shù)據(jù)段“39”生成的NP段“2” 1102as被存儲在磁盤2252b上;使用所述卷的相應數(shù)據(jù)段“56”、所述卷的數(shù)據(jù)段“57”、所述卷的數(shù)據(jù)段“58”和所述卷的數(shù)據(jù)段“59”生成的NP段 “3” 1102at被存儲在磁盤2252c上,等等。現(xiàn)在具體地參考圖13A,之后,在本示例中,數(shù)據(jù)段和NP段被存儲在數(shù)據(jù)庫IllOb 的不同磁盤2252上。再次注意,存儲在數(shù)據(jù)庫IllOb上的每個NP段均生成自不存儲在數(shù)據(jù)庫IllOb上的相應數(shù)據(jù)段?,F(xiàn)在假設用戶期望實現(xiàn)關于該卷的容錯性的其他級別并且指定RAID級別5應該實現(xiàn)在包括分布式RAID系統(tǒng)的每個數(shù)據(jù)庫內,數(shù)據(jù)庫IllOb是分布式 RAID系統(tǒng)中的一部分。圖1 描述了當用戶指定RAID級別5被實現(xiàn)在分布式RAID系統(tǒng)的數(shù)據(jù)庫內并且 (4+1)奇偶校驗集合被用于實現(xiàn)每個數(shù)據(jù)庫內的RAID 5時所產生的數(shù)據(jù)庫IllOb的配置。 此處,POD段產生自存儲在數(shù)據(jù)庫IllOb內的相應數(shù)據(jù)段,并且被存儲在與其相應的數(shù)據(jù)段不同的磁盤2252上,并且POP段產生自存儲在數(shù)據(jù)庫IllOb內的相應奇偶校驗段,并且被存儲在與其相應的奇偶校驗段不同的磁盤2252上。因此,現(xiàn)在數(shù)據(jù)庫IllOb內的數(shù)據(jù)段可以使用相應于所述數(shù)據(jù)段的NP段恢復,其中NP段位于不同數(shù)據(jù)庫上并且額外地,數(shù)據(jù)庫 IllOb內的數(shù)據(jù)段可以使用位于相同數(shù)據(jù)庫中的相應的POD段恢復。此外,數(shù)據(jù)庫中的NP 段現(xiàn)在可以使用位于相同數(shù)據(jù)庫中的POP段恢復。在所描述的具體示例中,存儲在磁盤2252f上的Ρ( 111021Λ產生自磁盤225 上的相應數(shù)據(jù)段“0” 1102a、磁盤2252b上的數(shù)據(jù)段“5” 1102b、磁盤2252c上的數(shù)據(jù)段 “10” 1102c以及磁盤2252d上的數(shù)據(jù)段“15” IllOd ;存儲在磁盤2252d上的P0D2 1102bc 產生自磁盤2252e上的相應數(shù)據(jù)段“20” 1102e、磁盤2252f上的數(shù)據(jù)段“25” 1102f、磁盤 2252a上的數(shù)據(jù)段“30” 1102g以及磁盤2252b上的數(shù)據(jù)段“35” IllOh ;存儲在磁盤2252b 上的P0D3 1102bd產生自磁盤2252c上的相應數(shù)據(jù)段“40” 1102i、磁盤2252d上的數(shù)據(jù)段 “45” 1102j、磁盤2252e上的數(shù)據(jù)段“50” 1102k以及磁盤2252f上的數(shù)據(jù)段“55” 11101 ;等寸。同樣,存儲在磁盤2252f上的POPl 1102bz產生自磁盤2252a上的相應NP段 “1” 1102ar、磁盤 2252b 上的 NP 段“2” 1102as、磁盤 2252c 上的 NP 段“3” 1102at 和磁盤 2252d上的NP段“4”1102au ;存儲在磁盤2252c上的P0P2 1102by產生自磁盤225 上的相應的 NP 段“5”ll(^av、磁盤 2252f 上的 NP 段“6”1102aw、磁盤 2252a 上的 NP 段“7”1102ax 和磁盤2252b上的NP段“8” 1102ay,并且存儲在磁盤2252b上的P0P31102bx產生自磁盤 2252c上的相應的NP段“9” 1102az和磁盤2252d上的NP段“10” 1102ba?,F(xiàn)在假設用戶期望實現(xiàn)關于這種卷的容錯性的其他級別并且指定RAID級別6應該實現(xiàn)在包括分布式RAID系統(tǒng)的每個數(shù)據(jù)庫內,數(shù)據(jù)庫IllOb是分布式RAID系統(tǒng)的一部分。此處,相應于每個POD段的QOD段產生自與相應POD段相同的數(shù)據(jù)段并且被存儲在與相應POD段不同的磁盤2252上的數(shù)據(jù)庫IllOb內。此外,相應于每個POP段的QOP段產生自與相應POP段相同的奇偶校驗段并且被存儲在與相應POP段不同的磁盤2252上的數(shù)據(jù)庫IllOb內。因此,現(xiàn)在數(shù)據(jù)庫IllOb內的數(shù)據(jù)段可以使用相應于該數(shù)據(jù)段的NP段恢復, 其中NP段位于不同數(shù)據(jù)庫上并且額外地,數(shù)據(jù)庫IllOb內的數(shù)據(jù)段可以使用位于相同數(shù)據(jù)庫中的相應POD段或相應QOD段恢復。此外,數(shù)據(jù)庫中的NP段現(xiàn)在可以使用位于相同數(shù)據(jù)庫中的POP段或QOP段恢復。圖13C描述了當用戶指定在分布式RAID系統(tǒng)的數(shù)據(jù)庫內實現(xiàn)RAID級別6時所產生的數(shù)據(jù)庫IllOb的配置。此處,除了上述POD段和POP段,QOD段產生自與相應POD段相同的相應數(shù)據(jù)段并且被存儲在與相應POD段不同的磁盤2252上的數(shù)據(jù)庫11 IOb內,同時 QOP段產生自與相應POP相同的相應奇偶校驗段并且被存儲在與相應POP段不同的磁盤上。在所描述的具體示例中,存儲在磁盤225 上的QODl 1102bm相應于存儲在磁盤2252f上的PODl 1102bb并且產生自磁盤225 上的相同的相應數(shù)據(jù)段“0” 1102a、磁盤225 上的數(shù)據(jù)段“5” 1102b、磁盤2252c上的數(shù)據(jù)段“10” 1102c以及磁盤2252d上的數(shù)據(jù)段“15” IllOd ;磁盤2252c上存儲的Q0D21 102bn相應于存儲在磁盤2252d上的 P0D21102bc并且產生自磁盤225 上的相同的相應數(shù)據(jù)段“20” 1102e、磁盤2252f上的數(shù)據(jù)段“25”1102f、磁盤225 上的數(shù)據(jù)段“30”1102g以及磁盤225 上的數(shù)據(jù)段“35”1110h ; 存儲在磁盤225 上的Q0D3相應于存儲在磁盤2252b上的P0D3 1102bd并且產生自磁盤 2252c上的相同的相應數(shù)據(jù)段“40” 1102i、磁盤2252d上的數(shù)據(jù)段“45” 1102j、磁盤2252e 上的數(shù)據(jù)段“50” 1102k以及磁盤2252f上的數(shù)據(jù)段“55” 11101 ;等等。同樣,存儲在磁盤225 上的QOPl 1102ca相應于存儲在磁盤2252f上的POPl 1102bz并且產生自磁盤225 上的相同的相應NP段“1” 1102ar、磁盤225 上的NP段 “2” IlO^is、磁盤 2252c 上的 NP 段“3” 1102at 以及磁盤 2252d 上的 NP 段“4” 1102au ;存儲在磁盤2252d上的Q0P2相應于存儲在磁盤2252c上的P0P2 1102by并且產生自磁盤225 上的相同的相應NP段“5” 1102av、磁盤2252f上的NP段“6” 1102aw、磁盤2252a上的NP 段“7” 1102ax以及磁盤225 上的NP段“8” 1102ay ;并且存儲在磁盤2252a上的Q0P3 相應于存儲在磁盤2252b上的P0P31102bx并且產生自磁盤2252c上的相同的相應NP段 “9” 1102az 以及磁盤 2252d 上的 NP 段“10” 1102ba。因此,本發(fā)明的實施例可以基于之前可用的數(shù)據(jù)存儲設備提供多種優(yōu)點,所述數(shù)據(jù)存儲設備包括提供對數(shù)據(jù)庫或磁盤故障的保護的能力。事實上,一些實施例可以提供針對四種、五種或可能更多種磁盤故障的保護。因此,維護人員可用于維修或替換故障的數(shù)據(jù)庫或磁盤的時間可以增大,并且分布式RAID系統(tǒng)的故障間的平均時間增大。一些實施例還可以通過即使在內部故障損壞數(shù)據(jù)時仍允許數(shù)據(jù)庫內部再生被損壞的數(shù)據(jù),從而提供減少所述數(shù)據(jù)庫間的網(wǎng)絡流量的優(yōu)點。在之前的說明書中,參考具體實施例對本發(fā)明進行了說明。然而,本領域技術人員意識到可以在不背離如在以下權利要求中提出的本發(fā)明的范圍的情況下進行各種改進和改變。因此,說明書和附圖被視為具有示例性而非限制性意義,并且全部這些改進意圖包括在本發(fā)明的范圍內。以上關于具體實施例說明了益處、其他優(yōu)點和問題的解決方案。然而,所述益處、 優(yōu)點、問題的解決方案和可能帶來任何益處、優(yōu)點或使得解決方案發(fā)生或變得更明確的任意組件不被解釋為任意或全部權利要求的重要、需要或必要的特征或組件。
權利要求
1.一種保護RAID系統(tǒng)避免多種故障的方法,所述方法包括提供包括多個數(shù)據(jù)庫計算機的系統(tǒng),所述數(shù)據(jù)庫計算機經(jīng)由網(wǎng)絡耦接到其他數(shù)據(jù)庫計算機中的每一個,并耦接到一個或多個主機中的每一個,每個數(shù)據(jù)庫執(zhí)行分布式RAID應用;在所述多個數(shù)據(jù)庫上建立卷,其中所述卷包括段的集合并且該段的集合被存儲在所述多個數(shù)據(jù)庫上;結合所述卷實現(xiàn)第一 RAID級別,其中實現(xiàn)所述第一 RAID級別包括存儲網(wǎng)絡奇偶校驗 NP段的集合,每個NP段相應于所述段的集合中的一個或多個段,使得每個NP段不位于與所述段的集合中的相應的一個或多個段相同的數(shù)據(jù)庫上;在所述多個數(shù)據(jù)庫內實現(xiàn)第二 RAID級別,其中為第一數(shù)據(jù)庫實現(xiàn)所述第二 RAID級別包括對于存儲在所述第一數(shù)據(jù)庫上的所述段的集合存儲數(shù)據(jù)的奇偶校驗POD段的集合,每個POD段相應于所述第一數(shù)據(jù)庫上的所述數(shù)據(jù)段的集合中的一個或多個數(shù)據(jù)段,使得每個POD段不位于與所述第一數(shù)據(jù)庫上所述段的集合中的相應的一個或多個段相同的磁盤上;以及存儲奇偶校驗的奇偶校驗POP段的集合,每個POP段相應于存儲在所述第一數(shù)據(jù)庫上的所述NP段的集合中的一個或多個NP段,使得每個POP段不位于與所述第一數(shù)據(jù)庫上的所述NP段的集合中的相應的一個或多個NP段相同的磁盤上。
2.如權利要求1所述的方法,其中實現(xiàn)所述第二RAID級別還包括對于存儲在所述第一數(shù)據(jù)庫上的所述段的集合存儲數(shù)據(jù)的Q QOD段的集合,每個QOD段相應于POD段并且產生自相應于所述POD段的所述第一數(shù)據(jù)庫上的所述數(shù)據(jù)段的集合中的一個或多個數(shù)據(jù)段,使得每個QOD段不位于與相應的POD段相同的磁盤上;以及存儲奇偶校驗的Q QOP段的集合,每個QOP段相應于POP段并且產生自相應于所述POD 段的一個或多個NP段,使得每個QOP段不位于與相應的POP段相同的磁盤上。
3.如權利要求2所述的方法,其中每個所述卷的段的集合相應于所述多個數(shù)據(jù)庫中的一個,并且每個段根據(jù)所述多個數(shù)據(jù)庫的排列被分派到數(shù)據(jù)庫,并且冗余段的集合中的每一個冗余段被分派到不同于相應于與所述冗余段對應的任意一個或多個段的所述多個數(shù)據(jù)庫中的每一個數(shù)據(jù)庫的數(shù)據(jù)庫。
4.如權利要求3所述的方法,還包括確定第一命令是否為寫入命令以及所述第一命令是否為確定所述多個數(shù)據(jù)庫中的第二數(shù)據(jù)庫的寫入命令,其中所述第二數(shù)據(jù)庫相應于與所述第一段相關聯(lián)的第一冗余段,并且關于所述第一冗余段執(zhí)行所述第一命令,其中所述第一命令在所述第二數(shù)據(jù)庫上執(zhí)行。
5.如權利要求4所述的方法,其中確定所述第一數(shù)據(jù)庫和確定所述第二數(shù)據(jù)庫包括訪問全局表格,該全局表格包括數(shù)據(jù)庫的排列和所述RAID級別。
6.一種用于實現(xiàn)分布式RAID的系統(tǒng),包括一個或多個主機;多個數(shù)據(jù)庫計算機,每個數(shù)據(jù)庫耦接到每個主機和其他多個數(shù)據(jù)庫中的每一個,每個數(shù)據(jù)庫包括處理器;包括磁盤的集合的數(shù)據(jù)貯存器;包括指令的計算機可讀介質,所述指令可執(zhí)行自所述一個或多個主機中的第一主機接收相應于卷的第一段的命令,其中所述卷和相應于結合所述卷實現(xiàn)的RAID級別的冗余數(shù)據(jù)被存儲在所述多個數(shù)據(jù)庫中的每一個上,其中所述卷包括段的集合并且所述段的集合被存儲在所述多個數(shù)據(jù)庫上并且第一 RAID級別結合所述卷實現(xiàn),其中實現(xiàn)所述第一 RAID級別包括存儲冗余段的集合,每個冗余段相應于所述段的集合中的一個或多個段,使得每個冗余段不位于與所述段的集合中的相應的一個或多個段相同的數(shù)據(jù)庫上;在所述多個數(shù)據(jù)庫內實現(xiàn)第二 RAID級別,其中為第一數(shù)據(jù)庫實現(xiàn)所述第二 RAID級別包括對于存儲在所述第一數(shù)據(jù)庫上的段的集合存儲數(shù)據(jù)的奇偶校驗POD段的集合,每個POD段相應于所述第一數(shù)據(jù)庫上的所述數(shù)據(jù)段的集合中的一個或多個數(shù)據(jù)段,使得每個POD段不位于與所述第一數(shù)據(jù)庫上的所述段的集合中的相應的一個或多個段相同的磁盤上;以及存儲奇偶校驗的奇偶校驗POP段的集合,每個POP段相應于存儲在所述第一數(shù)據(jù)庫上的所述NP段的集合中的一個或多個NP段,使得每個POP段不位于與所述第一數(shù)據(jù)庫上的所述NP段的集合中的相應的一個或多個NP段相同的磁盤上。
7.如權利要求6所述的系統(tǒng),其中所述計算機指令還可執(zhí)行以通過以下操作為存儲在所述第一數(shù)據(jù)庫上的段的集合實現(xiàn)所述第二 RAID級別存儲數(shù)據(jù)的Q QOD段的集合,每個QOD段相應于POD段并且產生自相應于所述POD段的第一數(shù)據(jù)庫上的數(shù)據(jù)段的集合中的一個或多個數(shù)據(jù)段,使得每個QOD段不位于與相應的 POD段相同的磁盤上;以及存儲奇偶校驗的Q QOP段的集合,每個QOP段相應于POP段并且產生自相應于所述POD 段的一個或多個NP段,使得每個QOP段不位于與相應的POP段相同的磁盤上。
8.如權利要求7所述的系統(tǒng),其中每個所述卷的段相應于所述多個數(shù)據(jù)庫中的一個, 并且每個段根據(jù)所述多個數(shù)據(jù)庫的排列被分派到所述多個數(shù)據(jù)庫中的一個,并且每個冗余段被分派到所述多個數(shù)據(jù)庫中的一個數(shù)據(jù)庫,該多個數(shù)據(jù)庫中的一個數(shù)據(jù)庫不同于相應于與所述冗余段相關聯(lián)的任意卷的段的所述多個數(shù)據(jù)庫中的每一個數(shù)據(jù)庫。
9.如權利要求8所述的系統(tǒng),其中所述計算機指令還可執(zhí)行以確定第一命令是否為寫入命令以及所述第一命令是否為確定所述多個數(shù)據(jù)庫中的第二數(shù)據(jù)庫的寫入命令,其中所述第二數(shù)據(jù)庫相應于與所述第一段相關聯(lián)的第一冗余段,并且如果所述第二數(shù)據(jù)庫是接收到所述命令的數(shù)據(jù)庫,則關于所述第一冗余段執(zhí)行所述第一命令,而如果所述第二數(shù)據(jù)庫不是接收到所述命令的數(shù)據(jù)庫,則將所述第一命令傳送到所述第二數(shù)據(jù)庫。
10.如權利要求9所述的系統(tǒng),其中確定所述第一數(shù)據(jù)庫和確定所述第二數(shù)據(jù)庫包括訪問所述數(shù)據(jù)貯存器中的全局表格,該全局表格包括所述數(shù)據(jù)庫的排列和所述RAID級別。
11.一種包括用于實現(xiàn)分布式RAID的計算機可執(zhí)行指令的計算機可讀介質,所述計算機指令可執(zhí)行在所述多個數(shù)據(jù)庫上建立卷,其中所述卷包括段的集合并且該段的集合被存儲在所述多個數(shù)據(jù)庫上;結合所述卷實現(xiàn)第一 RAID級別,其中實現(xiàn)所述第一 RAID級別包括存儲網(wǎng)絡奇偶校驗 NP段的集合,每個NP段相應于所述段的集合中的一個或多個段,使得每個NP段不位于與所述段的集合中相應的一個或多個段相同的數(shù)據(jù)庫上;在所述多個數(shù)據(jù)庫內實現(xiàn)第二 RAID級別,其中使第一數(shù)據(jù)庫實現(xiàn)所述第二 RAID級別包括對于存儲在所述第一數(shù)據(jù)庫上的所述段的集合存儲數(shù)據(jù)的奇偶校驗POD段的集合,每個POD段相應于所述第一數(shù)據(jù)庫上的所述數(shù)據(jù)段的集合中的一個或多個數(shù)據(jù)段,使得每個POD段不位于與所述第一數(shù)據(jù)庫上的所述段的集合中的相應的一個或多個段相同的磁盤上;以及存儲奇偶校驗的奇偶校驗POP段的集合,每個POP段相應于存儲在所述第一數(shù)據(jù)庫上的所述NP段的集合中的一個或多個NP段,使得每個POP段不位于與所述第一數(shù)據(jù)庫上的所述NP段的集合中的相應的一個或多個NP段相同的磁盤上。
12.如權利要求15所述的計算機可讀介質,所述指令還可執(zhí)行通過以下操作使存儲在所述第一數(shù)據(jù)庫上的段的集合實現(xiàn)所述第二 RAID級別存儲數(shù)據(jù)的Q QOD段的集合,每個QOD段相應于POD段并且產生自相應于所述POD段的第一數(shù)據(jù)庫上的數(shù)據(jù)段的集合中的一個或多個數(shù)據(jù)段,使得每個QOD段不位于與相應的 POD段相同的磁盤上;以及存儲奇偶校驗的Q QOP段的集合,每個QOP段相應于POP段并且產生自相應于所述POD 段的一個或多個NP段,使得每個QOP段不位于與相應的POP段相同的磁盤上。
13.如權利要求12所述的計算機可讀介質,其中每個所述卷的段相應于所述多個數(shù)據(jù)庫中的一個,并且每個段根據(jù)所述多個數(shù)據(jù)庫的排列被分派到所述多個數(shù)據(jù)庫中的一個, 并且每個冗余段被分派到所述多個數(shù)據(jù)庫中的一個數(shù)據(jù)庫,該多個數(shù)據(jù)庫中的一個數(shù)據(jù)庫不同于相應于與所述冗余段相關聯(lián)的任意卷的段的所述多個數(shù)據(jù)庫中的每一個數(shù)據(jù)庫。
14.如權利要求13所述的計算機可讀介質,其中所述計算機指令還可執(zhí)行確定第一命令是否為寫入命令以及所述第一命令是否為確定所述多個數(shù)據(jù)庫中的第二數(shù)據(jù)庫的寫入命令,其中所述第二數(shù)據(jù)庫相應于與所述第一段相關聯(lián)的第一冗余段,并且如果所述第二數(shù)據(jù)庫是接收到所述命令的數(shù)據(jù)庫,則關于所述第一冗余段執(zhí)行所述第一命令,而如果所述第二數(shù)據(jù)庫不是接收到所述命令的數(shù)據(jù)庫,則將所述第一命令傳送到所述第二數(shù)據(jù)庫。
15.如權利要求14所述的計算機可讀介質,其中確定所述第一數(shù)據(jù)庫和確定所述第二數(shù)據(jù)庫包括訪問所述數(shù)據(jù)貯存器中的全局表格,該全局表格包括所述數(shù)據(jù)庫的排列和所述 RAID級別。
全文摘要
公開了保護RAID系統(tǒng)避免多種故障的方法以及這些被保護的RAID系統(tǒng)的實施例。更特別地,在分布式RAID系統(tǒng)的一些實施例中,每個數(shù)據(jù)庫具有相關聯(lián)的存儲介質的集合并且執(zhí)行類似的分布式RAID應用。每個數(shù)據(jù)庫上的分布式RAID應用進行自身協(xié)調以分布和控制數(shù)據(jù)流,該數(shù)據(jù)流與結合存儲在數(shù)據(jù)庫的相關聯(lián)的存儲介質上的數(shù)據(jù)實現(xiàn)RAID的級別相關聯(lián)。此外,一個或多個RAID的級別可以在包括分布式RAID系統(tǒng)的一個或多個數(shù)據(jù)庫內實現(xiàn)。
文檔編號G06F12/00GK102265265SQ200980151742
公開日2011年11月30日 申請日期2009年6月25日 優(yōu)先權日2008年10月28日
發(fā)明者G·J·皮勒格瑞諾, R·A·卡里森, W·C·加羅威, 譚俊生 申請人:樞軸3公司