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

在線升級機器虛擬器的方法與設備與流程

文檔序號:12362940閱讀:202來源:國知局
在線升級機器虛擬器的方法與設備與流程

本發(fā)明涉及計算機領域,尤其涉及一種在線升級機器虛擬器的技術。



背景技術:

在KVM(Kernel-based Virtual Machine,基于內(nèi)核虛擬機)虛擬化中,QEMU(機器虛擬器)是運行在主機(Host,例如Linux)上的進程,因此相當于虛擬機的容器。其中,在一個主機上可以運行一個或多個QEMU進程,虛擬機的每個VCPU(Virtual CPU,虛擬中央處理器)對應QEMU進程的一個線程。QEMU進程在主機上申請?zhí)摂M機所使用的內(nèi)存,同時QEMU還負責虛擬機設備(如網(wǎng)卡、鼠標、磁盤等)的模擬,所以QEMU是KVM虛擬化中非常重要的組件。

在KVM虛擬化下熱升級(即在不關閉虛擬機的情況下在線升級)QEMU組件,使得QEMU組件的快速迭代變得可能,以便于引入新特性、修復漏洞等。然而QEMU組件熱升級一直是業(yè)界難題,目前業(yè)界還沒有QEMU熱升級技術,最接近的現(xiàn)有方案是熱遷移技術。在KVM虛擬化中,熱遷移是比較成熟的技術,其中,熱遷移指在不關機的情況下將一臺虛擬機從一臺物理機遷移到另一臺物理機。若要升級QEMU,可以通過將虛擬機進行一次本機到本機的遷移,遷移目的虛擬機使用升級過的QEMU,這樣熱遷移完成后,QEMU就得到了升級。

利用熱遷移技術方案升級QEMU組件存在不少缺陷。第一,該方案需要拷貝內(nèi)存,目前的熱遷移中拷貝內(nèi)存分為兩個步驟:(1)迭代地拷貝源虛擬機內(nèi)存“臟頁”(指沒拷貝到目的虛擬機或者在拷貝到目的虛擬機后又被源虛擬機修改過的內(nèi)存頁)到目的虛擬機,直到剩余臟頁數(shù)小于一定值;(2)暫停虛擬機,將剩余“臟頁”拷貝到目的虛擬機。如果虛擬機中內(nèi)存壓力很大,不斷產(chǎn)生新的臟頁,第一步可能收斂不了,熱遷移時間就會很長或者失敗。第二,熱遷移完成后QEMU進程的ID會改變,這可能會造成一些不必要的麻煩,比如虛擬機物理CPU利用率(即QEMU 進程的CPU利用率)監(jiān)控工具,在QEMU進程ID變過后,虛擬機名和QEMU進程ID對應關系也改變了,工具中必須要考慮這種情況。第三,libvirt(一款主流的虛擬化功能和虛擬機管理軟件)不支持本地到本地的熱遷移(盡管QEMU本身支持),需要對libvirt進行較大的修改以使其支持本地到本地的熱遷移。由此可見,使用現(xiàn)有技術方案升級QEMU組件成功率不高,會給開發(fā)者帶來不少麻煩,且升級時間長,影響用戶體驗。



技術實現(xiàn)要素:

本申請的一個目的是提供一種在線升級機器虛擬器的方法與設備。

根據(jù)本申請的一個方面,提供了一種在線升級機器虛擬器的方法,其中,所述方法包括:申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放;暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中;對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中;以及恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行。

進一步地,所述虛擬機的相關信息包括:所述虛擬機的狀態(tài)信息、所述虛擬機內(nèi)存地址信息以及所述虛擬機顯存地址信息。

進一步地,申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放包括:對主機的內(nèi)核進行修改,使之支持在更新機器虛擬機時不釋放內(nèi)存的功能;以及將要更新機器虛擬器時,申請一塊指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放。

進一步地,所述方法還包括:在暫停所述虛擬機運行之后及保存所述虛擬機的相關信息之前,將當前機器虛擬器模擬的塊設備中未寫入磁盤的內(nèi)容寫入磁盤。

進一步地,所述虛擬機的狀態(tài)信息包括:所述機器虛擬器所模擬的所有需要保存狀態(tài)的設備的當前的狀態(tài)信息。

進一步地,需要保存狀態(tài)的設備包括鼠標、鍵盤、cpu、串口及磁盤設備中的任一種或任其組合。

進一步地,對機器虛擬器進行升級包括:利用執(zhí)行模塊更新所述機器 虛擬器可執(zhí)行程序和所有參數(shù),并增加一個所述指定內(nèi)存的地址參數(shù)。

