一種虛擬機遷移方法
【專利摘要】本發(fā)明公開了一種虛擬機遷移方法,包括源主機和目的物理機,其遷移過程為:在源主機內壓縮內存數據,然后傳輸給目的物理機,在傳輸過程中,源主機通過壓縮算法將內存數據壓縮,傳輸完畢后,目的物理機則通過對應的解壓縮算法解壓,完成數據的整個遷移過程。該虛擬機遷移方法與現有技術相比,將CBC壓縮算法植入到虛擬機遷移代碼當中,以此減少了遷移過程中需要傳輸的數據量,從而實現虛擬機更有效的遷移,提高虛擬機實時遷移的效率,實用性強,易于推廣。
【專利說明】
一種虛擬機遷移方法
技術領域
[0001]本發(fā)明涉及云計算技術領域,具體地說是一種實用性強、虛擬機迀移方法。
【背景技術】
[0002]在云環(huán)境下,虛擬機的實時迀移一般采取一種基于內存預拷貝(Pre-copy)的方式。它能保持在虛擬機運行的同時,將虛擬機的信息從原物理機器拷貝到目的機器上,并且在目的物理機上啟動起來,在這個過程中虛擬機停機時間很短,用戶根本感覺不到。
[0003]實時迀移的內容是將整個虛擬機完整的虛擬資源都迀移到目的機器上。這些信息包括:CPU寄存器信息、內存信息、磁盤信息和一些虛擬設備信息。不同的信息,采取不同的方法處理。對于CPU寄存器信息,由于寄存器中內容非常少,故一般停機拷貝寄存器信息并不會對實時迀移指令產生什么影響;對于數據量最大的磁盤信息,一般采用共享存儲的方式來實現迀移,這樣不占用網絡帶寬,且效率相當高;而最大的難點就是內存信息的拷貝,所謂的內存預拷貝算法,也就是主要針對內存信息而言。因為內存信息數量大,同時改動數據比較快,一旦內存改動速度超過了網絡傳輸速度,內存預拷貝算法就可能失效,就只能停機拷貝,實時迀移的性能就會急劇下降。
[0004]云環(huán)境中包含異構的物理主機和在主機上運行著的虛擬機,虛擬機在迀移過程中存在著數據傳輸量大,總迀移時間長,或者“臟”數據率大于網絡傳輸速度等問題,從而造成預拷貝算法提前失效,影響虛擬機的服務質量。
[0005]在現有技術中,CBC壓縮算法是一種基于內存特征的實時壓縮算法。該算法基于這樣一種思想,將內存中的指令頁和數據頁分開壓縮的思想。就是說,對于要輸入的被壓縮的數據,首先,分析數據的特征,并將其歸為指令頁或者數據頁。如果為指令頁,則采用針對指令頁優(yōu)化過的壓縮算法;否則,將采用針對數據頁優(yōu)化過的壓縮算法,這樣,可以達到一個很高的壓縮率的同時,也可以提高壓縮速度。
[0006]鑒于該壓縮算法,本發(fā)明提供一種虛擬機迀移方法。
【發(fā)明內容】
[0007]本發(fā)明的技術任務是針對以上不足之處,提供一種實用性強、虛擬機迀移方法。
[0008]—種虛擬機迀移方法,包括源主機和目的物理機,其迀移過程為:在源主機內壓縮內存數據,然后傳輸給目的物理機,在傳輸過程中,源主機通過壓縮算法將內存數據壓縮,傳輸完畢后,目的物理機則通過對應的解壓縮算法解壓,完成數據的整個迀移過程。
[0009]所述壓縮算法通過CBC編碼器實現,解壓縮算法通過CBC解碼器實現,且CBC編碼器植入到源主機的xc_domian_save()函數中,CBC解碼器置入到目的物理機的xc_domain_restore()函數中。
[0010]所述內存數據的具體壓縮過程為:
首先將虛擬機在源主機中的物理地址轉換成虛擬機的物理地址;
然后開始內存預拷貝算法每一次的循環(huán); 通過預拷貝算法將要傳輸的頁面送出,作為CBC編碼器的輸入數據,進行壓縮編碼; 壓縮后的數據通過socket傳輸到目的物理機。
[0011]所述目的物理機的解壓縮過程為:
目的物理機的xc_domain_restore()函數接收傳輸過來的數據,將其交給CBC解碼器; CBC解碼器將數據解壓后通過預拷貝算法進行處理;
內存預拷貝算法將接收到的內存頁面進行相關處理,然后將內存地址進行M2P模塊轉換;
在目的物理機上重新建立虛擬機的物理地址和宿主地址的物理地址的對應關系,完成整個迀移過程。
[0012 ]本發(fā)明的一種虛擬機迀移方法,具有以下優(yōu)點:
本發(fā)明提供的一種虛擬機迀移方法,將CBC壓縮算法植入到虛擬機迀移代碼當中,以此減少了迀移過程中需要傳輸的數據量,從而實現虛擬機更有效的迀移,提高虛擬機實時迀移的效率,實用性強,易于推廣。
【附圖說明】
[0013]附圖1為本發(fā)明的實現流程圖。
【具體實施方式】
[0014]下面結合附圖和具體實施例對本發(fā)明作進一步說明。
[0015]針對目前普遍采用的一種虛擬機在線迀移方式,即內存預拷貝(pre-copy)方法中存在一些瓶頸,比如數據傳輸量大,總迀移時間長,而且在“臟”數據率大于網絡傳輸速度的時候,內存預拷貝算法就會失效,增加停機時間。
[0016]針對這樣的問題,如附圖1所示,本發(fā)明的一種虛擬機迀移方法,包括源主機和目的物理機,其迀移過程為:在源主機內壓縮內存數據,然后傳輸給目的物理機,在傳輸過程中,源主機通過壓縮算法將內存數據壓縮,傳輸完畢后,目的物理機則通過對應的解壓縮算法解壓,完成數據的整個迀移過程。
[0017]所述壓縮算法通過CBC編碼器實現,解壓縮算法通過CBC解碼器實現,且CBC編碼器植入到源主機的xc_domian_save()函數中,CBC解碼器置入到目的物理機的xc_domain_restore()函數中。
[0018]所述內存數據的具體壓縮過程為:
首先將虛擬機在源主機中的物理地址轉換成虛擬機的物理地址,由附圖可以看出,當進行虛擬機實時迀移的時候,首先要將虛擬機在源主機中的物理地址轉換為虛擬機的物理地址,這個過程稱為P2M變換。因為在目的物理主機中,虛擬機的P2M表和源物理主機的P2M表在大多數情況下是不相同的,虛擬機迀移之后,只有通過M2P變換重新建立對應關系,虛擬機迀移才有可能正確;
然后開始內存預拷貝算法每一次的循環(huán);
通過預拷貝算法將要傳輸的頁面送出,作為CBC編碼器的輸入數據,進行壓縮編碼; 壓縮后的數據通過socket傳輸到目的物理機。
[0019]所述目的物理機的解壓縮過程為: 目的物理機的xc_domain_restore()函數接收傳輸過來的數據,將其交給CBC解碼器; CBC解碼器將數據解壓后通過預拷貝算法進行處理;
內存預拷貝算法將接收到的內存頁面進行相關處理,然后將內存地址進行M2P模塊轉換;
在目的物理機上重新建立虛擬機的物理地址和宿主地址的物理地址的對應關系,完成整個迀移過程。
[0020]所述CBC編碼器包括數據特征分析模塊、指令頁壓縮模塊和數據頁壓縮模塊,其中數據特征分析模塊是對數據特征進行分析,得出內存相似度,并將其歸為指令頁或者數據頁,如果為指令頁,則采用針對指令頁優(yōu)化過的壓縮算法;否則,將采用針對數據頁優(yōu)化過的壓縮算法;然后,指令頁壓縮模塊與數據頁壓縮模塊根據分析的結果,進行相應的壓縮。
[0021]所述CBC解碼器則對應上述CBC編碼器,實現所有編碼數據的解壓縮。
[0022]上述【具體實施方式】僅是本發(fā)明的具體個案,本發(fā)明的專利保護范圍包括但不限于上述【具體實施方式】,任何符合本發(fā)明的一種虛擬機迀移方法的權利要求書的且任何所述技術領域的普通技術人員對其所做的適當變化或替換,皆應落入本發(fā)明的專利保護范圍。
【主權項】
1.一種虛擬機迀移方法,其特征在于,包括源主機和目的物理機,其迀移過程為:在源主機內壓縮內存數據,然后傳輸給目的物理機,在傳輸過程中,源主機通過壓縮算法將內存數據壓縮,傳輸完畢后,目的物理機則通過對應的解壓縮算法解壓,完成數據的整個迀移過程。2.根據權利要求1所述的一種虛擬機迀移方法,其特征在于,所述壓縮算法通過CBC編碼器實現,解壓縮算法通過CBC解碼器實現,且CBC編碼器植入到源主機的XC_domian_SaVe()函數中,CBC解碼器置入到目的物理機的xc_domain_restore()函數中。3.根據權利要求2所述的一種虛擬機迀移方法,其特征在于,所述內存數據的具體壓縮過程為: 首先將虛擬機在源主機中的物理地址轉換成虛擬機的物理地址; 然后開始內存預拷貝算法每一次的循環(huán); 通過預拷貝算法將要傳輸的頁面送出,作為CBC編碼器的輸入數據,進行壓縮編碼; 壓縮后的數據通過socket傳輸到目的物理機。4.根據權利要求2所述的一種虛擬機迀移方法,其特征在于,所述目的物理機的解壓縮過程為: 目的物理機的xc_domain_restore()函數接收源主機傳輸過來的數據,將其交給CBC解碼器; CBC解碼器將數據解壓后通過預拷貝算法進行處理; 內存預拷貝算法將接收到的內存頁面進行相關處理,然后將內存地址進行轉換; 在目的物理機上重新建立虛擬機的物理地址和宿主地址的物理地址的對應關系,完成整個迀移過程。
【文檔編號】G06F9/48GK106020946SQ201610295302
【公開日】2016年10月12日
【申請日】2016年5月6日
【發(fā)明人】張衛(wèi)品, 戴鴻君, 于治樓
【申請人】浪潮集團有限公司