專利名稱:用于結(jié)合raid執(zhí)行應(yīng)用的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的涉及存儲設(shè)備的使用。更具體地,本發(fā)明的實施例涉及在存儲設(shè)備上實施RAID和可以利用這個RAID功能的應(yīng)用。甚至更具體地,本發(fā)明的某些實施例涉及在同一組計算設(shè)備上實施分布式RAID和一個或多個應(yīng)用。
背景技術(shù):
數(shù)據(jù)代表許多實體的重要的資產(chǎn)。因此,數(shù)據(jù)丟失,不管是偶然的還是由于惡意的活動造成的,都會在人力浪費、來自客戶的信譽的丟失、時間的損失和潛在的法律義務(wù)方面代價昂貴。為了確保用于商業(yè)、法律的或其它目的的數(shù)據(jù)的適當(dāng)?shù)谋Wo(hù),許多實體可能希望通過使用各種各樣的技術(shù),包括數(shù)據(jù)存儲、冗余性、保密性等等,來保護(hù)它們的數(shù)據(jù)。然而, 這些技術(shù)可能與由被使用來處理或存儲這個數(shù)據(jù)的計算設(shè)備的狀態(tài)或配置所施加的其它競爭約束條件或要求沖突。用于處理這些緊張狀態(tài)的一個方法是實施冗余磁盤陣列(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é)合這樣的通信實施某個RAID級別。這些RAID級別可被設(shè)計成達(dá)到在各種各樣的折衷,諸如可靠度、容量、速度等等之間的某個期望的平衡。例如,RAID(級別)0把數(shù)據(jù)分布在幾個盤上,以使得它給出提高的速度和幾乎利用盤的全部容量,但如果盤發(fā)生故障,則在盤上的所有的數(shù)據(jù)將丟失;RAID (級別)1使用兩個盤(或更多的盤),每個盤存儲相同的數(shù)據(jù),以使得只要一個盤不出問題數(shù)據(jù)就不丟失。陣列的全部容量基本上是單個盤的容量,以及RAID(級別)5組合三個或更多的盤,以使得它保護(hù)數(shù)據(jù)免得遭受何一個盤的丟失;陣列的存儲容量被減小一個盤。在許多情形下,在給定現(xiàn)代計算設(shè)備的計算功率后,其在實施利用RAID系統(tǒng)的主機的計算設(shè)備與實施RAID系統(tǒng)本身的計算設(shè)備之間可能存在一定的冗余量。除了物理部件的冗余性以外,主機和RAID系統(tǒng)在運行期間也會消耗許多相同的資源。因為二者都可能需要功率、冷卻、機架空間等等。而且,因為主機和RAID系統(tǒng)沿單獨的路徑通信以便實施 RAID系統(tǒng),可能需要利用某些網(wǎng)絡(luò)部件和路徑。這種情形會引起許多不希望的問題,包括增加的硬件花費、通信瓶頸、需要大量物理空間來包含主機和RAID系統(tǒng)等等。因此,希望大大地改善這些問題
發(fā)明內(nèi)容
給出了允許在實施RAID系統(tǒng)的同一組計算設(shè)備上執(zhí)行各種不同的應(yīng)用的系統(tǒng)和方法的實施例。具體地,在一個實施例中,為了允許在同一組計算設(shè)備上結(jié)合其它應(yīng)用執(zhí)行 RAID應(yīng)用,可以在數(shù)據(jù)庫上執(zhí)行虛擬化層。通過使用這個虛擬化層,可以執(zhí)行一組期望的應(yīng)用程序,其中對于在虛擬化層上執(zhí)行的應(yīng)用的每個實例的上下文可被存儲在卷(volume) 中,被保持來利用RAID系統(tǒng)。這些虛擬機(例如,被存儲在卷中的應(yīng)用和任何可應(yīng)用的上下文信息)然后可以結(jié)合在數(shù)據(jù)庫上的虛擬化層被執(zhí)行。這樣,可以利用一組計算設(shè)備來實施RAID系統(tǒng)和執(zhí)行利用這樣的分布式RAID系統(tǒng)的應(yīng)用(這只是其中之一)。這些類型的應(yīng)用,例如,可包括視頻監(jiān)視應(yīng)用、游戲、零售或銀行應(yīng)用、視頻流應(yīng)用、內(nèi)容操控應(yīng)用等等。通過結(jié)合實施RAID系統(tǒng)的計算設(shè)備執(zhí)行這些應(yīng)用,可以得到許多優(yōu)點。首先和最重要的,可以達(dá)到資源的聯(lián)合,減小與物理資源和安裝、配置、利用和保持這樣的資源所需要的資源相關(guān)聯(lián)的花費,如可以需要較少的空間、功率、冷卻、備用部件等等。而且,在實施應(yīng)用和分布式RAID系統(tǒng)時可以達(dá)到更大的速度,因為和這些應(yīng)用以及分布式RAID系統(tǒng)的使用結(jié)合發(fā)生的通信可以較少或可以更快地進(jìn)行。另外,故障容忍度水平可被引入到配置中,其中應(yīng)用的實例作為虛擬機被保存,它們在實施分布式RAID系統(tǒng)的數(shù)據(jù)庫的虛擬化層上被執(zhí)行,正如在更詳細(xì)地考察本申請的其余部分后將會看到的。概略地,這個故障容忍度水平可能起源于這樣的事實,每個虛擬機 (例如,執(zhí)行可以在虛擬化層上被執(zhí)行的應(yīng)用的實例)被存儲在分布式RAID系統(tǒng)的卷中,可能意味著,在數(shù)據(jù)庫之一出現(xiàn)故障的情形下虛擬機可被恢復(fù)。另外,故障容忍度可被引入, 因為虛擬機可以在任何數(shù)據(jù)庫的虛擬化層上被執(zhí)行,因此即使在單個數(shù)據(jù)庫出現(xiàn)故障時, 每個虛擬機仍舊可被執(zhí)行。本發(fā)明的這些和其它方面,在結(jié)合以下的描述和附圖被考慮時將更好地被意識到和理解。以下的描述,雖然指示本發(fā)明的各種實施例和本發(fā)明的許多具體的細(xì)節(jié),但是作為說明而不是限制被給出的。在本發(fā)明的范圍內(nèi)可以作出許多替換、修改、添加、或重新安排, 以及本發(fā)明包括所有的這樣的替換、修改、添加、或重新安排。
伴隨本技術(shù)說明書并作為技術(shù)說明書的一部分的附圖被包括來描繪本發(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是數(shù)據(jù)庫的一個實施例的流程圖。圖4A是用于數(shù)據(jù)庫的結(jié)構(gòu)體系的一個實施例的框圖。圖4B是用于數(shù)據(jù)庫的結(jié)構(gòu)體系的一個實施例的框圖。圖4C是用于數(shù)據(jù)庫的結(jié)構(gòu)體系的一個實施例的框圖。圖5是利用在其上可以執(zhí)行其它應(yīng)用的分布式RAID系統(tǒng)的結(jié)構(gòu)體系的一個實施例的框圖。
圖6是用于在分布式RAID系統(tǒng)上執(zhí)行應(yīng)用的一個實施例的流程圖。圖7是描繪結(jié)合分布式RAID系統(tǒng)的虛擬機的存儲的一個實施例的框圖。
具體實施例方式本發(fā)明及其各種特性和有利的細(xì)節(jié),將參照在附圖上顯示的和在以下的說明中詳細(xì)闡述的非限制性實施例更全面地進(jìn)行說明。熟知的開始資料、處理技術(shù)、部件和設(shè)備的描述被省略,以免用細(xì)節(jié)不必要地遮蔽本發(fā)明。然而,應(yīng)當(dāng)看到,詳細(xì)說明和具體的例子,雖然指示本發(fā)明的優(yōu)選實施例,但是作為說明而不是限制被給出的。在本發(fā)明概念的精神和/ 或范圍內(nèi)的各種替換、修改、添加、或重新安排,對于閱讀本公開內(nèi)容的本領(lǐng)域技術(shù)人員,將是顯而易見。這里所討論的實施例可以以適當(dāng)?shù)挠嬎銠C可執(zhí)行的指令被實施,這些指令可以放置在計算機可讀的介質(zhì)(例如,硬盤驅(qū)動器)、硬件電路等等,或它們的任何組合。在討論具體的實施例之前,這里先描述用于實施某些實施例的硬件結(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í)行的指令被實施。計算機可執(zhí)行的指令可以作為軟件代碼部件或模塊被存儲在一個或多個計算機可讀的介質(zhì)上(諸如,非易失性存儲器、易失性存儲器、DASD陣列、磁帶、軟盤、硬盤驅(qū)動器、 光學(xué)存儲設(shè)備等等、或任何其它適當(dāng)?shù)挠嬎銠C可讀的介質(zhì)或存儲設(shè)備)。在一個實施例中, 計算機可執(zhí)行的指令可包括成行的、匯編的C++、Java, HTML、或任何其它編程或腳本代碼。另外,所公開的實施例的功能可以在一個計算機上被實施,或在網(wǎng)絡(luò)上在兩個或更多個計算機之間被共享/分布。在實施本實施例的計算機之間的通信可以通過使用任何的電子的、光學(xué)的、射頻的信號、或其它適當(dāng)?shù)姆椒ê妥駨囊阎木W(wǎng)絡(luò)協(xié)議的通信工具而被完成。正如這里使用的,術(shù)語“包括”、“具有”、或它們的其它變例,意在覆蓋非排他的包括。例如,包括一系列單元的過程、處理、物體、設(shè)備不一定僅僅限于那些單元,而是可包括沒有明顯列出的,或?qū)τ谶@樣的過程、處理、物體、設(shè)備來說是固有的其它單元。而且,除非明示的相反表示,“或”是指“包括的或”,而不是“排他的或”。例如,條件A或B由以下的任一項被滿足:A是正確(或存在)和B是錯誤(或不存在),A是錯誤(或不存在)和B是正確(或存在),以及A和B都是正確(或存在)。另外,這里給出的例子或說明無論如何不看作為對于它們被利用的任何術(shù)語的約束、限制、極限或表達(dá)它的定義。而是,這些例子或說明被看作為是對于一個特定的實施例描述的,以及僅僅作為說明性的。本領(lǐng)域技術(shù)人員將意識到,這些例子或說明利用的任何術(shù)語將包括在本說明書的此處或他處可能給出或沒有給出的其他實施例,并且所有的這樣的實施例意在被包括在該術(shù)語的范圍內(nèi)。指定這樣的非限制性例子和說明的語言包括,但不限于“例如”、“舉例”、“在一個實施例中”。本申請涉及到由feilloway等在2009年6月5日提交的、題目為“Method and System for Distributed RAID Implementation” 的美國專利申請 No. 12/479,319 ;由 fellIoway 等在 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 DistributingCommands to Targets”的美國專利申請No. 12/479,403 ;由fellloway等在2009年6月5日提交的、題目為“Method and System forlnitializing Storage in a Storage System,,的美國專利申請 No. 12/479,377 ;由 Galloway 等在 2009 年 6 月 5 日提交的、題目為“Method and System for Rebuilding Data in a Distributed RAIDSystem” 的美國專利申請 No. 12/479,434 ; 和由 Galloway 等在 2009 年 6 月 5 日提交的、題目為"Method and System for Placement of Data on aStorage Device” 的美國專利申請 No. 12/479,394 ;和由 Galloway 等提交的、題目為“Method and System for Protecting Against MultipleFailures in a RAID System”的專利申請No. 12/490. 916 :所有這@專利申請在此通過引用并入本文?,F(xiàn)在,具體地對于數(shù)據(jù)存儲的進(jìn)行上下文的概略的討論是有幫助的。正如以上討論的,RAID系統(tǒng)在多個硬盤驅(qū)動器(或其它類型的存儲介質(zhì)),統(tǒng)稱為陣列上劃分和復(fù)制數(shù)據(jù),以便通過使用這些RAID系統(tǒng)用于存儲而增加可靠度,和在某些情形下,提高計算設(shè)備 (稱為主機)的吞吐量。然而,RAID的當(dāng)前的實施方案可能有各種各樣的問題。具體地,這些問題中的某些問題是來自于由這些RAID系統(tǒng)的結(jié)構(gòu)體系所施加的限制,諸如以下的事實在許多實例中與RAID系統(tǒng)的所有的通信必須尋址到控制和管理 RAID系統(tǒng)的單個服務(wù)器。這個結(jié)構(gòu)體系可以導(dǎo)致在包括利用RAID系統(tǒng)的主機和被使用來實施RAID系統(tǒng)的計算設(shè)備的物理部件中的冗余性。除了物理部件的冗余性以外,主機和 RAID系統(tǒng)在運行時還會消耗許多相同的資源。因為主機和RAID系統(tǒng)都可能需要功率、冷卻、機架空間等等。這種情形會引起許多不希望的問題,包括增加的硬件花費、通信瓶頸、需要大量物理空間來包含主機和RAID系統(tǒng)等等。針對特定的RAID系統(tǒng)描述本發(fā)明的某些實施例將是有幫助的,然而,應(yīng)當(dāng)指出, 通過其描述某些實施例的特定的RAID系統(tǒng)沒有對于本發(fā)明的其它實施例的可應(yīng)用性或使用施加限制,以及這樣的實施例可以在包括其它類型的RAID系統(tǒng)或一起包括其它的存儲系統(tǒng)的任何的各種各樣的上下文中被有用地利用。通過以上所述的,某些實施例可以相對于分布式RAID系統(tǒng)被有用地描述,其中具有相關(guān)的RAID級別的卷可以通過使用分布式RAID系統(tǒng)被創(chuàng)建。然后每個分布式RAID應(yīng)用可以協(xié)調(diào)與該卷的數(shù)據(jù)相關(guān)聯(lián)的操作,以使得與該卷相關(guān)聯(lián)的數(shù)據(jù)或結(jié)合該卷的期望的 RAID級別的實施可被存儲在分布式RAID系統(tǒng)的多個數(shù)據(jù)庫。通過利用在多個數(shù)據(jù)庫的每個上執(zhí)行的類似的分布式RAID應(yīng)用,將卷的數(shù)據(jù)以及和RAID的實施相關(guān)聯(lián)的數(shù)據(jù)存儲在該多個數(shù)據(jù)庫中,結(jié)合卷來協(xié)調(diào)RAID級別的實施,來實現(xiàn)多個優(yōu)點。即,不同的存儲卷可以被分配,一個或多個卷結(jié)合不同的RAID級別被實施。而且,由于在數(shù)據(jù)庫上存儲的協(xié)調(diào)和RAID的實施是通過使用基本上相同的分布式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”)、 先進(jìn)技術(shù)附件(“ΑΤΑ”)、串行ATA( “SATA”)、或在技術(shù)上已知的其它協(xié)議,而被完成。而且,通信耦合可以結(jié)合諸如互聯(lián)網(wǎng)、LAN、WAN、無線網(wǎng)絡(luò)或在技術(shù)上已知的任何其它通信網(wǎng)絡(luò)那樣的通信網(wǎng)絡(luò)被實施。在一個實施例中,然后,通過使用諸如iSCSI、SCSI等命令協(xié)議,主機102可以與數(shù)據(jù)庫110通信,以便操控數(shù)據(jù)。更具體地,每個數(shù)據(jù)庫110包括存儲介質(zhì)(正如將在后面更詳細(xì)地說明的)。總起來說,在數(shù)據(jù)庫Iio中的存儲介質(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é)合該卷被實施的RAID的級別。與該卷相關(guān)聯(lián)的數(shù)據(jù)和與該卷相關(guān)聯(lián)的期望的級別RAID的實施被存儲在數(shù)據(jù)庫110。主機102然后可以通過使用對應(yīng)于該卷或該卷的一部分的邏輯地址而存取這個卷。這樣,主機102可以利用所創(chuàng)建的存儲的卷,以及可以結(jié)合這些卷達(dá)到對于主機102來說基本上覺察不到的故障容忍度。通過參考圖2A可以更好地理解存儲的虛擬化和利用數(shù)據(jù)庫110的RAID的實施, 在圖2A上顯示用來實施分布式RAID的數(shù)據(jù)庫110的計算機的一個實施例的框圖。這里, 數(shù)據(jù)庫110包括數(shù)據(jù)存儲器(store) 250和用來執(zhí)行被存儲在計算機可讀的介質(zhì)中的指令的處理器202,其中指令用來實施分布式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é)議運行的盤252,諸如SATA、PATA、FC等等。其中每個盤252可以,或可能不一定,具有相等的大小。 在每個數(shù)據(jù)庫110上執(zhí)行的分布式RAID應(yīng)用210可以允許通過使用在數(shù)據(jù)庫110上的數(shù)據(jù)存儲器250而分配和使用卷,以及通過利用在數(shù)據(jù)庫110之間共享的一組全局表格M0、 一組本地表格245和寫高速緩存器260而結(jié)合這些卷實施RAID,所有這些表格可被存儲在存儲器230(它可以是數(shù)據(jù)存儲器250或在一起的另外的存儲器)。
圖2B顯示可被使用來實施用來實施分布式RAID的數(shù)據(jù)庫110計算機的硬件結(jié)構(gòu)體系的一個實施例的框圖。在這個結(jié)構(gòu)體系例子中,數(shù)據(jù)庫110包括一個或多個處理器 202,其可以一起附著到htel x86結(jié)構(gòu)體系或某個其它結(jié)構(gòu)體系,以及存儲器230,通過總線被耦合到I/O控制器中心212,其在一個實施例中可以是南橋芯片等等。I/O控制器中心212又可以被耦合到和控制諸如PCI-X總線、串行總線等等那樣的總線272。被耦合到這個總線272的是一個或多個盤控制器沈2,諸如,例如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é)議進(jìn)行接口的一個或多個網(wǎng)絡(luò)接口卡,或這些網(wǎng)絡(luò)接口 282可以是某些其它類型的網(wǎng)絡(luò)接口,以使得數(shù)據(jù)庫110可以通過這些網(wǎng)絡(luò)接口 282與交換機120通信。正好,在某些實施例中,被使用來實施數(shù)據(jù)庫110的計算設(shè)備的部件可具有(或可被構(gòu)建成具有)比用于執(zhí)行分布式RAID應(yīng)用210所需要的計算功率更多的計算功率。在許多情形下,然后,被使用來實施數(shù)據(jù)庫110的計算設(shè)備(例如,處理器、高速緩存器、存儲器、電路板等等)當(dāng)被使用來僅僅執(zhí)行分布式RAID應(yīng)用210時可能具有未利用的計算功率。然后,所期望的是,利用這個過量的計算功率來執(zhí)行將在主機102上執(zhí)行并利用分布式 RAID應(yīng)用210的應(yīng)用。然而,這可能是成問題的,因為在許多情形下,可能有各種各樣的這樣的應(yīng)用在不同的主機102上執(zhí)行,其中每個主機可以執(zhí)行不同的操作系統(tǒng),應(yīng)用可被配置成僅僅在一種類型的操作系統(tǒng)上執(zhí)行,等等。所以,現(xiàn)在注意點被引導(dǎo)到允許可利用分布式RAID系統(tǒng)的各種應(yīng)用(或其它類型的應(yīng)用)在實施該分布式RAID系統(tǒng)的同一組計算設(shè)備上執(zhí)行的本發(fā)明的系統(tǒng)和方法。為了允許在同一組計算設(shè)備上結(jié)合其它應(yīng)用執(zhí)行分布式RAID應(yīng)用,可以在數(shù)據(jù)庫上執(zhí)行虛擬化層,通過使用這個虛擬化層可以執(zhí)行一組期望的應(yīng)用程序,其中對于在虛擬化層上執(zhí)行的應(yīng)用的每個實例的上下文可被存儲在卷中,被保持來利用分布式RAID系統(tǒng)。這些虛擬機(例如,被存儲在卷中的應(yīng)用和任何可應(yīng)用的上下文信息)然后可以結(jié)合在任一個數(shù)據(jù)庫上的虛擬化層執(zhí)行。這樣,可以利用一組計算設(shè)備來實施分布式RAID系統(tǒng)和執(zhí)行利用這樣的分布式RAID系統(tǒng)(這只是其中之一)的應(yīng)用。這些類型的應(yīng)用,例如,可包括視頻監(jiān)視應(yīng)用、游戲、零售業(yè)或銀行應(yīng)用、視頻流應(yīng)用、內(nèi)容操控應(yīng)用等等。通過結(jié)合實施分布式RAID系統(tǒng)的計算設(shè)備執(zhí)行這些應(yīng)用,可以得到許多優(yōu)點。首先和最重要的,可以實現(xiàn)物理資源的聯(lián)合,減小與物理資源和安裝、配置、利用和保持這樣的資源所需要的資源相關(guān)聯(lián)的花費,因為可能需要較少的空間、功率、冷卻、備用部件等等。 而且,在實施應(yīng)用和分布式RAID系統(tǒng)時可以達(dá)到更大的速度,因為結(jié)合應(yīng)用和分布式RAID 系統(tǒng)的使用發(fā)生的通信,可以較少或可以更快地進(jìn)行。另外,故障容忍度水平可被引入到配置中,其中應(yīng)用的實例作為虛擬機被保存,它們在實施分布式RAID系統(tǒng)的數(shù)據(jù)庫的虛擬化層上被執(zhí)行,正如在更詳細(xì)地考察本申請的其余部分后將會看到的。概略地,這個故障容忍度水平可以來源于這樣的事實,每個虛擬機 (例如,執(zhí)行可以在虛擬化層上被執(zhí)行的應(yīng)用的實例)被存儲在分布式RAID系統(tǒng)的卷中,意味著,在數(shù)據(jù)庫之一出現(xiàn)故障的情形下虛擬機可被恢復(fù)。另外,故障容忍度可被引入,因為虛擬機可以在任何數(shù)據(jù)庫的虛擬化層上執(zhí)行,因此即使在單個數(shù)據(jù)庫出現(xiàn)故障時,每個虛擬機仍舊可被執(zhí)行?,F(xiàn)在參照圖3,圖上顯示可以實施分布式RAID系統(tǒng)和允許執(zhí)行各種不同的應(yīng)用的數(shù)據(jù)庫的一個實施例。這里,數(shù)據(jù)庫1110包括數(shù)據(jù)存儲器350和用來執(zhí)行存儲在計算機可讀的介質(zhì)上的指令的處理器(未示出)或其它硬件。這個硬件,例如,可以是x86平臺等等。被存儲在計算機可讀的介質(zhì)上的指令可以用來實施虛擬化層312和分布式 RAID應(yīng)用310。虛擬化層312可以是,例如由SunMicrosystems的容器、Linux KVM, Linux Vserver、Oracle VM、Virtual PC、Microsoft 的虛擬月艮務(wù)器、IBM 的 PowerVM、 SunMicrosystems的邏輯域、VMware服務(wù)器等等,或任何其它類型的虛擬化或模仿機應(yīng)用, 正如在技術(shù)上已知的。分布式RAID應(yīng)用310可以具有類似于上述功能的功能。為了幫助在存儲器330中一個或多個這些表格340的實施,可以跟蹤諸如由分布式RAID系統(tǒng)所存儲的哪些卷是虛擬機和哪個數(shù)據(jù)庫110被分配給特定的虛擬機那樣的信息。然后概略地參考圖4A、4B和4C,圖上顯示具有虛擬化層的數(shù)據(jù)庫1010的結(jié)構(gòu)體系的三個實施例。將會指出,這樣的結(jié)構(gòu)體系的其它實施例也是可能的,它們可以被利用。 在圖4A上,虛擬化層312可以存在于硬件層402上,這樣,分布式RAID應(yīng)用310和虛擬機 430(應(yīng)用和它們的對應(yīng)的上下文)可以在虛擬化層312上執(zhí)行。圖4B顯示一個實施例,其中操作系統(tǒng)420(例如,Windows、Solaris、MacOS等)可以在具有在操作系統(tǒng)420上執(zhí)行的虛擬化層312的硬件層402上執(zhí)行,這樣,分布式RAID應(yīng)用310和虛擬機430 (應(yīng)用和它們的對應(yīng)的上下文)可以在虛擬化層312上執(zhí)行。圖4C顯示一個實施例,其中操作系統(tǒng)420 可以在硬件層402上執(zhí)行。分布式RAID應(yīng)用310和虛擬化層312可以在操作系統(tǒng)420上執(zhí)行。虛擬機430然后可以在虛擬化層312上執(zhí)行。因此,在圖5中描述了可以用于通過使用一組數(shù)據(jù)庫1110來實施分布式RAID系統(tǒng)并執(zhí)行可以利用在一個或多個相同的數(shù)據(jù)庫1110上的該分布式RAID系統(tǒng)的一個或多個應(yīng)用的系統(tǒng)的一個實施例。移到圖6,圖上顯示用于在也正在執(zhí)行分布式RAID應(yīng)用310的數(shù)據(jù)庫1110上執(zhí)行一個或多個應(yīng)用的方法的一個實施例。在步驟610,可以在數(shù)據(jù)庫1110的虛擬化層312上執(zhí)行應(yīng)用。這個安裝過程可以在步驟620創(chuàng)建虛擬機,用來當(dāng)被虛擬化層312執(zhí)行時執(zhí)行與特定的上下文相關(guān)聯(lián)的應(yīng)用。更具體地,在一個實施例中,可以通過使用分布式RAID應(yīng)用310來創(chuàng)建卷,其中應(yīng)用可以連同從在虛擬化層312上在一定的時間量內(nèi)執(zhí)行該應(yīng)用所得到的上下文一起被存儲在該卷中。這被更清晰地顯示于圖7,在圖上顯示每個虛擬機430可以如何成為被存儲在每個數(shù)據(jù)庫1110的數(shù)據(jù)存儲器350中的卷。每個虛擬機可以對應(yīng)于應(yīng)用和相關(guān)聯(lián)的上下文的一個安裝的實例,這樣,虛擬機430可以在虛擬化層312上執(zhí)行,以便運行具有對應(yīng)的上下文的應(yīng)用?;氐綀D6,一旦應(yīng)用被安裝和虛擬機被創(chuàng)建,在一個實施例中,在步驟630,包括應(yīng)用的實例的虛擬機就可被指定在特定的數(shù)據(jù)庫1110上執(zhí)行,因此虛擬機可以在步驟640在所指定的數(shù)據(jù)庫1110的虛擬化層312上執(zhí)行。在任何時候,如果因為任何原因期望停止這個虛擬機的執(zhí)行,則虛擬機可以被存儲,以使得虛擬機的執(zhí)行可以在以后由該虛擬機被分配到的那個特定的數(shù)據(jù)庫1110從相同的點繼續(xù)進(jìn)行。這個存儲可能使得把上下文存儲在虛擬機(卷對應(yīng)于虛擬機),如果需要的話。將會指出,因為每個虛擬機430被存儲在包括分布式RAID系統(tǒng)的數(shù)據(jù)庫1110,該虛擬機被分配到的那個數(shù)據(jù)庫1110可以存取和執(zhí)行每個虛擬機。另外,注意,RAID的級別可以結(jié)合該虛擬機的存儲被實施,因為該虛擬機可被存儲在與分布式RAID應(yīng)用310相關(guān)聯(lián)的卷中。因此,正如先前討論的,通過使用作為被分布式RAID應(yīng)用310管理的卷被存儲的虛擬機而在數(shù)據(jù)庫1110上執(zhí)行應(yīng)用,在分布式RAID系統(tǒng)的結(jié)構(gòu)體系中可以固有地實現(xiàn)故障容忍度。更具體地,在一個實施例中,因為每個數(shù)據(jù)庫1110可以存取任何虛擬機以及每個虛擬機430可以結(jié)合RAID級別被存儲,即使在特定的數(shù)據(jù)庫1110出現(xiàn)故障時,應(yīng)用仍舊能夠被執(zhí)行,因為關(guān)于任何虛擬機的所有的數(shù)據(jù)仍舊可以由剩余的工作的數(shù)據(jù)庫1110存取。 事實上,在一個實施例中,如果特定的數(shù)據(jù)庫1110有故障,則有故障的數(shù)據(jù)庫1110可以被檢測,以及被分配給有故障的數(shù)據(jù)庫110的每個VM可以基本上自動地被分配給另一個工作的數(shù)據(jù)庫1110,這樣,在有故障的數(shù)據(jù)庫1110上執(zhí)行的所有的VM現(xiàn)在將在另一個數(shù)據(jù)庫 1100上執(zhí)行。這個分配可以隨機地或基于一個或多個準(zhǔn)則完成,諸如,被分配給每個數(shù)據(jù)庫 Ilio的VM的數(shù)目等等。通過自動地重新分配有故障的數(shù)據(jù)庫1110的VM,除了給予應(yīng)用以某個水平的故障容忍度以外,停機時間可被最小化。在以上的技術(shù)說明書中,本發(fā)明是參照具體的實施例描述的。然而,本領(lǐng)域技術(shù)人員將會看到,可以作出各種不同的修改和改變,而不背離如在下文所附權(quán)利要求中闡述的本發(fā)明的范圍。因此,技術(shù)說明書和附圖應(yīng)當(dāng)為說明的意義而不是限制的意義,以及所有的這樣的修改意在被包括在本發(fā)明的范圍內(nèi)。在上面對于具體的實施例描述了好處、其它優(yōu)點和對于問題的解決方案。然而,好處、其它優(yōu)點和對于問題的解決方案,以及可以使得任何好處、優(yōu)點或解決方案發(fā)生或變?yōu)楦鞔_的任何部件不被看作為任何或所有的權(quán)利要求的關(guān)鍵的、需要的、或本質(zhì)的特性或部件。
權(quán)利要求
1.一種用于實施RAID的系統(tǒng),所述系統(tǒng)包括 耦合到一組主機的計算裝置,該計算裝置包括 處理器;數(shù)據(jù)存儲器;包括可執(zhí)行指令的計算機可讀的介質(zhì),所述可執(zhí)行指令用于 在計算裝置上執(zhí)行應(yīng)用程序,其中應(yīng)用程序是虛擬機;以及實施與計算裝置相關(guān)聯(lián)的RAID應(yīng)用,所述RAID應(yīng)用用于接收對應(yīng)于卷段的命令,其中由應(yīng)用程序發(fā)布該命令,并且卷和對應(yīng)于結(jié)合卷實施的 RAID級別的冗余性數(shù)據(jù)被與計算裝置相關(guān)聯(lián)地存儲;以及針對與計算裝置相關(guān)聯(lián)地存儲的第一段,執(zhí)行第一命令。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中執(zhí)行應(yīng)用程序包括使用計算裝置上的虛擬化層,執(zhí)行虛擬機。
3.根據(jù)權(quán)利要求2的系統(tǒng),其中虛擬機對應(yīng)于第二卷,所述第二卷與計算裝置相關(guān)聯(lián)地存儲。
4.根據(jù)權(quán)利要求3的系統(tǒng),其中計算機可讀的介質(zhì)在RAID控制器上實施。
5.根據(jù)權(quán)利要求4的系統(tǒng),其中RAID控制器用于管理虛擬機。
6.一種用于在具有處理器的計算裝置上結(jié)合各種應(yīng)用程序?qū)嵤㏑AID的方法,所述方法包括在計算裝置上建立第一卷,其中第一卷包括段組,所述段組與計算裝置相關(guān)聯(lián)地存儲;建立與計算裝置相關(guān)聯(lián)的第二卷,其中第二卷對應(yīng)于存儲為虛擬機的應(yīng)用程序; 在計算裝置上執(zhí)行應(yīng)用程序;結(jié)合卷實施RAID級別,其中實施RAID級別包括存儲冗余性段組;接收對應(yīng)于卷的段組的第一段的命令,其中從在計算裝置上執(zhí)行的應(yīng)用程序接收命令;針對第一段執(zhí)行第一命令,其中第一命令在計算裝置上執(zhí)行。
7.根據(jù)權(quán)利要求6的系統(tǒng),其中執(zhí)行應(yīng)用程序包括利用在計算裝置上的虛擬化層,執(zhí)行虛擬機。
8.根據(jù)權(quán)利要求7的系統(tǒng),其中虛擬機對應(yīng)于第二卷,所述第二卷與計算裝置相關(guān)聯(lián)地存儲。
9.根據(jù)權(quán)利要求8的系統(tǒng),其中在RAID控制器上實施所述方法。
10.根據(jù)權(quán)利要求9的系統(tǒng),其中RAID控制器用于管理虛擬機。
11.一種包含計算機可執(zhí)行指令的計算機可讀的介質(zhì),所述計算機可執(zhí)行指令用于結(jié)合各種應(yīng)用程序?qū)嵤㏑AID,計算機指令可執(zhí)行用于在計算裝置上建立第一卷,其中第一卷包括段組,所述段組與計算裝置相關(guān)聯(lián)地存儲;在計算裝置上建立第二卷,其中第二卷對應(yīng)于存儲為虛擬機的應(yīng)用程序; 在計算裝置上執(zhí)行應(yīng)用程序;結(jié)合卷實施RAID級別,其中實施RAID級別包括存儲冗余性段組;接收對應(yīng)于卷的段組的第一段的命令,其中從在計算裝置上執(zhí)行的應(yīng)用程序接收命令;相對于與計算裝置相關(guān)聯(lián)地存儲的第一段執(zhí)行第一命令。
12.根據(jù)權(quán)利要求11的計算機可讀的介質(zhì),其中執(zhí)行應(yīng)用程序包括利用在至少一個計算裝置上的虛擬化層,執(zhí)行虛擬機。
13.根據(jù)權(quán)利要求12的計算機可讀的介質(zhì),其中第二卷被存儲在計算裝置上。
14.根據(jù)權(quán)利要求13的計算機可讀的介質(zhì),其中在RAID控制器實施所述方法。
15.根據(jù)權(quán)利要求14的計算機可讀的介質(zhì),其中RAID控制器用于管理虛擬機。
全文摘要
公開了允許在實施RAID系統(tǒng)的同一組計算設(shè)備上執(zhí)行可利用該RAID系統(tǒng)的各種不同的應(yīng)用(或其它類型的應(yīng)用)的系統(tǒng)和方法。更具體地,在某些實施例中,可以在數(shù)據(jù)庫上執(zhí)行虛擬化層。通過使用這個虛擬化層,可以執(zhí)行一組期望的應(yīng)用程序,其中對于在虛擬化層上執(zhí)行的應(yīng)用的每個實例的上下文可被存儲在卷中,被保持來利用RAID系統(tǒng)。
文檔編號G06F3/06GK102176198SQ20111007634
公開日2011年9月7日 申請日期2009年6月25日 優(yōu)先權(quán)日2008年6月30日
發(fā)明者R·A·卡里森, W·C·加羅威 申請人:樞軸3公司