進一步地,所述方法還包括:在對所述機器虛擬器升級之后,運行升級后的所述機器虛擬器。

進一步地,所述運行升級后的所述機器虛擬器包括:對所述升級后的機器虛擬器進行初始化,以及為所述虛擬機申請內(nèi)存時,用所述指定內(nèi)存中保存的虛擬機內(nèi)存地址。

進一步地,恢復所述虛擬機的狀態(tài)信息包括:從所述指定內(nèi)存中恢復所述虛擬機的狀態(tài)信息。

進一步地,所述方法還包括:在恢復所述虛擬機運行之后,釋放所述指定內(nèi)存。

根據(jù)本申請的另一方面,還提供了一種在線升級機器虛擬器的設備,其中,所述設備包括:第一裝置,用于申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放;第二裝置,用于暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中;第三裝置,用于對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中;以及第四裝置,用于恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行。

進一步地,所述虛擬機的相關信息包括:所述虛擬機的狀態(tài)信息、所述虛擬機內(nèi)存地址信息以及所述虛擬機顯存地址信息。

進一步地,所述第一裝置包括:第一單元,用于對主機的內(nèi)核進行修改,使之支持在更新機器虛擬機時不釋放內(nèi)存的功能;以及第二單元,用于將要更新機器虛擬器時,申請一塊指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放。

進一步地,所述第二裝置包括:第三單元,用于在暫停所述虛擬機運行之后及保存所述虛擬機的相關信息之前,將當前機器虛擬器模擬的塊設備中未寫入磁盤的內(nèi)容寫入磁盤。

進一步地,所述虛擬機的狀態(tài)信息包括:所述機器虛擬器所模擬的所有需要保存狀態(tài)的設備的當前的狀態(tài)信息。

進一步地,需要保存狀態(tài)的設備包括鼠標、鍵盤、cpu、串口及磁盤 設備中的任一種或任其組合。

進一步地,所述第三裝置包括:第四單元,用于利用執(zhí)行模塊更新所述機器虛擬器可執(zhí)行程序和所有參數(shù),并增加一個所述指定內(nèi)存的地址參數(shù)。

進一步地,所述設備還包括:第五裝置,用于在對所述機器虛擬器升級之后,運行升級后的所述機器虛擬器。

進一步地,所述第五裝置包括:第五單元,用于對所述升級后的機器虛擬器進行初始化,以及為所述虛擬機申請內(nèi)存時,用所述指定內(nèi)存中保存的虛擬機內(nèi)存地址。

進一步地,所述第四裝置包括:第六單元,用于從所述指定內(nèi)存中恢復所述虛擬機的狀態(tài)信息。

進一步地,所述設備還包括:第六裝置,用于在恢復所述虛擬機運行之后,釋放所述指定內(nèi)存。

與現(xiàn)有技術相比,本申請的一個實施例通過申請一指定內(nèi)存,該指定內(nèi)存用于保存虛擬機的內(nèi)存地址和狀態(tài)信息,且該指定內(nèi)存在更新機器虛擬器中不被釋放,則在機器虛擬器升級之后,所述虛擬機的狀態(tài)信息可以直接從該指定內(nèi)存中恢復,從而加快了恢復速度、縮短了升級時間,并且將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器,從而實現(xiàn)了機器虛擬器的在線升級(熱升級)。此外,通過在機器虛擬器更新過程中,利用執(zhí)行模塊更新機器虛擬器的可執(zhí)行文件來實現(xiàn)機器虛擬器原地(即進程ID不變)在線升級,能夠使升級時間控制在100ms~200ms左右,做到用戶無感知,進而提高用戶的使用體驗。

附圖說明

通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:

圖1示出根據(jù)本申請一個方面的一個實施例的一種在線升級機器虛擬器的設備示意圖;

圖2示出根據(jù)本申請一個方面的一個優(yōu)選實施例的一種在線升級機器 虛擬器的設備的第一裝置示意圖;

圖3示出根據(jù)本申請一個方面的一個優(yōu)選實施例的一種在線升級機器虛擬器的設備示意圖;

圖4示出根據(jù)本申請另一個方面的一種在線升級機器虛擬器的方法流程圖;

圖5示出根據(jù)本申請另一個方面的一個優(yōu)選實施例的一種在線升級機器虛擬器的方法流程圖;

圖6示出根據(jù)本申請另一個方面的一個實施例的一種在線升級機器虛擬器的方法流程圖。

附圖中相同或相似的附圖標記代表相同或相似的部件。

具體實施方式

下面結合附圖對本申請作進一步詳細描述。

