本發(fā)明涉及虛擬化計(jì)算機(jī)系統(tǒng),具體地,涉及虛擬機(jī)熱遷移的方法、裝置、系統(tǒng)、存儲介質(zhì)及設(shè)備。
背景技術(shù):
在kvm(kernel-basedvirtualmachine,基于內(nèi)核虛擬機(jī))虛擬化中,服務(wù)運(yùn)行在虛擬機(jī)上,并且一個(gè)或多個(gè)虛擬機(jī)可同時(shí)運(yùn)行在一個(gè)物理機(jī)上。
熱遷移,又稱為實(shí)時(shí)遷移(livemigration)。是指在保證虛擬機(jī)上服務(wù)正常運(yùn)行的同時(shí),虛擬機(jī)在不同的物理主機(jī)之間進(jìn)行遷移。當(dāng)前的熱遷移流程在啟動(dòng)遷移工作之后,會(huì)先遷移虛擬機(jī)的磁盤到目標(biāo)物理機(jī),然后再遷移虛擬機(jī)的內(nèi)存到目標(biāo)物理機(jī)。之后,目標(biāo)端虛擬機(jī)就具備所有源端虛擬機(jī)的數(shù)據(jù),并具備和用戶直接進(jìn)行交互的能力,此時(shí),源端虛擬機(jī)將控制權(quán)轉(zhuǎn)移到目標(biāo)端虛擬機(jī),服務(wù)在目標(biāo)端虛擬機(jī)上繼續(xù)運(yùn)行。對于服務(wù)本身而言,由于切換的時(shí)間非常短暫,用戶感覺不到服務(wù)的中斷,用戶可以持續(xù)得和虛擬機(jī)進(jìn)行交互。在線遷移適用于對服務(wù)可用性要求很高的場景。
但是在現(xiàn)有熱遷移過程中,如果用戶虛擬機(jī)的磁盤數(shù)據(jù)很大,特別是如果用戶虛擬機(jī)正在運(yùn)行高i/o(input/output,輸入/輸出)負(fù)載服務(wù)時(shí),虛擬機(jī)的磁盤數(shù)據(jù)會(huì)被反復(fù)更新,會(huì)導(dǎo)致磁盤遷移過程遲遲無法結(jié)束,遷移時(shí)間被無限地放大,最終導(dǎo)致遷移失敗。因此,在實(shí)際工作環(huán)境中,對于當(dāng)物理機(jī)負(fù)載高和/或資源緊張的情況下觸發(fā)的熱遷移,無法及時(shí)地降低物理機(jī)負(fù)載并緩解物理機(jī)的內(nèi)存和/或cpu(centralprocessingunit,中央處理器)的壓力。
技術(shù)實(shí)現(xiàn)要素:
考慮到熱遷移過程中,磁盤遷移的時(shí)間占據(jù)了絕大部分時(shí)間,而內(nèi)存等其他資源的遷移花銷時(shí)間相對較少,而及時(shí)緩解內(nèi)存、cpu和磁盤的壓力是熱遷移的一個(gè)重要作用,為此需要設(shè)計(jì)跳過磁盤遷移、直接先進(jìn)行內(nèi)存遷移的實(shí)時(shí)遷移方案。
本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)虛擬機(jī)熱遷移的方法、裝置、系統(tǒng)、存儲介質(zhì)及設(shè)備,以便能快速降低物理機(jī)負(fù)載,從而避免高負(fù)載導(dǎo)致虛擬機(jī)性能下降和觸發(fā)物理機(jī)宕機(jī)。
第一方面,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)虛擬機(jī)熱遷移的方法,該方法包括:共享步驟,將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在所述目標(biāo)物理機(jī)上形成所述源磁盤數(shù)據(jù)的虛擬鏡像;建立步驟,在所述目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中所述目標(biāo)虛擬機(jī)和所述源虛擬機(jī)兩者的配置相同;遷移步驟,將所述源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到所述目標(biāo)物理機(jī);啟動(dòng)步驟,根據(jù)所述虛擬鏡像、所述內(nèi)存數(shù)據(jù)和所述狀態(tài)數(shù)據(jù),啟動(dòng)所述目標(biāo)虛擬機(jī)。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)虛擬機(jī)熱遷移的方法還可以進(jìn)一步包括:根據(jù)所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果所述負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),并執(zhí)行上述共享步驟,如果所述負(fù)載不高于閾值,則維持當(dāng)前所述目標(biāo)物理機(jī);根據(jù)所述虛擬鏡像,在所述目標(biāo)物理機(jī)上設(shè)立所述共享鏡像的磁盤快照,所述磁盤快照用于存儲所述目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);將所述源虛擬機(jī)的所述源磁盤數(shù)據(jù)合并到所述目標(biāo)虛擬機(jī)的所述磁盤快照中;在所述源物理機(jī)和所述目標(biāo)物理機(jī)上移除所述共享存儲技術(shù)的相應(yīng)設(shè)置。
第二方面,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)虛擬機(jī)熱遷移的裝置,該裝置包括:共享模塊,用于將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在所述目標(biāo)物理機(jī)上形成所述源磁盤數(shù)據(jù)的虛擬鏡像;建立模塊,用于在所述目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中所述目標(biāo)虛擬機(jī)和所述源虛擬機(jī)兩者的配置相同;遷移模塊,將所述源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到所述目標(biāo)物理機(jī);啟動(dòng)模塊,用于根據(jù)所述虛擬鏡像、所述內(nèi)存數(shù)據(jù)和所述狀態(tài)數(shù)據(jù),啟動(dòng)所述目標(biāo)虛擬機(jī)。
結(jié)合第二方面,本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)虛擬機(jī)熱遷移的裝置還可以進(jìn)一步包括:判斷模塊,用于根據(jù)所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果所述負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),并返回共享模塊,如果所述負(fù)載不高于閾值,則維持當(dāng)前所述目標(biāo)物理機(jī);設(shè)立模塊,用于根據(jù)所述虛擬鏡像,在所述目標(biāo)物理機(jī)上設(shè)立所述共享鏡像的磁盤快照,所述磁盤快照用于存儲所述目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);合并模塊,用于將所述源虛擬機(jī)的所述源磁盤數(shù)據(jù)合并到所述目標(biāo)虛擬機(jī)的所述磁盤快照中;移除模塊,用于在所述源物理機(jī)和所述目標(biāo)物理機(jī)上移除所述共享存儲技術(shù)的相應(yīng)設(shè)置。
第三方面,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)虛擬機(jī)熱遷移的系統(tǒng),該系統(tǒng)包括第二方面或結(jié)合第二方面的虛擬機(jī)熱遷移裝置以及上述各方面中任一種可能的源物理機(jī)和目標(biāo)物理機(jī)。
第四方面,本發(fā)明實(shí)施例提供了一種非易失性存儲介質(zhì),該非易失性存儲介質(zhì)具有存儲在其中的指令,當(dāng)該指令被執(zhí)行時(shí),使得處理器執(zhí)行虛擬機(jī)熱遷移方法,具體的,該指令包括:共享指令,將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在所述目標(biāo)物理機(jī)上形成所述源磁盤數(shù)據(jù)的虛擬鏡像;建立指令,在所述目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中所述目標(biāo)虛擬機(jī)和所述源虛擬機(jī)兩者的配置相同;遷移指令,將所述源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到所述目標(biāo)物理機(jī);啟動(dòng)指令,根據(jù)所述虛擬鏡像、所述內(nèi)存數(shù)據(jù)和所述狀態(tài)數(shù)據(jù),啟動(dòng)所述目標(biāo)虛擬機(jī)。
結(jié)合第四方面,本發(fā)明實(shí)施例提供的一種非易失性存儲介質(zhì)還可以進(jìn)一步包括,判斷指令,根據(jù)所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果所述負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),并返回執(zhí)行共享指令,如果所述負(fù)載不高于閾值,則維持當(dāng)前所述目標(biāo)物理機(jī);設(shè)立指令,用于根據(jù)虛擬鏡像,在目標(biāo)物理機(jī)上設(shè)立共享鏡像的磁盤快照,磁盤快照用于存儲目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);合并指令,用于將源虛擬機(jī)的源磁盤數(shù)據(jù)合并到目標(biāo)虛擬機(jī)的磁盤快照中;移除指令,用于在源物理機(jī)和目標(biāo)物理機(jī)上移除共享存儲技術(shù)的相應(yīng)設(shè)置。
第五方面,本發(fā)明實(shí)施例提供了一種設(shè)備,包括存儲器,存儲有計(jì)算機(jī)可執(zhí)行指令,處理器,處理器被配置為執(zhí)行指令以實(shí)施虛擬機(jī)熱遷移的過程,該過程包括:共享步驟,將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在所述目標(biāo)物理機(jī)上形成所述源磁盤數(shù)據(jù)的虛擬鏡像;建立步驟,在所述目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中所述目標(biāo)虛擬機(jī)和所述源虛擬機(jī)兩者的配置相同;遷移步驟,將所述源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到所述目標(biāo)物理機(jī);啟動(dòng)步驟,根據(jù)所述虛擬鏡像、所述內(nèi)存數(shù)據(jù)和所述狀態(tài)數(shù)據(jù),啟動(dòng)所述目標(biāo)虛擬機(jī)。
結(jié)合第五方面,本發(fā)明實(shí)施例提供的一種設(shè)備,該設(shè)備的處理器所執(zhí)行的進(jìn)程還可以進(jìn)一步包括,判斷步驟,根據(jù)所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果所述負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),如果所述負(fù)載不高于閾值,則維持當(dāng)前所述目標(biāo)物理機(jī);設(shè)立步驟,用于根據(jù)虛擬鏡像,在目標(biāo)物理機(jī)上設(shè)立共享鏡像的磁盤快照,磁盤快照用于存儲目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);合并步驟,用于將源虛擬機(jī)的源磁盤數(shù)據(jù)合并到目標(biāo)虛擬機(jī)的磁盤快照中;移除步驟,用于在源物理機(jī)和目標(biāo)物理機(jī)上移除共享存儲技術(shù)的相應(yīng)設(shè)置。
基于上述方案,本發(fā)明的技術(shù)方案能夠快速降低物理機(jī)的負(fù)載,改善用戶虛擬機(jī)之間的資源競爭,避免高負(fù)載導(dǎo)致虛擬機(jī)性能下降和觸發(fā)物理機(jī)宕機(jī)。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1a是根據(jù)本發(fā)明第一實(shí)施例的虛擬機(jī)熱遷移方法100的流程圖。
圖1b是根據(jù)本發(fā)明第一實(shí)施例的變型的虛擬機(jī)熱遷移方法100’的流程圖。
圖2是根據(jù)本發(fā)明第二實(shí)施例的虛擬機(jī)熱遷移方法200的流程圖。
圖3a是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置300的示意性框圖。
圖3b是根據(jù)本發(fā)明實(shí)施例的變型的虛擬機(jī)熱遷移裝置300’的示意性框圖。
圖4是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置400的示意性框圖。
圖5是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移的系統(tǒng)500的示意性框圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。本文中所描述的說明性系統(tǒng)和方法實(shí)施例并非意圖進(jìn)行限制。
本發(fā)明實(shí)施例的技術(shù)方案可以應(yīng)用于如下場景,包括但不限于:當(dāng)物理機(jī)的負(fù)載在一定時(shí)間內(nèi)一直保持較高水平時(shí),物理機(jī)上運(yùn)行的虛擬機(jī)的性能會(huì)下降,此時(shí)通過執(zhí)行本發(fā)明的技術(shù)方案能夠快速地降低物理機(jī)負(fù)載,實(shí)現(xiàn)物理機(jī)負(fù)載均衡;其次,當(dāng)物理機(jī)的負(fù)載一直保持較高水平時(shí),物理機(jī)宕機(jī)的概率就很大,為了避免觸發(fā)物理機(jī)宕機(jī),進(jìn)而使在物理機(jī)上運(yùn)行的虛擬機(jī)受到不利影響,可以通過本發(fā)明的技術(shù)方案快速地將虛擬機(jī)遷移到其他物理機(jī)上,這樣既可以降低物理機(jī)宕機(jī)概率,又可以保證虛擬機(jī)不會(huì)受到宕機(jī)的影響;此外,當(dāng)物理機(jī)需要進(jìn)行虛擬化相關(guān)軟件或相關(guān)內(nèi)核模塊的升級,以便修復(fù)漏洞、提高性能或引入新特性等時(shí),可以通過本發(fā)明的技術(shù)方案,在保證虛擬機(jī)上服務(wù)正常運(yùn)行的同時(shí),完成相關(guān)升級。
第一實(shí)施例
圖1a是根據(jù)本發(fā)明第一實(shí)施例的虛擬機(jī)熱遷移方法100的流程圖。該方法100可以由物理機(jī)上的虛擬機(jī)熱遷移裝置執(zhí)行。
如圖1a所示,在步驟s101、通過共享存儲技術(shù),將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)以虛擬鏡像的方式共享到目標(biāo)物理機(jī)。
可選的,可以使用諸如iscsi(internetsmallcomputersysteminterface,因特網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口)或者nbd(networkblockdevice,網(wǎng)絡(luò)塊存儲)等共享存儲技術(shù)。作為一個(gè)實(shí)例,首先,需要在源物理機(jī)將待共享的源虛擬機(jī)的本地磁盤導(dǎo)出為磁盤鏡像,該磁盤鏡像的文件格式可以是諸如qcow2、raw等虛擬化系統(tǒng)支持的鏡像文件格式。然后,該磁盤鏡像文件作為共享鏡像文件,通過iscsi或nbd等共享協(xié)議將目標(biāo)物理機(jī)上鏈接到該磁盤鏡像文件,即將磁盤鏡像文件映射到目標(biāo)物理機(jī),此時(shí)該磁盤鏡像被源物理機(jī)和目標(biāo)物理機(jī)所共享。之后,在目標(biāo)物理機(jī)系統(tǒng)的設(shè)備目錄,例如/dev目錄中,會(huì)出現(xiàn)共享的磁盤鏡像文件。為該共享的磁盤鏡像文件虛擬一個(gè)鏈接名稱和路徑都與源端的磁盤鏡像文件的名稱和路徑完全一致的鏈接,這樣在目標(biāo)物理機(jī)上虛擬出源虛擬機(jī)的磁盤鏡像的虛擬鏡像。虛擬鏡像的優(yōu)點(diǎn)在于,虛擬鏡像和源物理機(jī)上的磁盤鏡像相同,并不存在依賴關(guān)系。所謂依賴關(guān)系是指,新建的鏡像要依賴于下層鏡像或原始鏡像才能運(yùn)行,這種依賴關(guān)系一般由鏡像創(chuàng)建工具例如“qemu-img”等實(shí)現(xiàn)。因?yàn)楸景l(fā)明的技術(shù)方案使用虛擬鏡像而非依賴鏡像,所以在本發(fā)明的另一實(shí)施例中,可以調(diào)整目標(biāo)物理機(jī)的選擇。
在步驟s102、根據(jù)虛擬鏡像的配置信息,在目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中目標(biāo)虛擬機(jī)和源虛擬機(jī)兩者的配置相同。
根據(jù)本發(fā)明的實(shí)施例,當(dāng)虛擬鏡像在目標(biāo)物理機(jī)生成后,目標(biāo)物理機(jī)可以通過源端磁盤鏡像的路徑和文件名訪問源端的磁盤鏡像文件。然后,虛擬機(jī)熱遷移裝置根據(jù)該虛擬鏡像的包含上述路徑與文件名稱的配置信息,在目標(biāo)物理機(jī)建立目標(biāo)虛擬機(jī),其中目標(biāo)虛擬機(jī)的配置與源虛擬機(jī)的配置相同。需要說明的是,每個(gè)虛擬機(jī)都有對應(yīng)的配置文件,通常這些配置文件保存在虛擬機(jī)所在的物理機(jī)上,為了能夠使用源虛擬機(jī)的配置文件在目標(biāo)物理機(jī)建立一個(gè)與源虛擬機(jī)配置相同的目標(biāo)虛擬機(jī),在磁盤配置上,需要虛擬鏡像的配置信息作為目標(biāo)虛擬機(jī)磁盤的配置信息,使與源虛擬機(jī)配置相同的目標(biāo)虛擬機(jī)能夠正常建立。
接下來,在步驟s103、通過遷移指令,將源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到目標(biāo)物理機(jī)。
在本發(fā)明的實(shí)施例中,可以通過虛擬化系統(tǒng)組件中的遷移命令選擇上述共享存儲協(xié)議將源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到目標(biāo)虛擬機(jī)物理機(jī)。作為一個(gè)實(shí)例,在kvm虛擬化系統(tǒng)中,可以使用“virshmigration”命令選擇共享存儲協(xié)議進(jìn)行遷移。由于無需進(jìn)行磁盤數(shù)據(jù)遷移,該步驟花費(fèi)時(shí)間非常短。
當(dāng)內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)被遷移到目標(biāo)物理機(jī)后,目標(biāo)虛擬機(jī)具備了與源虛擬機(jī)相同的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù),因此目標(biāo)虛擬機(jī)啟動(dòng)所需要的數(shù)據(jù)已足夠。
在步驟s104、根據(jù)虛擬鏡像、內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù),啟動(dòng)目標(biāo)虛擬機(jī)。
在本發(fā)明實(shí)施例中,目標(biāo)虛擬機(jī)在目標(biāo)物理機(jī)上啟動(dòng)之后,如果目標(biāo)虛擬機(jī)要訪問磁盤數(shù)據(jù),可以通過虛擬鏡像從源物理機(jī)讀寫磁盤鏡像數(shù)據(jù)來實(shí)現(xiàn)。在這種情況下,對于目標(biāo)虛擬機(jī)來說,源物理機(jī)上的磁盤鏡像相當(dāng)于目標(biāo)物理機(jī)上的本地磁盤。同時(shí),源物理機(jī)上的源虛擬機(jī)就可以關(guān)閉,物理機(jī)的內(nèi)存和cpu資源就可以釋放,但是磁盤鏡像還需保留一段時(shí)間。此時(shí),源物理機(jī)的cpu、內(nèi)存和磁盤i/o的利用率得以降低,物理機(jī)的負(fù)載被快速地降低及均衡。
在步驟s104之后,目標(biāo)虛擬機(jī)運(yùn)行產(chǎn)生的磁盤數(shù)據(jù)將通過共享存儲協(xié)議被保存在源物理機(jī)上的磁盤鏡像中。當(dāng)源物理機(jī)的負(fù)載不高并且需要進(jìn)行虛擬化相關(guān)軟件或相關(guān)內(nèi)核模塊的升級,以便修復(fù)漏洞、提高性能或引入新特性等時(shí),目標(biāo)虛擬機(jī)產(chǎn)生的數(shù)據(jù)無需保存在目標(biāo)物理機(jī),當(dāng)源物理機(jī)完成相關(guān)升級后,可直接將目標(biāo)虛擬機(jī)重新遷回源物理機(jī),遷回步驟與上述遷移步驟原理相同,在此省略詳細(xì)描述。
因此,根據(jù)本發(fā)明的實(shí)施例,物理機(jī)能夠在保證虛擬機(jī)上服務(wù)正常運(yùn)行的同時(shí),完成相關(guān)升級。并且由于無需遷移磁盤數(shù)據(jù),節(jié)約了物理機(jī)資源。
第一實(shí)施例變型
圖1b是根據(jù)本發(fā)明第一實(shí)施例的變型的虛擬機(jī)熱遷移方法100’的流程圖。
如圖1b所示,方法100’中,步驟s101’至s104’與方法100的步驟s101至s104相同,為了簡略,在此省略具體描述。
在步驟s104’之后,目標(biāo)虛擬機(jī)運(yùn)行產(chǎn)生的磁盤數(shù)據(jù)也可以被保存在目標(biāo)物理機(jī)上。因此進(jìn)一步的,在步驟s105’、根據(jù)虛擬鏡像,在目標(biāo)物理機(jī)上設(shè)立共享鏡像的磁盤快照,磁盤快照用于存儲目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù)。
根據(jù)目標(biāo)物理機(jī)上的虛擬鏡像設(shè)立磁盤快照。該快照是相對于源物理機(jī)上的磁盤鏡像的外部快照,該快照是磁盤鏡像的關(guān)聯(lián)鏡像,并且依賴于目標(biāo)物理機(jī)上的虛擬鏡像。其中,外部快照是相對于內(nèi)部快照而言,外部快照是相對于磁盤鏡像的獨(dú)立文件,而內(nèi)部快照通常包含在磁盤鏡像中,在一些情況下,內(nèi)部快照與磁盤鏡像生成為一個(gè)文件。
作為一個(gè)實(shí)例,目標(biāo)物理機(jī)上的磁盤快照在設(shè)立時(shí)為增量的文件,除了一些基本信息之外并沒有數(shù)據(jù)。并且,與其他用于備份的快照不同,本發(fā)明實(shí)施例中的磁盤快照具有特殊的配置。該配置特殊在于,目標(biāo)虛擬機(jī)能夠基于快照運(yùn)行。具體的,磁盤快照是源物理機(jī)上的磁盤鏡像的關(guān)聯(lián)鏡像,當(dāng)目標(biāo)虛擬機(jī)需要讀取磁盤鏡像的數(shù)據(jù)時(shí),該虛擬機(jī)可通過磁盤快照所依賴的虛擬鏡像從磁盤鏡像讀取數(shù)據(jù)。因此,當(dāng)磁盤鏡像設(shè)立后,目標(biāo)虛擬機(jī)會(huì)在磁盤快照讀寫數(shù)據(jù),即,源虛擬機(jī)的磁盤數(shù)據(jù)通過磁盤快照從源物理機(jī)上的磁盤鏡像讀取,新產(chǎn)生的數(shù)據(jù)將直接寫入磁盤快照中。這樣能夠有效地降低了源物理機(jī)的負(fù)載。
在磁盤快照設(shè)立后,源物理機(jī)上的磁盤鏡像不會(huì)產(chǎn)生數(shù)據(jù)的寫入或更新操作,這時(shí)可以執(zhí)行步驟s106’、將源虛擬機(jī)的源磁盤數(shù)據(jù)合并到目標(biāo)虛擬機(jī)的磁盤快照中。
具體地,通過使用虛擬化系統(tǒng)中諸如“blockstream”方法從源物理機(jī)將磁盤鏡像中的數(shù)據(jù)提取并合并到目標(biāo)物理機(jī)上的磁盤快照中。同時(shí),根據(jù)源物理機(jī)和目標(biāo)物理機(jī)的網(wǎng)絡(luò)狀態(tài)及所述運(yùn)行狀態(tài),例如,網(wǎng)絡(luò)收發(fā)率和磁盤的i/o負(fù)載等,動(dòng)態(tài)地控制數(shù)據(jù)的提取及合并的速度,確保不會(huì)影響物理機(jī)的性能和/或增加物理機(jī)的負(fù)載壓力。
在完成磁盤數(shù)據(jù)的合并之后,目標(biāo)虛擬機(jī)就可以完全獨(dú)立運(yùn)行,不再對源物理機(jī)上的磁盤鏡像有任何依賴。此時(shí),執(zhí)行步驟s107’、在源物理機(jī)和目標(biāo)物理機(jī)上移除共享存儲技術(shù)的相應(yīng)設(shè)置。目標(biāo)虛擬機(jī)中虛擬鏡像將會(huì)被自動(dòng)刪除,目標(biāo)虛擬機(jī)將不再訪問源物理機(jī)上的磁盤鏡像。
在本發(fā)明的實(shí)施例中,通過采用上述快速遷移的方法,雖然整個(gè)完整的遷移過程所需的時(shí)間,和傳統(tǒng)的遷移方法所需的時(shí)間相當(dāng)。但是遷移過程中,內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)的遷移過程非常短暫,使得可以在目標(biāo)物理機(jī)上快速啟動(dòng)虛擬機(jī),迅速降低源物理機(jī)的負(fù)載,改善用戶虛擬機(jī)之間的資源競爭,避免高負(fù)載導(dǎo)致虛擬機(jī)性能下降和觸發(fā)物理機(jī)宕機(jī)。
上文結(jié)合圖1a和圖1b詳細(xì)描述了根據(jù)本發(fā)明第一實(shí)施例的虛擬機(jī)熱遷移方法100和變型100’,下面將結(jié)合圖2詳細(xì)描述根據(jù)本發(fā)明第二實(shí)施例的虛擬機(jī)熱遷移方法200。
第二實(shí)施例
圖2是根據(jù)本發(fā)明第二實(shí)施例的虛擬機(jī)熱遷移方法200的流程圖。如圖2所示,在方法200中,步驟s201-s204、s207-s209與方法100’中步驟s101’-s107’的技術(shù)特征相同,因此在此省略方法200中相同步驟的具體描述。下面將詳細(xì)描述步驟s205和s206。
步驟s205、根據(jù)所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果所述負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),如果所述負(fù)載不高于閾值,則維持當(dāng)前所述目標(biāo)物理機(jī)。
在一些情況下,當(dāng)目標(biāo)虛擬機(jī)啟動(dòng)之后,由于目標(biāo)物理機(jī)上原有服務(wù)的需求增加和/或資源競爭等原因,目標(biāo)物理機(jī)的負(fù)載可能會(huì)出乎預(yù)料地增大,這時(shí)非常有必要重新選擇新的目標(biāo)物理機(jī)。
如圖2所示,步驟s205由步驟s205a和s205b組成。當(dāng)目標(biāo)虛擬機(jī)啟動(dòng)之后,步驟s205a首先會(huì)被執(zhí)行。具體地,虛擬機(jī)熱遷移裝置會(huì)根據(jù)目標(biāo)物理機(jī)的運(yùn)行狀態(tài)例如cpu、內(nèi)存、磁盤i/o的利用率等判斷物理機(jī)的負(fù)載是否不高于預(yù)先設(shè)定的閾值。如果目標(biāo)物理機(jī)的負(fù)載高于預(yù)先設(shè)定的閾值(s205a中“否”),則重新選擇新的目標(biāo)物理機(jī);如果目標(biāo)物理機(jī)的負(fù)載低于或等于預(yù)先設(shè)定的閾值(s205b中“是”)則繼續(xù)執(zhí)行步驟s205b。在步驟s205b,需要進(jìn)一步判斷目標(biāo)虛擬機(jī)的負(fù)載是否不高于預(yù)先設(shè)定的閾值,如果目標(biāo)虛擬機(jī)的負(fù)載高于預(yù)先設(shè)定的閾值(s205b中“否”),則重新選擇新的目標(biāo)物理機(jī);如果目標(biāo)虛擬機(jī)的負(fù)載低于或等于預(yù)先設(shè)定的閾值(s205b中),則維持使用當(dāng)前物理機(jī)。
其中,重新選擇新的目標(biāo)物理機(jī)需要執(zhí)行步驟s206、在與源物理機(jī)具有網(wǎng)絡(luò)連接的多個(gè)物理機(jī)中,根據(jù)多個(gè)物理機(jī)的運(yùn)行狀態(tài),選擇目標(biāo)物理機(jī)。在本發(fā)明的實(shí)施例中,物理機(jī)的運(yùn)行狀態(tài)主要包括該物理機(jī)及其上運(yùn)行的虛擬機(jī)的負(fù)載信息,例如,cpu、內(nèi)存、磁盤i/o的利用率或網(wǎng)絡(luò)收發(fā)速率等。在步驟s206中,虛擬機(jī)熱遷移裝置會(huì)根據(jù)每個(gè)物理機(jī)的負(fù)載信息,選擇cpu、內(nèi)存和磁盤i/o的利用率最小的物理機(jī)作為熱遷移的目標(biāo)物理機(jī)。
需要說明的是,根據(jù)本發(fā)明的實(shí)施例,在步驟s206之前,目標(biāo)物理機(jī)上只有虛擬鏡像、內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)。其中,虛擬鏡像只是源物理機(jī)上磁盤鏡像在目標(biāo)物理機(jī)的一種映射,而非依賴鏡像。此外,目標(biāo)虛擬機(jī)產(chǎn)生的數(shù)據(jù)沒有保存在目標(biāo)物理機(jī)上,還保存在源物理機(jī)的磁盤鏡像上。因此,如果選擇的目標(biāo)物理機(jī)負(fù)載增大,則可以再次執(zhí)行步驟s206選擇其他負(fù)載低的物理機(jī)進(jìn)行二次或多次遷移。
因此,本發(fā)明實(shí)施例的虛擬機(jī)熱遷移方法,通過對目標(biāo)物理機(jī)的多次選擇和連續(xù)地快速遷移,能夠應(yīng)對物理機(jī)的各種突發(fā)狀況,還可以尋找到最優(yōu)負(fù)載的目標(biāo)物理機(jī),滿足降低物理機(jī)負(fù)載的需求。
上文中結(jié)合圖1和圖2,詳細(xì)描述了根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移方法,下面將結(jié)合圖3至圖5,描述根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置和虛擬機(jī)熱遷移系統(tǒng)。
圖3a是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置300的示意性框圖。如圖3a所示,該虛擬機(jī)熱遷移裝置300包括:
共享模塊301,用于將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在目標(biāo)物理機(jī)上形成源磁盤數(shù)據(jù)的虛擬鏡像;
建立模塊302,用于在目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中目標(biāo)虛擬機(jī)和源虛擬機(jī)兩者的配置相同;
遷移模塊303,將源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到目標(biāo)物理機(jī);
啟動(dòng)模塊304,用于根據(jù)虛擬鏡像、內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù),啟動(dòng)目標(biāo)虛擬機(jī)。
圖3b是根據(jù)本發(fā)明實(shí)施例的變型的虛擬機(jī)熱遷移裝置300’的示意性框圖。如圖3b所示,虛擬機(jī)熱遷移裝置300’的模塊301’-304’與裝置300的模塊301-304相同,在此省略模塊301’-304’的具體描述。
裝置300’還進(jìn)一步包括:
設(shè)立模塊305’,用于根據(jù)虛擬鏡像,在目標(biāo)物理機(jī)上設(shè)立共享鏡像的磁盤快照,磁盤快照用于存儲目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);
合并模塊306’,用于將源虛擬機(jī)的源磁盤數(shù)據(jù)合并到目標(biāo)虛擬機(jī)的磁盤快照中;
移除模塊307’,用于在源物理機(jī)和目標(biāo)物理機(jī)上移除共享存儲技術(shù)的相應(yīng)設(shè)置。
可以理解地,本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置300和300’可對應(yīng)于本發(fā)明實(shí)施例中的虛擬機(jī)熱遷移裝置,并且裝置300和300’中的各個(gè)模塊的上述功能和/或其他操作分別為了實(shí)現(xiàn)圖1a和圖1b中方法的相應(yīng)流程,為了簡介,在此省略詳細(xì)描述。
因此,本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置300,能夠在保證虛擬機(jī)上服務(wù)正常運(yùn)行的同時(shí),完成相關(guān)升級。并且由于無需遷移磁盤數(shù)據(jù),節(jié)約了物理機(jī)資源。本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置300’,通過虛擬機(jī)快速遷移的方式,雖然整個(gè)完整的遷移過程所需的時(shí)間,和傳統(tǒng)的遷移方法所需的時(shí)間相當(dāng)。但是遷移過程中,內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)的遷移過程非常短暫,使得可以在目標(biāo)物理機(jī)上快速啟動(dòng)虛擬機(jī),迅速降低源物理機(jī)的負(fù)載,改善用戶虛擬機(jī)之間的資源競爭,避免高負(fù)載導(dǎo)致虛擬機(jī)性能下降和觸發(fā)物理機(jī)宕機(jī)。
圖4示出了根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置400的示意性框圖。如圖4所示,該虛擬機(jī)熱遷移裝置400包括:
共享模塊401,用于將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在目標(biāo)物理機(jī)上形成源磁盤數(shù)據(jù)的虛擬鏡像;
建立模塊402,用于在目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中目標(biāo)虛擬機(jī)和源虛擬機(jī)兩者的配置相同;
遷移模塊403,將源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到目標(biāo)物理機(jī);
啟動(dòng)模塊404,用于根據(jù)虛擬鏡像、內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù),啟動(dòng)目標(biāo)虛擬機(jī);
判斷模塊405,用于根據(jù)目標(biāo)物理機(jī)和目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷目標(biāo)物理機(jī)和目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),如果負(fù)載不高于閾值,則維持當(dāng)前目標(biāo)物理機(jī);
設(shè)立模塊406,用于根據(jù)虛擬鏡像,在目標(biāo)物理機(jī)上設(shè)立共享鏡像的磁盤快照,磁盤快照用于存儲目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);
合并模塊407,用于將源虛擬機(jī)的源磁盤數(shù)據(jù)合并到目標(biāo)虛擬機(jī)的磁盤快照中;
移除模塊408,用于在源物理機(jī)和目標(biāo)物理機(jī)上移除共享存儲技術(shù)的相應(yīng)設(shè)置。
可以理解地,本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置400可對應(yīng)于本發(fā)明實(shí)施例中的虛擬機(jī)熱遷移裝置,并且裝置400中的各個(gè)模塊的上述功能和/或其他操作分別為了實(shí)現(xiàn)圖2中方法的相應(yīng)流程,為了簡介,在此省略詳細(xì)描述。
因此,本發(fā)明實(shí)施例的虛擬機(jī)熱遷移裝置,通過對目標(biāo)物理機(jī)的多次選擇和連續(xù)地快速遷移,能夠應(yīng)對物理機(jī)的各種突發(fā)狀況,還可以尋找到最優(yōu)負(fù)載的目標(biāo)物理機(jī),滿足降低物理機(jī)負(fù)載的需求。
圖5是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)熱遷移的系統(tǒng)500的示意性框圖。如圖5所示,該系統(tǒng)500包括:虛擬機(jī)熱遷移裝置501、源物理機(jī)502和目標(biāo)物理機(jī)503,其中,該虛擬機(jī)熱遷移裝置501可以是圖3至圖4中描述的任意一種虛擬機(jī)熱遷移裝置,該源物理機(jī)502和目標(biāo)物理機(jī)503是上述方法及裝置中的源物理機(jī)和目標(biāo)物理機(jī)。
進(jìn)一步地,根據(jù)本發(fā)明的實(shí)施例,還提供一種非易失性存儲介質(zhì),該非易失性存儲介質(zhì)具有存儲在其中的指令,當(dāng)該指令被執(zhí)行時(shí),使得處理器執(zhí)行虛擬機(jī)熱遷移方法,具體的,該指令包括:共享指令,將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在所述目標(biāo)物理機(jī)上形成所述源磁盤數(shù)據(jù)的虛擬鏡像;建立指令,在所述目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中所述目標(biāo)虛擬機(jī)和所述源虛擬機(jī)兩者的配置相同;遷移指令,將所述源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到所述目標(biāo)物理機(jī);啟動(dòng)指令,根據(jù)所述虛擬鏡像、所述內(nèi)存數(shù)據(jù)和所述狀態(tài)數(shù)據(jù),啟動(dòng)所述目標(biāo)虛擬機(jī)。
可選地,根據(jù)本發(fā)明的另一實(shí)施例,該存儲介質(zhì)還可以包括判斷指令,根據(jù)所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果所述負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),如果所述負(fù)載不高于閾值,則維持當(dāng)前所述目標(biāo)物理機(jī);設(shè)立指令,用于根據(jù)虛擬鏡像,在目標(biāo)物理機(jī)上設(shè)立共享鏡像的磁盤快照,磁盤快照用于存儲目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);合并指令,用于將源虛擬機(jī)的源磁盤數(shù)據(jù)合并到目標(biāo)虛擬機(jī)的磁盤快照中;移除指令,用于在源物理機(jī)和目標(biāo)物理機(jī)上移除共享存儲技術(shù)的相應(yīng)設(shè)置。
進(jìn)一步的,根據(jù)本發(fā)明的另一實(shí)施例,還提供一種設(shè)備,包括存儲器,存儲有計(jì)算機(jī)可執(zhí)行指令,處理器,處理器被配置為執(zhí)行指令以實(shí)施虛擬機(jī)熱遷移的過程,該過程包括:共享步驟,將源物理機(jī)上的源虛擬機(jī)的源磁盤數(shù)據(jù)共享到目標(biāo)物理機(jī),在所述目標(biāo)物理機(jī)上形成所述源磁盤數(shù)據(jù)的虛擬鏡像;建立步驟,在所述目標(biāo)物理機(jī)上建立目標(biāo)虛擬機(jī),其中所述目標(biāo)虛擬機(jī)和所述源虛擬機(jī)兩者的配置相同;遷移步驟,將所述源虛擬機(jī)的內(nèi)存數(shù)據(jù)和狀態(tài)數(shù)據(jù)遷移到所述目標(biāo)物理機(jī);啟動(dòng)步驟,根據(jù)所述虛擬鏡像、所述內(nèi)存數(shù)據(jù)和所述狀態(tài)數(shù)據(jù),啟動(dòng)所述目標(biāo)虛擬機(jī)。
可選地,根據(jù)本發(fā)明的另一實(shí)施例,該過程還可以包括判斷步驟,根據(jù)所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的運(yùn)行狀態(tài),判斷所述目標(biāo)物理機(jī)和所述目標(biāo)虛擬機(jī)的負(fù)載是否高于閾值,如果所述負(fù)載高于閾值,則重新選擇新的目標(biāo)物理機(jī),如果所述負(fù)載不高于閾值,則維持當(dāng)前所述目標(biāo)物理機(jī);設(shè)立步驟,用于根據(jù)虛擬鏡像,在目標(biāo)物理機(jī)上設(shè)立共享鏡像的磁盤快照,磁盤快照用于存儲目標(biāo)虛擬機(jī)產(chǎn)生的目標(biāo)磁盤數(shù)據(jù);合并步驟,用于將源虛擬機(jī)的源磁盤數(shù)據(jù)合并到目標(biāo)虛擬機(jī)的磁盤快照中;移除步驟,用于在源物理機(jī)和目標(biāo)物理機(jī)上移除共享存儲技術(shù)的相應(yīng)設(shè)置。
需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
盡管本文已公開了各種方面和實(shí)施例,但其它方面和實(shí)施例對于本領(lǐng)域技術(shù)人員而言將是明顯的。本文公開的各種方面和實(shí)施例是為了說明的目的,而不意在進(jìn)行限制,真實(shí)的范圍應(yīng)當(dāng)由所附權(quán)利要求以及這樣的權(quán)利要求所被授權(quán)的等效物的全部范圍指示。還要理解,本文中使用的術(shù)語僅是為了描述特定實(shí)施例的目的,而不意在進(jìn)行限制。
因?yàn)榭梢詫λ枋龅氖纠鞒黾?xì)節(jié)上的很多修改、變化和改變,但是意圖在于前面的描述和附圖中所示的所有事項(xiàng)被解釋為說明性的,而不是限制的意思。