亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法

文檔序號(hào):6522282閱讀:363來源:國(guó)知局
基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法
【專利摘要】本發(fā)明公開了一種基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法,主要涉及虛擬機(jī)虛擬化領(lǐng)域。該方法包括:修改虛擬機(jī)管理器后臺(tái)驅(qū)動(dòng)以指導(dǎo)客戶機(jī)的內(nèi)存遷移;編寫客戶機(jī)Virtio驅(qū)動(dòng)以分配保留頁面;參考內(nèi)存位圖進(jìn)行非保留頁面的循環(huán)遷移。本發(fā)明將半虛擬化技術(shù)應(yīng)用于虛擬機(jī)的遷移當(dāng)中,通過虛擬機(jī)內(nèi)存的實(shí)際使用情況動(dòng)態(tài)地進(jìn)行內(nèi)存遷移,相對(duì)于傳統(tǒng)虛擬機(jī)遷移方法,能夠大大降低虛擬機(jī)的內(nèi)存遷移時(shí)間和開銷,提高遷移效率。
【專利說明】基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬機(jī)虛擬化領(lǐng)域,特別涉及一種采用virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法。
【背景技術(shù)】
[0002]虛擬機(jī)是指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。通過對(duì)計(jì)算資源的抽象,屏蔽各種各樣復(fù)雜的底層物理環(huán)境,來實(shí)現(xiàn)虛擬化。虛擬化技術(shù)分為以下三類:用戶層的虛擬化,基于操作系統(tǒng)的有硬件支持的虛擬化,直接操作管理硬件的虛擬化。而不同的虛擬機(jī)使用不同的虛擬化技術(shù),如當(dāng)前使用最為廣泛的X86虛擬機(jī)有Vmware,Xen, KVM,其中KVM是使用Linux內(nèi)核的虛擬機(jī),它只能支持有硬件支持的虛擬化,而在用戶層使用Qemu來實(shí)現(xiàn)。
[0003]虛擬機(jī)的遷移技術(shù)是虛擬機(jī)虛擬化技術(shù)的一個(gè)研究熱點(diǎn),流行的虛擬化解決方案基本上都有對(duì)應(yīng)的遷移技術(shù),虛擬機(jī)遷移分為P2V,P2P,V2V三種,而這里討論的KVM則是其中的V2V(虛擬機(jī)遷移到虛擬機(jī))。虛擬機(jī)遷移主要工作為CPU狀態(tài)的遷移,內(nèi)存的遷移,塊設(shè)備遷移,網(wǎng)絡(luò)遷移這幾個(gè)部分,針對(duì)內(nèi)存和塊設(shè)備的遷移,KVM采用了預(yù)拷貝技術(shù)。如何縮短在線遷移的時(shí)間,只用很短的停機(jī)時(shí)間使得用戶盡可能的感覺不到,是虛擬機(jī)在線遷移技術(shù)需要解決的問題。
[0004]當(dāng)前內(nèi)存在線遷移的實(shí)現(xiàn)通常采用預(yù)拷貝技術(shù),就是先把全部?jī)?nèi)存拷貝過去,然后再逐步把變化過的部分遷移過去,直到估計(jì)剩余的頁面可以在一個(gè)可接受的很短的時(shí)間片內(nèi)完成,此時(shí)源虛擬機(jī)停機(jī),完成剩余的拷貝,最后目的虛擬機(jī)開始運(yùn)行。
[0005]當(dāng)前的內(nèi)存在線遷移方案中,具有一定的時(shí)間和帶寬浪費(fèi)。目前的虛擬機(jī)內(nèi)存配置一般都在一到幾個(gè)GB,如果把全部?jī)?nèi)存頁標(biāo)記上并全部拷貝至目的機(jī),這樣的效率很低。其實(shí)這幾個(gè)GB的內(nèi)存空間中,真正是系統(tǒng)占有的、有用的空間所占比例往往很小,這部分的內(nèi)存內(nèi)容的拷貝占用了大量的時(shí)間和網(wǎng)絡(luò)帶寬。

【發(fā)明內(nèi)容】