圖1示出根據(jù)本申請一個方面的一個實施例的一種在線升級機器虛擬器的設備1,其中,設備1包括第一裝置11、第二裝置12、第三裝置13和第四裝置14。

具體地,所述第一裝置11申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放;所述第二裝置12暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中;所述第三裝置13對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中;所述第四裝置14恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行。

在此,所述設備1包括但不限于用戶設備、網(wǎng)絡設備、或用戶設備與網(wǎng)絡設備通過網(wǎng)絡相集成所構成的設備。所述用戶設備其包括但不限于任何一種可與用戶通過觸摸板進行人機交互的移動電子產(chǎn)品,例如智能手機、PDA等,所述移動電子產(chǎn)品可以采用任意操作系統(tǒng),如android操作系統(tǒng)、iOS操作系統(tǒng)等。其中,所述網(wǎng)絡設備包括一種能夠按照事先設定或存儲的指令,自動進行數(shù)值計算和信息處理的電子設備,其硬件包括但不限于微處理器、專用集成電路(ASIC)、可編程門陣列(FPGA)、數(shù)字處理器(DSP)、嵌入式設備等。所述網(wǎng)絡設備其包括但不限于計算機、網(wǎng)絡 主機、單個網(wǎng)絡服務器、多個網(wǎng)絡服務器集或多個服務器構成的云;在此,云由基于云計算(Cloud Computing)的大量計算機或網(wǎng)絡服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個虛擬超級計算機。所述網(wǎng)絡包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡、無線自組織網(wǎng)絡(Ad Hoc網(wǎng)絡)等。優(yōu)選地,設備1還可以是運行于所述用戶設備、網(wǎng)絡設備、或用戶設備與網(wǎng)絡設備、網(wǎng)絡設備、觸摸終端或網(wǎng)絡設備與觸摸終端通過網(wǎng)絡相集成所構成的設備上的腳本程序。當然,本領域技術人員應能理解上述設備1僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設備1如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

上述各裝置之間是持續(xù)不斷工作的,在此,本領域技術人員應理解“持續(xù)”是指上述各裝置分別實時地或者按照設定的或?qū)崟r調(diào)整的工作模式要求,例如所述第一裝置11持續(xù)申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放,所述第二裝置12持續(xù)暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中,所述第三裝置13持續(xù)對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中,所述第四裝置14持續(xù)恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行,直至所述設備1停止工作。

首先,所述第一裝置11申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放。

在此,所述指定內(nèi)存指的是能夠在在更新機器虛擬器時,虛擬機內(nèi)存、虛擬機顯存以外指定不被釋放的內(nèi)存。該指定內(nèi)存用于在后續(xù)更新機器虛擬器時保存虛擬機的內(nèi)存地址和狀態(tài)信息。在此,指定內(nèi)存為能夠在更新機器虛擬器時不被釋放的內(nèi)存。

在優(yōu)選的實施例中,采用不被釋放標記以標示指定內(nèi)存的方法只需修改內(nèi)核的內(nèi)存申請系統(tǒng)調(diào)用,對帶有更新機器虛擬器時不被釋放標記的申請在分配的指定內(nèi)存的描述結構中增加一不被釋放標記。(在調(diào)用exec函數(shù)時識別出這些內(nèi)存從而不釋放它們的)修改方式簡單不增加設備處理壓力。當然本領域技術人員應該能夠理解,其他能夠指定一個內(nèi)存使該內(nèi)存 能夠在更新機器虛擬器時不被釋放的方法如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

具體的,如圖2所示,所述第一裝置11可以包括第一單元111和第二單元112。所述第一單元用于對主機的內(nèi)核進行修改,使之支持在更新機器虛擬機時不釋放內(nèi)存的功能;所述第二單元用于將要更新機器虛擬器時,申請一塊指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放。

在此,在啟動虛擬機時,主機還會為所述虛擬機申請一個在更新機器虛擬器時不釋放的內(nèi)存和顯存。

例如,以采用KVM/QEMU的虛擬化方案為例,每個虛擬機對應一個QEMU進程,當QEMU進程在啟動時,相當于創(chuàng)建了一臺新的虛擬機。內(nèi)核維護QEMU進程申請的每個內(nèi)存區(qū)域帶有vm_flags參數(shù),約定這個參數(shù)的某位標志表示該內(nèi)存在更新機器虛擬器時是否被釋放。通過匿名mmap申請內(nèi)存時傳入更新機器虛擬器時不被釋放的標志,內(nèi)核在分配內(nèi)存時就將這塊內(nèi)存對應描述結構的vm_flags成員的標志位設為1。

