一種熱遷移kvm虛擬機(jī)的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬機(jī)技術(shù)領(lǐng)域,特別是涉及一種熱迀移KVM虛擬機(jī)的方法及系統(tǒng)。
【背景技術(shù)】
[0002]KVM(全稱 kernel-based Virtual Machine)是 Linux 下 x86 硬件平臺上的全功能虛擬化解決方案,自Linux2.6.20之后集成在Linux的各個主要發(fā)行版本中。它使用Linux自身的調(diào)度器進(jìn)行管理,所以相對于Xen,其核心源碼很少。KVM已成為學(xué)術(shù)界的主流VMM之一。KVM的虛擬化需要硬件支持(如Intel TV技術(shù)或者AMD V技術(shù))。使用KVM,可允許運行多個虛擬機(jī),包括Linux和Windows操作系統(tǒng)。每個虛擬機(jī)有私有的硬件,包括網(wǎng)卡、磁盤、圖形適配卡等。
[0003]V2V虛擬機(jī)的迀移是指在VMM (Virtual Machine Monitor,虛擬監(jiān)控機(jī))上運行的虛擬機(jī)系統(tǒng),能夠被轉(zhuǎn)移到其他物理主機(jī)上的VMM上運行。VMM對硬件資源進(jìn)行抽象和隔離,屏蔽了底層硬件細(xì)節(jié)。而迀移技術(shù)的出現(xiàn),使得操作系統(tǒng)能在不同的主機(jī)之間動態(tài)的轉(zhuǎn)移,進(jìn)一步解除軟、硬件資源之間的相關(guān)性。V2V的迀移分為兩種,一種是靜態(tài)迀移,也叫做常規(guī)迀移、離線迀移。就是在虛擬機(jī)關(guān)機(jī)或者暫停的情況下從一臺物理機(jī)迀移到另一臺物理機(jī)。因為虛擬機(jī)的文件系統(tǒng)建立在虛擬機(jī)鏡像上面,所以在虛擬機(jī)關(guān)機(jī)的情況下,只需要簡單的迀移虛擬機(jī)鏡像和相應(yīng)的配置文件到另外一臺物理機(jī)上;如果需要保存虛擬機(jī)迀移之前的狀態(tài),在迀移之前將虛擬機(jī)暫停,然后拷貝狀態(tài)至目的的主機(jī),最后在目的主機(jī)重建虛擬機(jī)狀態(tài),恢復(fù)執(zhí)行。這種方式的迀移過程需要顯式的停止虛擬機(jī)的運行。從用戶角度看,有明確的一段停機(jī)時間,虛擬機(jī)上的服務(wù)不可用。這種迀移方式簡單易行,適用于對服務(wù)可用性要求不嚴(yán)格的場合。還有一種熱迀移(也叫做動態(tài)迀移),就是在保證虛擬機(jī)上服務(wù)正常運行的同時,將一個虛擬機(jī)系統(tǒng)從一個物理主機(jī)移動到另一個物理主機(jī)的過程。該過程不會對最終用戶造成明顯的影響,從而使得管理員能夠在不影響用戶正常使用的情況下,對物理服務(wù)器進(jìn)行離線維修或者升級。與靜態(tài)迀移不同的是,為了保證迀移過程中虛擬機(jī)服務(wù)的可用,迀移過程僅有非常短暫的停機(jī)時間。迀移的前面階段,服務(wù)在源主機(jī)的虛擬機(jī)上運行,當(dāng)迀移進(jìn)行到一定階段,目的主機(jī)已經(jīng)具備了運行虛擬機(jī)系統(tǒng)的必須資源,經(jīng)過一個非常短暫的切換,源主機(jī)將控制權(quán)轉(zhuǎn)移到目的主機(jī),虛擬機(jī)系統(tǒng)在目的主機(jī)上繼續(xù)運行。對于虛擬機(jī)服務(wù)本身而言,由于切換的時間非常短暫,用戶感覺不到服務(wù)的中斷,因而迀移過程對用戶是透明的。熱迀移適用于對虛擬機(jī)服務(wù)可用性要求很高的場合。
【發(fā)明內(nèi)容】
[0004]鑒于以上所述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種熱迀移KVM虛擬機(jī)的方法及系統(tǒng),在保證虛擬機(jī)業(yè)務(wù)連續(xù)性的情況下實現(xiàn)KVM虛擬機(jī)的迀移。
[0005]為實現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種熱迀移KVM虛擬機(jī)的方法,用于利用Libvirt將源物理機(jī)上的源虛擬機(jī)迀移到目標(biāo)物理機(jī)中,所述熱迀移KVM虛擬機(jī)的方法包括:利用Libvirt在所述目標(biāo)物理機(jī)上創(chuàng)建與所述源物理機(jī)上的源虛擬機(jī)中系統(tǒng)盤和數(shù)據(jù)盤對應(yīng)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤;利用Libvirt在所述目標(biāo)物理機(jī)上創(chuàng)建一個配置與所述源物理機(jī)上的源虛擬機(jī)的配置相同的目標(biāo)虛擬機(jī);利用Libvirt設(shè)置所述目標(biāo)虛擬機(jī)的IP地址和端口號;利用Libvirt向所述源虛擬機(jī)發(fā)送用于向所述目標(biāo)虛擬機(jī)迀移數(shù)據(jù)的迀移指令;根據(jù)所述迀移指令,將所述源虛擬機(jī)內(nèi)系統(tǒng)盤和數(shù)據(jù)盤的數(shù)據(jù)迀移同步到所述目標(biāo)虛擬機(jī)內(nèi)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤。
[0006]作為本發(fā)明的一種優(yōu)選方案,將所述源虛擬機(jī)內(nèi)系統(tǒng)盤和數(shù)據(jù)盤的數(shù)據(jù)迀移同步到所述目標(biāo)虛擬機(jī)內(nèi)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤具體包括:通過循環(huán)調(diào)用所述源物理機(jī)內(nèi)的磁盤和內(nèi)存迀移函數(shù)將所述源虛擬機(jī)的磁盤按塊組織成一個數(shù)組,將所述虛擬機(jī)的內(nèi)存的所有頁設(shè)置為臟頁;依次將所述源虛擬機(jī)的磁盤數(shù)據(jù)和內(nèi)存數(shù)據(jù)對應(yīng)同步迀移至所述目標(biāo)虛擬機(jī)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤。
[0007]作為本發(fā)明的一種優(yōu)選方案,在利用Libvirt在所述目標(biāo)物理機(jī)上創(chuàng)建一個配置與所述源物理機(jī)上的源虛擬機(jī)的配置相同的目標(biāo)虛擬機(jī)之后,將所述目標(biāo)虛擬機(jī)的狀態(tài)設(shè)置為暫停狀態(tài)并使所述目標(biāo)虛擬機(jī)監(jiān)聽用于接收迀移數(shù)據(jù)的網(wǎng)絡(luò)端口 ;在將所述源虛擬機(jī)內(nèi)系統(tǒng)盤和數(shù)據(jù)盤的數(shù)據(jù)迀移同步到所述目標(biāo)虛擬機(jī)內(nèi)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤之后,將所述目標(biāo)虛擬機(jī)的狀態(tài)設(shè)置為運行狀態(tài)并將所述源虛擬機(jī)的狀態(tài)設(shè)置為暫停狀態(tài)。
[0008]作為本發(fā)明的一種優(yōu)選方案,所述的熱迀移KVM虛擬機(jī)的方法還包括:在將所述源虛擬機(jī)內(nèi)系統(tǒng)盤和數(shù)據(jù)盤的數(shù)據(jù)迀移同步到所述目標(biāo)虛擬機(jī)內(nèi)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤之后,將所述源虛擬機(jī)的MAC地址變更信息廣播發(fā)送至目標(biāo)虛擬機(jī)。
[0009]作為本發(fā)明的一種優(yōu)選方案,所述目標(biāo)虛擬機(jī)中目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤的大小、路徑與所述源虛擬機(jī)中系統(tǒng)盤和數(shù)據(jù)盤的大小、路徑相同。
[0010]為實現(xiàn)上述目的,本發(fā)明還提供一種熱迀移KVM虛擬機(jī)的系統(tǒng),與Libvirt、源物理機(jī)和目標(biāo)物理機(jī)相連,用于利用Libvirt將源物理機(jī)上的源虛擬機(jī)迀移到目標(biāo)物理機(jī)中,所述熱迀移KVM虛擬機(jī)的系統(tǒng)包括:第一創(chuàng)建模塊,用于利用Libvirt在所述目標(biāo)物理機(jī)上創(chuàng)建與所述源物理機(jī)上的源虛擬機(jī)中系統(tǒng)盤和數(shù)據(jù)盤對應(yīng)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤;第二創(chuàng)建模塊,與所述第一創(chuàng)建模塊相連,用于利用Libvirt在所述目標(biāo)物理機(jī)上創(chuàng)建一個配置與所述源物理機(jī)上的源虛擬機(jī)的配置相同的目標(biāo)虛擬機(jī);網(wǎng)絡(luò)設(shè)置模塊,分別與所述第一創(chuàng)建模塊和所述第二創(chuàng)建模塊相連,用于利用Libvirt設(shè)置所述目標(biāo)虛擬機(jī)的IP地址和端口號;指令模塊,與所述網(wǎng)絡(luò)設(shè)置模塊相連,用于利用Libvirt向所述源虛擬機(jī)發(fā)送用于向所述目標(biāo)虛擬機(jī)迀移數(shù)據(jù)的迀移指令;迀移模塊,與所述指令模塊相連,用于根據(jù)所述迀移指令將所述源虛擬機(jī)內(nèi)系統(tǒng)盤和數(shù)據(jù)盤的數(shù)據(jù)迀移同步到所述目標(biāo)虛擬機(jī)內(nèi)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤。
[0011]作為本發(fā)明的一種優(yōu)選方案,所述迀移模塊包括:調(diào)用設(shè)置單元,通過循環(huán)調(diào)用所述源物理機(jī)內(nèi)的磁盤和內(nèi)存迀移函數(shù)將所述源虛擬機(jī)的磁盤按塊組織成一個數(shù)組并將所述虛擬機(jī)的內(nèi)存的所有頁設(shè)置為臟頁;同步迀移單元,與所述調(diào)用設(shè)置單元相連,用于依次將所述源虛擬機(jī)的磁盤數(shù)據(jù)和內(nèi)存數(shù)據(jù)對應(yīng)同步迀移至所述目標(biāo)虛擬機(jī)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤。
[0012]作為本發(fā)明的一種優(yōu)選方案,所述熱迀移KVM虛擬機(jī)的系統(tǒng)還包括:狀態(tài)設(shè)置模塊,用于在利用Libvirt在所述目標(biāo)物理機(jī)上創(chuàng)建一個配置與所述源物理機(jī)上的源虛擬機(jī)的配置相同的目標(biāo)虛擬機(jī)之后,將所述目標(biāo)虛擬機(jī)的狀態(tài)設(shè)置為暫停狀態(tài)并使所述目標(biāo)虛擬機(jī)監(jiān)聽用于接收迀移數(shù)據(jù)的網(wǎng)絡(luò)端口,且在所述源虛擬機(jī)將系統(tǒng)盤和數(shù)據(jù)盤中的數(shù)據(jù)迀移同步到所述目標(biāo)虛擬機(jī)中的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤之后,將所述目標(biāo)虛擬機(jī)的狀態(tài)設(shè)置為運行狀態(tài)并將所述源虛擬機(jī)的狀態(tài)設(shè)置為暫停狀態(tài)。
[0013]作為本發(fā)明的一種優(yōu)選方案,所述熱迀移KVM虛擬機(jī)的系統(tǒng)還包括:變更信息廣播模塊,與所述迀移模塊相連,用于在將所述源虛擬機(jī)內(nèi)系統(tǒng)盤和數(shù)據(jù)盤的數(shù)據(jù)迀移同步到所述目標(biāo)虛擬機(jī)內(nèi)的目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤之后,將所述源虛擬機(jī)的MAC地址變更信息廣播發(fā)送至目標(biāo)虛擬機(jī)。
[0014]作為本發(fā)明的一種優(yōu)選方案,所述第一創(chuàng)建模塊在創(chuàng)建目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤時,控制所述目標(biāo)虛擬機(jī)中目標(biāo)系統(tǒng)盤和目標(biāo)數(shù)據(jù)盤的大小、路徑與所述源虛擬機(jī)中系統(tǒng)盤和數(shù)據(jù)盤的大小、路徑相同。
[0015]如上所述,本發(fā)明的一種熱迀移KVM虛擬機(jī)的方法及系統(tǒng),具有以下有益效果:
[0016]本發(fā)明在保證虛擬機(jī)業(yè)務(wù)連續(xù)性的情況下,實現(xiàn)KVM虛擬機(jī)的迀移,從而滿足用戶對于虛擬機(jī)服務(wù)高可用性要求很高的場合。此外,本發(fā)明簡單高效,具有較強(qiáng)的通用性和實用性。
【附圖說明】
[0017]圖1顯示為本發(fā)明的熱迀移KVM虛擬機(jī)的方法的流程示意圖。
[0018]圖2顯示為本發(fā)明的熱迀移KVM虛擬機(jī)的迀移示意圖。
[0019]圖3顯示為本發(fā)明的熱迀移KVM虛擬機(jī)的系統(tǒng)的結(jié)構(gòu)示意圖。
[0020]圖4顯示為本發(fā)明的熱迀移KVM虛擬機(jī)的系統(tǒng)中迀移模塊的結(jié)構(gòu)示意圖。
[0021]元件標(biāo)號說明
[0022]I熱迀移KVM虛擬機(jī)的系統(tǒng)
[0023]11第一創(chuàng)建模塊
[0024]12第二創(chuàng)建模塊
[0025]13網(wǎng)絡(luò)設(shè)置模塊
[0026]14指令模塊
[0027]15迀移模塊
[0028]151 調(diào)用設(shè)置單元
[0029]152同步迀移單元
[0030]16狀態(tài)設(shè)置模塊
[0031]17變更信息廣播模塊
[0032]511?515步驟
【具體實施方式】
[0033]以下通過特定的具體實例說明本發(fā)明的實施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可以通過另外不同的【具體實施方式】加以實施或應(yīng)用,本說明書中的各項細(xì)節(jié)也可以基于