用于所選擇的虛擬機(jī)復(fù)制和虛擬機(jī)重新啟動(dòng)的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的實(shí)施例一般涉及信息技術(shù),更具體地,涉及虛擬機(jī)(VM)管理。
【背景技術(shù)】
[0002] 故障恢復(fù)場(chǎng)景在VM管理的背景下提出了很多挑戰(zhàn)。VM和/或服務(wù)的高可用性和 災(zāi)難恢復(fù)可通過復(fù)制和/或重新啟動(dòng)成為可能。中央處理單元(CPU)、內(nèi)存和存儲(chǔ)器可以都 被包括在復(fù)本中。云中的VM的完全復(fù)制需要所有被復(fù)制的VM的CPU、內(nèi)存狀態(tài)和存儲(chǔ)器, 這將產(chǎn)生高的開銷成本。因此,需要選擇特定的一組VM以在故障恢復(fù)場(chǎng)景中復(fù)制以減小開 銷成本。
[0003] 另外,當(dāng)資源不充足時(shí),并非所有的故障VM都可以被重新啟動(dòng)。而且,當(dāng)資源充足 時(shí),由于計(jì)算資源將可能造成瓶頸,因此,重新啟動(dòng)所有故障VM可能花費(fèi)很長(zhǎng)時(shí)間。因此, 需要選擇特定的一組VM以比系統(tǒng)中的其它VM更早重新啟動(dòng)。
【發(fā)明內(nèi)容】
[0004] 在本發(fā)明的一個(gè)方面中,提供了用于所選擇的VM復(fù)制和VM重新啟動(dòng)的技術(shù)。典型 的計(jì)算機(jī)實(shí)現(xiàn)的方法可包括以下步驟:在識(shí)別系統(tǒng)中包括多個(gè)VM的集合中的一個(gè)或多個(gè) 故障VM之前,從該包括多個(gè)VM的集合中選擇將被復(fù)制的包括一個(gè)或多個(gè)VM的子集;在識(shí) 別包括多個(gè)VM的集合中的一個(gè)或多個(gè)故障VM之前,復(fù)制包括一個(gè)或多個(gè)VM的子集;在識(shí) 別系統(tǒng)中包括多個(gè)VM的集合中的一個(gè)或多個(gè)故障VM后,選擇將被重新啟動(dòng)的包括所識(shí)別 的一個(gè)或多個(gè)故障VM的子集;以及在識(shí)別包括多個(gè)VM的集合中的一個(gè)或多個(gè)故障VM后, 重新啟動(dòng)包括所識(shí)別的一個(gè)或多個(gè)故障VM的子集。
[0005] 本發(fā)明或其要素的另一方面可以采用有形地體現(xiàn)計(jì)算機(jī)可讀指令的制造品的形 式實(shí)現(xiàn),其中該計(jì)算機(jī)可讀指令在實(shí)現(xiàn)時(shí)使計(jì)算機(jī)執(zhí)行如在此所描述的多個(gè)方法步驟。另 夕卜,本發(fā)明或其要素的另一方面可以采用包括存儲(chǔ)器和至少一個(gè)耦合到存儲(chǔ)器并被配置為 執(zhí)行所指明的方法步驟的處理器的裝置的形式實(shí)現(xiàn)。更進(jìn)一步地,本發(fā)明或其要素的另一 方面可以采用用于執(zhí)行在此描述的方法步驟的裝置或其要素的形式實(shí)現(xiàn);該裝置可以包括 硬件模塊或硬件和軟件模塊的組合,其中軟件模塊被存儲(chǔ)在有形的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中 (或多個(gè)這種介質(zhì)中)。
[0006] 本發(fā)明的這些和其它目的、特性和優(yōu)點(diǎn)將從以下的本發(fā)明的說明性實(shí)施例的具體 描述中變得明顯,其將結(jié)合附圖一起閱讀。
【附圖說明】
[0007] 圖1是示出根據(jù)本發(fā)明的實(shí)施例的示例實(shí)施例的示意圖;
[0008] 圖2是示出根據(jù)本發(fā)明的實(shí)施例的示例實(shí)施例的示意圖;
[0009] 圖3是示出根據(jù)本發(fā)明的實(shí)施例的技術(shù)的流程圖;
[0010] 圖4是示出根據(jù)本發(fā)明的實(shí)施例的技術(shù)的流程圖;
[0011]圖5是示出其上可實(shí)現(xiàn)本發(fā)明的至少一個(gè)實(shí)施例的典型計(jì)算機(jī)系統(tǒng)的系統(tǒng)圖。
【具體實(shí)施方式】
[0012] 如在此所描述的,本發(fā)明的一個(gè)方面包括在增強(qiáng)具有相互依賴的組件的服務(wù)的可 用性中用于所選擇的VM復(fù)制和VM重新啟動(dòng)的技術(shù)。例如,本發(fā)明的至少一個(gè)實(shí)施例包括 所選擇的VM復(fù)制,其可以是主動(dòng)式(proactive)的(S卩,包括在故障前采取的措施)。在這 種實(shí)施例中,一定數(shù)量的空閑資源被留出,并選擇將要在空閑資源中被復(fù)制的VM集合以在 發(fā)生故障時(shí)最大化服務(wù)值。在本發(fā)明的至少一個(gè)實(shí)施例中,這些資源在應(yīng)用或云系統(tǒng)執(zhí)行 之前和/或應(yīng)用或云系統(tǒng)執(zhí)行時(shí)被用戶或系統(tǒng)管理員留出。這種實(shí)施例中的復(fù)制因子是可 配置的。被留出作為空閑資源的資源的百分比也是可配置的,并可基于用于復(fù)制的資源開 銷與可用性增強(qiáng)之間的權(quán)衡。
[0013] 另外,本發(fā)明的至少一個(gè)實(shí)施例包括所選擇的VM重新啟動(dòng),其可以是反應(yīng)式的 (即,包括當(dāng)故障VM沒有復(fù)本時(shí)在故障后采取的措施)。在這種實(shí)施例中,選擇將被重新啟 動(dòng)的故障VM的集合以在計(jì)算能力(如果需要,還包括用于鏡像復(fù)制的網(wǎng)絡(luò)帶寬容量)的約 束下最大化服務(wù)值。
[0014] 在所選擇的VM復(fù)制和/或所選擇的VM重新啟動(dòng)中,VM組可以被形成和/或被識(shí) 別以遵守復(fù)合應(yīng)用中共同有助于服務(wù)的提供的VM之間的依賴關(guān)系。根據(jù)本發(fā)明的一個(gè)或 多個(gè)實(shí)施例,選擇用于復(fù)制和/或重新啟動(dòng)的VM可以在多個(gè)環(huán)境內(nèi)執(zhí)行。例如,在一個(gè)這 種環(huán)境中,每一個(gè)VM在組中對(duì)于服務(wù)的提供都是同等重要的。另外,在另一個(gè)這種環(huán)境中, 每一個(gè)VM在組內(nèi)對(duì)于服務(wù)的提供都被分配一個(gè)權(quán)重。另外,本發(fā)明的至少一個(gè)實(shí)施例包括 基于有關(guān)應(yīng)用的企業(yè)優(yōu)先級(jí)和單獨(dú)VM的故障行為的組合信息而從組中選擇有故障傾向的 VM以用于復(fù)制。
[0015] 圖1是示出根據(jù)本發(fā)明的實(shí)施例的示例實(shí)施例的示意圖。舉例說明,圖1描繪了 由用戶和/或云提供者設(shè)置的服務(wù)水平協(xié)議(SLA) 102,其可基于和/或來源于包括可用性 SLA、商業(yè)或企業(yè)值和/或優(yōu)先級(jí)、VM類型、性能SLA(諸如響應(yīng)時(shí)間,吞吐量等)、管理員指 定的計(jì)算方法等因素。SLA102被提供給服務(wù)值估計(jì)引擎104,其與所選擇的復(fù)制/重新啟 動(dòng)引擎(SR2引擎)106進(jìn)行交互。服務(wù)值估計(jì)引擎104通過按照由用戶和/或系統(tǒng)管理員 指定的公式從諸如以上所列出的因素中計(jì)算服務(wù)值。
[0016] 在常態(tài)行為期間,在系統(tǒng)中沒有故障,服務(wù)值估計(jì)引擎104向(SR2引擎106的)所 選擇的復(fù)制組件107提供輸入,所選擇的復(fù)制組件107利用該輸入以確定哪個(gè)VM應(yīng)當(dāng)在空 閑資源中復(fù)制。然后,如果發(fā)生VM的故障,則所選擇的復(fù)制組件107確定是否所有的故障 VM都有復(fù)本可用;如果復(fù)本可用,則該復(fù)本成為故障VM的主用VM;如果任意一個(gè)復(fù)本不可 用,則那些具有可用復(fù)本的故障VM使得它們的復(fù)本成為主用VM,而那些沒有可用復(fù)本的故 障VM被(SR2引擎106的)所選擇的重新啟動(dòng)組件109重新啟動(dòng)。該過程被表示為圖1中 在所選擇的復(fù)制組件107和所選擇的重新啟動(dòng)組件109的右側(cè)的兩個(gè)箭頭。
[0017] 在所選擇的重新啟動(dòng)組件重新啟動(dòng)故障VM期間,服務(wù)值估計(jì)引擎的輸入用于確 定VM的重新啟動(dòng)的優(yōu)先級(jí)和順序(如通過圖1中從服務(wù)值估計(jì)引擎104到所選擇的重新 啟動(dòng)組件109的ft]頭表。在所有故障VM被重新啟動(dòng)后,在系統(tǒng)中沒有故障,并且系統(tǒng)在 無故障狀態(tài)下正常執(zhí)行。然后,所選擇的復(fù)制組件107重新開始選擇哪些VM將被復(fù)制的任 務(wù)(這通過圖1中從所選擇的重新啟動(dòng)組件109到所選擇的復(fù)制組件107的箭頭表示)。
[0018] 在本發(fā)明的至少一個(gè)實(shí)施例中,SR2引擎106包括處理服務(wù)組件和/或VM之間的 依賴關(guān)系的能力。在本發(fā)明的至少一個(gè)示例實(shí)施例中,對(duì)于任何運(yùn)行中的VMV,存在至少一 個(gè)v起作用的可用服務(wù)。如在此所指出的,用戶和服務(wù)提供者具有靈活地定義服務(wù)值和分 配適當(dāng)值的能力。
[0019] 如在此詳細(xì)描述的,本發(fā)明的一個(gè)或多個(gè)實(shí)施例的目的是當(dāng)考慮故障行為時(shí)達(dá)到 最大服務(wù)值。如在此描述的,SR2引擎106的所選擇的復(fù)制組件107最小化高價(jià)值服務(wù)故障 的可能性。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,故障發(fā)生在個(gè)別VM上而不是一次發(fā)生在服務(wù) 的所有VM上。另外,VM故障是隨機(jī)過程,沒有必要使服務(wù)的所有VM都被復(fù)制(除非客戶 要求用于災(zāi)難恢復(fù)(DR)的復(fù)制策略)。
[0020] SR2引擎106的所選擇的重新啟動(dòng)組件109在任何相關(guān)資源約束的背景下最大化 被恢復(fù)的服務(wù)的值。
[0021] 圖2是示出根據(jù)本發(fā)明的實(shí)施例的示例實(shí)施例的示意圖。舉例說明,圖2描繪了 SR2引擎106,其從故障檢測(cè)器組件202接收輸入。故障檢測(cè)器組件202與諸如管理程序 1(H1)204(其包括vmll和vml2)、管理程序2(H2)206(其包括vm21和vm22)和管理程序 3 (H3) 208 (包括m31和vm32)的管理程序進(jìn)行交互。故障檢測(cè)器組件202檢測(cè)VM的任何 故障,并將所檢測(cè)到的故障通知SR2引擎106。另外,基于由故障檢測(cè)器組件202提供的輸 入,SR2引擎106向相關(guān)的管理程序(例如,管理程序204、206和208)提供輸入和/或指 令。SR2引擎的所選擇的復(fù)制組件和所選擇的重新啟動(dòng)組件確定哪些VM復(fù)本應(yīng)當(dāng)被識(shí)別為 主用VM和/或哪些VM應(yīng)當(dāng)被重新啟動(dòng),并還請(qǐng)求相關(guān)的管理程序執(zhí)行主用VM識(shí)別和VM 重新啟動(dòng)。
[0022] 圖3是示出根據(jù)本發(fā)明的實(shí)施例的技術(shù)的流程圖。步驟302包括使用所選擇的復(fù) 制算法周期性地選擇和復(fù)制某些VM。例如,所選擇的復(fù)制算法可選擇VM的集合并復(fù)制所選 擇的VM的集合。在所選擇的復(fù)制中可以考慮多個(gè)因素,這些因素是用于在圖3的流程圖中 描繪的架構(gòu)的值和/或輸入。
[0023] 舉例說明,假設(shè)存在服務(wù)路徑知識(shí)以及哪些服務(wù)路徑更重要。在本發(fā)明的至少一 個(gè)實(shí)施例中,監(jiān)控和/或追蹤工具可用于此目的。這種知識(shí)還可以從用戶輸入,其表示值分 配階段。
[0024] 另外,在起點(diǎn)處,假設(shè)每個(gè)VM至少有主用副本在運(yùn)行。如果VM發(fā)生故障,則步驟 304包括確定故障VM是否有實(shí)時(shí)(live)復(fù)本。如果故障VM有實(shí)時(shí)復(fù)本,則在步驟306中, 該復(fù)本成為主用,流程返回流程圖的起點(diǎn)。另外,如在此使用的,成為主用(以及其各種類 似表述)表明復(fù)本代替故障VM。當(dāng)復(fù)本變成主用時(shí),故障VM不存在。如果故障VM沒有復(fù) 本,則流程繼續(xù)到所選擇的重新啟動(dòng)階段(到步驟308)。如在此詳細(xì)描述的,本發(fā)明的至少 一個(gè)實(shí)施例包括檢測(cè)VM故障和檢測(cè)是否有實(shí)時(shí)復(fù)本在運(yùn)行的檢測(cè)器。
[0025] 步驟308包括運(yùn)行所選擇的重新啟動(dòng)算法以重新啟動(dòng)故障VM并恢復(fù)服務(wù)路徑。本 發(fā)明的至少一個(gè)實(shí)施例包括最大化所恢復(fù)的服務(wù)路徑的值而盡可能多地滿足SLA。該值可 例如包括滿足SLA的測(cè)量。如果沒有可用于重新啟動(dòng)故障VM的資源,則實(shí)