當然,本領域技術人員應能理解上述機器虛擬器和對指定內(nèi)存增加標記的方法僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的機器虛擬器或?qū)χ付▋?nèi)存增加標記的方法如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

然后,所述第二裝置12暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中。

具體地,所述虛擬機的相關信息包括:所述虛擬機的狀態(tài)信息、所述虛擬機內(nèi)存地址信息以及所述虛擬機顯存地址信息。

在此,將所述虛擬機的狀態(tài)信息保存至所述指定內(nèi)存中,而非將虛擬機的狀態(tài)信息保存至磁盤,可以在機器虛擬器升級后快速從指定內(nèi)存中恢復虛擬機狀態(tài),提高了速度,節(jié)約了時間。

具體地,所述虛擬機的狀態(tài)信息包括所述機器虛擬器所模擬的所有需要保存狀態(tài)的設備的當前的狀態(tài)信息。

具體地,需要保存狀態(tài)的設備包括鼠標、鍵盤、cpu、串口及磁盤設備中的任一種或任其組合。

本領域技術人員應能理解,將QEMU(機器虛擬器)作為PC(Personal Computer,個人計算機)系統(tǒng)仿真器使用可提供各種外圍設備。通過QEMU可以實現(xiàn)對標準外圍設備包括硬件VGA(Video Graphics Array,視頻圖形陣列)仿真器、PS/2鼠標和鍵盤、集成開發(fā)環(huán)境(IDE)硬盤和CD-ROM(光盤只讀存儲器)接口,以及軟盤等的仿真。另外,QEMU還可實現(xiàn)對包括NE2000PCI(Peripheral Controller Interconnect,外設組件互連標準)網(wǎng)絡適配器、串行端口、大量的聲卡和帶虛擬USB(Universal Serial Bus,通用串行總線)集線器等的仿真。除了仿真標準PC或ISA(Industrial Standard Architecture,工業(yè)標準結構總線)PC外,QEMU還可以仿真其他非PC硬件,如通用ARM(Advanced RISC Machine)基線板和MIPS(Million Instructions Per Second)板。因此,上述機器虛擬器所模擬的所有需要保存狀態(tài)的設備僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的機器虛擬器所模擬的設備如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,所述第二裝置可以包括第三單元(圖中未示出)。所述第三單元在暫停所述虛擬機運行之后及保存所述虛擬機的相關信息之前,將當前機器虛擬器模擬的塊設備中未寫入磁盤的內(nèi)容寫入磁盤。

例如,接上例,QEMU進程申請的這些不帶有更新QEMU進程時不被釋放標志的內(nèi)存,因為在更新機器虛擬器時,除虛擬機內(nèi)存、虛擬機顯存和帶標記的指定內(nèi)存以外的其余內(nèi)存均會被釋放。及時存儲這些內(nèi)存中未寫入磁盤的內(nèi)容,例如將所述未寫入磁盤的內(nèi)容寫入磁盤或其他存儲設備,可以避免QEMU進程更新完成后丟失這些內(nèi)存中存儲的內(nèi)容。

當然,本領域技術人員應能理解上述將當前機器虛擬器模擬的塊設備中未寫入磁盤的內(nèi)容寫入磁盤的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的可存儲未寫入內(nèi)容的存儲設備如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

所述第三裝置13對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中。

具體地,所述第三裝置13可以包括第四單元(圖中未示出)。所述第 三單元用于利用執(zhí)行模塊更新所述機器虛擬器可執(zhí)行程序和所有參數(shù),并增加一個所述指定內(nèi)存的地址參數(shù)。

例如,接上例,所述執(zhí)行模塊可以是exec函數(shù)族,exec函數(shù)族的作用是根據(jù)指定的文件名找到可執(zhí)行文件,并用它來取代調(diào)用進程的內(nèi)容,換句話說,就是在調(diào)用進程內(nèi)部執(zhí)行一個可執(zhí)行文件,通過調(diào)用exec函數(shù)族可以更新QEMU進程。所述參數(shù)可以是QEMU進程啟動時傳入的參數(shù),并增加一個保存了所述虛擬機相關信息的指定內(nèi)存的地址參數(shù)。本領域技術人員應能理解上述更新機器虛擬器的執(zhí)行模塊和參數(shù)僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的更新機器虛擬器的執(zhí)行模塊和參數(shù)如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

所述第四裝置14恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行。

在具體的實施例中,從所述第二裝置12暫停虛擬機運行,至所述第四裝置14恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行,只需要100ms到200ms,機器虛擬器熱升級(即在不關閉虛擬機的情況下在線升級)時間短,可以做到用戶無感知,極大地提高了用戶體驗。

