源主機(jī)和目的主機(jī)上的虛擬機(jī)內(nèi)存遷移裝置、方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地涉及一種虛擬機(jī)內(nèi)存遷移裝置、方法及系 統(tǒng)。
【背景技術(shù)】
[0002] 當(dāng)前云計(jì)算的核心技術(shù)之一是虛擬化,也就是對(duì)原有基礎(chǔ)設(shè)施資源進(jìn)行整合,以 虛擬機(jī)的形式對(duì)用戶提供虛擬化服務(wù)。虛擬機(jī)運(yùn)行在實(shí)際的物理主機(jī)上,在實(shí)際應(yīng)用中,有 些場合下,例如,負(fù)載均衡、容錯(cuò)、節(jié)約能源等,需要遷移虛擬機(jī),即,將虛擬機(jī)從一個(gè)物理主 機(jī)上遷移到另一個(gè)物理主機(jī)上。而往往在不關(guān)閉虛擬機(jī)的情況下進(jìn)行的遷移,也就是熱遷 移更有意義。這里,如何遷移虛擬機(jī)的內(nèi)存是較為關(guān)鍵的技術(shù)。
[0003]目前已有的內(nèi)存熱遷移技術(shù)為pre-copy(預(yù)拷貝)和post-copy(后拷貝)。前者 是保持源VM(虛擬機(jī))的運(yùn)行,拷貝內(nèi)存頁到目的VM,對(duì)于此過程中產(chǎn)生的臟頁面,重復(fù)迭 代拷貝傳輸?shù)倪^程,直到源VM上的臟頁面較少,可在一輪傳輸中完成時(shí),停止源VM,拷貝剩 余的臟頁面,然后切換到目的VM工作。缺點(diǎn)是,針對(duì)臟頁面產(chǎn)生頻繁的情況,遷移時(shí)間會(huì)很 長,甚至無法完成遷移,導(dǎo)致遷移失敗。后者是從源VM向目的VM拷貝CPU狀態(tài)和其它外設(shè) 狀態(tài)后,啟動(dòng)目的VM的運(yùn)行,如果遇到缺失的內(nèi)存頁,則通過從源VM拷貝到目的VM的方式 獲取。缺點(diǎn)是缺頁的情況下,嚴(yán)重影響對(duì)外提供服務(wù)的性能。
[0004] 因此,需要一種能夠提高缺頁訪問的效率、減小對(duì)服務(wù)性能的影響地對(duì)虛擬機(jī)內(nèi) 存進(jìn)行熱遷移的方法。
【發(fā)明內(nèi)容】
[0005] 在下文中給出關(guān)于本發(fā)明的簡要概述,以便提供關(guān)于本發(fā)明的某些方面的基本理 解。應(yīng)當(dāng)理解,這個(gè)概述并不是關(guān)于本發(fā)明的窮舉性概述。它并不是意圖確定本發(fā)明的關(guān) 鍵或重要部分,也不是意圖限定本發(fā)明的范圍。其目的僅僅是以簡化的形式給出某些概念, 以此作為稍后論述的更詳細(xì)描述的前序。
[0006] 本發(fā)明的一個(gè)主要目的在于,提供一種源主機(jī)上的虛擬機(jī)內(nèi)存遷移裝置,包括:初 始拷貝單元,用于初始地將源主機(jī)上的源虛擬機(jī)的內(nèi)存頁面全部拷貝到目的主機(jī)上的目的 虛擬機(jī);標(biāo)記單元,用于標(biāo)記源虛擬機(jī)的每個(gè)內(nèi)存頁面在從源虛擬機(jī)拷貝到目的虛擬機(jī)的 過程中是否發(fā)生改變;暫停單元,用于暫停源虛擬機(jī)的運(yùn)行,將所標(biāo)記的源虛擬機(jī)的每個(gè)內(nèi) 存頁面是否發(fā)生改變的狀態(tài)從源主機(jī)傳送到目的主機(jī),并將對(duì)外部請(qǐng)求的服務(wù)從源虛擬機(jī) 轉(zhuǎn)移到目的虛擬機(jī);訪問單元,用于響應(yīng)于目的主機(jī)監(jiān)控到要被訪問的目的虛擬機(jī)的內(nèi)存 頁面被標(biāo)記為發(fā)生了改變,恢復(fù)源虛擬機(jī)的運(yùn)行,以在源虛擬機(jī)上對(duì)相應(yīng)的源虛擬機(jī)的內(nèi) 存頁面進(jìn)行訪問;管理單元,用于將相應(yīng)的源虛擬機(jī)的內(nèi)存頁面?zhèn)魉偷侥康奶摂M機(jī),將相應(yīng) 的源虛擬機(jī)的內(nèi)存頁面的狀態(tài)重新標(biāo)記為未發(fā)生改變,以及將重新標(biāo)記后的相應(yīng)的源虛擬 機(jī)的內(nèi)存頁面的狀態(tài)同步到目的主機(jī)。
[0007] 根據(jù)本發(fā)明的一個(gè)方面,提供了一種目的主機(jī)上的虛擬機(jī)內(nèi)存遷移裝置,包括:虛 擬機(jī)內(nèi)存頁面保存單元,用于保存從源主機(jī)上的源虛擬機(jī)拷貝過來的源虛擬機(jī)的內(nèi)存頁 面;內(nèi)存頁面狀態(tài)保存單元,用于保存在從源虛擬機(jī)拷貝源虛擬機(jī)的內(nèi)存頁面的過程中每 個(gè)源虛擬機(jī)的內(nèi)存頁面是否發(fā)生改變的狀態(tài);目的虛擬機(jī)監(jiān)控單元,用于在對(duì)外部請(qǐng)求提 供服務(wù)時(shí)監(jiān)控對(duì)目的虛擬機(jī)的內(nèi)存頁面的訪問,如果監(jiān)控到要被訪問的目的虛擬機(jī)的內(nèi)存 頁面被標(biāo)記為發(fā)生了改變,暫停目的虛擬機(jī),并將對(duì)標(biāo)記為發(fā)生了改變的所述內(nèi)存頁面的 訪問從目的虛擬機(jī)轉(zhuǎn)移到源虛擬機(jī);管理單元,用于接收來自源虛擬機(jī)的相應(yīng)的源虛擬機(jī) 的內(nèi)存頁面以及重新標(biāo)記后的相應(yīng)的源虛擬機(jī)的內(nèi)存頁面的狀態(tài),并且恢復(fù)目的虛擬機(jī)的 運(yùn)行。另外,本發(fā)明的實(shí)施例還提供了用于實(shí)現(xiàn)上述方法的計(jì)算機(jī)程序。
[0008] 根據(jù)本發(fā)明的又一個(gè)方面,提供了一種虛擬機(jī)遷移系統(tǒng),包括源主機(jī)上的虛擬機(jī) 內(nèi)存遷移裝置和目的主機(jī)上的虛擬機(jī)內(nèi)存遷移裝置。
[0009] 此外,本發(fā)明的實(shí)施例還提供了至少計(jì)算機(jī)可讀介質(zhì)形式的計(jì)算機(jī)程序產(chǎn)品,其 上記錄有用于實(shí)現(xiàn)上述方法的計(jì)算機(jī)程序代碼。
[0010] 通過以下結(jié)合附圖對(duì)本發(fā)明的最佳實(shí)施例的詳細(xì)說明,本發(fā)明的這些以及其他優(yōu) 點(diǎn)將更加明顯。
【附圖說明】
[0011] 參照下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例的說明,會(huì)更加容易地理解本發(fā)明的以上和其 它目的、特點(diǎn)和優(yōu)點(diǎn)。附圖中的部件只是為了示出本發(fā)明的原理。在附圖中,相同的或類似 的技術(shù)特征或部件將采用相同或類似的附圖標(biāo)記來表示。
[0012] 圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)內(nèi)存遷移方法的簡化示意圖;
[0013] 圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)內(nèi)存遷移方法的整體示意圖;
[0014] 圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)內(nèi)存遷移方法100的示例性流程 圖;
[0015] 圖4示出了利用位圖管理內(nèi)存頁面的示意圖;
[0016] 圖5示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例對(duì)目的虛擬機(jī)產(chǎn)生缺頁進(jìn)行處理的示意圖;
[0017] 圖6示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例將臟頁面的頁面號(hào)壓入和彈出棧的示意圖;
[0018] 圖7示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的后臺(tái)守護(hù)進(jìn)程對(duì)臟頁面進(jìn)行傳輸?shù)氖纠?性流程圖;
[0019] 圖8是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的在源主機(jī)上的虛擬機(jī)內(nèi)存遷移裝置800的 示例性配置的框圖;
[0020] 圖9是示出圖8中的訪問單元808的一種示例性配置的框圖;
[0021] 圖10示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的訪問單元808'的另一種示例性配置的框 圖;
[0022] 圖11是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的在目的主機(jī)上的虛擬機(jī)內(nèi)存遷移裝置 1100的示例性配置的框圖;
[0023] 圖12是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的在源主機(jī)上的虛擬機(jī)內(nèi)存遷移方法1200 的示例性流程圖;
[0024] 圖13是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的在目的主機(jī)上的虛擬機(jī)內(nèi)存遷移方法 1300的示例性流程圖;以及
[0025] 圖14是示出可以用于實(shí)施本發(fā)明的虛擬機(jī)內(nèi)存遷移裝置和方法的計(jì)算設(shè)備的示 例性結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0026] 下面參照附圖來說明本發(fā)明的實(shí)施例。在本發(fā)明的一個(gè)附圖或一種實(shí)施方式中描 述的元素和特征可以與一個(gè)或更多個(gè)其它附圖或?qū)嵤┓绞街惺境龅脑睾吞卣飨嘟Y(jié)合。應(yīng) 當(dāng)注意,為了清楚的目的,附圖和說明中省略了與本發(fā)明無關(guān)的、本領(lǐng)域普通技術(shù)人員已知 的部件和處理的表示和描述。
[0027] 圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)內(nèi)存遷移方法的簡化示意圖。
[0028] 簡單來說,根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)內(nèi)存遷移方法在時(shí)間順序上可以分 為三個(gè)階段。第一個(gè)階段是全拷貝階段,第二個(gè)階段是循環(huán)拷貝階段,第三個(gè)階段是清理階 段。
[0029] 在全拷貝階段,源主機(jī)上的源虛擬機(jī)的內(nèi)存頁面全部拷貝到目的主機(jī)上的目的虛 擬機(jī)。
[0030] 在循環(huán)拷貝階段,將源虛擬機(jī)的所有臟頁面?zhèn)鬏數(shù)侥康奶摂M機(jī)。當(dāng)一個(gè)內(nèi)存頁面 從源虛擬機(jī)拷貝到目的虛擬機(jī)之后中,在源虛擬機(jī)上又發(fā)生改變,則該內(nèi)存頁面被稱為臟 頁面。這里所說的"發(fā)生改變"是指該內(nèi)存頁面在從源虛擬機(jī)拷貝到目的虛擬機(jī)之后在源 主機(jī)上被CPU進(jìn)行了寫操作。
[0031] 根據(jù)來自CPU的內(nèi)存訪問請(qǐng)求,目的主機(jī)上的虛擬機(jī)管理器將決定如何在源虛擬 機(jī)或目的虛擬機(jī)上運(yùn)行。CPU將在源虛擬機(jī)和目的虛擬機(jī)之間來回切換。當(dāng)所有的臟頁面 都被轉(zhuǎn)移到目的虛擬機(jī)之后,循環(huán)拷貝階段結(jié)束。
[0032] 通過以上兩個(gè)階段,內(nèi)存遷移實(shí)際上已經(jīng)完成,在最后的清理階段,終止源虛擬 機(jī),目的虛擬機(jī)開始運(yùn)行,遷移過程結(jié)束。
[0033] 圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)內(nèi)存遷移方法的整體示意圖。
[0034] 從圖2中可以看到,在將源虛擬機(jī)上的內(nèi)存熱遷移到目的虛擬機(jī)之前,還要進(jìn)行 遷移前的準(zhǔn)備。具體地,源虛擬機(jī)管理器與目的虛擬機(jī)管理器建立聯(lián)系,然后源虛擬機(jī)管理 器將源虛擬機(jī)的資源信息(包括CPU、內(nèi)存、內(nèi)存虛擬設(shè)備等)傳送到目的虛擬機(jī)管理器。 目的虛擬機(jī)管理器將根據(jù)資源信息查詢目的主機(jī)上的資源是否足夠了。如果資源足夠,目 的虛擬機(jī)管理器將向目的主機(jī)申請(qǐng)資源,為虛擬機(jī)遷移做準(zhǔn)備。然后目的虛擬機(jī)管理器利 用這些資源創(chuàng)建虛擬機(jī)并啟動(dòng)它。之后,目的虛擬機(jī)管理器通知源虛擬機(jī)管理器準(zhǔn)備遷移。 此時(shí)目的虛擬機(jī)處于監(jiān)聽狀態(tài),但不運(yùn)行。如果資源不夠,目的虛擬機(jī)管理器通知源虛擬機(jī) 管理器無法遷移,則遷移失敗。
[0035] 圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)內(nèi)存遷移方法100的示