[0006](一)要解決的技術(shù)問題
[0007]本發(fā)明要解決的技術(shù)問題是:如何提供一種高效的虛擬機(jī)內(nèi)存在線遷移方法,從而減少不必要的時(shí)間和帶寬開銷。
[0008](二)技術(shù)方案
[0009]為解決上述技術(shù)問題,本發(fā)明提供一種基于Virtio驅(qū)動(dòng)的虛擬機(jī)內(nèi)存在線遷移方法,包括以下幾個(gè)方面:
[0010]Ul:設(shè)計(jì)虛擬機(jī)管理器用戶層Qemu的驅(qū)動(dòng),工作在宿主機(jī)的用戶態(tài),負(fù)責(zé)Virtiopci設(shè)備的模擬以及內(nèi)存頁面循環(huán)遷移過程的控制;
[0011]U2:設(shè)計(jì)源客戶機(jī)Virtio驅(qū)動(dòng)程序,盡可能多地分配保留內(nèi)存頁面,并以內(nèi)存位圖形式記錄下內(nèi)存頁面情況;[0012]U3:設(shè)計(jì)目的客戶機(jī)的驅(qū)動(dòng)程序,使得循環(huán)遷移結(jié)束后,啟用目的虛擬機(jī)并釋放保留的內(nèi)存頁面。
[0013]優(yōu)選地,在設(shè)計(jì)宿主機(jī)Ul相關(guān)工作中,包括以下幾個(gè)方面:
[0014]Ull:使用初始化函數(shù)Virtio_migration_init,做virtio驅(qū)動(dòng)初始化,分配虛擬隊(duì)列,進(jìn)行PCI配置空間初始化等;
[0015]U12:設(shè)置分別用于處理讀取和設(shè)置PCI配置空間的兩個(gè)函數(shù)virtio_migration_get_config (保留頁面獲取函數(shù))和virtio_migration_set_config (保留頁面設(shè)置函數(shù)),用來指導(dǎo)客戶機(jī)分配內(nèi)存;
[0016]U13:使用虛擬隊(duì)列的函數(shù)virtio_migration_handle_output處理回調(diào),進(jìn)行內(nèi)存位圖的回調(diào)處理;
[0017]U14:參考內(nèi)存位圖,使用 arch_init.c 中的函數(shù) ram_save_live 和 ram_save_block進(jìn)行內(nèi)存頁面的循環(huán)遷移工作。
[0018]優(yōu)選地,在設(shè)計(jì)源客戶機(jī)U2相關(guān)工作中,包括以下幾個(gè)方面:
[0019]U21:定義 Virtio_driver 信息,使用接口 函數(shù)(如 register_virtio_driver 函數(shù))將其注冊(cè)為Virtio驅(qū)動(dòng),并調(diào)用virtballoon_probe初始化函數(shù)進(jìn)行初始化;
[0020]U22:使用內(nèi)核線程函數(shù)migration負(fù)責(zé)監(jiān)視PCI設(shè)備配置空間預(yù)保留頁面數(shù)的變化,當(dāng)預(yù)保留頁面數(shù)大于已保留頁面數(shù)就會(huì)調(diào)用fill_balloon (內(nèi)存頁面分配函數(shù))進(jìn)行頁面分配,當(dāng)預(yù)保留頁面數(shù)小于已保留頁面數(shù)就會(huì)調(diào)用leak_balloon (內(nèi)存頁面釋放函數(shù))進(jìn)行頁面釋放;
[0021]U23:如果是調(diào)用內(nèi)存頁面分配函數(shù),則使用fill_balloon函數(shù)分配內(nèi)存頁面,將分配得到的內(nèi)存頁面號(hào)保存在vb->pageS鏈表中,并置內(nèi)存位圖相應(yīng)位為I ;
[0022]U24:如果是調(diào)用內(nèi)存頁面釋放函數(shù),則使用leak_balloon函數(shù)釋放內(nèi)存頁面,遍歷vb_>pages鏈表刪除每個(gè)內(nèi)存頁面,并置內(nèi)存位圖相應(yīng)位為O ;
[0023]U25:使用接口函數(shù)unregister_virtio_driver進(jìn)行驅(qū)動(dòng)的移除,并調(diào)用virtioballoon_remove (內(nèi)存頁面清除函數(shù))釋放內(nèi)存。
[0024]優(yōu)選地,在設(shè)計(jì)目的客戶機(jī)U3相關(guān)工作中,包括以下幾個(gè)方面:
[0025]U31:循環(huán)遷移完畢時(shí),啟用目的虛擬機(jī),代替源虛擬機(jī)對(duì)外提供服務(wù);
[0026]U32:目的虛擬機(jī)釋放保留的內(nèi)存頁面,恢復(fù)內(nèi)存頁面的正常使用。
[0027](三)有益效果
[0028]本發(fā)明提供了一種基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)在線遷移的方法,其在內(nèi)存頁面遷移方面使用保留頁面方法,經(jīng)實(shí)驗(yàn)檢驗(yàn),除了內(nèi)存使用率極高、已接近100%這個(gè)極端情況以外,使用Virtio驅(qū)動(dòng)的方法能很好的縮短虛擬機(jī)的在線遷移時(shí)間,而且內(nèi)存使用率越低,其遷移時(shí)間的改善效果就越明顯。
【專利附圖】