具體地,所述第四裝置14可以包括第六單元(圖中未示出)。所述第四單元用于從所述指定內(nèi)存中恢復所述虛擬機的狀態(tài)信息。

圖3示出根據(jù)本申請一個方面的一個優(yōu)選實施例的一種在線升級機器虛擬器的設備1’,其中,所述設備1’包括第一裝置11’、第二裝置12’、第三裝置13’、第四裝置14’和第五裝置15’。

在此,所述第一裝置11’、第二裝置12’、第三裝置13’、第四裝置14’與圖1中第一裝置11、第二裝置12、第三裝置13、第四裝置14的內(nèi)容相同或基本相同,為簡明起見,在此不再贅述。

所述第五裝置15’用于在對所述機器虛擬器升級之后,運行升級后的所述機器虛擬器。

具體地,所述第五裝置包括:第五單元(圖中未示出),用于對所述升級后的機器虛擬器進行初始化,以及為所述虛擬機申請內(nèi)存時,用指定內(nèi)存中保存的虛擬機內(nèi)存地址。

例如,接上例,exec函數(shù)族就是一簇函數(shù),它把當前進程映像替換成新的程序文件,而且該程序從main(主)函數(shù)開始執(zhí)行。所述第三裝置13將原來QEMU進程的所有參數(shù),以及新增參數(shù)指定內(nèi)存的地址,傳入QEMU(機器虛擬器)。新的QEMU可執(zhí)行程序重新從main函數(shù)處開始運行,進行各項初始化操作,如果參數(shù)中有指定內(nèi)存的地址傳入,那么在給虛擬機申請內(nèi)存時,使用指定內(nèi)存中存儲的虛擬機內(nèi)存地址,并不需要重新申請,而虛擬機內(nèi)存在調(diào)用exec函數(shù)初始化并重新運行升級后的所述機器虛擬器的可執(zhí)行程序過程中不會被釋放,這也正是本申請可以不需要拷貝內(nèi)存而實現(xiàn)QEMU升級的原因。與現(xiàn)有的熱遷移技術需要拷貝內(nèi)存,在內(nèi)存壓力很大時容易失敗相比,本申請不需拷貝內(nèi)存的技術方案極大地提高了升級成功率。在各項初始化操作完成后,根據(jù)指定內(nèi)存中存儲的虛擬機的狀態(tài)信息恢復虛擬機狀態(tài)。本領域技術人員應能理解上述運行升級后的所述機器虛擬器的可執(zhí)行程序的方法僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的運行升級后的所述機器虛擬器的可執(zhí)行程序的方法如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

此外,基于以上實施例,設備1還可以包括第六裝置(圖中未示出)。所述第六裝置用于在恢復所述虛擬機運行之后,釋放所述指定內(nèi)存。

在此,虛擬機中機器虛擬器的在線升級完成后,及時釋放已經(jīng)發(fā)揮完作用的指定內(nèi)存,可以節(jié)約內(nèi)存存儲空間,提高系統(tǒng)運行效率。

圖4示出根據(jù)本申請另一個方面的一種在線升級機器虛擬器的方法流程圖。

該方法包括步驟S41、步驟S42、步驟S43和步驟S44。具體地,在步驟S41中,設備1申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放;在步驟S42中,設備1暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中;在步驟S43中,設備1對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中;在步驟S44中,設備1恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行。

在此,所述設備1包括但不限于用戶設備、網(wǎng)絡設備、或用戶設備與網(wǎng)絡設備通過網(wǎng)絡相集成所構成的設備。所述用戶設備其包括但不限于任 何一種可與用戶通過觸摸板進行人機交互的移動電子產(chǎn)品,例如智能手機、PDA等,所述移動電子產(chǎn)品可以采用任意操作系統(tǒng),如android操作系統(tǒng)、iOS操作系統(tǒng)等。其中,所述網(wǎng)絡設備包括一種能夠按照事先設定或存儲的指令,自動進行數(shù)值計算和信息處理的電子設備,其硬件包括但不限于微處理器、專用集成電路(ASIC)、可編程門陣列(FPGA)、數(shù)字處理器(DSP)、嵌入式設備等。所述網(wǎng)絡設備其包括但不限于計算機、網(wǎng)絡主機、單個網(wǎng)絡服務器、多個網(wǎng)絡服務器集或多個服務器構成的云;在此,云由基于云計算(Cloud Computing)的大量計算機或網(wǎng)絡服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個虛擬超級計算機。所述網(wǎng)絡包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡、無線自組織網(wǎng)絡(Ad Hoc網(wǎng)絡)等。優(yōu)選地,設備1還可以是運行于所述用戶設備、網(wǎng)絡設備、或用戶設備與網(wǎng)絡設備、網(wǎng)絡設備、觸摸終端或網(wǎng)絡設備與觸摸終端通過網(wǎng)絡相集成所構成的設備上的腳本程序。當然,本領域技術人員應能理解上述設備1僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設備1如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

