虛擬機(jī)熱遷移的方法、虛擬機(jī)遷移管理裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬化技術(shù)領(lǐng)域,具體而言,涉及一種虛擬機(jī)熱迀移的方法、虛擬機(jī)迀移管理裝置及系統(tǒng)。
【背景技術(shù)】
[0002]熱迀移(live migrat1n)是虛擬化技術(shù)中極其重要的一部分。虛擬化環(huán)境中,業(yè)務(wù)負(fù)載運(yùn)行在虛擬機(jī)上,虛擬機(jī)運(yùn)行在物理機(jī)上,每個(gè)物理機(jī)可以運(yùn)行一臺(tái)或多臺(tái)虛擬機(jī);熱迀移功能使得虛擬機(jī)在不暫?;蛑貑⒌那闆r下,可以在線地從源端物理機(jī)移動(dòng)到目的端物理機(jī)上。虛擬機(jī)熱迀移過(guò)程主要包括磁盤數(shù)據(jù)和內(nèi)存數(shù)據(jù)的迀移。
[0003]現(xiàn)有的熱迀移技術(shù)大多是在采用預(yù)拷貝的方法,在虛擬機(jī)熱迀移結(jié)束(虛擬機(jī)在源端物理機(jī)上停止運(yùn)行,開(kāi)始在目的端物理機(jī)上運(yùn)行)前完成數(shù)據(jù)拷貝和迀移,即先將磁盤數(shù)據(jù)和內(nèi)存數(shù)據(jù)迀移至目的端物理機(jī)上,再將虛擬機(jī)從源端物理機(jī)迀移到目的端物理機(jī)上運(yùn)行。
[0004]然而,在源端物理機(jī)和目的端物理機(jī)為非共享存儲(chǔ)的情形下,虛擬機(jī)磁盤數(shù)據(jù)的迀移通常占據(jù)大部分的迀移時(shí)間,并且熱迀移時(shí),還需先完成原始數(shù)據(jù)的迀移,再循環(huán)迀移臟數(shù)據(jù)(臟數(shù)據(jù),是指在虛擬機(jī)運(yùn)行過(guò)程中發(fā)生變更的數(shù)據(jù))直至達(dá)到迀移終止條件,完成迀移。這樣,會(huì)導(dǎo)致熱迀移的時(shí)間往往較長(zhǎng),虛擬機(jī)熱迀移的速度較慢。對(duì)于使用多個(gè)鏡像文件的虛擬機(jī),這種影響更加顯著。
[0005]針對(duì)上述的問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供了一種虛擬機(jī)熱迀移的方法、虛擬機(jī)迀移管理裝置及系統(tǒng),以至少解決由于采用預(yù)拷貝造成的熱迀移時(shí)間較長(zhǎng)的技術(shù)問(wèn)題。
[0007]根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種虛擬機(jī)熱迀移的方法,包括:虛擬機(jī)迀移管理裝置將在源端物理機(jī)上運(yùn)行的第一虛擬機(jī)的第一鏡像文件映射到目的端物理機(jī)上,以在上述目的端物理機(jī)上生成與上述第一鏡像文件之間存在對(duì)應(yīng)關(guān)系的第二鏡像文件,其中,上述第一鏡像文件中包括上述第一虛擬機(jī)的磁盤數(shù)據(jù);上述虛擬機(jī)迀移管理裝置向上述源端物理機(jī)發(fā)送迀移命令,以使上述源端物理機(jī)根據(jù)上述迀移命令將上述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)發(fā)送至上述目的端物理機(jī);上述虛擬機(jī)迀移管理裝置控制在上述目的端物理機(jī)預(yù)先建立的與上述第一虛擬機(jī)配置相同的第二虛擬機(jī)通過(guò)調(diào)用存儲(chǔ)在上述目的端物理機(jī)中的上述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)以及上述對(duì)應(yīng)關(guān)系在上述目的端物理機(jī)上運(yùn)行;在上述第二虛擬機(jī)在上述目的端物理機(jī)上運(yùn)行的過(guò)程中,上述虛擬機(jī)迀移管理裝置將上述第一鏡像文件中的上述磁盤數(shù)據(jù)同步至上述第二鏡像文件。
[0008]根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種虛擬機(jī)迀移管理裝置,包括:映射單元,用于將在源端物理機(jī)上運(yùn)行的第一虛擬機(jī)的第一鏡像文件映射到目的端物理機(jī)上,以在上述目的端物理機(jī)上生成與上述第一鏡像文件之間存在對(duì)應(yīng)關(guān)系的第二鏡像文件,其中,上述第一鏡像文件中包括上述第一虛擬機(jī)的磁盤數(shù)據(jù);第一發(fā)送單元,用于向上述源端物理機(jī)發(fā)送迀移命令,以使上述源端物理機(jī)根據(jù)上述迀移命令將上述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)發(fā)送至上述目的端物理機(jī);控制單元,用于控制在上述目的端物理機(jī)預(yù)先建立的與上述第一虛擬機(jī)配置相同的第二虛擬機(jī)通過(guò)調(diào)用存儲(chǔ)在上述目的端物理機(jī)中的上述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)以及上述對(duì)應(yīng)關(guān)系在上述目的端物理機(jī)上運(yùn)行;同步單元,用于在上述第二虛擬機(jī)在上述目的端物理機(jī)上運(yùn)行的過(guò)程中,將上述第一鏡像文件中的上述磁盤數(shù)據(jù)同步至上述第二鏡像文件。
[0009]根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種實(shí)現(xiàn)虛擬機(jī)熱迀移的系統(tǒng),包括具有上述任意特征的虛擬機(jī)迀移管理裝置,與上述虛擬機(jī)迀移管理裝置連接的源端物理機(jī)以及目的端物理機(jī),其中,第一虛擬機(jī)運(yùn)行在上述源端物理機(jī)上,第二虛擬機(jī)運(yùn)行在上述目的端物理機(jī)上,上述源端物理機(jī),用于接收來(lái)自上述虛擬機(jī)迀移管理裝置的迀移命令后,根據(jù)上述迀移命令將第一虛擬機(jī)的內(nèi)存數(shù)據(jù)發(fā)送至上述目的端物理機(jī);上述目的端物理機(jī),用于在上述第二虛擬機(jī)在上述目的端物理機(jī)上運(yùn)行的過(guò)程中,將上述第二虛擬機(jī)在運(yùn)行的過(guò)程中產(chǎn)生的磁盤數(shù)據(jù)寫入第二鏡像文件。
[0010]在本發(fā)明實(shí)施例中,采用在虛擬機(jī)運(yùn)行后拷貝磁盤數(shù)據(jù)的方式,通過(guò)在將源端物理機(jī)上的第一虛擬機(jī)的磁盤數(shù)據(jù)映射到目的端物理機(jī)上,以及將源端物理機(jī)上的第一虛擬機(jī)的內(nèi)存數(shù)據(jù)發(fā)送至目的物理機(jī)后,運(yùn)行在目的端物理機(jī)預(yù)先建立的與第一虛擬機(jī)配置相同的第二虛擬機(jī),進(jìn)而,在第二虛擬機(jī)在目的端物理機(jī)上運(yùn)行的過(guò)程中,進(jìn)行磁盤數(shù)據(jù)的同步。由于在接收內(nèi)存數(shù)據(jù)(內(nèi)存數(shù)據(jù)往往數(shù)據(jù)量較少,傳輸時(shí)間短)后即開(kāi)始運(yùn)行目的端物理機(jī)上的第二虛擬機(jī)(此時(shí)虛擬機(jī)熱迀移結(jié)束),而不需要等到同步第一虛擬機(jī)的磁盤數(shù)據(jù)之后才開(kāi)始運(yùn)行第二虛擬機(jī),因此縮短了虛擬機(jī)的熱迀移時(shí)間,解決了由于采用預(yù)拷貝造成的熱迀移時(shí)間較長(zhǎng)的技術(shù)問(wèn)題,從而提高了虛擬機(jī)的迀移速度和效率。
【附圖說(shuō)明】
[0011]此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0012]圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬機(jī)熱迀移的方法的硬件場(chǎng)景示意圖;
[0013]圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬機(jī)熱迀移的方法的流程示意圖;
[0014]圖3是根據(jù)本發(fā)明實(shí)施例的另一種可選的虛擬機(jī)熱迀移的方法的流程示意圖;
[0015]圖4是根據(jù)本發(fā)明實(shí)施例的又一種可選的虛擬機(jī)熱迀移的方法的流程示意圖;
[0016]圖5是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬機(jī)熱迀移過(guò)程中數(shù)據(jù)迀移示意圖;
[0017]圖6是根據(jù)本發(fā)明實(shí)施例的另一種可選的虛擬機(jī)熱迀移過(guò)程中數(shù)據(jù)迀移示意圖;
[0018]圖7是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬機(jī)迀移管理裝置結(jié)構(gòu)示意圖;
[0019]圖8是根據(jù)本發(fā)明實(shí)施例的另一種可選的虛擬機(jī)迀移管理裝置結(jié)構(gòu)示意圖;
[0020]圖9是根據(jù)本發(fā)明實(shí)施例的又一種可選的虛擬機(jī)迀移管理裝置結(jié)構(gòu)示意圖;
[0021]圖10是根據(jù)本發(fā)明實(shí)施例的又一種可選的虛擬機(jī)迀移管理裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0022]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0023]需要說(shuō)明的是,本發(fā)明的說(shuō)明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0024]為了方便理解本發(fā)明實(shí)施例,首先在此介紹本發(fā)明實(shí)施例描述中引入的幾個(gè)要素:
[0025]Live-Migrat1n(虛擬機(jī)熱迀移):在虛擬機(jī)不停機(jī)的情況下將子機(jī)從一臺(tái)物理母機(jī)(源端物理機(jī))迀移到另一臺(tái)物理母機(jī)(目的端物理機(jī))。
[0026]Non-Share-Storage (非共享存儲(chǔ)):虛擬機(jī)熱迀移過(guò)程涉及的兩臺(tái)物理機(jī)分別存儲(chǔ)兩份獨(dú)立的虛擬機(jī)磁盤數(shù)據(jù)(例如鏡像文件),熱迀移過(guò)程需要迀移虛擬機(jī)的磁盤數(shù)據(jù)。與其相對(duì)的是共享存儲(chǔ)(Share-Storage),兩臺(tái)物理機(jī)共享同一份虛擬機(jī)的鏡像文件。
[0027]Post-Copy (后拷貝):在虛擬子機(jī)熱迀移結(jié)束后進(jìn)行數(shù)據(jù)拷貝和迀移。
[0028]Dirty-Data (臟數(shù)據(jù)):由于熱迀移過(guò)程中虛擬機(jī)保持正常運(yùn)行狀態(tài),已經(jīng)完成迀移的數(shù)據(jù)可能被虛擬機(jī)再次訪問(wèn)而發(fā)生變更,從而產(chǎn)生臟數(shù)據(jù)。熱迀移需完成所有臟數(shù)據(jù)的處理,保證迀移完成后的數(shù)據(jù)一致性。
[0029]Migrat1n-Bandwidth(迀移帶寬):虛擬機(jī)熱迀移消耗的數(shù)據(jù)傳輸帶寬。由于熱迀移過(guò)程占用的是額外的數(shù)據(jù)傳輸帶寬,與虛擬機(jī)本身的帶寬消耗存在競(jìng)爭(zhēng),所以迀移帶寬一般是受限的。
[0030]實(shí)施例1
[0031]根據(jù)本發(fā)明實(shí)施例,提供了一種虛擬機(jī)熱迀移的方法,在本實(shí)施例中,上述虛擬機(jī)熱迀移的方法可以應(yīng)用于如圖1所示的源端物理機(jī)102和目的端物理機(jī)104所構(gòu)成的硬件環(huán)境中。如圖1所示,源端物理機(jī)102通過(guò)網(wǎng)絡(luò)與目的端物理機(jī)104進(jìn)行連接,上述網(wǎng)絡(luò)包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng);上述源端物理機(jī)102以及目的端物理機(jī)104包括但不限于:巨型機(jī)、大型機(jī)、中型機(jī)、小型機(jī)、微型機(jī)或其他各種能夠運(yùn)行虛擬機(jī)的物理設(shè)備。源端物理機(jī)102及目的物理機(jī)104上的虛擬機(jī)迀移管理裝置可以控制在目的端物理機(jī)預(yù)先建立的與第一虛擬機(jī)配置相同的第二虛擬機(jī)運(yùn)行之后,再將第一鏡像文件中的磁盤數(shù)據(jù)同步至第二鏡像文件。
[0032]可選地,在本實(shí)施例中,上述虛擬機(jī)熱迀移的方法的流程可以如圖2所示,該方法包括:
[0033]S202、虛擬機(jī)迀移管理裝置將在源端物理機(jī)上運(yùn)行的第一虛擬機(jī)的第一鏡像文件映射到目的端物理機(jī)上,以在目的端物理機(jī)上生成與第一鏡像文件之間存在對(duì)應(yīng)關(guān)系的第二鏡像文件,其中,第一鏡像文件中包括第一虛擬機(jī)的磁盤數(shù)據(jù);
[0034]S204、虛擬機(jī)迀移管理裝置向源端物理機(jī)發(fā)送迀移命令,以使源端物理機(jī)根據(jù)迀移命令將第一虛擬機(jī)的內(nèi)存數(shù)據(jù)發(fā)送至目的端物理機(jī);
[0035]S206、虛擬機(jī)迀移管理裝置控制在目的端物理機(jī)預(yù)先建立的與第一虛擬機(jī)配置相同的第二虛擬機(jī)通過(guò)調(diào)用存儲(chǔ)在目的端物理機(jī)中的第一虛擬機(jī)的內(nèi)存數(shù)據(jù)以及對(duì)應(yīng)關(guān)系在目的端物理機(jī)上運(yùn)行;
[0036]S208、在第二虛擬機(jī)在目的端物理機(jī)上運(yùn)行的過(guò)程中,虛擬機(jī)迀移管理裝置將第一鏡像文件中的磁盤數(shù)據(jù)同步至第二鏡像文件。
[0037]需要說(shuō)明的是,本發(fā)明實(shí)施例中,“虛擬機(jī)”是指通過(guò)虛擬機(jī)軟件可以在一臺(tái)物理計(jì)算機(jī)上模擬出一臺(tái)或者多臺(tái)虛擬的計(jì)算機(jī),而這些虛擬機(jī)就像真正的計(jì)算機(jī)那樣進(jìn)行工作,虛擬機(jī)上可以安裝操作系統(tǒng)和應(yīng)用程序,虛擬機(jī)還可訪問(wèn)網(wǎng)絡(luò)資源,對(duì)于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,虛擬機(jī)就像是在真正的計(jì)算機(jī)中進(jìn)行工作;“物理機(jī)”,也稱物理計(jì)算機(jī),是指實(shí)體設(shè)備;“熱迀移”是可以在不停機(jī)的情況下,將虛擬機(jī)從一臺(tái)物理機(jī)(本實(shí)施例稱源端物理機(jī))迀移到另一臺(tái)物理機(jī)(本實(shí)施例稱目的端物理機(jī)),迀移過(guò)程不影響虛擬機(jī)的正常運(yùn)行,即不會(huì)影響用戶運(yùn)行在虛擬機(jī)上的業(yè)務(wù)。
[0038]需要指出的是,本發(fā)明實(shí)施例對(duì)虛擬機(jī)的類型不做限制,例如可以是Xen虛擬機(jī),KVM(Kernel Virtual Machine,內(nèi)核虛擬機(jī)),hyperv虛擬機(jī)(微軟的虛擬化技術(shù))等,都應(yīng)在本發(fā)明實(shí)施例的保護(hù)范圍之內(nèi)。并且,本發(fā)明實(shí)施例的虛擬機(jī)迀移管理裝置可以單獨(dú)存在,也可以集成于源端物理機(jī)和/或目的端物理機(jī)之內(nèi),本發(fā)明實(shí)施例不做限制。
[0039]首先,本發(fā)明實(shí)施例對(duì)本發(fā)明實(shí)施例提供的虛擬機(jī)熱迀移的方法可以應(yīng)用的場(chǎng)景進(jìn)行示例性介紹:
[0040]1、物理機(jī)宕機(jī)或者故障大多時(shí)候是有先兆的,例如內(nèi)核會(huì)報(bào)硬件錯(cuò)誤,在收到這個(gè)告警之后和物理機(jī)宕機(jī)之前的這段時(shí)間內(nèi),可以通過(guò)熱迀移將該物理機(jī)上的虛擬機(jī)迀移到一臺(tái)狀態(tài)健康