專利名稱:用于分布式raid實現(xiàn)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的涉及存儲設(shè)備的使用。更具體地,本發(fā)明的實施例涉及在存儲設(shè)備上 實現(xiàn)RAID。甚至更具體地,本發(fā)明的某些實施例涉及RAID的分布式實現(xiàn)。
背景技術(shù):
數(shù)據(jù)表示用于許多實體的重要的資產(chǎn)。因此,數(shù)據(jù)丟失,不管是偶然的還是由于惡 意的活動造成的,都會是在浪費的人力、來自客戶的商業(yè)信譽的丟失、時間的損失以及潛在 的法定義務(wù)等方面代價昂貴的。為了確保用于商業(yè)、法律或其它目的的數(shù)據(jù)的適當(dāng)?shù)谋Wo, 許多實體可能希望通過使用各種各樣的技術(shù),包括數(shù)據(jù)存儲、冗余性、安全性等等,來保護 它們的數(shù)據(jù)。然而,這些技術(shù)可能與由被使用來處理或存儲這個數(shù)據(jù)的計算設(shè)備的狀態(tài)或 配置所施加的其它競爭性約束條件或要求相沖突。用于處理這些緊張狀態(tài)的一個方法是實現(xiàn)冗余磁盤陣列(RAID)。通常,RAID系統(tǒng) 劃分和復(fù)制在多個硬盤驅(qū)動器(或其它類型的存儲介質(zhì))上的數(shù)據(jù),統(tǒng)稱為陣列,以增加可 靠性,以及在某些情形下通過使用這些RAID系統(tǒng)用于存儲而提高計算設(shè)備(被稱為主機) 的吞吐量。然后對于主機,RAID陣列可以表現(xiàn)為一個或多個單片存儲區(qū)域。當(dāng)主機希望與 RAID系統(tǒng)通信(讀出、寫入等等)時,主機就好像RAID陣列是單個盤那樣進行通信。RAID 系統(tǒng)本身又處理這些通信,與這樣的通信相結(jié)合地實現(xiàn)某個RAID級別。這些RAID級別可 被設(shè)計成達到在各種各樣的折衷,諸如可靠度、容量、速度等等之間的某個期望的平衡。例 如,RAID(級別)0把數(shù)據(jù)分布在幾個盤上,以使得它給出提高的速度和幾乎利用盤的全部 容量,但如果盤發(fā)生故障,則在盤上的所有的數(shù)據(jù)將丟失;RAID (級別)1使用兩個盤(或更 多的盤),每個盤存儲相同的數(shù)據(jù),以使得只要一個盤不出問題數(shù)據(jù)就不丟失。陣列的全部 容量基本上是單個盤的容量,以及RAID (級別)5組合三個或更多的盤,這樣它保護數(shù)據(jù)免 遭任何一個盤的丟失;陣列存儲容量被減小一個盤。RAID的當(dāng)前的實現(xiàn)可能有各種各樣的問題。這些問題可來自于由這些RAID系統(tǒng) 的結(jié)構(gòu)體系所施加的限制條件,諸如,在許多情形下,與RAID系統(tǒng)的所有的通信必須被尋 址到控制和管理RAID系統(tǒng)的單個服務(wù)器。其它問題可能是由于在包括RAID系統(tǒng)的盤上數(shù) 據(jù)的配置或布局引起的。例如,在某些情形下,在可以利用RAID系統(tǒng)之前,必須選擇RAID 級別,以及在RAID系統(tǒng)內(nèi)對存儲進行分配。因此,初始選擇的RAID級別可以結(jié)合被存儲在 RAID系統(tǒng)中的數(shù)據(jù)被實現(xiàn),不管該RAID級別是否是期望或需要的。在許多情形下,這些現(xiàn) 在存在的問題由于需要使用定制的硬件或軟件來實現(xiàn)這些解決方案而加重,從而增加與實 現(xiàn)這樣的解決方案相關(guān)聯(lián)的花費。因此,希望大大地改善這些問題。
發(fā)明內(nèi)容
所公開的系統(tǒng)和方法的實施例提供包括一組數(shù)據(jù)庫的分布式RAID系統(tǒng)。更具體 地,在分布式RAID系統(tǒng)的某些實施例中,每個數(shù)據(jù)庫具有一組相關(guān)聯(lián)的存儲介質(zhì),并且執(zhí)行類似的分布式RAID應(yīng)用。在每個數(shù)據(jù)庫上的分布式RAID應(yīng)用在它們之間協(xié)調(diào),來分配 和控制與結(jié)合被存儲在數(shù)據(jù)庫的相關(guān)聯(lián)的存儲介質(zhì)上的數(shù)據(jù)實現(xiàn)RAID的級別相關(guān)聯(lián)的數(shù) 據(jù)流。具體地,在一個實施例中,可以通過使用分布式RAID系統(tǒng)創(chuàng)建具有相關(guān)聯(lián)的RAID 級別的卷(volume)。每個分布式RAID應(yīng)用然后可以協(xié)調(diào)與該卷的數(shù)據(jù)相關(guān)聯(lián)的操作,以使 得與該卷相關(guān)聯(lián)的數(shù)據(jù)或結(jié)合該卷實現(xiàn)期望的RAID級別相關(guān)聯(lián)的數(shù)據(jù),可被存儲在分布 式RAID系統(tǒng)的多個數(shù)據(jù)庫中。通過使用在多個數(shù)據(jù)庫的每個數(shù)據(jù)庫上執(zhí)行的類似的分布式RAID應(yīng)用,把卷的 數(shù)據(jù)和與RAID的實現(xiàn)相關(guān)聯(lián)的數(shù)據(jù)存儲在那些多個數(shù)據(jù)庫上,通過協(xié)調(diào)結(jié)合該卷的RAID 級別的實現(xiàn),可以達到許多優(yōu)點。即,可以分配不同的存儲卷,一個或多個卷結(jié)合不同的 RAID級別被實現(xiàn)。而且,由于在數(shù)據(jù)庫上存儲和RAID的實現(xiàn)的協(xié)調(diào)是通過使用基本上相同 的分布式RAID應(yīng)用而完成的,在許多情形下,可以利用標(biāo)準(zhǔn)的或現(xiàn)有的硬件,諸如基于標(biāo) 準(zhǔn)x86的服務(wù)器和存儲介質(zhì)。而且,通過在RAID系統(tǒng)的每個數(shù)據(jù)庫上的進行分布控制,在每個數(shù)據(jù)庫上的每個 分布式RAID應(yīng)用可以基本上自主地執(zhí)行。另外,因為一個數(shù)據(jù)庫會丟失,某個故障容忍度 可以是在它的結(jié)構(gòu)體系中固有的,并且RAID系統(tǒng)仍舊能夠相對于利用RAID系統(tǒng)的每個主 機以無縫方式運行。再者,作為這里給出的系統(tǒng)和方法的實施例的附帶的效果,因為有較少的性能瓶 頸,可以達到改進的性能,增加的帶寬是可提供的,因為每個主機可被耦合到交換機,每個 數(shù)據(jù)庫被耦合到該交換機,以及這樣的分布式RAID系統(tǒng)的擴展或壓縮可以相對無縫地完 成。本發(fā)明的這些和其它方面,在結(jié)合以下的說明和附圖被考慮時將更好地被意識到 和理解。以下的說明雖然指示本發(fā)明的各種實施例和本發(fā)明的許多具體的細(xì)節(jié),但是作為 說明而不是限制被給出的。在本發(fā)明的范圍內(nèi)可以作出許多替換、修改、添加、或重新安排, 以及本發(fā)明包括所有的這樣的替換、修改、添加、或重新安排。
與說明書相伴隨并作為本說明書的一部分的附圖被包括來描繪本發(fā)明的某些方 面。通過參考在附圖上顯示的示例性和因而非限制性的實施例,本發(fā)明和本發(fā)明所提供的 系統(tǒng)的部件和運行的更清晰的印象將變得明顯,其中相同的附圖標(biāo)記指相同的部件。應(yīng)當(dāng) 指出,在附圖上顯示的特性不一定按比例畫出。圖1是利用分布式RAID系統(tǒng)的結(jié)構(gòu)體系的一個實施例的示意圖。圖2A是數(shù)據(jù)庫的一個實施例的示意圖。圖2B是用于數(shù)據(jù)庫的結(jié)構(gòu)體系的一個實施例的示意圖。圖3是由分布式RAID系統(tǒng)實現(xiàn)的方法的一個實施例的流程圖。圖4是利用分布式RAID系統(tǒng)的結(jié)構(gòu)體系的一個實施例的例子的示意圖。圖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)的方法的一個實施例的流程圖。
具體實施例方式本發(fā)明及其各種特性和有利的細(xì)節(jié),將參照在附圖上顯示的和在以下的說明中詳 細(xì)闡述的非限制性實施例更全面地進行說明。熟知的起始材料、處理技術(shù)、部件和設(shè)備的說 明被省略,以免用細(xì)節(jié)不必要地遮蔽本發(fā)明。然而,應(yīng)當(dāng)看到,詳細(xì)說明和具體的例子,雖然 指示本發(fā)明的優(yōu)選實施例,但是作為說明而不是限制被給出的。在本發(fā)明概念的精神和/ 或范圍內(nèi)的各種替換、修改、添加、或重新安排,對于閱讀本公開內(nèi)容的本領(lǐng)域技術(shù)人員,將 是顯而易見。這里所討論的實施例可以以位于計算機可讀的介質(zhì)(例如,HD)中的適當(dāng)?shù)?計算機可執(zhí)行的指令、硬件電路等等,或它們的任何組合被實現(xiàn)。在討論具體的實施例之前,這里先描述用于實現(xiàn)某些實施例的硬件結(jié)構(gòu)體系的實 施例。一個實施例可包括與網(wǎng)絡(luò)通信地耦合的一個或多個計算機。正如本領(lǐng)域技術(shù)人員所 熟知的,計算機可包括中央處理單元(“CPU”)、至少一個只讀存儲器(“ROM”)、至少一個 隨機存取存儲器(“RAM”)、至少一個硬盤驅(qū)動器(“皿”)、和一個或多個輸入/輸出(“I/ 0”)設(shè)備。I/O設(shè)備可包括鍵盤、監(jiān)視器、打印機、電子指向設(shè)備(諸如鼠標(biāo)、跟蹤球、指示筆 等)等等。在各種實施例中,計算機通過網(wǎng)絡(luò)至少接入到一個數(shù)據(jù)庫。ROM,RAM和HD是用于存儲由CPU可執(zhí)行的計算機可執(zhí)行的指令的計算機存儲器。 在本公開內(nèi)容內(nèi),術(shù)語“計算機可讀的介質(zhì)”并不限于R0M、RAM、和HD,而是可包括任何類型 的、可以由處理器讀出的數(shù)據(jù)存儲介質(zhì)。在某些實施例中,計算機可讀的介質(zhì)可以是指數(shù)據(jù) 盒式磁帶、數(shù)據(jù)備份磁帶、軟盤、快閃存儲器驅(qū)動器、和光學(xué)數(shù)據(jù)存儲驅(qū)動器、CD-ROM、ROM、 RAM、HD 等等。這里描述的功能或處理的至少一部分可以以適當(dāng)?shù)挠嬎銠C可執(zhí)行的指令被實現(xiàn)。 計算機可執(zhí)行的指令可以作為軟件代碼部件或模塊被存儲在一個或多個計算機可讀的介 質(zhì)上(諸如,非易失性存儲器、易失性存儲器、DASD陣列、磁帶、軟盤、硬盤驅(qū)動器、光學(xué)存儲 設(shè)備等等、或任何其它適當(dāng)?shù)挠嬎銠C可讀的介質(zhì)或存儲設(shè)備)。在一個實施例中,計算機可 執(zhí)行的指令可包括成行的、匯編的C++、Java, HTML、或任何其它編程或腳本代碼。另外,所公開的實施例的功能可以在一個計算機上被實現(xiàn),或在網(wǎng)絡(luò)上在兩個或 多個計算機之間被共享/分布。在實現(xiàn)本實施例的計算機之間的通信可以通過使用任何的 電子的、光學(xué)的、射頻的信號、或遵從已知的網(wǎng)絡(luò)協(xié)議的其它適當(dāng)?shù)姆椒ê凸ぞ叨煌瓿伞U邕@里使用的,術(shù)語“包括”、“具有”、或它們的其它變例,意在覆蓋非排他的包 括。例如,包括一系列單元的過程、處理、物體、設(shè)備不一定僅僅限于那些單元,而是可包括 沒有明顯列出的,或?qū)τ谶@樣的過程、處理、物體、設(shè)備來說是固有的其它單元。而且,除非 明顯地相反表示,“或”是指包括的或,而不是排他的或。例如,條件A或B通過以下的任一 項而得以滿足A是正確(或存在)和B是謬誤(或不存在);A是謬誤(或不存在)和B是正確(或存在);以及A和B都是正確(或存在)。另外,這里給出的例子或說明無論如何不看作為對于它們被利用的任何術(shù)語的約 束條件、限制,或表達的定義。而是,這些例子或說明被看作為是對于一個特定的實施例描 述的,以及僅僅作為說明性的。本領(lǐng)域技術(shù)人員將意識到,這些例子或說明利用的任何術(shù)語 將包括在本說明書的此處或他處可能給出或沒有給出的其他實施例,并且所有的這樣的實 施例意在被包括在該術(shù)語的范圍內(nèi)。指定這樣的非限制性例子和說明的語言包括,但不限 于“例如”、“舉例”、“在一個實施例中”。本申請涉及到由Galloway等在2009年6月5日提交的、題目為“Method and System for Data Migration in a Distributed RAIDImplementation,,的美國專禾Ij 申請
No.__(PIV0T1110-1);由 Galloway 等在 2009 年 6 月 5 日提交的、題目為“Method and
System forDistributing Commands to Targets,,的_(PIV0T1120-1);由 Galloway
等在 2009 年 6 月 5 日提交的、題目為"Method and System forlnitializing Storage in
a Storage System” 的_(PIV0T1130-1);由 Galloway 等在 2009 年 6 月 5 日提交的、
IS 目力 “Method and System for Rebuilding Data in a DistributedRAID System” 白勺
_(PIV0T1140-1);和由 Galloway 等在 2009 年 6 月 5 日提交的、題目為 “Method and
System for Placement of Data on aStorage Device” 的_(PIV0T1150-1),所有這
些專利申請在此引用以供參考。具體地,對于數(shù)據(jù)存儲的上下文的概略的討論可以是有幫助的。正如以上討論的, RAID系統(tǒng)劃分和復(fù)制在多個硬盤驅(qū)動器(或其它類型的存儲介質(zhì))上的數(shù)據(jù),統(tǒng)稱為陣列, 以便通過使用這些RAID系統(tǒng)用于存儲而增加可靠度,并在某些情形下,提高計算設(shè)備(稱 為主機)的吞吐量。然而,RAID的當(dāng)前的實現(xiàn)可能有各種各樣的問題。這些問題是來自于 由這些RAID系統(tǒng)的結(jié)構(gòu)體系所施加的限制條件,來自于在包括RAID系統(tǒng)的盤上數(shù)據(jù)的配 置或布局,或來自于對于使用定制的硬件或軟件來實現(xiàn)這些解決方案的需要,提高與實現(xiàn) 這樣的解決方案相關(guān)聯(lián)的花費。因此,尤其希望基本上改善這些問題。為此,現(xiàn)在把注意力指向本發(fā)明的系統(tǒng)和方法。這些系統(tǒng)和方法的實施例提供包 括一組數(shù)據(jù)庫的分布式RAID系統(tǒng)。更具體地,在分布式RAID系統(tǒng)的某些實施例中,每個數(shù) 據(jù)庫具有一組相關(guān)聯(lián)的存儲介質(zhì),并且執(zhí)行類似的分布式RAID應(yīng)用。在每個數(shù)據(jù)庫上的分 布式RAID應(yīng)用結(jié)合被存儲在數(shù)據(jù)庫的相關(guān)的存儲介質(zhì)上的數(shù)據(jù),在分布式RAID應(yīng)用之間 進行協(xié)調(diào),以分布和控制與實現(xiàn)RAID級別相關(guān)聯(lián)的數(shù)據(jù)流。具體地,在某些實施例中,可以通過使用分布式RAID系統(tǒng)創(chuàng)建具有相關(guān)的RAID級 別的卷。然后每個分布式RAID應(yīng)用可以協(xié)調(diào)與該卷的數(shù)據(jù)相關(guān)聯(lián)的操作,以使得與該卷相 關(guān)聯(lián)的數(shù)據(jù)或與該卷相結(jié)合的、期望的RAID級別的實現(xiàn)相關(guān)聯(lián)的數(shù)據(jù)可被存儲在分布式 RAID系統(tǒng)的多個數(shù)據(jù)庫上。通過使用在多個數(shù)據(jù)庫的每個數(shù)據(jù)庫上執(zhí)行的類似的分布式RAID應(yīng)用,把卷的 數(shù)據(jù)和與RAID的實現(xiàn)相關(guān)聯(lián)的數(shù)據(jù)存儲在那些多個數(shù)據(jù)庫上,通過協(xié)調(diào)結(jié)合該卷的RAID 級別的實現(xiàn),可以達到許多優(yōu)點。即,可以分配不同的存儲卷,一個或多個卷結(jié)合不同的 RAID級別被實現(xiàn)。而且,由于在數(shù)據(jù)庫上的存儲和RAID的實現(xiàn)的協(xié)調(diào)是通過使用基本上相 同的分布式RAID應(yīng)用而完成的,在許多情形下,可以利用標(biāo)準(zhǔn)的或現(xiàn)有的硬件,諸如基于 標(biāo)準(zhǔn)x86的服務(wù)器和存儲介質(zhì)。通過利用這里給出的實施例或其它實施例,也可以實現(xiàn)許多其它優(yōu)點,并且在閱讀本公開內(nèi)容后,將認(rèn)識到這樣的優(yōu)點,這些優(yōu)點可以或可能沒有以 具體的細(xì)節(jié)被指出。現(xiàn)在轉(zhuǎn)到圖1,圖上顯示利用分布式RAID系統(tǒng)的一個實施例的系統(tǒng)的結(jié)構(gòu)體系的 示意圖。分布式RAID系統(tǒng)100包括一組數(shù)據(jù)庫110,每個數(shù)據(jù)庫110通信地耦合到兩個交 換機120。每個交換機120還通信地耦合到每個主機102,以使得主機102可以通過對應(yīng)于 特定的數(shù)據(jù)庫110的一組路徑與每個數(shù)據(jù)庫110進行通信,每條路徑包括一個交換機120。在數(shù)據(jù)庫110,交換機120和主機102之間的通信耦合可以通過使用幾乎任何期望 的輸送介質(zhì)(有線或無線),包括以太網(wǎng)、SCSI、iSCSI、光纖信道、串行附屬SCSI( “SAS”)、 先進技術(shù)附件(“ΑΤΑ”)、串行ATA( “SATA”)、或在技術(shù)上已知的其它協(xié)議,而被完成。而 且,通信的耦合可以結(jié)合諸如互聯(lián)網(wǎng)、LAN、WAN、無線網(wǎng)或在技術(shù)上已知的任何其它通信網(wǎng) 那樣的通信網(wǎng)被實現(xiàn)。在一個實施例中,然后,通過使用諸如iSCSI、SCSI等那樣的命令協(xié)議,主機102可 以與數(shù)據(jù)庫110通信,以便操控數(shù)據(jù)。更具體地,每個數(shù)據(jù)庫110包括存儲介質(zhì)(正如將在 后面更詳細(xì)地說明的)??偟膩碚f,在數(shù)據(jù)庫110中的存儲介質(zhì)可被虛擬化,并呈現(xiàn)給主機 102作為一個或多個鄰接的存儲塊、存儲設(shè)備等等。例如,當(dāng)利用iSCSI協(xié)議時,在數(shù)據(jù)庫 110中的存儲介質(zhì)可被呈現(xiàn)給主機102作為SCSI目標(biāo),在一個實施例中,其具有多個端口。因此,在運行期間,在一個實施例中,主機102 (或在主機102處或與數(shù)據(jù)庫110相 接口的用戶)可以請求創(chuàng)建一個卷,并規(guī)定要結(jié)合該卷實現(xiàn)的RAID的級別。與該卷相關(guān)聯(lián) 的數(shù)據(jù)和與該卷相關(guān)聯(lián)的期望的級別RAID的實現(xiàn)相關(guān)聯(lián)的數(shù)據(jù)被存儲在數(shù)據(jù)庫110。主 機102然后可以通過使用對應(yīng)于該卷或該卷的一部分的邏輯地址而存取這個卷。這樣,主 機102可以利用所創(chuàng)建的存儲的卷,以及可以結(jié)合這些卷達到對于主機102基本上覺察不 到的故障容忍度。通過參考圖2A可以更好地理解存儲的虛擬化和利用數(shù)據(jù)庫110的RAID的實現(xiàn), 在圖2A上顯示用來實現(xiàn)分布式RAID的數(shù)據(jù)庫110的計算機的一個實施例的示意圖。這里, 數(shù)據(jù)庫110包括數(shù)據(jù)存儲器250和用來執(zhí)行被存儲在計算機可讀的介質(zhì)中的指令的處理器 202,其中指令用來實現(xiàn)分布式RAID應(yīng)用210。分布式RAID應(yīng)用210可以周期地發(fā)布心跳 通信到其它的數(shù)據(jù)庫110上的分布式RAID應(yīng)用210,以確定對于該數(shù)據(jù)庫110是否有故障。 如果分布式RAID應(yīng)用210確定另一個數(shù)據(jù)庫110正有故障,則它可以設(shè)置對應(yīng)于該數(shù)據(jù)庫 110的一個或多個各種故障標(biāo)記。通過使用這些故障標(biāo)記用于在每個數(shù)據(jù)庫110上的每個 分布式RAID應(yīng)用210,特定的分布式RAID應(yīng)用210可以確定某個數(shù)據(jù)庫110是否有故障。分布式RAID應(yīng)用210還可以存取(例如,讀出、寫入、發(fā)布命令等等)包括一個 或多個存儲介質(zhì)的數(shù)據(jù)存儲器250,該存儲介質(zhì)例如可以是按照幾乎任何已知的協(xié)議,諸如 SATA、PATA、FC等等運行的盤252,其中每個盤252可以,或可能不一定,具有相等的尺寸。 在每個數(shù)據(jù)庫110上執(zhí)行的分布式RAID應(yīng)用210可以允許通過使用在數(shù)據(jù)庫110上的數(shù) 據(jù)存儲器250而分配和使用卷,以及通過利用在數(shù)據(jù)庫110之間共享的一組全局表格、一組 本地表格245和寫高速緩存器260而結(jié)合這些卷實現(xiàn)RAID,所有這些表格可被存儲在存儲 器230 (它可以是數(shù)據(jù)存儲器250或合在一起的另外的存儲器)。圖2B顯示可被使用來實現(xiàn)用來實現(xiàn)分布式RAID的數(shù)據(jù)庫110計算機的硬件結(jié) 構(gòu)體系的一個實施例的示意圖。在這個結(jié)構(gòu)體系例子中,數(shù)據(jù)庫110包括一個或多個處理器202,其可以一起附著到IntelxSe結(jié)構(gòu)體系或某個其它結(jié)構(gòu)體系,以及存儲器230,通過 總線被耦合到I/O控制器中心212,其在一個實施例中可以是南橋芯片等等。I/O控制器中 心212又可以被耦合到和控制諸如PCI-X總線、PC-串行總線等等那樣的總線272。被耦合 到這個總線的是一個或多個盤控制器262,諸如,例如LSI 1068 SATA/SAS控制器。這些盤 控制器262的每個盤控制器被耦合到一個或多個盤252,其中總的來說,這些盤252可包括 數(shù)據(jù)存儲器250。另外,一個或多個網(wǎng)絡(luò)接口 282也可以被耦合到總線272。這些網(wǎng)絡(luò)接口 282可以是被包括在主板上的網(wǎng)絡(luò)接口(諸如,以太網(wǎng)等等),它可包括被配置成經(jīng)由諸如 以太網(wǎng)、光纖信道等那樣的一個或多個協(xié)議進行接口的一個或多個網(wǎng)絡(luò)接口卡,或可以是 某些其它類型的網(wǎng)絡(luò)接口,以使得數(shù)據(jù)庫110可以通過這些網(wǎng)絡(luò)接口 282與交換機120通
fn °現(xiàn)在移到圖3,圖上顯示用于在數(shù)據(jù)庫110上的數(shù)據(jù)存儲器250中進行卷的分配和 與這些卷相關(guān)聯(lián)的數(shù)據(jù)的布局的方法的一個實施例。一開始,在這些卷在數(shù)據(jù)存儲器250 的盤252上進行分配之前,可以在步驟305對盤252進行格式化。正如以上討論的,為了具 有從任何故障中容易和簡單地進行恢復(fù)的能力,需要冗余性數(shù)據(jù)相對于任何對應(yīng)的存儲的 數(shù)據(jù)是精確的。在許多情形下,這可以使得盤252被利用來存儲通過從盤252上的區(qū)域中的 當(dāng)前的數(shù)據(jù)計算冗余性數(shù)據(jù)而被格式化的卷,其中該卷的某些部分是要被存儲的,即使被 存儲在這些區(qū)域中的數(shù)據(jù)當(dāng)前也可能是垃圾數(shù)值。這些計算可能耗費不希望的大量時間。而且,在諸如對于圖1詳細(xì)說明的那樣的分布式RAID環(huán)境下,可能出現(xiàn)其它問題。 更具體地,因為卷的不同的部分可被存儲在不同的數(shù)據(jù)庫110,以及對應(yīng)于卷的冗余性數(shù)據(jù) 也可以被存儲在各種不同的數(shù)據(jù)庫110,完成這種類型的格式化另外還需要在數(shù)據(jù)庫110 上的分布式RAID應(yīng)用210之間大量通信,這消耗處理器周期和通信帶寬。因此,在一個實施例中,為了保證對應(yīng)于在其中要存儲卷的數(shù)據(jù)的盤的區(qū)域的冗 余性數(shù)據(jù)相對于在其中要存儲卷的數(shù)據(jù)的盤252的區(qū)域是精確的,可以把零數(shù)值寫入到在 其中要存儲對應(yīng)于卷的數(shù)據(jù)的盤252的區(qū)域以及在其中要存儲冗余性數(shù)據(jù)的盤252的區(qū) 域。通過使得在其中要存儲卷的數(shù)據(jù)的盤252的區(qū)域和在其中要存儲冗余性數(shù)據(jù)的盤252 的區(qū)域零化,可以保證卷的任何數(shù)據(jù)可以從它的對應(yīng)的冗余性數(shù)據(jù)被重新創(chuàng)建。使得盤252零化,可以具有其它優(yōu)點。即,為了可以不需要執(zhí)行復(fù)雜的計算來確定 冗余性數(shù)據(jù),并且可以不需要在分布式RAID應(yīng)用210之間的通信達到在要存儲卷的區(qū)域與 對應(yīng)于那些區(qū)域的冗余性數(shù)據(jù)之間的相對精度。重要地,通過使得用于卷及其對應(yīng)的冗余性數(shù)據(jù)的盤252的區(qū)域零化,可以避免 RAID系統(tǒng)100的使用性能的重大的延時。通過使用在運行期間基本上連續(xù)地使得盤252的 未分配的區(qū)域零化的過程,這是例如由于分布式RAID系統(tǒng)100的初始使用、新盤252的安 裝、和卷的刪除等等引起的,可以實現(xiàn)這些優(yōu)點。在這些事例中,可以向每個數(shù)據(jù)庫110上 的盤252的當(dāng)前未分配的(即,當(dāng)前沒有被分配的)區(qū)域?qū)懭肓?稱為“零化”該區(qū)域)。被零化的盤252的未分配的區(qū)域可被跟蹤,以使得當(dāng)對應(yīng)于卷的一部分或與卷的 一部分相關(guān)聯(lián)的冗余性數(shù)據(jù)的命令在該部分被分配到的數(shù)據(jù)庫110處被接收時,分布式 RAID應(yīng)用210可以檢驗以確定該部分是否已被分配以在該部分被分配到的數(shù)據(jù)庫110上的 盤252的對應(yīng)的區(qū)域。如果在數(shù)據(jù)庫110上的盤252的對應(yīng)的區(qū)域還沒有被分配,則分布 式RAID應(yīng)用210可以選擇已被零化的盤252的區(qū)域,并把盤252的這個區(qū)域分配給卷的部分或?qū)?yīng)的冗余性數(shù)據(jù)。通過同時零化以前未被零化的任何未分配的區(qū)域并且等待直至接收到對應(yīng)于卷 的一部分或冗余性數(shù)據(jù)的命令把盤252的零化的區(qū)域分配給該部分為止,分布式RAID系統(tǒng) 100可以基本上立即運行而不用長的所牽涉到的格式化過程,并且可以對于分布式RAID系 統(tǒng)100的運行相對地不引人注意地加上新的盤252和刪除或釋放卷。所以,在閱讀以上內(nèi)容后將指出,其中對盤252進行格式化的步驟305可以在卷創(chuàng) 建之前、期間、或之后,相對于分布式RAID系統(tǒng)100被完成,以及步驟305 (和在這里的所有 的流程圖中所有的其它步驟)的設(shè)置沒有對于步驟暗示次序。正如在透徹地考察圖3的步 驟的其余部分和本公開內(nèi)容的其余部分后將指出的,卷可被創(chuàng)建,以及所述卷的部分和對 應(yīng)于卷的冗余性數(shù)據(jù)在這些數(shù)據(jù)庫110上的盤252的物理區(qū)域被分配來存儲該卷的部分或 冗余性數(shù)據(jù)之前被分配到數(shù)據(jù)庫110,而且,用來存儲對應(yīng)于這樣的部分的數(shù)據(jù)的盤252上 的物理區(qū)域的零化,可以在卷創(chuàng)建之前或在卷創(chuàng)建之后但在這些物理區(qū)域被分配給卷的對 應(yīng)的部分或冗余性數(shù)據(jù)之前進行(正如將在下文中更詳細(xì)地討論的)。這些位置可以參照可以由分布式RAID應(yīng)用210的實施例所利用的段的概念更好 地進行說明,其中段可以是2048個邏輯塊地址(LBA)的尺寸(或某個其它尺寸),以及邏輯 塊地址的尺寸對應(yīng)于盤252的扇區(qū)尺寸。所以,在每個數(shù)據(jù)庫110上的數(shù)據(jù)存儲器250中的 盤252可以在步驟310被分割成相等尺寸的段(例如,1MB)。這些段可以對應(yīng)于盤驅(qū)動器 252的一個或多個鄰接的數(shù)據(jù)塊。所以,當(dāng)用戶或主機102在步驟320請求從分布式RAID 應(yīng)用210創(chuàng)建卷并且在步驟330規(guī)定將與該卷結(jié)合使用的RAID的級別時,對應(yīng)于所請求的 該卷的尺寸的這些段的數(shù)目加上期望結(jié)合該卷實現(xiàn)期望的RAID級別的段的數(shù)目,可以在 步驟340被分配給該卷。因此,卷包括許多段(也稱為邏輯段),其中這些段的每個段可以與特定的數(shù)據(jù)庫 110相關(guān)聯(lián),以使得數(shù)據(jù)庫110可被分配來管理卷的該段。這個段例如可以是2048個邏輯 塊地址(LBA)的尺寸,其中邏輯塊地址的尺寸對應(yīng)于盤252的扇區(qū)尺寸(其它安排和尺寸 也是可能的)。在大多數(shù)情形下,包括卷的該段的物理存儲將被存儲在管理該段的數(shù)據(jù)庫 110的數(shù)據(jù)存儲器250中,然而,在其它情形下,對應(yīng)于該段的數(shù)據(jù)可被存儲在不同的數(shù)據(jù) 庫110的數(shù)據(jù)存儲器250中(換句話說,在某些情形下,包括管理該段的分布式RAID應(yīng)用 的數(shù)據(jù)庫110可以與包括存儲對應(yīng)于該段的數(shù)據(jù)的數(shù)據(jù)存儲器250的數(shù)據(jù)庫110不同)。在一個實施例中,把段分配給對應(yīng)于特定的卷的數(shù)據(jù)庫110,可以通過確定對應(yīng)于 分布式RAID系統(tǒng)100的數(shù)據(jù)庫組110的隨機排列(permutation)來完成。因此,如果有六 個數(shù)據(jù)庫,則可以確定大小為六的隨機排列,其中隨機排列包括每個數(shù)據(jù)庫,以使得段可以 連續(xù)地以隨機排列的次序被分配給每個數(shù)據(jù)庫。例如,假設(shè)在分布式RAID系統(tǒng)中有四個數(shù)據(jù)庫110(把它們稱為數(shù)據(jù)庫1、數(shù)據(jù)庫 2等等)??梢源_定數(shù)據(jù)庫2、數(shù)據(jù)庫4、數(shù)據(jù)庫1和數(shù)據(jù)庫3的隨機排列。在這種情形下, 對應(yīng)于卷的第一段是在數(shù)據(jù)庫2上,第二段可以是在數(shù)據(jù)庫4上,第三段是在數(shù)據(jù)庫1上, 第四段是在數(shù)據(jù)庫3上,以及第五段再次在數(shù)據(jù)庫4上。這樣,如果對應(yīng)于卷的隨機排列是 已知的,則與卷對應(yīng)的特定的段的位置可以在數(shù)學(xué)上被確定。如上所述,用戶可以規(guī)定在步驟330結(jié)合卷實現(xiàn)RAID級別。在這種情形下,分布 式RAID應(yīng)用210可以保證對應(yīng)于結(jié)合卷的RAID的實現(xiàn)的任何數(shù)據(jù)在步驟350被存儲在適當(dāng)?shù)奈恢茫允沟肦AID信息被適當(dāng)?shù)胤植荚跀?shù)據(jù)庫110,以保證達到期望的級別的RAID。例如,如果期望結(jié)合卷實現(xiàn)RAID 5,則分布式RAID應(yīng)用210可以確定期望的RAID 奇偶校驗組尺寸(例如,根據(jù)用戶配置的RAID組或以其他方式確定)。這個確定可以是基 于在分布式RAID系統(tǒng)中數(shù)據(jù)庫110的數(shù)目,以及在一個實施例中,這個數(shù)目可以是小于數(shù) 據(jù)庫110的數(shù)目(考慮到奇偶校驗數(shù)據(jù),加上另一個數(shù)目)。為了說明,如果有五個數(shù)據(jù)庫110,對于用來存儲與卷相關(guān)聯(lián)的數(shù)據(jù)的每四個段 (被稱為數(shù)據(jù)段),一個段被專用于奇偶校驗,以及對于這四個段的奇偶校驗被計算,并被 存儲在這個奇偶校驗段,其中奇偶校驗段在數(shù)據(jù)庫110中被專用,其數(shù)據(jù)存儲器250不包括 該數(shù)據(jù)段,由此計算奇偶校驗段的奇偶校驗數(shù)據(jù)。在這時,對應(yīng)于邏輯卷的每個段被分配到特定的數(shù)據(jù)庫110,以及要被利用來存儲 對應(yīng)于卷的RAID數(shù)據(jù)的任何段100 (在這里可互換地稱為冗余性段或奇偶校驗段,不失去 對于段使用的一般應(yīng)用性,用來存儲與結(jié)合卷實現(xiàn)任何的RAID級別相關(guān)聯(lián)的任何類型的 冗余性數(shù)據(jù))也被分配給數(shù)據(jù)庫110,然而,數(shù)據(jù)庫的數(shù)據(jù)存儲器250的盤252的物理扇區(qū) 還沒有被分配來存儲對應(yīng)于那些段的數(shù)據(jù)。因此,在步驟360,可以確定在數(shù)據(jù)庫110上的 盤252的物理段,其中把它分配給卷的邏輯段。這個段映射可被存儲在每個數(shù)據(jù)庫110的 邏輯表245中。正如較早先提到的,這種分配可以在以后的某個時間點進行,例如,當(dāng)命令 首次試圖寫邏輯段時。在一個實施例中,當(dāng)進行這樣的分配時,可以對于所存取的邏輯段考慮盤252的 區(qū)域不同的性能特征。換句話說,盤252可具有一些段,它比起同一個盤的其它段更有效地 被存取。所以,在一個實施例中,可能希望根據(jù)與邏輯段相關(guān)聯(lián)的準(zhǔn)則來分配盤252的物理 段。所述特征例如可包括諸如與對應(yīng)于邏輯段的卷相關(guān)聯(lián)的服務(wù)質(zhì)量指定、對于包括邏輯 段的卷的存取次數(shù)等等那樣的事物。然后,在步驟370,對應(yīng)于卷的信息可被存儲,以使得可以從這個存儲的信息確定 對應(yīng)于卷的段或?qū)?yīng)于結(jié)合該卷的RAID的實現(xiàn)的段的位置。這個存儲的信息(統(tǒng)稱為映 射數(shù)據(jù))因此可包括卷的標(biāo)識、對應(yīng)于卷的隨機排列(例如,指示段被置于數(shù)據(jù)庫110的次 序)、以及任何的RAID實現(xiàn)的奇偶校驗組尺寸(例如,如果該卷對應(yīng)于4+1RAID組,7+1RAID 組,如果RAID 1被實現(xiàn)等等)。這個數(shù)據(jù)可被存儲在例如全局表格240中,以使得它可以被 傳送到其他數(shù)據(jù)庫110上的另外的分布式RAID應(yīng)用210,以保證與每個分布式RAID應(yīng)用 210相關(guān)聯(lián)的表格組240的至少一個部分基本上保持一致和位置。參照圖4可以更好地理解以上說明,圖4上顯示具有五個數(shù)據(jù)庫110的分布式 RAID系統(tǒng)的一個實施例的例子。這里,每個數(shù)據(jù)庫110的每個數(shù)據(jù)存儲器250被布置為一 組相等尺寸的段402,對于本例的目的,該段被假設(shè)為具有1MB的尺寸?,F(xiàn)在假設(shè),主機102 從在數(shù)據(jù)庫IlOb上的分布式RAID應(yīng)用210b中請求RAID級別5的8MB的卷。在這種情形 下,分布式RAID應(yīng)用210b可以確定,對于卷的數(shù)據(jù)部分需要八個段402,而需要兩個段402 用來存儲結(jié)合對于卷的期望的RAID級別的實現(xiàn)的對于卷的冗余性數(shù)據(jù)。然后分布式RAID 應(yīng)用210可以確定對于卷的隨機排列。對于本例的目的,假設(shè)隨機排列是數(shù)據(jù)庫110b、 數(shù)據(jù)庫110d、數(shù)據(jù)庫110a、數(shù)據(jù)庫110c、和數(shù)據(jù)庫110e。因此,數(shù)據(jù)庫IlOb可被分配給段 402a,所請求的卷的第一個段;數(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可被分配給段402h,所請求的卷的第八個段。一旦用于存儲與卷相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)段402a_402h都已分配,分布式RAID應(yīng) 用210b就可以分配段402,用于與該RAID級別的實現(xiàn)相關(guān)聯(lián)的任何數(shù)據(jù)。在本例中,因為 RAID 5是對于所述卷所期望的,分布式RAID應(yīng)用210b可以確定,因為五個數(shù)據(jù)庫110正在 被利用,可期望(4+1)奇偶校驗組。分布式RAID應(yīng)用210b然后可以確定,為了存儲奇偶校 驗以便結(jié)合八個段402實現(xiàn)RAID 5,可能需要另外兩個段402。而且,可能希望通過利用特定的數(shù)據(jù)段組402而被創(chuàng)建的奇偶校驗不被存儲在其 數(shù)據(jù)存儲器已具有那些數(shù)據(jù)段組402的任何數(shù)據(jù)段組的數(shù)據(jù)庫110上。因此,分布式RAID 應(yīng)用210b還可以確定其中每個奇偶校驗段根據(jù)所確定的RAID奇偶校驗組尺寸而被分配 到的位置,第一數(shù)據(jù)段402a的位置等等。這里,將存儲對應(yīng)于被存儲在數(shù)據(jù)段402a、402b、 402c和402d中的數(shù)據(jù)的奇偶校驗數(shù)據(jù)的奇偶校驗段402i,將被分配在數(shù)據(jù)庫IlOc的數(shù)據(jù) 存儲器250c中,而將存儲對應(yīng)于被存儲在數(shù)據(jù)段402e、402f、402g和402h中的數(shù)據(jù)的奇偶 校驗數(shù)據(jù)的奇偶校驗段402j,將被分配在數(shù)據(jù)庫IlOe的數(shù)據(jù)存儲器250e中。這里應(yīng)當(dāng)指 出,將存儲與RAID結(jié)合包括數(shù)據(jù)段402a-402h的實現(xiàn)相關(guān)聯(lián)的奇偶校驗信息的奇偶校驗段 402i、402j被布置和被做成同存儲與卷相關(guān)聯(lián)的數(shù)據(jù)的那些段402a-402h基本上相同的尺 寸。因此,當(dāng)主機102存取卷時,對于對應(yīng)于卷的第一數(shù)據(jù)段的邏輯地址的請求可以 對應(yīng)于在數(shù)據(jù)庫IlOb上的數(shù)據(jù)段402a,對于對應(yīng)于卷的第二數(shù)據(jù)段的邏輯地址的請求可 以對應(yīng)于在數(shù)據(jù)庫IlOd上的數(shù)據(jù)段402b,等等。這里應(yīng)當(dāng)指出,分配的數(shù)據(jù)段402a-402h 可以處在不同的數(shù)據(jù)庫110上,以及任何被分配的數(shù)據(jù)段402a-402h的位置可以通過使用 與該卷相關(guān)聯(lián)的隨機排列(例如,如被存儲在數(shù)據(jù)庫110處的全局表格240中)來確定。然 而,正如以上討論的,在數(shù)據(jù)庫110上的數(shù)據(jù)存儲器250已被虛擬化,因此請求的主機不知 道數(shù)據(jù)段402在數(shù)據(jù)存儲器250中的位置,存在多個數(shù)據(jù)存儲器250,數(shù)據(jù)存儲器250被布 置在多個數(shù)據(jù)庫110上,等等。主機相信它正在尋址單個相鄰的卷。將會看到,在本例中,數(shù)據(jù)段402在數(shù)據(jù)庫110上的位置(和數(shù)據(jù)庫110的對應(yīng)的 隨機排列)是用于示例說明,以及卷的數(shù)據(jù)段402可以按照幾乎任何隨機的或其它的排列, 被放置在任何的數(shù)據(jù)庫110的任何的數(shù)據(jù)存儲器250上。而且,將會指出,雖然每個段402 在本例中是1MB,但這些段可以具有任何尺寸而不失一般性,以及1MB尺寸僅僅被選擇來用 于易于示例說明。正如從以上的說明中可以看到的,特定的數(shù)據(jù)段402或奇偶校驗段402的位置可 以在算法上通過使用與卷和RAID奇偶校驗組尺寸相關(guān)聯(lián)的隨機排列(例如,使用被使用來 分配用于卷的段、定位用于卷的奇偶校驗段等的相同的隨機排列)來確定。因此,所述信息 可以結(jié)合對應(yīng)于卷的標(biāo)識被存儲在例如全局表格組240中。而且,這些全局表格240可以 在數(shù)據(jù)庫110之間被傳送,或以其他方式被更新,以使得在每個數(shù)據(jù)庫110中的全局表格組 240的至少一部分可以基本上保持一致。在這里概略地深入研究關(guān)于與分布式RAID應(yīng)用210相關(guān)聯(lián)的全局表格240的更多的細(xì)節(jié)是有幫助的。正如所討論的,在一個實施例中,全局表格240可以存儲與由分布式 RAID應(yīng)用210創(chuàng)建的卷相關(guān)聯(lián)的信息,其中那些表格240可被使用來確定與在該卷內(nèi)的數(shù) 據(jù)段相關(guān)聯(lián)的數(shù)據(jù)庫110,或在其中放置與對應(yīng)于該卷的數(shù)據(jù)段相關(guān)聯(lián)的奇偶校驗段。全 局表格240因此可包括一組表格,每個表格對應(yīng)于相對于數(shù)據(jù)庫110實現(xiàn)的卷。具體地,這 些表格240中的一個表格可包含可被使用來標(biāo)識其數(shù)據(jù)存儲器250包括卷的某個段的數(shù)據(jù) 庫110的數(shù)據(jù)。具體地,這個表格可被使用來將與卷相關(guān)聯(lián)的邏輯地址與其中存儲對應(yīng)于 該邏輯地址的段(數(shù)據(jù)、冗余性等等)的數(shù)據(jù)庫110相聯(lián)系。圖5顯示這種類型的表格的一個實施例的圖形表示,其中每個卷可以與這樣的表 格的相關(guān)聯(lián)的實例相聯(lián)系。表格550包括以下項邏輯卷號碼504、段尺寸508、段計數(shù)512、 服務(wù)質(zhì)量(Q0S)514、范圍計數(shù)518、用于范圍項的信息,在所描述的實施例中包括第一范圍 524a、和第二范圍524b以及任何附加范圍項524η。邏輯卷號碼504是被使用來標(biāo)識特定的卷的唯一的號碼,段尺寸508對應(yīng)于被使 用來實現(xiàn)卷的段的尺寸,段計數(shù)512對應(yīng)于與邏輯卷對應(yīng)的段的數(shù)目(例如,數(shù)據(jù)段與冗余 性段的數(shù)目、僅僅數(shù)據(jù)段的數(shù)目等等),QOS 514表示期望相對于卷實現(xiàn)的服務(wù)的質(zhì)量(應(yīng) 當(dāng)指出,這個QOS指示符指示被給予該卷的、相對于被存儲在數(shù)據(jù)庫110的其它卷的優(yōu)先 級),以及范圍計數(shù)518指示與卷相關(guān)聯(lián)的范圍的數(shù)目,而范圍項524每個對應(yīng)于那些范圍 中的一個范圍。范圍可以對應(yīng)于特定的數(shù)據(jù)庫110次序和RAID實現(xiàn)。多個范圍可以因為各種各 樣原因被利用來實現(xiàn)卷。具體地,例如,多個范圍可以結(jié)合卷被利用,因為在不同的數(shù)據(jù)庫 110處的不同的數(shù)據(jù)存儲器250可以具有可供使用的、在數(shù)據(jù)存儲器250中不同的存儲量。 這可導(dǎo)致一種情形,其中例如對于卷的第一范圍,全部數(shù)據(jù)庫110可以結(jié)合第一 RAID實現(xiàn) 被利用,而在卷的第二范圍中,少于全部可供使用的數(shù)據(jù)庫110可以結(jié)合第二 RAID實現(xiàn)被 利用(其中第一和第二 RAID實現(xiàn)事實上可以是互相不同的級別)。這些范圍的每個范圍所 以可對應(yīng)于按照不同的數(shù)據(jù)庫110次序(例如,隨機排列等等)被布置的段,具有可供使用 的、不同的數(shù)目的數(shù)據(jù)庫110、不同的類型的RAID等等。為了使用具體的例子進行說明,概略地考察圖4。假設(shè)具有RAID級別5的8MB的 卷被如圖所示的那樣布置,其中數(shù)據(jù)段按照數(shù)據(jù)庫110b、數(shù)據(jù)庫110d、數(shù)據(jù)庫110a、數(shù)據(jù)庫 110c、和數(shù)據(jù)庫IlOe的次序被布置,以及RAID 5結(jié)合卷被實現(xiàn),利用具有在數(shù)據(jù)庫IlOc的 數(shù)據(jù)存儲器250c和數(shù)據(jù)庫IlOe的數(shù)據(jù)存儲器250e中所分配的奇偶校驗段的(4+1)奇偶 校驗組可能是希望的?,F(xiàn)在假設(shè)請求給這個卷加上附加的3MB。然而,在本例中假設(shè)數(shù)據(jù)庫110e、110c、 和IlOd的數(shù)據(jù)存儲器250沒有更多的空間。因此,在這種情形下,唯一的解決方案可以是在 其數(shù)據(jù)存儲器250中具有剩余的存儲量的數(shù)據(jù)庫IlOa與IlOb之間分配附加的期望的3MB。 而且,因為僅僅兩個數(shù)據(jù)庫110是可供使用的,僅僅有可能利用RAID級別1,而不是如對于 卷的頭8MB所利用的RAID級別5。因此,在這種情形下,卷的頭8MB可以對應(yīng)于第一范圍, 并在對應(yīng)于具有第一組數(shù)值的卷的表格中具有第一范圍項,而卷的接著的3MB可以對應(yīng)于 第二范圍,并在對應(yīng)于具有第二組數(shù)值的卷的表格中具有第二范圍項。正如在閱讀本公開 內(nèi)容后可以看到的,這種類型的現(xiàn)象可以以某個頻率出現(xiàn)?;氐綀D5,尤其是,為了處理這些類型的情形,卷的每個范圍可以具有在表格550中的項,以使得在該特定的范圍中段的位置可以從對應(yīng)于該范圍的范圍項來確定。對于對 應(yīng)于表格550的卷的每個范圍的項524是與范圍計數(shù)518相關(guān)聯(lián)的。在一個實施例中,范 圍計數(shù)518可以對應(yīng)于卷的范圍的數(shù)目,這樣,范圍項524的數(shù)目對應(yīng)于范圍計數(shù)518。雖 然僅僅顯示范圍項524a和524b,但應(yīng)當(dāng)指出,在表格中的范圍項524的數(shù)目將依賴于對應(yīng) 于由該表格所對應(yīng)的卷的范圍的數(shù)目。因此,如果卷被劃分成三個范圍,則在表格550中將 有三個范圍項524,這樣,存在范圍項524包括對于對應(yīng)于表格550的卷的每個范圍的信息。對于范圍項524的信息包括類型526、開始530、結(jié)束534、網(wǎng)絡(luò)RAID 538、網(wǎng)絡(luò) RAID尺寸542、盤RAID 546、盤RAID尺寸550、數(shù)據(jù)庫計數(shù)554、數(shù)據(jù)庫次序558、和被使用 來存儲與范圍524相關(guān)聯(lián)的段的每個數(shù)據(jù)庫110對應(yīng)的盤計數(shù)562和盤次序566 (換句話 說,將有等于該范圍項524的數(shù)據(jù)庫計數(shù)554的盤計數(shù)562和盤次序566)。類型526描述 對應(yīng)于對于范圍項524的信息的范圍的類型例如,正常的、源(SRC)、目的地(DST)、或其它 類型的范圍。開始230是對應(yīng)于范圍項524的卷的范圍的第一邏輯段地址。結(jié)束234是對 應(yīng)于與范圍項524對應(yīng)的卷的范圍的信息的該范圍的最后的邏輯段地址。其它安排也是可 能的,例如,結(jié)束524可以是作為在范圍中的段或塊的最大數(shù)目的計數(shù)值,等等。數(shù)據(jù)庫計數(shù)554可以對應(yīng)于其上存在對應(yīng)于范圍項的范圍的數(shù)據(jù)庫110的數(shù)目, 數(shù)據(jù)庫次序558可以是在該范圍中的段被分配給數(shù)據(jù)庫110的次序,而網(wǎng)絡(luò)RAID 538、網(wǎng)絡(luò) RAID尺寸542、盤RAID 546和盤RAID尺寸552可以對應(yīng)于結(jié)合與范圍項524對應(yīng)的卷的 范圍被實現(xiàn)的RAID的類型。網(wǎng)絡(luò)RAID 538是與對應(yīng)于表格550的卷相關(guān)聯(lián)地實現(xiàn)的RAID的類型,例如,RAID 0, RAID 1或RAID 5或其它RAID類型。網(wǎng)絡(luò)RAID尺寸542是在范圍中使用的RAID類型 的奇偶校驗組尺寸。網(wǎng)絡(luò)RAID尺寸542可以由在范圍中的數(shù)據(jù)庫110的數(shù)目被限制為小 于或等于在范圍中對應(yīng)于對于范圍524的信息的數(shù)據(jù)庫的數(shù)目。盤RAID 546是在范圍中 在數(shù)據(jù)庫中的盤上實現(xiàn)的RAID的類型。盤RAID尺寸552可以是在每個數(shù)據(jù)庫110的數(shù)據(jù) 存儲器250中的盤252上所使用的RAID類型的奇偶校驗組尺寸,以及它可被限制為小于或 等于在數(shù)據(jù)庫中的盤的數(shù)目。在實施例中,在范圍中的數(shù)據(jù)庫110中的盤上的RAID是任選 的,它可以或可以不被使用。在這樣的實施例中,或者盤RAID 546、盤RAID尺寸552,或者 二者可以不被使用,或可以被省略。數(shù)據(jù)庫計數(shù)554是在范圍中的數(shù)據(jù)庫的數(shù)目,數(shù)據(jù)庫次序558是在范圍中的數(shù)據(jù) 庫110上RAID被實現(xiàn)(例如,剝除)的次序。例如,數(shù)據(jù)庫110可以具有對應(yīng)于以某個次序 被保存的卷的邏輯地址的數(shù)據(jù),數(shù)據(jù)庫次序558對應(yīng)于這個次序。盤計數(shù)562是在范圍的數(shù) 據(jù)庫110內(nèi)的盤的數(shù)目,盤次序566是在特定的數(shù)據(jù)庫110的盤上RAID被實現(xiàn)的次序。例 如,盤252可以具有以某個次序被保存在其上的段,盤次序566是在數(shù)據(jù)庫110中的盤252 上段被存儲的次序。因此,對于被使用來存儲與范圍項524相關(guān)聯(lián)的范圍的段的每個數(shù)據(jù) 庫110,將有對應(yīng)的盤計數(shù)562和盤次序566 (換句話說,盤計數(shù)562和盤次序566的數(shù)目, 在一個實施例中,將等于該范圍項524的數(shù)據(jù)庫計數(shù)554)。在實施例中,在數(shù)據(jù)庫110中的 盤252上的RAID是任選的,并且可以不被使用。將會指出,雖然表格550已具體地描述,但 這個描述是作為例子而不是限制,也可以利用表格550的其它形式。例如,可以使用虛擬表 格而不是表格550,它可以清楚地列出對應(yīng)于每個邏輯地址的段402和數(shù)據(jù)庫110。因此,正如早先討論的,在表格550中的信息可被使用來標(biāo)識包括對應(yīng)于邏輯地址的數(shù)據(jù)段402的數(shù)據(jù)庫110 (由主機102在命令中或在任何其它上下文中標(biāo)出)。例如, 在知道段402的尺寸和使用開始530、結(jié)束534、對應(yīng)于地址的范圍項524等等后,可以確定 對應(yīng)于卷的邏輯地址的特定的數(shù)據(jù)庫110。雖然表格240的一個或多個部分在所有的數(shù)據(jù)庫110上可以是基本上相同的,并 且可以描述如上所述的跨一個或多個數(shù)據(jù)庫110的一個或多個邏輯卷,但在數(shù)據(jù)庫110上 的其它表格245對于它所對應(yīng)的數(shù)據(jù)庫110可以是不同的(例如,表格245可以是對于所 對應(yīng)的分布式RAID應(yīng)用210在其上執(zhí)行的數(shù)據(jù)庫110唯一的)。這個表格245可包括與被 包含在對應(yīng)的數(shù)據(jù)庫110的數(shù)據(jù)存儲器250中的每個盤252有關(guān)的數(shù)據(jù),以及可包括關(guān)于 信息被存儲在數(shù)據(jù)存儲器的盤252上或在其之間的哪個地方的信息,例如,被分配給數(shù)據(jù) 庫110的段402在數(shù)據(jù)存儲器250中所處的盤252的扇區(qū)。在圖6上,顯示這種類型的表格的一個實施例的圖形表示。表格660可被存儲在 特定的數(shù)據(jù)庫110,它包括多個盤表格670,每個盤表格670對應(yīng)于在該數(shù)據(jù)庫110內(nèi)的數(shù) 據(jù)存儲器250的盤252,并列出被存儲在該盤252內(nèi)的段的位置。更具體地,在大多數(shù)情形 下,盤252被劃分成物理扇區(qū),每個物理扇區(qū)具有對應(yīng)的地址或地址范圍。盤表格670可以是映射表,它可被利用來確定其中存儲卷的段的數(shù)據(jù)庫110的盤 252的扇區(qū)的位置。因此,通過使用表格670,可以確定對應(yīng)于卷的段的、在盤252上的扇區(qū) 的地址。而且,該表格可以包含一個或多個標(biāo)記,或?qū)?yīng)于盤的段或扇區(qū)的、每項的描述性 位,描述在該扇區(qū)中存儲的扇區(qū)或段。現(xiàn)在參照圖7,圖上顯示盤表格670的一個實施例的圖形表示。盤表格670具有多 個項,每個項對應(yīng)于相應(yīng)的盤的物理段,這樣,盤表格670的項描述盤252的物理段。在盤 表格670中的每個項還可包括一個或多個標(biāo)記或位字段,描述被存儲在對應(yīng)的扇區(qū)中的卷 的物理段。更具體地,如圖7所示,在一個實施例中,在盤表格670中的項包括用于邏輯卷 號、邏輯段號、地址空間和扇區(qū)狀態(tài)的字段。邏輯卷號標(biāo)識對應(yīng)于存儲在該物理段處的數(shù)據(jù) 的邏輯卷。邏輯段號標(biāo)識對應(yīng)于該數(shù)據(jù)的邏輯卷的段。地址空間標(biāo)識存儲為‘?dāng)?shù)據(jù)’或‘冗 余性’的段?!?dāng)?shù)據(jù)’的數(shù)值可以指示數(shù)據(jù)被存儲在由該項表示的扇區(qū),而‘冗余性’的數(shù)值 指示被存儲在扇區(qū)的信息可被使用于RAID數(shù)據(jù)保護,根據(jù)RAID級別,該信息可以是冗余的 數(shù)據(jù)、鏡像的數(shù)據(jù)或奇偶校驗信息。扇區(qū)狀態(tài)指示段的狀態(tài)為“分配的”、“零化的”、或“臟 的(dirty)”。“分配的”表示段已被分配,它可包括有效的數(shù)據(jù)?!傲慊摹北硎径我淹ㄟ^把 零寫入到段而被零化,以及“臟的”表示段可能包括垃圾,或是無用的或不期望的數(shù)值,例如 因為段還沒有被零化或被分配,段可正存儲隨機位或數(shù)據(jù)。在一個實施例中,例如,對于新 的盤,該盤的所有的段在對應(yīng)于新的或新加上的盤的盤表格中被標(biāo)記為臟的。在閱讀以上的、對于表格的說明后,將明白分布式RAID應(yīng)用210可以利用全局表 格240來確定哪個段對應(yīng)于卷的邏輯地址,對應(yīng)于卷的段(數(shù)據(jù)段或奇偶校驗段)處在哪 個數(shù)據(jù)庫110上,卷的哪個段對應(yīng)于卷的邏輯地址,與卷的段相關(guān)聯(lián)的RAID數(shù)據(jù)(奇偶校 驗數(shù)據(jù)、鏡像數(shù)據(jù)、其它類型的冗余性數(shù)據(jù)等等)處在哪個地方,特定的數(shù)據(jù)庫110的哪個 盤252包括段或關(guān)于對應(yīng)于該特定的數(shù)據(jù)庫110的卷、段或盤252的其它信息,或關(guān)于卷、 段402、數(shù)據(jù)庫110、RAID數(shù)據(jù)等等的其它信息。類似地,在每個單獨的數(shù)據(jù)庫110上的分布式RAID應(yīng)用210可以使用在該數(shù)據(jù)庫 110上的本地表格245來確定特定的段處在該數(shù)據(jù)庫110上哪個地方(例如,盤252的哪個扇區(qū)等等),或關(guān)于對應(yīng)于該特定的數(shù)據(jù)庫110的卷、段或盤252的其它信息。使用在數(shù)據(jù)庫110之間共享的全局表格240和對應(yīng)于每個單獨的數(shù)據(jù)庫110的本 地表格245的組合后,某些操作可以由在數(shù)據(jù)庫110上的分布式RAID應(yīng)用210互相合作地 執(zhí)行?,F(xiàn)在將更詳細(xì)地討論這些類型的操作。具體地,現(xiàn)在更詳細(xì)地討論其中結(jié)合卷實現(xiàn) RAID級別5的、在卷上實現(xiàn)讀命令和寫命令的一個實施例,隨后是關(guān)于示例性分布式RAID 系統(tǒng)的這些命令的實現(xiàn)的具體的例子。在透徹考察本公開內(nèi)容后,將會指出可以如何實現(xiàn) 其它類型的實施例、命令、RAID級別等等。首先查看圖8,圖上顯示用于在分布式RAID系統(tǒng)中實現(xiàn)讀命令的方法的一個實施 例的流程圖。這個讀命令可以由主機102通過交換機120發(fā)送到數(shù)據(jù)庫110,或從一個數(shù) 據(jù)庫110發(fā)送到另一個數(shù)據(jù)庫110。在某些實施例中,主機102可包括一個或多個應(yīng)用和 相關(guān)的路由信息,以使得讀命令從發(fā)布命令的主機102沿在發(fā)布的主機102與適當(dāng)?shù)臄?shù)據(jù) 庫110之間的路徑被路由到適當(dāng)?shù)臄?shù)據(jù)庫110。然而,在其它情形下,在主機102上可以沒 有給出這樣的應(yīng)用或路由信息,因此從主機102發(fā)布的讀命令可被路由到任何數(shù)據(jù)庫110。 在本實施例中將顯示后者的情形。然而,在考察本實施例的描述后,本領(lǐng)域技術(shù)人員將會看 到哪些步驟是也可應(yīng)用于前者的情形。在步驟810,然后,讀命令可以在數(shù)據(jù)庫110處被接收。在步驟820,在數(shù)據(jù)庫110 上的分布式RAID應(yīng)用210可以確定對應(yīng)于在接收的讀命令中標(biāo)注的邏輯地址的卷的段,以 及在步驟830,確定卷的段被存儲在哪個數(shù)據(jù)庫110。正如以上討論的,這個信息可以通過 使用與分布式RAID應(yīng)用210相關(guān)聯(lián)的全局表格240來確定。如果正在存儲段的數(shù)據(jù)庫110 是與接收讀命令的數(shù)據(jù)庫110相同的(正如在步驟832確定的),則請求的數(shù)據(jù)可以在步 驟840從在接收數(shù)據(jù)庫110上的數(shù)據(jù)存儲器250的適當(dāng)?shù)谋P252被得到,以及在步驟850, 對于讀命令作出應(yīng)答。正如以上討論的,其上存儲段的數(shù)據(jù)庫110的數(shù)據(jù)存儲器250的特 定的盤252,可以通過使用全局表格240來確定,而在該盤252上存儲對應(yīng)于段的數(shù)據(jù)的位 置,可以通過使用本地表格245來確定,該本地表格245可被使用來把卷的段映射到盤252 上的物理地址。如果接收數(shù)據(jù)庫110接收來自主機102的讀命令,則主機102可以得到應(yīng) 答,而如果接收數(shù)據(jù)庫110接收來自另一個數(shù)據(jù)庫110的讀命令,則應(yīng)答可被發(fā)送到發(fā)布讀 命令的數(shù)據(jù)庫110上的分布式RAID應(yīng)用210。然而,如果段被存儲在遠(yuǎn)程數(shù)據(jù)庫110 (不同于接收命令的那個數(shù)據(jù)庫的數(shù)據(jù)庫 110),則在步驟860,讀命令可被發(fā)送到遠(yuǎn)程數(shù)據(jù)庫110處的分布式RAID應(yīng)用210。在一個 實施例中,這個讀命令可以通過使用由分布式RAID應(yīng)用210所利用的命令格式而被傳送到 遠(yuǎn)程數(shù)據(jù)庫110處的分布式RAID應(yīng)用210。這個命令在提供原先的讀命令的有關(guān)的信息 的同時,也可以指令分布式RAID應(yīng)用把讀命令的結(jié)果返還到原先接收該讀命令的數(shù)據(jù)庫 110,或執(zhí)行其它功能。因此,在讀命令被發(fā)送到遠(yuǎn)程數(shù)據(jù)庫110后,在步驟870,可以從遠(yuǎn)程 數(shù)據(jù)庫110接收包括請求的數(shù)據(jù)的應(yīng)答,以及在步驟880,通過使用在該應(yīng)答中接收的數(shù)據(jù) 而應(yīng)答所接收的讀命令。現(xiàn)在移到圖9A和9B,圖上顯示用于在分布式RAID系統(tǒng)中實現(xiàn)寫命令的方法的一 個實施例的流程圖。這個寫命令可以由主機102通過交換機120發(fā)送到數(shù)據(jù)庫110,或從一 個數(shù)據(jù)庫110發(fā)送到另一個數(shù)據(jù)庫110。在某些實施例中,主機102可包括一個或多個應(yīng) 用和相關(guān)的路由信息,以使得寫命令從發(fā)布命令的主機102沿在發(fā)布的主機102與適當(dāng)?shù)臄?shù)據(jù)庫110之間的路徑被路由到適當(dāng)?shù)臄?shù)據(jù)庫110。然而,在其它情形下,在主機102上可 以沒有給出這樣的應(yīng)用或路由信息,因此從主機102發(fā)布的寫命令可被路由到任何數(shù)據(jù)庫 110。在本實施例中將說明后者的情形。然而,在考察本實施例的描述后,本領(lǐng)域技術(shù)人員 將會看到哪些步驟也可應(yīng)用于前者的情形。在步驟910,然后,寫命令可以在接收數(shù)據(jù)庫110處被接收。然后,在接收數(shù)據(jù)庫 110上的分布式RAID應(yīng)用210可以在步驟920、930和940確定對應(yīng)于由寫命令標(biāo)注的邏輯 地址的卷的段,該段的位置(例如,哪個數(shù)據(jù)庫110正在存儲對應(yīng)于該段的數(shù)據(jù)),和對應(yīng)于 該段的奇偶校驗的位置(例如,哪個數(shù)據(jù)庫110正在存儲其中存儲從對應(yīng)于該段的數(shù)據(jù)產(chǎn) 生的奇偶校驗數(shù)據(jù)的段)。正如以上討論的,數(shù)據(jù)段和奇偶校驗段的位置都可以通過使用被 存儲在接收數(shù)據(jù)庫Iio上的全局表格240來確定。如果在接收數(shù)據(jù)庫110上既沒有存儲數(shù)據(jù)段(存儲數(shù)據(jù)的段)也沒有存儲冗余性 段(換句話說,其中從數(shù)據(jù)段創(chuàng)建的奇偶校驗或其它類型的冗余性數(shù)據(jù))(正如在步驟950 和960確定的),則寫命令可以在步驟964被傳送到其上存儲數(shù)據(jù)段的遠(yuǎn)程數(shù)據(jù)庫110上的 分布式RAID應(yīng)用210,和在步驟966被傳送到其上存儲奇偶校驗段的遠(yuǎn)程奇偶校驗數(shù)據(jù)庫 110上的分布式RAID應(yīng)用210。在一個實施例中,這個寫命令可以通過使用由分布式RAID 應(yīng)用210利用的命令格式被傳送到在遠(yuǎn)程數(shù)據(jù)庫110和遠(yuǎn)程奇偶校驗數(shù)據(jù)庫110處的分 布式RAID應(yīng)用210。這個命令在提供原先的寫命令的有關(guān)信息的同時,也可以指令分布式 RAID應(yīng)用210執(zhí)行其它期望的功能。因此,在寫命令被發(fā)送到遠(yuǎn)程數(shù)據(jù)庫110和遠(yuǎn)程奇偶校驗數(shù)據(jù)庫后,在步驟968和 970,可以從在遠(yuǎn)程數(shù)據(jù)庫110和遠(yuǎn)程奇偶校驗數(shù)據(jù)庫110處的分布式RAID應(yīng)用210接收 完成通知。一旦接收到這些確認(rèn),就可以由接收數(shù)據(jù)庫110上的分布式RAID應(yīng)用210對寫 命令作出應(yīng)答?;氐讲襟E950,然而,如果在接收數(shù)據(jù)庫110處存儲有數(shù)據(jù)段,則在步驟952,確定 是否從主機102或另一個數(shù)據(jù)庫110接收到寫命令。如果從主機102接收到寫命令,則在 步驟976,把寫命令傳送到遠(yuǎn)程奇偶校驗數(shù)據(jù)庫110的分布式RAID應(yīng)用210,并在步驟974, 把寫命令放置在接收數(shù)據(jù)庫110的寫高速緩存器。在步驟978接收來自在遠(yuǎn)程奇偶校驗數(shù) 據(jù)庫110處的分布式RAID應(yīng)用210的完成通知后,在步驟980,可以由在接收數(shù)據(jù)庫110處 的分布式RAID應(yīng)用210對于寫命令作出應(yīng)答(例如,被發(fā)送到主機102的應(yīng)答)。而且,寫 命令本身可以在步驟982被處理。這個過程可能需要把與寫命令相關(guān)聯(lián)的數(shù)據(jù)存儲到被存 儲在接收數(shù)據(jù)庫110中的數(shù)據(jù)段,或其它功能。另一方面,如果在步驟952沒有從主機102接收到寫命令,則這可能表示,寫命令 從另一個數(shù)據(jù)庫110 (在許多情形下,它可以是原先從主機102接收寫命令的數(shù)據(jù)庫110) 被接收。在這種情形下,數(shù)據(jù)庫110可以在步驟984把接收的寫命令放置在它的寫高速緩 存器,并且在步驟986,把完成通知發(fā)送到發(fā)布的數(shù)據(jù)庫110。然后,在以后的某個時間點, 寫命令本身可以在步驟988被處理。再次回到步驟950,如果在接收數(shù)據(jù)庫110處沒有存儲數(shù)據(jù)段,但在接收數(shù)據(jù)庫 110處存儲有奇偶校驗段,正如在步驟960確定的,則可以在步驟962確定寫命令是從主機 102還是從另一個數(shù)據(jù)庫110接收的。如果寫命令是從主機102接收的,則在步驟1002,寫 命令可被傳送到其中存儲對應(yīng)于寫的數(shù)據(jù)段的遠(yuǎn)程數(shù)據(jù)庫110的分布式RAID應(yīng)用210,并且在步驟1000,寫命令被放置在接收數(shù)據(jù)庫110的寫高速緩存器。在步驟1004接收到來自 遠(yuǎn)程數(shù)據(jù)庫110的分布式RAID應(yīng)用210的完成通知后,在步驟1006,可以由在接收數(shù)據(jù)庫 110處的分布式RAID應(yīng)用210對于寫命令作出應(yīng)答,以及在步驟1008,由接收數(shù)據(jù)庫110 處理寫命令。這里,處理寫命令可能要求被存儲在接收數(shù)據(jù)庫110處的奇偶校驗段可以根據(jù)寫 命令被更新。奇偶校驗段的更新可以以各種各樣方式完成,這里并不詳細(xì)說明所有的方式, 但本領(lǐng)域技術(shù)人員將知道這些方式。例如,在奇偶校驗數(shù)據(jù)庫110上的分布式RAID應(yīng)用 210可以執(zhí)行逆(back out)寫入,以便更新奇偶校驗段。執(zhí)行這種逆寫入,可能需要得到 從其產(chǎn)生奇偶校驗段的數(shù)據(jù)段和通過使用所得到的數(shù)據(jù)段和與寫命令相關(guān)聯(lián)的、要被寫入 的數(shù)據(jù)而執(zhí)行邏輯運算(諸如,異或(XOR)運算)。替換地,如果在接收數(shù)據(jù)庫110上的分 布式RAID應(yīng)用210具有對應(yīng)于從其產(chǎn)生奇偶校驗段的每個數(shù)據(jù)段的多個寫命令,則可以計 算新的奇偶校驗段,以及原先的奇偶校驗段可以通過用新計算的奇偶校驗段替代它而被更 新。通過考察這里的公開內(nèi)容,可以認(rèn)識到用于更新奇偶校驗段的其它方法,被分布式RAID 應(yīng)用利用來更新奇偶校驗段的具體的方法可以依賴于各種各樣因素,包括配置參數(shù)、某些 數(shù)據(jù)的可提供性(例如,對應(yīng)于用來產(chǎn)生奇偶校驗的所有的數(shù)據(jù)段的寫命令等等)或任何 的許多其它因素?,F(xiàn)在回到步驟962,如果沒有從主機接收到寫命令,則這可能表示寫命令是從另一 個數(shù)據(jù)庫110 (在許多情形下,它可以是原先從主機102接收寫命令的數(shù)據(jù)庫110)接收的。 在這種情形下,寫命令可以在步驟990被放置在接收數(shù)據(jù)庫110的寫高速緩存器中,以及在 步驟992,把完成通知發(fā)送到發(fā)布數(shù)據(jù)庫。然后可以在步驟994處理寫命令(例如,奇偶校 驗段可以如以上討論的那樣被更新)。在考察以上的討論后,將會指出,在許多情形下,在特定的數(shù)據(jù)庫110處的分布式 RAID應(yīng)用210在接收到來自奇偶校驗數(shù)據(jù)庫110的通知之前不能處理所接收的寫命令,奇 偶校驗數(shù)據(jù)庫可能需要評估多個接收的寫命令來確定或?qū)崿F(xiàn)當(dāng)期望存儲一個或多個寫命 令或評估這些存儲的寫命令組時用于更新奇偶校驗或任何的許多其它實例的方法。為了易 于存儲和評估寫(或其它)命令,每個分布式RAID應(yīng)用210可以具有相關(guān)聯(lián)的寫高速緩存 器 260。寫高速緩存器的一個實施例的表示顯示于圖10。當(dāng)寫命令被分布式RAID應(yīng)用210 接收時,它們被放置在寫高速緩存器1100。每個這些寫命令1160可以具有指示何時接收到 寫命令的相關(guān)聯(lián)的時間戳。因此,在一個實施例中,寫高速緩存器1100可包括加時間戳的 寫命令1160的隊列。在某個時間點,時間戳標(biāo)記可以由分布式RAID應(yīng)用210發(fā)布。這個 時間戳標(biāo)記可包括時間,并且可被傳送到每個分布式RAID應(yīng)用210。何時發(fā)布時間戳標(biāo)記, 可以以各種各樣的方式被確定,諸如當(dāng)寫高速緩存器1100是某個百分?jǐn)?shù)的充滿度時,或當(dāng) 接收到某個數(shù)目的寫命令1160時,以某個時間間隔,或各種各樣的其它方式。無論如何,這個時間戳標(biāo)記1110將把與每個分布式RAID應(yīng)用210相關(guān)聯(lián)的每個 寫高速緩存器分成至少兩個段封閉的標(biāo)記1150,包括在時間戳標(biāo)記1110之前接收的寫命 令1160 (在本例中,寫命令1160a,1160b,1160c,和1160d),和開放的標(biāo)記1140,包括在時 間戳標(biāo)記1110之后接收的寫命令1160 (在本例中,寫命令1160e,1160f,和1160g)。分布 式RAID應(yīng)用210然后可以評估在封閉的標(biāo)記1150中的該組寫命令1160(在本例中,寫命令1160a,1160b, 1160c,和1160d),以確定這些寫命令1160如何被處理,而同時接收的寫命 令仍舊可被加到開放標(biāo)記1140。相反,因為封閉標(biāo)記1150包括不再改變的寫命令組,分布式RAID應(yīng)用可以互相 (或按其它準(zhǔn)則)評估這組寫命令1160,以確定執(zhí)行的次序(所以,可以重新排序在封閉標(biāo) 記1160中的寫命令),更新奇偶校驗段的方法(例如,如果在封閉標(biāo)記1150中有對應(yīng)于被 使用來產(chǎn)生奇偶校驗的每個數(shù)據(jù)段的寫命令),或作出與寫命令1160的處理相關(guān)聯(lián)的其它 決定。將會指出,因為時間戳標(biāo)記1110可以由在每個數(shù)據(jù)庫110上的任何的分布式RAID 應(yīng)用210由于多種原因被發(fā)布,多個封閉標(biāo)記可以出現(xiàn)在任何時間點,例如,當(dāng)多個時間戳 標(biāo)記1110由分布式RAID應(yīng)用210在寫高速緩存器被任何一個分布式RAID應(yīng)用210評估 的時間之間被發(fā)布時。在考察以上說明后,讀者現(xiàn)在可以明白,數(shù)據(jù)庫110上的分布式RAID應(yīng)用210如 何相互合作地運行,達到虛擬化的存儲和RAID的實現(xiàn)。然而,討論在故障出現(xiàn)后分布式 RAID應(yīng)用210的某些實施例的作用,對于了解某些實施例可能是進一步有幫助的。正如以 上討論的,分布式RAID應(yīng)用210可以知道(例如,已存儲)有故障的數(shù)據(jù)庫(換句話說,數(shù) 據(jù)庫可能有硬件、軟件、通信或其它故障,阻礙或損害數(shù)據(jù)庫110操作或存取數(shù)據(jù)的能力)。 分布式RAID應(yīng)用210能夠考慮這樣的故障同時滿足來自主機102的命令。為了說明,圖11顯示用于在分布式RAID系統(tǒng)中實現(xiàn)讀命令的方法的一個實施例 的流程圖。將會看到,這個方法應(yīng)用到其中結(jié)合一系列卷實現(xiàn)RAID 5的實施例,以及在實 現(xiàn)RAID的其它級別(或沒有級別)的情形下,也可以很好地同樣應(yīng)用到其它實施例。讀命 令可以由主機102通過交換機120被發(fā)送到數(shù)據(jù)庫110,或從另一個數(shù)據(jù)庫110發(fā)送到接收 數(shù)據(jù)庫110。在步驟1110,然后讀命令可以在數(shù)據(jù)庫110處被接收。在數(shù)據(jù)庫110上的分 布式RAID應(yīng)用210可以在步驟1220確定對應(yīng)于在接收的讀命令中標(biāo)注的邏輯地址的數(shù)據(jù) 段,以及在步驟1230,確定數(shù)據(jù)段存儲在哪個數(shù)據(jù)庫110上。如果正在存儲數(shù)據(jù)段的數(shù)據(jù)庫 110是與接收讀命令的數(shù)據(jù)庫110相同的(如在步驟1240確定的),則在步驟1250,可以從 接收數(shù)據(jù)庫110上的數(shù)據(jù)存儲器250的適當(dāng)?shù)谋P252得到請求的數(shù)據(jù),以及在步驟1252,通 過使用所得到的數(shù)據(jù)應(yīng)答接收的讀命令。如果接收數(shù)據(jù)庫110接收到來自主機102的讀命 令,則可以對于主機102作出應(yīng)答,而如果接收數(shù)據(jù)庫110接收到來自另一個數(shù)據(jù)庫110的 讀命令,則可以把應(yīng)答發(fā)送到發(fā)布讀命令的數(shù)據(jù)庫110上的分布式RAID應(yīng)用210。然而,如果在步驟1254,數(shù)據(jù)段被存儲在遠(yuǎn)程數(shù)據(jù)庫110 (與接收命令的數(shù)據(jù)庫不 同的數(shù)據(jù)庫110),則可以確定要在其上存儲要被讀出的數(shù)據(jù)段的遠(yuǎn)程數(shù)據(jù)庫110是否有故 障。如果沒有故障,則讀命令可被發(fā)送到在遠(yuǎn)程數(shù)據(jù)庫Iio處的分布式RAID應(yīng)用210。在 步驟1258,從遠(yuǎn)程數(shù)據(jù)庫110接收到包括請求的數(shù)據(jù)的應(yīng)答后,在步驟1260,可以使用該數(shù) 據(jù)來應(yīng)答所接收的讀命令。然而,如果遠(yuǎn)程數(shù)據(jù)庫110有故障,則在步驟1254,可以確定接收數(shù)據(jù)庫110是否 保持對應(yīng)于與讀命令相關(guān)聯(lián)的數(shù)據(jù)段的奇偶校驗段。如果奇偶校驗段被存儲在接收數(shù)據(jù)庫 110,則可以通過使用在接收數(shù)據(jù)庫110處存儲的奇偶校驗段而得到對應(yīng)于讀命令的數(shù)據(jù) 段。從奇偶校驗數(shù)據(jù)得到數(shù)據(jù)段可以以各種各樣的方式完成,這些方式不再更詳細(xì)地闡述, 包括從其它數(shù)據(jù)庫110得到其它數(shù)據(jù)段(與對應(yīng)于讀命令的數(shù)據(jù)段不同的數(shù)據(jù)段)和通過 在其它數(shù)據(jù)段與奇偶校驗段之間執(zhí)行邏輯運算而得到期望的數(shù)據(jù)段。一旦在步驟1268通過使用奇偶校驗數(shù)據(jù)而得到請求的數(shù)據(jù)段,就在步驟1270對于接收的讀命令作出應(yīng)答。如 果接收數(shù)據(jù)庫110從主機102接收讀命令,則可以對于主機102作出應(yīng)答,而如果接收數(shù)據(jù) 庫110從另一個數(shù)據(jù)庫110接收讀命令,則應(yīng)答可被發(fā)送到發(fā)布讀命令的數(shù)據(jù)庫110上的 分布式RAID應(yīng)用210。如果接收數(shù)據(jù)庫110不是存儲奇偶校驗塊的數(shù)據(jù)庫110,則在步驟1262,讀命令可 被發(fā)送到其上存儲對應(yīng)于在讀命令中標(biāo)注的數(shù)據(jù)段的奇偶校驗段的遠(yuǎn)程數(shù)據(jù)庫110。在步 驟1264從遠(yuǎn)程奇偶校驗數(shù)據(jù)可110接收包括請求的數(shù)據(jù)的應(yīng)答后,在步驟1266,所接收的 讀命令可以通過使用該數(shù)據(jù)被應(yīng)答。移到圖12,圖上顯示用于在分布式RAID系統(tǒng)中實現(xiàn)寫命令的方法的一個實施例 的流程圖。這個寫命令可以由主機102通過交換機120被發(fā)送到數(shù)據(jù)庫110,或從一個數(shù)據(jù) 庫110發(fā)送到另一個數(shù)據(jù)庫110。在步驟1310,然后寫命令可以在接收數(shù)據(jù)庫110處被接 收。在接收數(shù)據(jù)庫110上的分布式RAID應(yīng)用210然后可以在步驟1312,1314和1320確定 對應(yīng)于由寫命令所標(biāo)注的邏輯地址的數(shù)據(jù)段,該數(shù)據(jù)段的位置(例如,哪個數(shù)據(jù)庫110正在 存儲對應(yīng)于該段的數(shù)據(jù)),和對應(yīng)于該數(shù)據(jù)段的奇偶校驗段的位置(例如,哪個數(shù)據(jù)庫110 正在存儲其中存儲從對應(yīng)于該段的數(shù)據(jù)產(chǎn)生的奇偶校驗數(shù)據(jù)的段)。正如以上討論的,數(shù)據(jù) 段和奇偶校驗段的位置可以通過使用被存儲在接收數(shù)據(jù)庫110上的表格組240來確定。然后可以確定其上存儲的數(shù)據(jù)段的數(shù)據(jù)庫110或其上存儲的奇偶校驗段的數(shù)據(jù) 庫110是否有故障。如果這兩個數(shù)據(jù)庫110都沒有故障,則可以在步驟1324由分布式RAID 應(yīng)用210實行正常的寫操作。正常的寫操作先前已參照圖9A和9B被討論過,所以不再討 論。然而,如果這兩個數(shù)據(jù)庫110的任一個數(shù)據(jù)庫有故障,則在步驟1326,可以進行考 慮有故障的數(shù)據(jù)庫110的寫操作。這個寫操作可以基本上相同地類似于參照圖9A和9B描 述的寫操作,除了在寫命令被發(fā)送到數(shù)據(jù)庫110之前確定寫命令要被發(fā)送到的數(shù)據(jù)庫110 是否有故障,以及如果有故障,則不把寫命令發(fā)送到有故障的數(shù)據(jù)庫110。在所有的其它方 面,寫操作基本上是相同的。在考察上述的流程圖后,參照在運行的分布式RAID系統(tǒng)的一個實施例的具體的 例子,可以更好地了解某些實施例的運行。為此,注意點回到圖4,圖上顯示具有五個數(shù)據(jù)庫 110的分布式RAID系統(tǒng)的一個實施例。從第一例開始,假設(shè)主機102b發(fā)布讀命令到數(shù)據(jù)庫 110c,其中讀命令標(biāo)注在數(shù)據(jù)庫IlOa上對應(yīng)于數(shù)據(jù)段“2”402c的邏輯地址。這里,數(shù)據(jù)庫 IlOc上的分布式RAID應(yīng)用210c可以確定接收的讀命令的邏輯地址是指數(shù)據(jù)段“2”402c, 以及數(shù)據(jù)段“2”402c被存儲在數(shù)據(jù)庫IlOa上。分布式RAID應(yīng)用210c然后把對應(yīng)的讀命 令發(fā)送到數(shù)據(jù)庫110a。數(shù)據(jù)庫IlOa上的分布式RAID應(yīng)用210a可以接收這個讀命令,確定讀命令標(biāo)注對 應(yīng)于數(shù)據(jù)段“2”402c的邏輯地址,以及數(shù)據(jù)段“2” 402c位于在其上運行的數(shù)據(jù)庫IlOa上。 分布式RAID應(yīng)用210a然后可以存取數(shù)據(jù)存儲器250a,以便從數(shù)據(jù)段“2” 402c得到請求 的數(shù)據(jù),和把這個得到的數(shù)據(jù)返回到在發(fā)布的數(shù)據(jù)庫IlOc處的分布式RAID應(yīng)用210c。在 數(shù)據(jù)庫IlOc上的分布式RAID應(yīng)用210c可以接收來自數(shù)據(jù)庫IlOa上的分布式RAID應(yīng)用 210a的這個應(yīng)答,并使用來自這個應(yīng)答的數(shù)據(jù),對于從主機102b發(fā)布的原先的讀命令作出 應(yīng)答。
現(xiàn)在假設(shè)主機102b發(fā)布讀命令到數(shù)據(jù)庫110c,其中讀命令標(biāo)注在數(shù)據(jù)庫IlOa上 對應(yīng)于數(shù)據(jù)段“2”402c的邏輯地址,但該數(shù)據(jù)庫IlOa有故障,不再運行。在這種情形下, 在數(shù)據(jù)庫1 IOc上的分布式RAID應(yīng)用210c可以確定接收的讀命令的邏輯地址是指數(shù)據(jù)段 "2"402c,以及數(shù)據(jù)段“2”402c被存儲在數(shù)據(jù)庫IlOa上。另外,在數(shù)據(jù)庫IlOc上的分布式 RAID應(yīng)用210c也可以確定數(shù)據(jù)庫IlOa有故障。因此,分布式RAID應(yīng)用210c可以確定對應(yīng)于數(shù)據(jù)段“2”402c的奇偶校驗段402 j 的位置是數(shù)據(jù)庫110e。分布式RAID應(yīng)用210c然后可以發(fā)送讀命令到數(shù)據(jù)庫110e。在數(shù) 據(jù)庫IlOe上的分布式RAID應(yīng)用210e可以接收這個命令,確定讀命令標(biāo)注對應(yīng)于數(shù)據(jù)段 “2” 402c的邏輯地址,以及對應(yīng)于數(shù)據(jù)段“2” 402c的奇偶校驗段402 j位于在其上執(zhí)行的 數(shù)據(jù)庫110e。分布式RAID應(yīng)用210e然后可以存取數(shù)據(jù)存儲器250e,以便存取奇偶校驗 段402j,和通過使用奇偶校驗段402j得到來自數(shù)據(jù)段“2”402c的請求的數(shù)據(jù)。這個得到 的數(shù)據(jù)可被返回到在發(fā)布的數(shù)據(jù)庫IlOc處的分布式RAID應(yīng)用210c。將會指出,分布式 RAID應(yīng)用210e可能需要其它數(shù)據(jù)來確定對于數(shù)據(jù)段“2”402c的請求的數(shù)據(jù)。因此,分布 式RAID應(yīng)用210e可以確定被使用來結(jié)合數(shù)據(jù)段“2”402c產(chǎn)生奇偶校驗段402j的數(shù)據(jù)段 “0” 402a、數(shù)據(jù)段“1” 402b和數(shù)據(jù)段“3” 402d的位置分別位于數(shù)據(jù)庫IlObUlOd和IlOc0 分布式RAID應(yīng)用210e因此可以通過發(fā)送讀請求到這些數(shù)據(jù)庫IlObUlOd和IlOc而得到 數(shù)據(jù)段“0” 402a、數(shù)據(jù)段“ 1 ” 402b和數(shù)據(jù)段“3” 402d,并結(jié)合奇偶校驗段402 j使用數(shù)據(jù)段 “ 0 ” 402a、數(shù)據(jù)段“ 1 ” 402b和數(shù)據(jù)段“ 3 ” 402d來得到來自數(shù)據(jù)段“ 2 ” 402c的請求的數(shù)據(jù)。在數(shù)據(jù)庫IlOc上的分布式RAID應(yīng)用210c可以接收來自數(shù)據(jù)庫IlOe上的分布式 RAID應(yīng)用210e的應(yīng)答,并使用來自這個應(yīng)答的數(shù)據(jù),以便對于從主機102b發(fā)布的原先的讀 命令作出應(yīng)答。這樣,對應(yīng)于數(shù)據(jù)段的數(shù)據(jù)仍舊可被主機讀出,而不管在分布式RAID系統(tǒng) 中出現(xiàn)故障。繼續(xù)進行寫命令,假設(shè)主機102b發(fā)布寫命令到數(shù)據(jù)庫110c,其中寫命令標(biāo)注在數(shù) 據(jù)庫IlOa上對應(yīng)于數(shù)據(jù)段“2”402c的邏輯地址。這里,在數(shù)據(jù)庫IlOc上的分布式RAID應(yīng) 用210c可以確定接收的寫命令的邏輯地址是指數(shù)據(jù)段“2” 402c以及數(shù)據(jù)段“2”402c被存 儲在數(shù)據(jù)庫IlOa上。而且,分布式RAID應(yīng)用210c可以確定對應(yīng)于數(shù)據(jù)段“2” 402c的奇 偶校驗段402j位于數(shù)據(jù)庫IlOe上。分布式RAID應(yīng)用210c然后可以發(fā)送對應(yīng)的寫命令到 數(shù)據(jù)庫IlOa和110e。在接收到來自分布式RAID應(yīng)用210a和210e的完成通知后,分布式 RAID應(yīng)用210c可以對于原先接收的寫命令作出應(yīng)答。在數(shù)據(jù)庫IlOe上的分布式RAID應(yīng)用210e可以接收它的對應(yīng)的寫命令,確定寫命 令標(biāo)注對應(yīng)于數(shù)據(jù)段“2”402c的邏輯地址,以及對應(yīng)于數(shù)據(jù)段“2”402c的奇偶校驗段402j 位于在其上執(zhí)行的數(shù)據(jù)庫110e。分布式RAID應(yīng)用210e可以把寫命令放置在它的寫高速 緩存器,并把完成通知發(fā)送到數(shù)據(jù)庫110c。分布式RAID應(yīng)用210e然后可以存取數(shù)據(jù)存儲 器250e,以便存取奇偶校驗段402j,和通過使用在接收的寫命令中標(biāo)注的數(shù)據(jù)來更新奇偶 校驗段402j。在數(shù)據(jù)庫110a上的分布式RAID應(yīng)用210a可以接收它的對應(yīng)的寫命令,確定寫命 令標(biāo)注對應(yīng)于數(shù)據(jù)段“2” 402c的邏輯地址,以及數(shù)據(jù)段“2” 402c位于在其上執(zhí)行的數(shù)據(jù)庫 110a。分布式RAID應(yīng)用210a可以把寫命令放置在它的寫高速緩存器,并把完成通知發(fā)送 到數(shù)據(jù)庫110c。分布式RAID應(yīng)用210a然后可以存取數(shù)據(jù)存儲器250a,以便通過使用在接收的寫命令中標(biāo)注的數(shù)據(jù)來更新數(shù)據(jù)段“2”402c?,F(xiàn)在再次假設(shè)主機102b發(fā)布寫命令到數(shù)據(jù)庫110c,其中寫命令標(biāo)注在數(shù)據(jù)庫 IlOa上對應(yīng)于數(shù)據(jù)段“2”402c的邏輯地址,但該數(shù)據(jù)庫IlOa有故障,不再運行。在這種情 形下,在數(shù)據(jù)庫IlOc上的分布式RAID應(yīng)用210c可以確定接收的寫命令的邏輯地址是指數(shù) 據(jù)段“2”402c以及數(shù)據(jù)段“2”402c被存儲在數(shù)據(jù)庫IlOa上。另外,在數(shù)據(jù)庫IlOc上的分 布式RAID應(yīng)用210c也可以確定數(shù)據(jù)庫IlOa有故障。而且,分布式RAID應(yīng)用210c可以確 定對應(yīng)于數(shù)據(jù)段“2”402c的奇偶校驗段402j位于數(shù)據(jù)庫110e。分布式RAID應(yīng)用210c然 后可以發(fā)送對應(yīng)的寫命令到數(shù)據(jù)庫110e。在接收到來自分布式RAID應(yīng)用210e的完成通知 后,分布式RAID應(yīng)用210c可以對于原先接收的寫命令作出應(yīng)答。數(shù)據(jù)庫IlOe上的分布式RAID應(yīng)用210e可以接收對應(yīng)的寫命令,確定寫命令標(biāo)注 對應(yīng)于數(shù)據(jù)段“2” 402c的邏輯地址,以及對應(yīng)于數(shù)據(jù)段“2” 402c的奇偶校驗段402j位于 在其上執(zhí)行的數(shù)據(jù)庫IlOe上。分布式RAID應(yīng)用210e可以把寫命令放置在它的寫高速緩 存器,并把完成通知發(fā)送到數(shù)據(jù)庫110c。分布式RAID應(yīng)用210e然后可以存取數(shù)據(jù)存儲器 250e,以便存取奇偶校驗段402j,和通過使用在接收的寫命令中標(biāo)注的數(shù)據(jù)來更新奇偶校 驗段402j。這樣,對應(yīng)于數(shù)據(jù)段的數(shù)據(jù)仍舊可以由主機寫入,而不管在分布式RAID系統(tǒng)中 故障的出現(xiàn)。在以上的技術(shù)說明書中,本發(fā)明是參照具體的實施例描述的。然而,本領(lǐng)域技術(shù)人 員將會看到,可以作出各種不同的修改和改變,而不背離如在所附權(quán)利要求中闡述的本發(fā) 明的范圍。因此,技術(shù)說明書和附圖應(yīng)當(dāng)在說明的意義而不是在限制的意義下考慮的,以及 所有的這樣的修改意在被包括在本發(fā)明的范圍內(nèi)。在上面對于具體的實施例描述了益處、其它優(yōu)點和對于問題的解決方案。然而,益 處、優(yōu)點和對于問題的解決方案以及可以使得任何益處、優(yōu)點或解決方案出現(xiàn)或變?yōu)楦?確的任何部件,不應(yīng)當(dāng)被看作為任何或所有的權(quán)利要求的關(guān)鍵的、需要的、或本質(zhì)的特性或 部件。
權(quán)利要求
1.一種用于實現(xiàn)分布式RAID的系統(tǒng),包括 一個或多個主機;多個數(shù)據(jù)庫計算機,每個數(shù)據(jù)庫被耦合到每個主機和另外的多個數(shù)據(jù)庫的每個數(shù)據(jù) 庫,每個數(shù)據(jù)庫包括 處理器; 數(shù)據(jù)存儲器;計算機可讀的介質(zhì),包括可執(zhí)行以下步驟的指令從一個或多個主機的第一主機接收對應(yīng)于卷的第一段的命令,其中卷和對應(yīng)于結(jié)合 卷被實現(xiàn)的RAID級別的冗余性數(shù)據(jù)被存儲在多個數(shù)據(jù)庫的每個數(shù)據(jù)庫,以使得對于卷的 每個段,包括與該段相關(guān)聯(lián)的冗余性數(shù)據(jù)的對應(yīng)的冗余性段不處在與所述段相同的數(shù)據(jù)庫 上;確定多個數(shù)據(jù)庫的第一數(shù)據(jù)庫,其中第一數(shù)據(jù)庫對應(yīng)于第一段;以及 如果第一數(shù)據(jù)庫是接收命令的數(shù)據(jù)庫,則對于第一段執(zhí)行第一命令,而如果不是,則把 第一命令轉(zhuǎn)發(fā)到第一數(shù)據(jù)庫。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中卷的每個段對應(yīng)于多個數(shù)據(jù)庫的一個數(shù)據(jù)庫,每個段 按照多個數(shù)據(jù)庫的排列被分配到多個數(shù)據(jù)庫的一個數(shù)據(jù)庫,以及每個冗余性段被分配到同 對應(yīng)于與該冗余性段相關(guān)聯(lián)的卷的任何段的多個數(shù)據(jù)庫的每個數(shù)據(jù)庫不同的多個數(shù)據(jù)庫 的一個數(shù)據(jù)庫。
3.根據(jù)權(quán)利要求2的系統(tǒng),其中計算機指令還可執(zhí)行以下步驟確定第一命令是否為 寫命令,以及如果第一命令是寫命令,則確定多個數(shù)據(jù)庫的第二數(shù)據(jù)庫,其中第二數(shù)據(jù)庫對 應(yīng)于與第一段相關(guān)聯(lián)的第一冗余性段,以及如果第二數(shù)據(jù)庫是接收所述命令的數(shù)據(jù)庫,則 對于第一冗余性段執(zhí)行第一命令,而如果不是,則把第一命令轉(zhuǎn)發(fā)到第二數(shù)據(jù)庫。
4.根據(jù)權(quán)利要求3的系統(tǒng),其中確定第一數(shù)據(jù)庫和確定第二數(shù)據(jù)庫包括存取在數(shù)據(jù)存 儲器中的全局表格,全局表格包括數(shù)據(jù)庫的排列和RAID級別。
5.一種用于在具有處理器的計算設(shè)備上實現(xiàn)分布式RAID的方法,包括在多個數(shù)據(jù)庫上建立卷,其中卷包括段組,所述段組被存儲在多個數(shù)據(jù)庫上; 結(jié)合所述卷實現(xiàn)RAID級別,其中實現(xiàn)RAID級別包括存儲一組冗余性段,每個冗余性段 對應(yīng)于所述段組的一個或多個段,以使得每個冗余性段不與所述段組的對應(yīng)的一個或多個 段處在相同的數(shù)據(jù)庫上;接收對應(yīng)于卷的所述段組的第一段的命令;確定多個數(shù)據(jù)庫的第一數(shù)據(jù)庫,其中第一數(shù)據(jù)庫對應(yīng)于第一段;以及對于第一段執(zhí)行第一命令,其中第一命令在第一數(shù)據(jù)庫上被執(zhí)行。
6.根據(jù)權(quán)利要求5的方法,其中卷的段組的每個段對應(yīng)于多個數(shù)據(jù)庫的一個數(shù)據(jù)庫, 每個段按照多個數(shù)據(jù)庫的排列被分配到數(shù)據(jù)庫,以及所述冗余性段組的每個冗余性段被分 配到同對應(yīng)于與該冗余性段的一個或多個段的任何段相對應(yīng)的多個數(shù)據(jù)庫的每個數(shù)據(jù)庫 不同的數(shù)據(jù)庫。
7.根據(jù)權(quán)利要求6的方法,還包括確定第一命令是否為寫命令,以及如果第一命令是 寫命令,則確定多個數(shù)據(jù)庫的第二數(shù)據(jù)庫,其中第二數(shù)據(jù)庫對應(yīng)于與第一段相關(guān)聯(lián)的第一 冗余性段,以及對于第一冗余性段執(zhí)行第一命令,其中第一命令在第二數(shù)據(jù)庫上被執(zhí)行。
8.根據(jù)權(quán)利要求7的方法,其中確定第一數(shù)據(jù)庫和確定第二數(shù)據(jù)庫包括存取全局表 格,全局表格包括數(shù)據(jù)庫的排列和RAID級別。
9.一種用于在一個或多個數(shù)據(jù)庫計算機上實現(xiàn)分布式RAID的方法,每個數(shù)據(jù)庫計算 機被耦合到一個或多個主機和另外的多個數(shù)據(jù)庫的每個數(shù)據(jù)庫,所述方法包括從主機接收對應(yīng)于卷的第一段的命令,其中卷和對應(yīng)于結(jié)合卷被實現(xiàn)的RAID級別的 冗余性數(shù)據(jù)被存儲在多個數(shù)據(jù)庫的每個數(shù)據(jù)庫,以使得對于卷的每個段,包括與該段相關(guān) 聯(lián)的冗余性數(shù)據(jù)的對應(yīng)的冗余性段不與所述段處在相同的數(shù)據(jù)庫上;確定多個數(shù)據(jù)庫的第一數(shù)據(jù)庫,其中第一數(shù)據(jù)庫對應(yīng)于第一段;對于第一段執(zhí)行第一命令,其中第一命令在第一數(shù)據(jù)庫上被執(zhí)行。
10.根據(jù)權(quán)利要求9的方法,其中卷的每個段對應(yīng)于多個數(shù)據(jù)庫的一個數(shù)據(jù)庫,以及每 個段按照多個數(shù)據(jù)庫的排列被分配到數(shù)據(jù)庫,以及每個冗余性段被分配到同對應(yīng)于與該冗 余性段相關(guān)聯(lián)的卷的任何段的多個數(shù)據(jù)庫的每個數(shù)據(jù)庫不同的數(shù)據(jù)庫。
11.根據(jù)權(quán)利要求10的方法,還包括確定第一命令是否為寫命令,以及如果第一命令 是寫命令,則確定多個數(shù)據(jù)庫的第二數(shù)據(jù)庫,其中第二數(shù)據(jù)庫對應(yīng)于與第一段相關(guān)聯(lián)的第 一冗余性段,以及對于冗余性段執(zhí)行第一命令,其中第一命令在第二數(shù)據(jù)庫上被執(zhí)行。
12.根據(jù)權(quán)利要求11的方法,其中確定第一數(shù)據(jù)庫和確定第二數(shù)據(jù)庫包括存取全局表 格,全局表格包括數(shù)據(jù)庫的排列和RAID級別。
13.一種計算機可讀的介質(zhì),包括用于實現(xiàn)分布式RAID的計算機可執(zhí)行的指令,計算 機指令可執(zhí)行以下步驟在多個數(shù)據(jù)庫上建立卷,其中卷包括段組,所述段組被存儲在多個數(shù)據(jù)庫上;結(jié)合所述卷實現(xiàn)RAID級別,其中實現(xiàn)RAID級別包括存儲一組冗余性段,每個冗余性段 對應(yīng)于所述段組的一個或多個段,以使得每個冗余性段不與所述段組的一個或多個對應(yīng)的 段處在相同的數(shù)據(jù)庫上;接收對應(yīng)于卷的所述段組的第一段的命令;確定多個數(shù)據(jù)庫的第一數(shù)據(jù)庫,其中第一數(shù)據(jù)庫對應(yīng)于第一段;以及對于第一段執(zhí)行第一命令,其中第一命令在第一數(shù)據(jù)庫上被執(zhí)行。
14.根據(jù)權(quán)利要求13的計算機可讀的介質(zhì),其中卷的所述段組的每個段對應(yīng)于多個數(shù) 據(jù)庫的一個數(shù)據(jù)庫,并且每個段按照多個數(shù)據(jù)庫的排列被分配到數(shù)據(jù)庫,以及所述冗余性 段組的每個冗余性段被分配到同對應(yīng)于與該冗余性段的一個或多個段的任何段相對應(yīng)的 多個數(shù)據(jù)庫的每個數(shù)據(jù)庫不同的數(shù)據(jù)庫。
15.根據(jù)權(quán)利要求14的計算機可讀的介質(zhì),其中指令還可執(zhí)行以下步驟確定第一命 令是否為寫命令,以及如果第一命令是寫命令,則確定多個數(shù)據(jù)庫的第二數(shù)據(jù)庫,其中第二 數(shù)據(jù)庫對應(yīng)于與第一段相關(guān)聯(lián)的第一冗余性段,以及對于第一冗余性段執(zhí)行第一命令,其 中第一命令在第二數(shù)據(jù)庫上被執(zhí)行。
16.根據(jù)權(quán)利要求15的計算機可讀的介質(zhì),其中確定第一數(shù)據(jù)庫和確定第二數(shù)據(jù)庫包 括存取全局表格,全局表格包括數(shù)據(jù)庫的排列和RAID級別。
17.一種計算機可讀的介質(zhì),包括用于由多個數(shù)據(jù)庫計算機實現(xiàn)分布式RAID的計算機 可執(zhí)行的指令,所述計算機指令可執(zhí)行以下步驟從主機接收對應(yīng)于卷的第一段的命令,其中卷和對應(yīng)于結(jié)合卷被實現(xiàn)的RAID級別的冗余性數(shù)據(jù)被存儲在多個數(shù)據(jù)庫的每個數(shù)據(jù)庫上,以使得對于卷的每個段,包括與該段相 關(guān)聯(lián)的冗余性數(shù)據(jù)的對應(yīng)的冗余性段不與所述段處在相同的數(shù)據(jù)庫上;確定多個數(shù)據(jù)庫的第一數(shù)據(jù)庫,其中第一數(shù)據(jù)庫對應(yīng)于第一段;對于第一段執(zhí)行第一命令,其中第一命令在第一數(shù)據(jù)庫上被執(zhí)行。
18.根據(jù)權(quán)利要求17的計算機可讀的介質(zhì),其中卷的每個段對應(yīng)于多個數(shù)據(jù)庫的一個 數(shù)據(jù)庫,每個段按照多個數(shù)據(jù)庫的排列被分配到數(shù)據(jù)庫,以及每個冗余性段被分配到同對 應(yīng)于與該冗余性段相關(guān)聯(lián)的卷的任何段的多個數(shù)據(jù)庫的每個數(shù)據(jù)庫不同的數(shù)據(jù)庫。
19.根據(jù)權(quán)利要求18的計算機可讀的介質(zhì),其中指令還可執(zhí)行以下步驟確定第一命 令是否為寫命令,以及如果第一命令是寫命令,則確定多個數(shù)據(jù)庫的第二數(shù)據(jù)庫,其中第二 數(shù)據(jù)庫對應(yīng)于與第一段相關(guān)聯(lián)的第一冗余性段,以及對于冗余性段執(zhí)行第一命令,其中第 一命令在第二數(shù)據(jù)庫上被執(zhí)行。
20.根據(jù)權(quán)利要求19的計算機可讀的介質(zhì),其中確定第一數(shù)據(jù)庫和確定第二數(shù)據(jù)庫包 括存取全局表格,全局表格包括數(shù)據(jù)庫的排列和RAID級別。
全文摘要
所公開的系統(tǒng)和方法的實施例提供包括一組數(shù)據(jù)庫的分布式RAID系統(tǒng)。更具體地,在分布式RAID系統(tǒng)的某些實施例中,每個數(shù)據(jù)庫具有一組相關(guān)聯(lián)的存儲介質(zhì),并且執(zhí)行類似的分布式RAID應(yīng)用。在每個數(shù)據(jù)庫上的分布式RAID應(yīng)用在它們之間進行協(xié)調(diào),以便分布和控制與結(jié)合被存儲在數(shù)據(jù)庫的相關(guān)聯(lián)的存儲介質(zhì)上的數(shù)據(jù)實現(xiàn)RAID的級別相關(guān)聯(lián)的數(shù)據(jù)流。
文檔編號G06F11/00GK102099792SQ200980127589
公開日2011年6月15日 申請日期2009年6月5日 優(yōu)先權(quán)日2008年6月6日
發(fā)明者G·J·佩萊格里諾, R·A·卡里森, W·C·蓋洛韋, 譚俊生 申請人:樞軸3公司