設備1的各個步驟之間是持續(xù)不斷工作的。具體地,在步驟S41中,設備1持續(xù)申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放,在步驟S42中,設備1持續(xù)暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中,在步驟S43中,設備1持續(xù)對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中,在步驟S44中,設備1持續(xù)恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行,直至所述設備1停止工作。

首先,在步驟S41中,設備1申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放。

在此,所述指定內(nèi)存指的是能夠在在更新機器虛擬器時,虛擬機內(nèi)存、虛擬機顯存以外指定不被釋放的內(nèi)存。該指定內(nèi)存用于在后續(xù)更新機器虛擬器時保存虛擬機的內(nèi)存地址和狀態(tài)信息。在此,指定內(nèi)存為能夠在更新機器虛擬器時不被釋放的內(nèi)存。

在優(yōu)選的實施例中,采用不被釋放標記以標示指定內(nèi)存的方法只需修改內(nèi)核的內(nèi)存申請系統(tǒng)調(diào)用,對帶有更新機器虛擬器時不被釋放標記的申請在分配的指定內(nèi)存的描述結構中增加一不被釋放標記。(在調(diào)用exec函數(shù)時識別出這些內(nèi)存從而不釋放它們的)修改方式簡單不增加設備處理壓力。當然本領域技術人員應該能夠理解,其他能夠指定一個內(nèi)存使該內(nèi)存能夠在更新機器虛擬器時不被釋放的方法如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

具體的,在步驟S41中,設備1對主機的內(nèi)核進行修改,使之支持在更新機器虛擬機時不釋放內(nèi)存的功能;以及將要更新機器虛擬器時,申請一塊指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放。

在此,在啟動虛擬機時,主機還會為所述虛擬機申請一個在更新機器虛擬器時不釋放的內(nèi)存和顯存。

例如,以采用KVM/QEMU的虛擬化方案為例,每個虛擬機對應一個QEMU進程,當QEMU進程在啟動時,相當于創(chuàng)建了一臺新的虛擬機。內(nèi)核維護QEMU進程申請的每個內(nèi)存區(qū)域帶有vm_flags參數(shù),約定這個參數(shù)的某位標志表示該內(nèi)存在更新機器虛擬器時是否被釋放。通過匿名mmap申請內(nèi)存時傳入更新機器虛擬器時不被釋放的標志,內(nèi)核在分配內(nèi)存時就將這塊內(nèi)存對應描述結構的vm_flags成員的標志位設為1。

當然,本領域技術人員應能理解上述機器虛擬器和對指定內(nèi)存增加標記的方法僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的機器虛擬器或?qū)χ付▋?nèi)存增加標記的方法如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

然后,在步驟S42中,設備1暫停虛擬機運行,并將所述虛擬機的相關信息保存至所述指定內(nèi)存中。

具體地,所述虛擬機的相關信息包括:所述虛擬機的狀態(tài)信息、所述虛擬機內(nèi)存地址信息以及所述虛擬機顯存地址信息。

在此,將所述虛擬機的狀態(tài)信息保存至所述指定內(nèi)存中,而非將虛擬機的狀態(tài)信息保存至磁盤,可以在機器虛擬器升級后快速從指定內(nèi)存中恢復虛擬機狀態(tài),提高了速度,節(jié)約了時間。

具體地,所述虛擬機的狀態(tài)信息包括所述機器虛擬器所模擬的所有需要保存狀態(tài)的設備的當前的狀態(tài)信息。

具體地,需要保存狀態(tài)的設備包括鼠標、鍵盤、cpu、串口及磁盤設備中的任一種或任其組合。