【附圖說明】
[0029]圖1是本發(fā)明實(shí)施例所述基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的系統(tǒng)結(jié)構(gòu)圖;
[0030]圖2是本發(fā)明實(shí)施例所述基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法流程圖;[0031]圖3是本發(fā)明實(shí)施例所述使用Virtio驅(qū)動(dòng)分配保留頁面的流程圖。
【具體實(shí)施方式】
[0032]下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
[0033]圖1是本發(fā)明實(shí)施例所述基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的系統(tǒng)結(jié)構(gòu)圖,如圖1所述,該系統(tǒng)結(jié)構(gòu)包括以下幾個(gè)方面:
[0034]Ul (宿主機(jī)),執(zhí)行以下功能:虛擬機(jī)管理器用戶層Qemu的驅(qū)動(dòng),工作在宿主機(jī)的用戶態(tài),負(fù)責(zé)Virtio PCI設(shè)備的模擬以及內(nèi)存頁面循環(huán)遷移過程的控制;
[0035]U2 (源客戶機(jī)),執(zhí)行以下功能:源客戶機(jī)Virtio驅(qū)動(dòng)程序,盡可能多地分配保留內(nèi)存頁面,并以內(nèi)存位圖形式記錄下內(nèi)存頁面情況;
[0036]U3 (目的客戶機(jī)),執(zhí)行以下功能:目的客戶機(jī)的驅(qū)動(dòng)程序,使得循環(huán)遷移結(jié)束后,啟用目的虛擬機(jī)并釋放保留的內(nèi)存頁面。
[0037]本發(fā)明實(shí)施例的方法采用Virtio驅(qū)動(dòng)的方式,對(duì)虛擬機(jī)內(nèi)存遷移進(jìn)行改進(jìn),減少不必要的時(shí)間和帶寬開銷,大大提升虛擬機(jī)遷移的效率。
[0038]圖2是本發(fā)明實(shí)施例所述基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的遷移流程圖,該流程包括以下步驟:
[0039]S1:宿主機(jī)使用Qemu模擬器模擬PCI設(shè)備,進(jìn)行遷移初始化,源客戶機(jī)啟動(dòng)Virtio驅(qū)動(dòng),做好準(zhǔn)備工作。
[0040]具體而言,所述步驟SI包括:所述宿主機(jī)使用Qemu模擬器模擬PCI設(shè)備,并進(jìn)行PCI配置空間初始化;所述宿主機(jī)使用Qemu模擬器添加虛擬隊(duì)列,設(shè)置虛擬隊(duì)列的處理回調(diào)函數(shù);使用初始化函數(shù)做Virtio驅(qū)動(dòng)初始化。
[0041]S2:宿主機(jī)使用virto_migration_set_config函數(shù)(保留頁面設(shè)置函數(shù))向PCI配置空間寫需要保留的內(nèi)存頁面數(shù),源客戶機(jī)通過virtio_migration_get_config函數(shù)(保留頁面獲取函數(shù))從PCI配置空間中獲得需要保留的內(nèi)存頁面數(shù)。
[0042]具體而言,所述步驟S2包括:所述宿主機(jī)通過保留頁面設(shè)置函數(shù)Virtio_migration_set_config向PCI配置空間中寫入需要保留的內(nèi)存頁面數(shù),以指導(dǎo)源客戶機(jī)的頁面分配工作;所述源客戶機(jī)通過保留頁面獲取函數(shù)Virtio_migration_get_config從PCI配置空間中獲得需要保留的內(nèi)存頁面數(shù),為步驟S3做準(zhǔn)備。
[0043]S3:源客戶機(jī)根據(jù)需要保留的內(nèi)存頁面數(shù),開始分配保留內(nèi)存頁面,同時(shí)以內(nèi)存位圖的方式記錄下來內(nèi)存頁面分配信息,隨后將內(nèi)存位圖傳輸至宿主機(jī)。
[0044]具體而言,所述步驟S3包括:在步驟S2的指導(dǎo)下進(jìn)行內(nèi)存頁面的分配工作,并以內(nèi)存位圖的方式記錄下來內(nèi)存頁面分配信息;將內(nèi)存位圖傳輸至宿主機(jī)Qemu模擬器的虛擬隊(duì)列,并通知宿主機(jī)Qemu模擬器接收虛擬隊(duì)列中的內(nèi)存位圖。
[0045]S4:宿主機(jī)根據(jù)該內(nèi)存位圖,控制源客戶機(jī)不斷地循環(huán)遷移非保留的內(nèi)存頁面至目的客戶機(jī)的目的虛擬機(jī)。
[0046]具體而言,所述步驟S4包括:所述宿主機(jī)Qemu模擬器根據(jù)內(nèi)存位圖信息控制虛擬機(jī)的遷移過程;所述源客戶機(jī)通過多次循環(huán)將非保留頁面?zhèn)鬏數(shù)侥康目蛻魴C(jī)。
[0047]S5:遷移完畢,啟用目的虛擬機(jī),目的虛擬機(jī)釋放保留內(nèi)存頁面。[0048]具體而言,所述步驟S5包括:當(dāng)遷移完畢時(shí),啟用目的虛擬機(jī),替代源客戶機(jī)中的源虛擬機(jī)對(duì)外提供服務(wù);所述目的虛擬機(jī)釋放保留的內(nèi)存頁面,恢復(fù)內(nèi)存頁面的正常使用。
[0049]圖3是本發(fā)明實(shí)施例所述使用Virtio驅(qū)動(dòng)分配保留頁面的流程圖,該流程包括以下步驟:
[0050]步驟S30,計(jì)算內(nèi)存頁面總數(shù)。
[0051 ] 步驟S31,為位圖數(shù)據(jù)(如內(nèi)存位圖)分配內(nèi)存。
[0052]步驟S32,接收遷移指令,包括頁面分配指令與頁面釋放指令。如果是頁面分配指令,執(zhí)行步驟S331至步驟S334 ;如果是頁面釋放指令,執(zhí)行步驟S335至步驟S338。
[0053]步驟S331,控制內(nèi)存頁面遷移開始。
[0054]步驟S332,分配內(nèi)存頁面。
[0055]步驟S333,標(biāo)記內(nèi)存位圖。其中,步驟S332與步驟S333需要循環(huán)執(zhí)行,直至步驟S334,內(nèi)存頁面分配完畢。
[0056]步驟S335,控制內(nèi)存頁面遷移結(jié)束。
[0057]步驟S336,釋放內(nèi)存頁面。
[0058]步驟S337,清除內(nèi)存位圖。其中,步驟S336與步驟S337需要循環(huán)執(zhí)行,直至步驟S338,內(nèi)存頁面釋放完畢。
[0059]其中主循環(huán)的主要任務(wù)是當(dāng)宿主機(jī)發(fā)出遷移指令時(shí),除保留一小部分空閑內(nèi)存供系統(tǒng)使用外逐漸分配盡可能多的內(nèi)存并以位圖的形式進(jìn)行標(biāo)記,再把內(nèi)存分配的位圖傳回給宿主機(jī)Qemu供遷移時(shí)參考使用。
[0060]以上實(shí)施方式僅用于說明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)【技術(shù)領(lǐng)域】的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
【權(quán)利要求】
1.一種基于VirtiO驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法,其特征在于,所述方法包括以下步驟: 51:宿主機(jī)使用Qemu模擬器模擬PCI設(shè)備,進(jìn)行遷移初始化; 52:宿主機(jī)通過保留頁面設(shè)置函數(shù)向PCI配置空間寫需要保留的內(nèi)存頁面數(shù),源客戶機(jī)通過保留頁面獲取函數(shù)從PCI配置空間中獲得需要保留的內(nèi)存頁面數(shù); S3:源客戶機(jī)根據(jù)需要保留的內(nèi)存頁面數(shù),分配保留內(nèi)存頁面,同時(shí)以內(nèi)存位圖的方式記錄下來內(nèi)存頁面分配信息,并將內(nèi)存位圖傳輸至宿主機(jī); S4:宿主機(jī)根據(jù)該內(nèi)存位圖,控制源客戶機(jī)循環(huán)遷移非保留的內(nèi)存頁面至目的客戶機(jī)的目的虛擬機(jī) '及 S5:當(dāng)遷移完畢時(shí),啟用目的虛擬機(jī),目的虛擬機(jī)釋放保留內(nèi)存頁面。
2.如權(quán)利要求1所述的基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法,其特征在于,所述步驟SI包括: 所述宿主機(jī)使用Qemu模擬器模擬PCI設(shè)備,并進(jìn)行PCI配置空間初始化; 所述宿主機(jī)使用Qemu模擬器添加虛擬隊(duì)列,設(shè)置虛擬隊(duì)列的處理回調(diào)函數(shù) '及 使用初始化函數(shù)做Virtio驅(qū)動(dòng)初始化。
3.如權(quán)利要求1所述的基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法,其特征在于,所述步驟S2包括: 所述宿主機(jī)通過保留頁面設(shè)置函數(shù)向PCI配置空間中寫入需要保留的內(nèi)存頁面數(shù),以指導(dǎo)源客戶機(jī)的頁面分配工作; 所述源客戶機(jī)通過保留頁面獲取函數(shù)從PCI配置空間中獲得需要保留的內(nèi)存頁面數(shù),為步驟S3做準(zhǔn)備。
4.如權(quán)利要求1所述的基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法,其特征在于,所述步驟S3包括: 在步驟S2的指導(dǎo)下進(jìn)行內(nèi)存頁面的分配工作,并以內(nèi)存位圖的方式記錄下來內(nèi)存頁面分配信息; 將內(nèi)存位圖傳輸至宿主機(jī)Qemu模擬器的虛擬隊(duì)列,并通知宿主機(jī)Qemu模擬器接收虛擬隊(duì)列中的內(nèi)存位圖。
5.如權(quán)利要求1所述的基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法,其特征在于,所述步驟S4包括: 所述宿主機(jī)Qemu模擬器根據(jù)內(nèi)存位圖信息控制虛擬機(jī)的遷移過程; 所述源客戶機(jī)通過多次循環(huán)將非保留頁面?zhèn)鬏數(shù)侥康目蛻魴C(jī)。
6.如權(quán)利要求1所述的基于Virtio驅(qū)動(dòng)進(jìn)行虛擬機(jī)內(nèi)存在線遷移的方法,其特征在于,所述步驟S5包括: 當(dāng)遷移完畢時(shí),啟用目的虛擬機(jī),替代源客戶機(jī)中的源虛擬機(jī)對(duì)外提供服務(wù); 所述目的虛擬機(jī)釋放保留的內(nèi)存頁面,恢復(fù)內(nèi)存頁面的正常使用。
【文檔編號(hào)】G06F9/455GK103677955SQ201310647925
【公開日】2014年3月26日 申請(qǐng)日期:2013年12月4日 優(yōu)先權(quán)日:2013年12月4日
【發(fā)明者】武永衛(wèi), 陳康, 鄭緯民, 吳之豪 申請(qǐng)人:深圳清華大學(xué)研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1