背景技術(shù):
計算系統(tǒng)已變成泛在的,其范圍從小型嵌入式設備到電話和平板型設備到pc和后端服務器。這些計算系統(tǒng)中的每個計算系統(tǒng)被設計為對軟件代碼進行處理。軟件允許用戶執(zhí)行功能,與由計算系統(tǒng)提供的硬件交互。在一些情況下,這些計算系統(tǒng)允許用戶建立和運行虛擬機。這些虛擬機可以提供未被主機操作系統(tǒng)提供的功能,或者可以包括完全不同的操作系統(tǒng)。這樣,虛擬機可以被用于擴展計算系統(tǒng)的功能。
技術(shù)實現(xiàn)要素:
本文中描述的實施例涉及備份虛擬機集群和在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)。在一個實施例中,一種計算機系統(tǒng)確定哪些虛擬機節(jié)點是所述虛擬機集群的部分,確定哪些共享存儲資源是所述虛擬機集群的部分,以及確定哪些虛擬機節(jié)點擁有所述共享存儲資源。計算機系統(tǒng)然后向虛擬機節(jié)點擁有者指示將在所述虛擬機集群的節(jié)點上使至少一個指定的應用停頓(quiesce),以使得可以創(chuàng)建一致的集群范圍檢查點。計算機系統(tǒng)進一步創(chuàng)建包括針對虛擬機集群中的每個虛擬機的檢查點的集群范圍檢查點。創(chuàng)建一致的集群范圍檢查點降低該系統(tǒng)內(nèi)的存儲要求,因為其避免單獨地備份每個虛擬機。此外,由于每個虛擬機不是被單獨地備份的,所以節(jié)省了用于那些備份中的每個備份的處理資源,允許這些資源被用在其它地方,并且提高其它項目的處理速度。
在另一個實施例中,一種計算機系統(tǒng)執(zhí)行用于在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)的方法。計算機系統(tǒng)確定對于虛擬機集群內(nèi)的至少一個共享存儲資源而言所有權(quán)已變更,并且標識共享存儲資源的至少一個潛在的新?lián)碛姓?。計算機系統(tǒng)確定哪些虛擬機節(jié)點擁有共享存儲資源,并且向虛擬機節(jié)點擁有者指示將在所述虛擬機集群的節(jié)點上使至少一個指定的應用停頓,以使得可以創(chuàng)建一致的集群范圍檢查點。計算機系統(tǒng)然后創(chuàng)建包括針對虛擬機集群中的每個共享存儲設備的檢查點的集群范圍虛擬機檢查點。
提供本概要以便以簡化形式介紹下面在詳細說明中進一步描述的概念的選擇。本概要不旨在標識所要求保護的主題的關(guān)鍵特征或者必要特征,其也不旨在被用作在確定所要求保護的主題的范圍時的輔助。
附加特征和優(yōu)點將在隨后的說明中被闡明,并且部分上將是對于本領域的技術(shù)人員而言從說明中顯而易見的,或者可以通過實踐本文中的教導被習得。本文中描述的實施例的特征和優(yōu)點可以通過在所附權(quán)利要求中具體指出的儀器和組合來實現(xiàn)和獲得。從下面的說明和所附的權(quán)利要求中,本文中描述的實施例的特征將變得顯而易見。
附圖說明
為進一步澄清本文中描述的實施例的以上和其它的特征,將參考附圖給予更具體的說明。應當認識到,這些圖僅描繪了本文中描述的實施例的示例,并且因此將不被看作對其范圍的限制。將通過使用附圖在具有附加特異性和細節(jié)的情況下描述和解釋實施例,其中:
圖1圖示了包括備份虛擬機集群的本文中描述的實施例可以在其中運行的計算機架構(gòu)。
圖2圖示了用于備份虛擬機集群的示例方法的流程圖。
圖3圖示了用于在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)的示例方法的流程圖。
圖4圖示了其中虛擬機集群內(nèi)的虛擬機節(jié)點停機并且所有權(quán)變更節(jié)點的實施例。
圖5圖示了其中在虛擬機節(jié)點中被實例化的代理創(chuàng)建針對多個共享存儲資源的檢查點的實施例。
具體實施方式
本文中描述的實施例涉及備份虛擬機集群和在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)。在一個實施例中,計算機系統(tǒng)確定哪些虛擬機節(jié)點是虛擬機集群的部分,確定哪些共享存儲資源是虛擬機集群的部分,以及確定哪些虛擬機節(jié)點擁有共享存儲資源。計算機系統(tǒng)然后向虛擬機節(jié)點擁有者指示將在虛擬機集群的節(jié)點上使至少一個指定的應用停頓,以使得可以創(chuàng)建一致的集群范圍檢查點。計算機系統(tǒng)進一步創(chuàng)建包括針對虛擬機集群中的每個虛擬機的檢查點的集群范圍檢查點。
在另一個實施例中,計算機系統(tǒng)執(zhí)行用于在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)的方法。計算機系統(tǒng)確定對于虛擬機集群內(nèi)的至少一個共享存儲資源而言所有權(quán)已變更,并且標識共享存儲資源的至少一個潛在的新?lián)碛姓?。計算機系統(tǒng)確定哪些虛擬機節(jié)點擁有共享存儲資源,并且向虛擬機節(jié)點擁有者指示將在虛擬機集群的節(jié)點上使至少一個指定的應用停頓,以使得可以創(chuàng)建一致的集群范圍檢查點。計算機系統(tǒng)然后創(chuàng)建包括針對虛擬機集群中的每個共享存儲設備的檢查點的集群范圍虛擬機檢查點。
下面的討論現(xiàn)在涉及可以被執(zhí)行的一些方法和方法動作。應當指出,盡管方法動作可以按照特定的次序被討論或者在流程圖中被圖示為按照具體的次序發(fā)生,但除非專門指出或者由于一個動作在該動作被執(zhí)行之前取決于另一個動作被完成而是必需的,否則沒有任何具體的次序是必需的。
本文中描述的實施例可以實現(xiàn)各種類型的計算系統(tǒng)。這些計算系統(tǒng)現(xiàn)在日益采用多種多樣的形式。計算系統(tǒng)例如可以是諸如是智能電話或者特征電話之類的手持型設備、家電、膝上型計算機、可穿戴設備、臺式計算機、大型機、分布式計算系統(tǒng)或者甚至常規(guī)上還未被看作計算系統(tǒng)的設備。在本說明和權(quán)利要求中,術(shù)語“計算系統(tǒng)”被寬泛地定義為包括包括至少一個物理的且有形的處理器和能夠在其上具有可以被處理器執(zhí)行的計算機可執(zhí)行指令的物理的且有形的存儲器的任何設備或者系統(tǒng)(或者其組合)。計算系統(tǒng)可以被分布在網(wǎng)絡環(huán)境上,并且可以包括多個成員計算系統(tǒng)。
如在圖1中圖示的,計算系統(tǒng)101通常包括至少一個處理單元102和存儲器103。存儲器103可以是物理系統(tǒng)存儲器,物理系統(tǒng)存儲器可以是易失性的、非易失性的或者這兩者的某種組合。術(shù)語“存儲器”在本文中可以還被用于指諸如是物理存儲介質(zhì)之類的非易失性大容量存儲裝置。如果計算系統(tǒng)是分布式的,則處理、存儲器和/或存儲能力可以也是分布式的。
如本文中使用的,術(shù)語“可執(zhí)行模塊”或者“可執(zhí)行組件”可以指可以在計算系統(tǒng)上被執(zhí)行的軟件對象、例程或者方法。本文中描述的不同的組件、模塊、引擎和服務可以被實現(xiàn)為在計算系統(tǒng)上執(zhí)行(例如,作為單獨的線程)的對象或者進程。
在隨后的說明中,參考被一個或多個計算系統(tǒng)執(zhí)行的動作描述了實施例。如果這樣的動作用軟件來實現(xiàn),則執(zhí)行動作的關(guān)聯(lián)的計算系統(tǒng)的一個或多個處理器響應于具有被執(zhí)行的計算機可執(zhí)行指令指引計算系統(tǒng)的操作。例如,這樣的計算機可執(zhí)行指令可以被體現(xiàn)在形成計算機程序產(chǎn)品的一個或多個計算機可讀介質(zhì)上。這樣的操作的示例涉及對數(shù)據(jù)的操縱??梢詫⒂嬎銠C可執(zhí)行指令(和被操縱的數(shù)據(jù))存儲在計算系統(tǒng)101的存儲器103中。計算系統(tǒng)101還可以包含允許計算系統(tǒng)101通過有線或者無線網(wǎng)絡與其它消息處理器通信的通信信道。
本文中描述的實施例可以包括或者使用包括例如諸如是如下面詳細討論的一個或多個處理器和系統(tǒng)存儲器之類的計算機硬件的專用或者通用計算機系統(tǒng)??梢詫⑾到y(tǒng)存儲器包括在總體存儲器103內(nèi)。系統(tǒng)存儲器也可以被稱為“主存儲器”,并且包括可由至少一個處理單元102通過存儲器總線尋址的存儲器位置,在這種情況下,在存儲器總線自身上斷言地址位置。系統(tǒng)存儲器傳統(tǒng)上是易失性的,但本文中描述的原理也適用于系統(tǒng)存儲器是部分上或者甚至完全非易失性的情況。
本發(fā)明的范圍內(nèi)的實施例還包括用于攜帶或者存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理的和其它的計算機可讀介質(zhì)。這樣的計算機可讀介質(zhì)可以是可以被通用或者專用計算機系統(tǒng)訪問的任何可用介質(zhì)。存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)是計算機存儲介質(zhì)。攜帶計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)是傳輸介質(zhì)。因此,通過示例而非限制,本發(fā)明的實施例可以包括至少兩種完全不同種類的計算機可讀介質(zhì):計算機存儲介質(zhì)和傳輸介質(zhì)。
計算機存儲介質(zhì)是存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理硬件存儲介質(zhì)。物理硬件存儲介質(zhì)包括計算機硬件,所述計算機硬件諸如是ram、rom、eeprom、固態(tài)驅(qū)動器(“ssd”)、閃存、相變存儲器(“pcm”)、光盤存儲裝置、磁盤存儲裝置或者其它(一個或者多個)磁性存儲設備、或者可以被用于存儲采用計算機可執(zhí)行指令或者數(shù)據(jù)結(jié)構(gòu)的形式的程序代碼的任何其它(一個或者多個)硬件存儲設備,所述計算機可執(zhí)行指令或者數(shù)據(jù)結(jié)構(gòu)可以被通用或者專用計算機系統(tǒng)訪問和執(zhí)行以實現(xiàn)本發(fā)明的所公開的功能。
傳輸介質(zhì)可以包括可以被用于攜帶采用計算機可執(zhí)行指令或者數(shù)據(jù)結(jié)構(gòu)的形式的程序代碼并且可以被通用或者專用計算機系統(tǒng)訪問的網(wǎng)絡和/或數(shù)據(jù)鏈路?!熬W(wǎng)絡”被定義為使得能進行計算機系統(tǒng)和/或模塊和/或其它電子設備之間的電子數(shù)據(jù)傳輸?shù)囊粋€或多個數(shù)據(jù)鏈路。在通過網(wǎng)絡或者另一種通信連接(硬連線、無線或者硬連線或者無線的組合)向計算機系統(tǒng)傳輸或者提供信息時,計算機系統(tǒng)可以將連接看作傳輸介質(zhì)。以上各項的組合也應當被包括在計算機可讀介質(zhì)的范圍內(nèi)。
進一步地,在到達各種計算機系統(tǒng)部件時,采用計算機可執(zhí)行指令或者數(shù)據(jù)結(jié)構(gòu)的形式的程序代碼可以自動地從傳輸介質(zhì)被傳輸?shù)接嬎銠C存儲介質(zhì)(或者反之亦然)。例如,通過網(wǎng)絡或者數(shù)據(jù)鏈路接收的計算機可執(zhí)行指令或者數(shù)據(jù)結(jié)構(gòu)可以被緩沖在網(wǎng)絡接口模塊(例如,“nic”)內(nèi)的ram中,并且然后最終被傳輸?shù)接嬎銠C系統(tǒng)ram和/或計算機系統(tǒng)處的較非易失性的計算機存儲介質(zhì)。因此,應當理解,可以將計算機存儲介質(zhì)包括在也(或者甚至主要地)使用傳輸介質(zhì)的計算機系統(tǒng)部件中。
計算機可執(zhí)行指令例如包括當在一個或多個處理器處被執(zhí)行時導致通用計算機系統(tǒng)、專用計算機系統(tǒng)或者專用處理設備執(zhí)行特定的功能或者功能組的指令和數(shù)據(jù)。計算機可執(zhí)行指令可以例如是二進制文件、諸如是匯編語言之類的中間格式指令或者甚至源代碼。
本領域的技術(shù)人員將認識到,本文中描述的原理可以在具有許多類型的計算機系統(tǒng)配置的網(wǎng)絡計算環(huán)境中被實踐,所述計算機系統(tǒng)配置包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持型設備、多處理器系統(tǒng)、基于微處理器的或者可編程的消費電子、網(wǎng)絡pc、微型計算機、大型計算機、移動電話、pda、平板型設備、尋呼機、路由器、交換機等。本發(fā)明還可以在通過網(wǎng)絡被鏈接(通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠程計算機系統(tǒng)兩者執(zhí)行任務的分布式系統(tǒng)環(huán)境中被實踐。因此,在分布式系統(tǒng)環(huán)境中,一個計算機系統(tǒng)可以包括多個成員計算機系統(tǒng)。在分布式系統(tǒng)環(huán)境中,可以將程序模塊放置在本地和遠程存儲器存儲設備兩者中。
本領域的技術(shù)人員還將認識到,本發(fā)明可以在云計算環(huán)境中被實踐。云計算環(huán)境可以是分布式的,盡管這不是必需的。在是分布式的時,云計算環(huán)境可以被國際化地分布在組織內(nèi)和/或具有跨多個組織地擁有的部件。在本說明和下面的權(quán)利要求中,“云計算”被定義為用于使得能進行對可配置計算資源(例如,網(wǎng)絡、服務器、存儲裝置、應用和服務)的共享池的按需網(wǎng)絡訪問的模型?!霸朴嬎恪钡亩x不限于在被正確地部署時可以從這樣的模型獲得的其它許多優(yōu)點中的任何優(yōu)點。
仍然進一步地,本文中描述的系統(tǒng)架構(gòu)可以包括多個獨立的部件,其每個為作為整體的系統(tǒng)的功能做貢獻。該模塊化在處理平臺可伸縮性的問題時允許增加的靈活性,并且為此提供多種優(yōu)點??梢酝ㄟ^使用具有有限的功能范圍的較小規(guī)模的部分更容易地管理系統(tǒng)復雜度和增長。通過使用這些松耦合的模塊增強了平臺故障容忍度。可以隨著業(yè)務需求指示而遞增地使單個部件增長。模塊化開發(fā)還轉(zhuǎn)化成減少的新功能上市時間??梢栽诓挥绊懞诵南到y(tǒng)的情況下添加或者減除新功能。
圖1圖示了可以在其中使用至少一個實施例的計算機架構(gòu)100。計算機架構(gòu)100包括計算機系統(tǒng)101。計算機系統(tǒng)101可以是包括云計算系統(tǒng)的任何類型的本地或者分布式計算機系統(tǒng)。計算機系統(tǒng)101包括用于執(zhí)行多種不同的功能的模塊。例如,通信模塊104可以被配置為與其它計算系統(tǒng)通信。通信模塊104可以包括可向或者從其它計算系統(tǒng)接收和/或發(fā)射數(shù)據(jù)的任何有線或者無線通信裝置。通信模塊104可以被配置為與數(shù)據(jù)庫、移動計算設備(諸如是移動電話或者平板型設備)、嵌入式或者其它類型的計算系統(tǒng)交互。
計算機系統(tǒng)101可以包括檢查點生成模塊106。檢查點生成模塊106可以被配置為生成檢查點或者快照。這些檢查點或者快照是計算系統(tǒng)的狀態(tài)的時間點表示。這些檢查點可以形成用于將計算系統(tǒng)恢復到時間上的之前的狀態(tài)的參考點。檢查點可以包括操作系統(tǒng)、被安裝在該操作系統(tǒng)內(nèi)的應用、數(shù)據(jù)文件、設置和配置變更、媒體文件和與物理或者虛擬機節(jié)點相關(guān)的其它數(shù)據(jù)。在一些情況下,檢查點可以是適用于虛擬機集群內(nèi)的多個不同的虛擬機節(jié)點和/或共享存儲資源的集群范圍檢查點。
例如,如圖1中所示,虛擬機集群116包括兩個虛擬機(vm)節(jié)點113a和113b。盡管在圖1中示出了兩個節(jié)點,但將理解,給定的vm集群中可以存在基本上任意數(shù)量的vm節(jié)點。類似地,盡管在圖1中示出了僅一個共享存儲資源117,但將理解,可以在給定的vm集群或者物理機的集群中實現(xiàn)基本上任意數(shù)量的共享存儲資源。每個虛擬機節(jié)點可以具有諸如是應用114之類的被安裝在其上的應用。如圖1中所示,vm節(jié)點可以具有相同的被安裝的應用(例如,114),并且可以具有未被示出的其它的被安裝的應用。實際上,每個vm節(jié)點可以具有在其上被安裝或者運行的基本上任意數(shù)量的應用或者服務。虛擬機節(jié)點可以進一步具有被安裝在其上的虛擬化代理(或者在本文中被簡單地稱為“代理”)。這些代理(例如,115)可以執(zhí)行多個任務,所述任務包括把vm節(jié)點準備好以生成集群范圍檢查點。
例如,指示生成模塊105可以生成被發(fā)送到虛擬機集群116的一個或多個節(jié)點的指示112。在圖1中,指示112被發(fā)送到vm節(jié)點113a,所述vm節(jié)點113a是在vm節(jié)點113a與113b之間被共享的共享存儲資源117的擁有者。該指示可以向擁有vm節(jié)點指示將在集群的vm節(jié)點上和在共享存儲裝置117上使應用(例如,114)停頓。如本文中使用的術(shù)語“停頓”指把應用安置好或者把應用準備好以使得可以針對應用創(chuàng)建一致的、穩(wěn)定的檢查點。因此,停頓可以包括向共享存儲裝置寫數(shù)據(jù)、將數(shù)據(jù)從臨時存儲器清除(flush)、完成事務或者采取為獲得針對該應用或者應用集合的穩(wěn)定狀態(tài)而需要的任何其它步驟。一旦在共享存儲裝置上使應用停頓,則可以生成適用于vm集群內(nèi)的多個vm節(jié)點以及潛在地適用于vm集群內(nèi)的多個共享存儲資源的穩(wěn)定的、一致的檢查點。
經(jīng)常使用在客人操作系統(tǒng)內(nèi)運行的高可用性軟件使虛擬機形成集群。這些客人操作系統(tǒng)可以使用包括共享虛擬硬盤的各種形式的共享存儲裝置。傳統(tǒng)的虛擬機備份一次僅對單個vm起作用,而不提供用于以一致的方式備份整個vm集群的裝置。因此,一次備份單個vm不提供整體集群的一致圖像。此外,單獨地備份每個虛擬機可以導致共享存儲裝置的多個副本被備份,導致產(chǎn)生被浪費的存儲資源。
vm集群(在本文中也被稱為客人集群)116可以包括跨多個物理服務器散布的多個vm節(jié)點,所述多個物理服務器自身可以是主機集群的部分。如上面提到的,可以在每個vm中實例化虛擬化代理。虛擬化代理可以包括被安裝在虛擬機內(nèi)的集成組件。虛擬化代理可以查詢客人操作系統(tǒng)中的集群化框架,以確定共享存儲資源和共享存儲資源的擁有節(jié)點。通常,在vm集群中,共享磁盤或者其它的共享存儲資源被一個vm節(jié)點(例如,圖1中的節(jié)點113a)專有地擁有。在一些實施例中,這可以通過使用小型計算機系統(tǒng)接口(scsi)預留來達到。只有擁有節(jié)點可以對共享磁盤執(zhí)行i/o。假設出現(xiàn)故障轉(zhuǎn)移,則所有權(quán)移到另一個vm節(jié)點(如圖4中一般地所示)。
在主機集群范圍,可以作為整體在vm集群上發(fā)起快照操作。在主機集群層,將查詢共享存儲信息的消息發(fā)送給vm(其是vm集群的成員)內(nèi)的虛擬化代理。每個vm的虛擬化代理查詢客人中的集群化框架(例如,高可用性軟件)以獲得集群中的共享磁盤資源的列表和它們中的每個共享磁盤資源的擁有節(jié)點。然后將該信息發(fā)送回主機集群。與虛擬化代理的通信可以通過安全的、私有的客人-主機通信信道(例如,通過vm總線)或者通過其它的通信裝置發(fā)生。
主機集群可以使用從虛擬化代理獲得的信息來確保僅共享磁盤的擁有vm負責獲取該共享虛擬磁盤(例如,117)的快照。主機集群發(fā)起針對客人集群中的每個vm的vm快照操作。額外地,主機集群為每個vm提供它負責進行快照的共享虛擬磁盤的列表。至少在一些實施例中,擁有vm還負責在執(zhí)行對存儲裝置的快照之前使在共享虛擬磁盤上運行的應用到達一致的狀態(tài)(即,使應用停頓)。每個vm還可以負責獲取它的私有/非共享的存儲裝置的快照。結(jié)果是產(chǎn)生包括每個vm的快照的整個客人/vm集群的快照,但是快照中存在每個共享虛擬磁盤的單個實例(如在圖5中一般地示出的)。
相應地,本文中描述的實施例包括在每個vm中實例化提供關(guān)于共享存儲資源的信息的代理。此外,實施例在主機集群范圍分析關(guān)于共享存儲資源的該信息,以跨不同的vm分布對共享存儲設備進行快照的責任。將在下面分別關(guān)于圖2和3的方法200和300進一步解釋這些概念。
鑒于上面描述的系統(tǒng)和架構(gòu),參考圖2和3的流程圖將更好地認識可以根據(jù)所公開的主題被實現(xiàn)的方法。出于簡化解釋的目的,所述方法被顯示和描述為一系列方框。然而,應當理解和認識到,所要求保護的主題不受方框的次序的限制,因為一些方框可以按照與本文中所描繪和描述的次序不同的次序和/或與其它方框并發(fā)地發(fā)生。此外,并非全部所圖示的方框可以是實現(xiàn)下文中描述的方法所必需的。
圖2圖示了用于備份虛擬機集群的方法200的流程圖?,F(xiàn)在將頻繁參考環(huán)境100的部件和數(shù)據(jù)描述方法200。
方法200包括確定哪些虛擬機節(jié)點是虛擬機集群的部分(210)。例如,計算機系統(tǒng)101的確定模塊110可以確定虛擬機節(jié)點113a和113b是vm集群116的部分。確定模塊110還可以確定哪些共享存儲資源是虛擬機集群的部分(220)和哪些虛擬機節(jié)點擁有共享存儲資源(230)。因此,在圖1中,確定模塊可以查詢vm節(jié)點或者在那些節(jié)點上被實例化的代理,以確定共享存儲資源117是vm集群116的部分,以及進一步確定vm節(jié)點113a是共享存儲資源117的擁有者。因此,vm節(jié)點113a在vm節(jié)點中具有寫入共享存儲資源117的專有能力。通過僅允許集群中的一個vm節(jié)點是擁有者,可以在正在訪問共享存儲資源的多個不同的vm節(jié)點之間確保數(shù)據(jù)一致性。在一些情況下,多個vm節(jié)點可以同時從共享存儲資源讀數(shù)據(jù),而在其它情況下,一次僅一個節(jié)點可以讀共享存儲資源或者寫入共享存儲資源。仍然進一步地,應用可以在每個共享存儲資源上運行以及在資源擁有者節(jié)點上運行。
方法200進一步包括:向作為存儲設備擁有者的一個或多個虛擬機節(jié)點指示將在虛擬機集群的節(jié)點上使至少一個指定的應用停頓,以使得可以創(chuàng)建一致的集群范圍檢查點(240)。例如,指示生成模塊105可以生成指示112,以及通信模塊104可以將指示傳送給作為各種vm集群的存儲設備擁有者的vm節(jié)點。在計算機系統(tǒng)101是一個或多個vm節(jié)點的主機機器的情況下,通信可以通過vm總線、通過模擬的本地網(wǎng)絡連接或者經(jīng)由其它的通信裝置發(fā)生。如果vm節(jié)點被托管在與計算機系統(tǒng)101不同的物理計算系統(tǒng)上,則可以經(jīng)由任何有線或者無線通信裝置發(fā)射指示消息112。所述指示指示了:將對于操作系統(tǒng)、對于應用、對于服務或者對于其某種組合的數(shù)據(jù)停頓。
例如,如果將針對正在vm節(jié)點113a和113b兩者上運行的應用114創(chuàng)建集群范圍檢查點,則指示112將指示用于應用114的數(shù)據(jù)要被停頓,以使得可以針對該應用生成一致的、穩(wěn)定的檢查點。應當指出,在另一個實施例中,檢查點生成模塊106可以發(fā)出如下這樣的指示,即:用于應用114的數(shù)據(jù)要被停頓。檢查點生成模塊106可以要求每個vm節(jié)點停頓和生成檢查點。響應于該消息/指示,每個vm節(jié)點使應用停頓,并且創(chuàng)建存儲裝置(包括它擁有的共享存儲裝置)的檢查點。產(chǎn)生的集群范圍檢查點107將包括針對vm節(jié)點113a的檢查點108和針對vm節(jié)點113b的檢查點109。
一旦對于應用的數(shù)據(jù)已停頓,則檢查點生成模塊106可以生成包括針對虛擬機集群中的每個虛擬機的檢查點的集群范圍檢查點(250)。集群范圍檢查點107因此可以包括虛擬機集群中的每個共享存儲資源的單個實例。相應地,如果虛擬機集群包括多個不同的共享存儲資源,則集群范圍檢查點將包括針對該集群中的每個共享存儲資源的檢查點。
例如,如圖5中所圖示的,虛擬機集群501包括兩個虛擬機節(jié)點502和503和三個共享存儲資源(例如,虛擬或者物理硬盤或者其它類型的存儲介質(zhì))505、506和507。在檢查點生成模塊106生成針對vm集群501的集群范圍檢查點時,集群范圍檢查點508包括針對每個共享資源的單獨的檢查點,其包括針對資源505的檢查點、針對資源506的檢查點和針對資源507的檢查點。vm節(jié)點502可以是共享存儲資源505、506和507中的一個、兩個或者全部三個共享存儲資源的擁有者。因此,vm節(jié)點502可以負責在生成集群范圍檢查點508之前在共享存儲資源上使數(shù)據(jù)停頓。可以在vm節(jié)點上實現(xiàn)虛擬化代理,以幫助促進對一致的、穩(wěn)定的集群范圍檢查點的創(chuàng)建。
每個vm節(jié)點可以具有在其上被實例化的虛擬化代理504a/504b,其執(zhí)行各種功能。例如,虛擬化代理可以被配置為確定虛擬機集群內(nèi)的共享存儲資源的當前的所有權(quán)。圖1的虛擬化代理115可以采取步驟以確定它當前在其中被實例化的節(jié)點是否是擁有者,并且如果是,那么它“擁有”哪些共享存儲資源。虛擬化代理115還可以與集群116中的其它vm節(jié)點通信以確定它們是否是擁有者以及它們擁有哪些共享存儲資源。替換地,代理可以被用于向集群中的其它vm節(jié)點廣播消息,該消息向那些節(jié)點通知集群內(nèi)的每個節(jié)點的當前的所有權(quán)狀態(tài)。在其它實施例中,推送和拉取技術(shù)的組合可以被用于確定vm集群內(nèi)的共享存儲裝置所有權(quán)。
在一些實施例中,虛擬化代理115可以與主機操作系統(tǒng)通信以作出包括vm集群成員關(guān)系和集群內(nèi)的所有權(quán)的各種確定??梢允褂冒踩?、私有的客人-主機通信信道作出這樣的通信。在一些情況下,主機可以向代理指示將創(chuàng)建檢查點,并且可以指定針對該檢查點的參數(shù)或者設置。例如,主機可以指示將立即停止運轉(zhuǎn)(spindown)正在運行的進程,以及將立即使全部數(shù)據(jù)停頓以便盡可能早地獲取快照。替換地,主機可以指示將緩慢地并且隨著進程自然地結(jié)束逐漸地停止運轉(zhuǎn)正在運行的進程,以及將在應用和關(guān)聯(lián)的進程完全關(guān)閉時使數(shù)據(jù)停頓。相應地,管理員或者其他用戶可以控制如何生成檢查點。
在具有多個vm節(jié)點和多個共享存儲資源的vm集群(例如,圖5)中,每個擁有vm節(jié)點可以創(chuàng)建針對它擁有的共享存儲資源的檢查點。因此,如果vm節(jié)點502擁有共享資源505和506,則它可以發(fā)起針對那些資源的檢查點,而如果vm節(jié)點503擁有共享資源507,則它可以發(fā)起針對該資源的檢查點。集群范圍檢查點508在那種情況下將包括針對每個共享資源(505、506和507)的單獨的檢查點,其中,每個共享存儲資源的檢查點由該資源的擁有者發(fā)起。這可以在允許擁有節(jié)點使在那些節(jié)點上的應用停頓的主動-被動集群上發(fā)生。
為維持跨應用和/或vm節(jié)點的一致的狀態(tài),共享存儲資源擁有者可以實現(xiàn)硬盤預留以維持共享硬盤上的一致的狀態(tài)。例如,共享存儲資源擁有者可以實現(xiàn)scsi控制器預留以維持共享scsi磁盤上的一致的狀態(tài)。如果不擁有指定的共享存儲資源的非擁有虛擬機節(jié)點希望使對于給定應用的數(shù)據(jù)停頓,則該非擁有vm節(jié)點(例如,圖1的vm節(jié)點113b)可以與共享存儲資源的擁有者(vm節(jié)點113a)通信以使給定的應用停頓。擁有節(jié)點可以在完成時再與非擁有節(jié)點通信,以指示已使應用的數(shù)據(jù)停頓。在一些情況下,虛擬機節(jié)點的客人操作系統(tǒng)可以是發(fā)起對針對該虛擬機節(jié)點的檢查點的創(chuàng)建的實體。在這些情況下,客人os可以與vm節(jié)點上的代理通信以發(fā)起對檢查點的創(chuàng)建。
在一些情況下,虛擬機節(jié)點可以具有其自己的私有的、非共享的存儲資源。在這樣的情況下,具有其自己的私有的、非共享的存儲資源的虛擬機節(jié)點可以創(chuàng)建針對其私有的、非共享的存儲裝置的檢查點。該私有的檢查點可以隨集群范圍檢查點508的其它共享資源檢查點一起被存儲,或者可以被單獨地存儲。
代理可以進一步被用于分析虛擬機集群中的其它虛擬機節(jié)點以確定那些虛擬機節(jié)點是否已經(jīng)歷故障。以及,在確定虛擬機節(jié)點已出故障時,代理可以發(fā)起分析,以確定該虛擬機節(jié)點的故障是否已影響虛擬機集群內(nèi)的共享存儲節(jié)點所有權(quán)。例如,如圖4中所示,虛擬機集群401可以包括四個虛擬機節(jié)點:402、403、404和405。每個vm節(jié)點可以分別包括其自己的代理:407a、407b、407c和407d。集群401的vm節(jié)點中的每個vm節(jié)點可以訪問單個共享存儲資源406。如果如圖4中所示,vm節(jié)點402是共享存儲資源406的擁有者,并且如果該節(jié)點由于某個原因(例如,由于硬件或者軟件故障)而故障,則所有權(quán)可以被移動到虛擬機集群401內(nèi)的另一個虛擬機節(jié)點。新的擁有者可以是集群中的任何其它的vm節(jié)點,并且可以基于策略或者簡單地基于“下一個可用的”方法被確定。通過假設擁有者角色,vm403現(xiàn)在是共享存儲資源406的擁有者,并且是寫入該存儲資源的數(shù)據(jù)的唯一控制者。
現(xiàn)在轉(zhuǎn)向圖3,圖示出了用于在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)的方法300的流程圖?,F(xiàn)在將頻繁參考圖1的環(huán)境100的部件和數(shù)據(jù)描述方法300。
方法300包括確定對于虛擬機集群內(nèi)的至少一個共享存儲資源而言所有權(quán)已變更(310)。例如,如上面關(guān)于圖4提到的,共享存儲資源的所有權(quán)可以隨時間變更。例如,擁有特定資源的vm節(jié)點可能由于硬件或者軟件故障、由于例程維護、由于惡意攻擊或者因為某個其它的原因而故障。然而,在一些情況下,所有權(quán)可以基于策略或者基于由用戶作出的手動變更而不由于vm節(jié)點上的任何類型的故障而變更。例如,管理員或者其他用戶可能希望在圖4中將所有權(quán)從vm節(jié)點402變更到vm節(jié)點403。管理員可能具有這樣做的各種原因。實際上,管理員可能知道給定的節(jié)點將被停機以用于在接下來的二十四小時內(nèi)進行維護。因此,管理員可以將所有權(quán)轉(zhuǎn)移到集群內(nèi)的另一個vm節(jié)點。
在一些情況下,故障轉(zhuǎn)移策略可以在集群中的vm節(jié)點之間就位。例如,圖4的vm集群401可以具有已設立的故障轉(zhuǎn)移策略,該故障轉(zhuǎn)移策略指示,在給定的節(jié)點出故障時,所有權(quán)角色以及可能一些應用的應用處理可以自動地故障轉(zhuǎn)移到指定的vm節(jié)點。因此,在vm集群401中,故障轉(zhuǎn)移策略可以指示,如果vm節(jié)點402停機,則擁有者角色將被轉(zhuǎn)移到vm節(jié)點403。故障轉(zhuǎn)移策略可以進一步指示,如果vm節(jié)點403停機,則擁有者角色將被轉(zhuǎn)移到vm節(jié)點404,等等。
方法300接下來包括標識共享存儲資源的至少一個潛在的新?lián)碛姓撸?20)。圖1的計算機系統(tǒng)101的標識模塊111可以標識共享存儲資源的潛在的新?lián)碛姓?。在根?jù)故障轉(zhuǎn)移策略轉(zhuǎn)移所有權(quán)角色的上面的示例中,標識模塊111或者被安裝在vm節(jié)點上的虛擬化代理中的任一個虛擬化代理可以確定哪些vm節(jié)點可以是給定的共享存儲資源的潛在的新?lián)碛姓?。由于vm集群內(nèi)可以存在許多共享存儲資源,所以可以存在許多擁有者和許多潛在的擁有者。例如,策略可以指示,如果節(jié)點由于某個原因而出故障時隨后的擁有者將是誰。因此,代理可以與彼此通信以維護對于每個存儲資源的所有權(quán)的當前狀態(tài),所述當前狀態(tài)標識當前擁有者是誰以及基于策略標識潛在的新?lián)碛姓摺?/p>
方法300進一步包括確定哪一個或多個虛擬機節(jié)點擁有共享存儲資源(330)。例如,確定模塊110可以確定圖1的vm節(jié)點113a當前擁有共享存儲資源117。指示生成模塊105然后可以生成指示112,指示112向作為共享存儲資源的擁有者的一個或多個虛擬機節(jié)點指示將在虛擬機集群的節(jié)點上使至少一個指定的應用停頓,以使得可以創(chuàng)建一致的集群范圍檢查點(340)。集群范圍檢查點生成模塊106然后可以生成集群范圍虛擬機檢查點107(350),集群范圍虛擬機檢查點107包括針對虛擬機集群中的每個共享存儲設備的檢查點(包括針對vm節(jié)點113a(檢查點108)和針對vm節(jié)點113b(檢查點109)的檢查點)。集群范圍檢查點生成模塊106可以至少在一些實施例中生成在單個步驟中使指定的應用停頓并且創(chuàng)建檢查點的指示112。
如上面提到的,所有權(quán)的變更可以導致產(chǎn)生許多不同的場景,所述場景包括從出故障的vm節(jié)點進行的故障轉(zhuǎn)移或者由管理員作出的對所有權(quán)的手動變更。因為擁有者角色確保僅一個vm節(jié)點可以寫入共享存儲設備,所以如果該擁有者角色出故障并且不進行故障轉(zhuǎn)移,則沒有vm節(jié)點將能夠?qū)懺摴蚕泶鎯υO備。因此,所有權(quán)角色根據(jù)需要從節(jié)點轉(zhuǎn)移到節(jié)點以確保每個共享存儲資源具有擁有者。共享存儲資源擁有者具有對共享存儲資源的專有的寫訪問,或者可以具有對共享存儲資源的共享的寫訪問,其中,根據(jù)訪問策略對訪問進行調(diào)控。例如,如果兩個不同的vm節(jié)點正在寫入共享數(shù)據(jù)存儲庫上的不同的文件,則這兩者節(jié)點可以具有所有權(quán)并且同時寫入共享存儲設備。
在一些實施例中,共享存儲資源是主機計算節(jié)點(諸如是圖1的計算機系統(tǒng)101)的部分,或者可以通過主機計算節(jié)點來訪問??梢允褂帽话惭b在vm節(jié)點上的虛擬化代理訪問共享存儲資源。可以在每個虛擬機節(jié)點上實例化虛擬化代理,并且虛擬化代理可以被配置為,確定共享存儲資源所有權(quán),以及確保檢查點之間的一致性。可以通過在創(chuàng)建檢查點之前使對于磁盤的應用數(shù)據(jù)停頓來確保一致性。作為擁有者的vm節(jié)點可以在被指令時或者在被需要時自動地使應用數(shù)據(jù)停頓。額外地,非擁有虛擬機節(jié)點可以確定給定的共享存儲資源的當前擁有者,并且允許當前擁有者使在非擁有虛擬機節(jié)點上運行的應用停頓。
權(quán)利要求支持:一種包括執(zhí)行用于備份虛擬機集群的計算機實現(xiàn)的方法的至少一個處理器的計算機系統(tǒng),所述方法包括:確定哪些虛擬機節(jié)點113a是虛擬機集群116的部分,確定哪些共享存儲資源117是虛擬機集群的部分,確定哪一個或多個虛擬機節(jié)點擁有共享存儲資源,向一個或多個虛擬機節(jié)點擁有者113a指示將在虛擬機集群的節(jié)點上使至少一個指定的應用114停頓,以使得可以創(chuàng)建一致的集群范圍檢查點107,以及創(chuàng)建包括針對虛擬機集群中的每個虛擬機的檢查點的集群范圍檢查點107。
在一些實施例中,集群范圍檢查點包括虛擬機集群中的每個共享存儲資源的單個實例。在每個虛擬機上實例化虛擬化代理,并且虛擬化代理確定虛擬機集群內(nèi)的共享存儲資源的當前,所有權(quán)。虛擬化代理還使用安全的、私有的客人-主機通信信道與主機操作系統(tǒng)通信。
提供了一種包括至少一個處理器的計算機系統(tǒng)。所述計算機系統(tǒng)執(zhí)行用于在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)的計算機實現(xiàn)的方法,所述方法包括:確定對于虛擬機集群401內(nèi)的至少一個共享存儲資源406而言所有權(quán)已變更,標識共享存儲資源的至少一個潛在的新?lián)碛姓?03,確定哪一個或多個虛擬機節(jié)點403擁有共享存儲資源,向一個或多個虛擬機節(jié)點擁有者指示將在虛擬機集群401的節(jié)點上使至少一個指定的應用114停頓,以使得可以創(chuàng)建一致的集群范圍檢查點107,以及創(chuàng)建包括針對虛擬機集群中的每個共享存儲設備406的檢查點的集群范圍虛擬機檢查點107。
在一些實施例中,共享存儲資源擁有者具有對共享存儲資源的專有的訪問,或者具有對共享存儲資源的共享的訪問,其中,根據(jù)訪問策略對訪問進行調(diào)控。在一些情況下,在每個虛擬機上實例化虛擬化代理,其中,虛擬化代理被配置為,確定共享存儲資源所有權(quán),以及確保檢查點之間的一致性。非擁有虛擬機節(jié)點確定給定的共享存儲資源的當前擁有者,并且允許當前擁有者使在非擁有虛擬機節(jié)點上運行的一個或多個應用停頓。
提供了一種包括以下項的計算機系統(tǒng):一個或多個處理器;確定模塊110,其用于確定哪些虛擬機節(jié)點113a是虛擬機集群116的部分,確定哪些共享存儲資源是虛擬機集群的部分,以及確定哪一個或多個虛擬機節(jié)點擁有共享存儲資源;指示模塊105,其用于向一個或多個虛擬機節(jié)點擁有者指示將在虛擬機集群116的節(jié)點上使至少一個指定的應用114停頓,以使得可以創(chuàng)建一致的集群范圍檢查點107;以及集群范圍檢查點創(chuàng)建模塊106,其用于創(chuàng)建包括針對虛擬機集群116中的每個虛擬機的檢查點的集群范圍檢查點107。
所述計算機系統(tǒng)進一步包括:分析模塊,其用于分析虛擬機集群中的一個或多個虛擬機節(jié)點以確定虛擬機節(jié)點是否已經(jīng)歷故障,以及在確定至少一個虛擬機節(jié)點已出故障時,發(fā)起用于確定虛擬機節(jié)點的故障是否已影響虛擬機集群內(nèi)的共享存儲節(jié)點所有權(quán)的分析。在由于節(jié)點故障而進行的故障轉(zhuǎn)移時,將共享存儲資源的所有權(quán)移動到虛擬機集群內(nèi)的另一個虛擬機節(jié)點。共享存儲資源的擁有虛擬機節(jié)點使在共享存儲資源上運行的一個或多個應用停頓,并且創(chuàng)建針對該共享存儲資源的檢查點。
在一些實施例中,擁有虛擬機節(jié)點擁有多個共享存儲資源,并且創(chuàng)建針對它擁有的多個共享存儲資源中的每個共享存儲資源的檢查點。在一些情況下,虛擬機節(jié)點中的至少一個虛擬機節(jié)點具有其自己的私有的、非共享的存儲資源,并且進一步地,具有其自己的私有的、非共享的存儲資源的至少一個虛擬機節(jié)點創(chuàng)建針對其私有的、非共享的存儲裝置的檢查點。不擁有指定的共享存儲資源的非擁有虛擬機節(jié)點與共享存儲資源的擁有者通信,以使給定的應用停頓。
相應地,提供了備份虛擬機集群的方法、系統(tǒng)和計算機程序產(chǎn)品。此外,提供了在備份虛擬機集群之前確定虛擬機節(jié)點所有權(quán)的方法、系統(tǒng)和計算機程序產(chǎn)品。
本文中描述的概念和特征可以以其它具體的形式被體現(xiàn),而不脫離它們的精神或者描述性特性。所描述的實施例將在所有方面都被看作僅說明性的而非限制性的。因此,本公開內(nèi)容的范圍由所附權(quán)利要求而非由前述說明指示。落在權(quán)利要求的等價項的意義和范圍內(nèi)的全部變更將被包括在它們的范圍內(nèi)。