本領域技術人員應能理解,將QEMU(機器虛擬器)作為PC(Personal Computer,個人計算機)系統(tǒng)仿真器使用可提供各種外圍設備。通過QEMU可以實現(xiàn)對標準外圍設備包括硬件VGA(Video Graphics Array,視頻圖形陣列)仿真器、PS/2鼠標和鍵盤、集成開發(fā)環(huán)境(IDE)硬盤和CD-ROM(光盤只讀存儲器)接口,以及軟盤等的仿真。另外,QEMU還可實現(xiàn)對包括NE2000PCI(Peripheral Controller Interconnect,外設組件互連標準)網(wǎng)絡適配器、串行端口、大量的聲卡和帶虛擬USB(Universal Serial Bus,通用串行總線)集線器等的仿真。除了仿真標準PC或ISA(Industrial Standard Architecture,工業(yè)標準結構總線)PC外,QEMU還可以仿真其他非PC硬件,如通用ARM(Advanced RISC Machine)基線板和MIPS(Million Instructions Per Second)板。因此,上述機器虛擬器所模擬的所有需要保存狀態(tài)的設備僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的機器虛擬器所模擬的設備如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,在步驟S42中,設備1在暫停所述虛擬機運行之后及保存所述虛擬機的相關信息之前,將當前機器虛擬器模擬的塊設備中未寫入磁盤的內(nèi)容寫入磁盤。

例如,接上例,QEMU進程申請的這些不帶有更新QEMU進程時不被釋放標志的內(nèi)存,因為在更新機器虛擬器時,除虛擬機內(nèi)存、虛擬機顯存和帶標記的指定內(nèi)存以外的其余內(nèi)存均會被釋放。及時存儲這些內(nèi)存中未寫入磁盤的內(nèi)容,例如將所述未寫入磁盤的內(nèi)容寫入磁盤或其他存儲設備,可以避免QEMU進程更新完成后丟失這些內(nèi)存中存儲的內(nèi)容。

當然,本領域技術人員應能理解上述將當前機器虛擬器模擬的塊設備中未寫入磁盤的內(nèi)容寫入磁盤的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的可存儲未寫入內(nèi)容的存儲設備如可適用于本申請,也應包含在本申請 保護范圍以內(nèi),并在此以引用方式包含于此。

在步驟S43中,設備1對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中。

具體地,在步驟S43中,設備1利用執(zhí)行模塊更新所述機器虛擬器可執(zhí)行程序和所有參數(shù),并增加一個所述指定內(nèi)存的地址參數(shù)。

例如,接上例,所述執(zhí)行模塊可以是exec函數(shù)族,exec函數(shù)族的作用是根據(jù)指定的文件名找到可執(zhí)行文件,并用它來取代調(diào)用進程的內(nèi)容,換句話說,就是在調(diào)用進程內(nèi)部執(zhí)行一個可執(zhí)行文件,通過調(diào)用exec函數(shù)族可以更新QEMU進程。所述參數(shù)可以是QEMU進程啟動時傳入的參數(shù),并增加一個保存了所述虛擬機相關信息的指定內(nèi)存的地址參數(shù)。本領域技術人員應能理解上述更新機器虛擬器的執(zhí)行模塊和參數(shù)僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的更新機器虛擬器的執(zhí)行模塊和參數(shù)如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

在步驟S44中,設備1恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行。

在具體的實施例中,從步驟S42設備1暫停虛擬機運行,至步驟S44設備1恢復所述虛擬機的狀態(tài)信息,并恢復所述虛擬機運行,只需要100ms到200ms,機器虛擬器熱升級(即在不關閉虛擬機的情況下在線升級)時間短,可以做到用戶無感知,極大地提高了用戶體驗。

具體地,在步驟S44中,設備1從所述指定內(nèi)存中恢復所述虛擬機的狀態(tài)信息。

圖5示出根據(jù)本申請一個方面的一個優(yōu)選實施例的一種在線升級機器虛擬器的方法流程圖。

該方法包括步驟S41’、步驟S42’、步驟S43’、步驟S45’和步驟S44’,其中,步驟S41’、步驟S42’、步驟S43’、步驟S44’與圖4中步驟S41、步驟S42、步驟S43、步驟S44的內(nèi)容相同或基本相同,為簡明起見,在此不再贅述。

在步驟S45’中,設備1在對所述機器虛擬器升級之后,運行升級后的所述機器虛擬器。

具體地,所述運行升級后的機器虛擬器包括:對所述升級后的機器虛擬器進行初始化,以及為所述虛擬機申請內(nèi)存時,用指定內(nèi)存中保存的虛擬機內(nèi)存地址。

例如,接上例,exec函數(shù)族就是一簇函數(shù),它把當前進程映像替換成新的程序文件,而且該程序從main(主)函數(shù)開始執(zhí)行。在步驟S43’中,設備1將原來QEMU進程的所有參數(shù),以及新增參數(shù)指定內(nèi)存的地址,傳入QEMU(機器虛擬器)。新的QEMU可執(zhí)行程序重新從main函數(shù)處開始運行,進行各項初始化操作,如果參數(shù)中有指定內(nèi)存的地址傳入,那么在給虛擬機申請內(nèi)存時,使用指定內(nèi)存中存儲的虛擬機內(nèi)存地址,并不需要重新申請,而虛擬機內(nèi)存在調(diào)用exec函數(shù)初始化并重新運行升級后的所述機器虛擬器的可執(zhí)行程序過程中不會被釋放,這也正是本申請可以不需要拷貝內(nèi)存而實現(xiàn)QEMU升級的原因。與現(xiàn)有的熱遷移技術需要拷貝內(nèi)存,在內(nèi)存壓力很大時容易失敗相比,本申請不需拷貝內(nèi)存的技術方案極大地提高了升級成功率。在各項初始化操作完成后,根據(jù)指定內(nèi)存中存儲的虛擬機的狀態(tài)信息恢復虛擬機狀態(tài)。本領域技術人員應能理解上述運行升級后的所述機器虛擬器的可執(zhí)行程序的方法僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的運行升級后的所述機器虛擬器的可執(zhí)行程序的方法如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。

具體地,所述方法還可以包括:設備1在恢復所述虛擬機運行之后,釋放所述指定內(nèi)存。

在此,虛擬機中機器虛擬器的在線升級完成后,及時釋放已經(jīng)發(fā)揮完作用的指定內(nèi)存,可以節(jié)約內(nèi)存存儲空間,提高系統(tǒng)運行效率。

圖6示出根據(jù)本申請另一個方面的一個實施例的一種在線升級機器虛擬器的方法流程圖。應用本申請?zhí)峁┑姆椒▽VM虛擬化下的機器虛擬器進行在線升級可采用如下的處理流程:

步驟S61,申請一指定內(nèi)存,所述指定內(nèi)存在更新機器虛擬器時不被釋放。在此,通過對主機的內(nèi)核進行修改,為所述指定內(nèi)存增加以一標記,該標記使所述指定內(nèi)存在更新機器虛擬器時不被釋放。

步驟S62,暫停虛擬機運行。

步驟S63,將當前機器虛擬器模擬的塊設備中未寫入磁盤的內(nèi)容寫入磁盤。

步驟S64,將所述虛擬機的相關信息保存至所述指定內(nèi)存中。在此,所述虛擬機的相關信息包括:所述虛擬機的狀態(tài)信息、所述虛擬機內(nèi)存地址信息以及所述虛擬機顯存地址信息。

步驟S65,對機器虛擬器進行升級,并將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器中。在此,利用執(zhí)行模塊更新所述機器虛擬器可執(zhí)行程序和所有參數(shù)來達到升級機器虛擬器的目的。

步驟S66,從指定內(nèi)存中恢復所述虛擬機的狀態(tài)信息。在此,運行升級后的所述機器虛擬器,對所述升級后的機器虛擬器進行初始化,并在為所述虛擬機申請內(nèi)存時,用所述指定內(nèi)存中保存的虛擬機內(nèi)存地址。

步驟S67,恢復所述虛擬機運行。

步驟S68,釋放步驟S51中所申請的指定內(nèi)存。

綜上所述,與現(xiàn)有技術相比,本申請的一個實施例通過申請一指定內(nèi)存,該指定內(nèi)存用于保存虛擬機的內(nèi)存地址和狀態(tài)信息,且該指定內(nèi)存在更新機器虛擬器中不被釋放,則在機器虛擬器升級之后,所述虛擬機的狀態(tài)信息可以直接從該指定內(nèi)存中恢復,從而加快了恢復速度、縮短了升級時間,并且將所述指定內(nèi)存的地址作為新增參數(shù)傳入所述機器虛擬器可以提高升級成功率,減輕開發(fā)者負擔。

此外,通過在機器虛擬器更新過程中,利用執(zhí)行模塊更新機器虛擬器的可執(zhí)行文件來實現(xiàn)機器虛擬器的進程ID不變,可以使升級過程不被用戶感知,進而提升用戶體驗。

此外,在本申請一個典型的配置中,終端、服務網(wǎng)絡的設備和可信方均包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。

內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flashRAM)。內(nèi)存是計算機可讀介質(zhì)的示例。

計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以 由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。

顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權利要求及其等同技術的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。

需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關的數(shù)據(jù)結構)可以被存儲到計算機可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。

另外,本申請的一部分可被應用為計算機程序產(chǎn)品,例如計算機程序指令,當其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根 據(jù)本申請的多個實施例的方法和/或技術方案。

對于本領域技術人員而言,顯然本申請不限于上述示范性實施例的細節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復數(shù)。裝置權利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1