亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法

文檔序號(hào):7550505閱讀:865來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法
技術(shù)領(lǐng)域
本發(fā)明涉及涉及虛擬化數(shù)據(jù)中心的資源管理領(lǐng)域,尤其涉及一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法。
背景技術(shù)
傳統(tǒng)的IT資源的擁有者以數(shù)據(jù)中心的方式向外界提供服務(wù),由分布在各地的擁有大量計(jì)算或者存儲(chǔ)資源的多個(gè)數(shù)據(jù)中心組成,不同的用戶(hù)之間共享數(shù)據(jù)中心的資源池。在云計(jì)算模式下,用戶(hù)的應(yīng)用復(fù)雜多樣,需求產(chǎn)生的位置各不相同,不同的用戶(hù)對(duì)應(yīng)用的服務(wù)質(zhì)量有不同的要求。故IT企業(yè)面臨著同時(shí)管理跨地域的多個(gè)數(shù)據(jù)中心的困難,所以傳統(tǒng)數(shù)據(jù)中心的管理模式缺乏多個(gè)數(shù)據(jù)中心之間的資源動(dòng)態(tài)調(diào)節(jié)方法,以滿(mǎn)足云計(jì)算環(huán)境中復(fù)雜多樣的應(yīng)用與資源的映射管理。服務(wù)器虛擬化技術(shù)作為云計(jì)算的關(guān)鍵技術(shù),其發(fā)展為數(shù)據(jù)中心的資源管理帶來(lái)新的機(jī)遇。系統(tǒng)級(jí)虛擬化在硬件與軟件之間設(shè)置一層虛擬機(jī)管理器(Virtual MachineMonitor, VMM)軟件,把不同的硬件資源進(jìn)行抽象,為上層的軟件系統(tǒng)提供多個(gè)虛擬計(jì)算環(huán)境,同時(shí)支持若干個(gè)獨(dú)立執(zhí)行的虛擬機(jī)(Virtual Machine,VM),通過(guò)對(duì)硬件資源進(jìn)行劃分,讓多個(gè)系統(tǒng)同時(shí)使用系統(tǒng)資源,因而能夠提高資源利用率。每個(gè)獨(dú)立運(yùn)行的虛擬機(jī)具有一臺(tái)物理機(jī)同樣的功能,并且他們之間較強(qiáng)的隔離性保障提供的服務(wù)質(zhì)量。虛擬機(jī)在線(xiàn)遷移技術(shù)是在保持虛擬機(jī)運(yùn)行的狀態(tài)下,把其從一臺(tái)物理主機(jī)遷移到另一臺(tái)物理主機(jī),并在目的主機(jī)上恢復(fù)運(yùn)行,減少對(duì)業(yè)務(wù)運(yùn)行的影響,無(wú)縫的實(shí)現(xiàn)服務(wù)整合。通過(guò)在線(xiàn)遷移,可以更方便的實(shí)現(xiàn)服務(wù)器的在線(xiàn)維護(hù)、在線(xiàn)升級(jí)、負(fù)載均衡,災(zāi)難恢復(fù),提供一種靈活有效的資源管理方法?,F(xiàn)有虛擬機(jī)在線(xiàn)遷移機(jī)制中源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間在同一虛擬化數(shù)據(jù)中心,主要有一下兩個(gè)特點(diǎn):(1)兩個(gè)節(jié)點(diǎn)屬于同一個(gè)VLAN,即同一虛擬化數(shù)據(jù)中心內(nèi),節(jié)點(diǎn)之間網(wǎng)絡(luò)具有低延遲和高帶寬。(2)兩節(jié)點(diǎn)之間通過(guò)SAN(storage area network)、NAS(networknetwork-attached storage)等方式共享鏡像文件信息,遷移過(guò)程只發(fā)送迭代產(chǎn)生的內(nèi)存臟頁(yè)和CPU狀態(tài)等信息,而不發(fā)送磁盤(pán)文件信息。在跨多個(gè)虛擬化數(shù)據(jù)中心的環(huán)境下,由于各虛擬化數(shù)據(jù)中心在地理位置上的廣泛分布,要實(shí)施在線(xiàn)的虛擬機(jī)遷移存在以下兩個(gè)困難:I)虛擬化數(shù)據(jù)中心之間的網(wǎng)絡(luò)的高延遲和低帶寬連接兩個(gè)虛擬化數(shù)據(jù)中心需要經(jīng)過(guò)多重路由和鏈路,網(wǎng)絡(luò)延遲大,帶寬相對(duì)較小,增大了虛擬機(jī)遷移的總時(shí)間和宕機(jī)時(shí)間,影響運(yùn)行在虛擬機(jī)中的業(yè)務(wù),而且將虛擬化數(shù)據(jù)中心直接連入Internet存在安全和管理方面的隱患?,F(xiàn)有技術(shù)設(shè)計(jì)數(shù)據(jù)中之間的專(zhuān)用通信網(wǎng)絡(luò),通過(guò)專(zhuān)用網(wǎng)絡(luò)將多個(gè)虛擬化數(shù)據(jù)中心的遷移轉(zhuǎn)變成邏輯上同一局域網(wǎng)內(nèi)的虛擬機(jī)遷移。但存在以下問(wèn)題:當(dāng)虛擬機(jī)被遷移至距離文件系統(tǒng)所在的虛擬化數(shù)據(jù)中心較遠(yuǎn)(相對(duì)于文件系統(tǒng)在本地)的業(yè)務(wù)節(jié)點(diǎn)時(shí),虛擬機(jī)的1/0平均訪問(wèn)延遲和最大訪問(wèn)延遲均增大到原來(lái)的2倍以上,CPU利用率也降低了30%,虛擬機(jī)遷移后不能完全恢復(fù)到原有的執(zhí)行效率。
2)跨虛擬化數(shù)據(jù)中心環(huán)境中的虛擬機(jī)遷移必須發(fā)送虛擬機(jī)的所有狀態(tài)信息(包括:CPU,內(nèi)存,磁盤(pán)等),為了支持各種用戶(hù)的不同需求,現(xiàn)有技術(shù)中采用不同的磁盤(pán)遷移策略,虛擬機(jī)的磁盤(pán)空間較大(10G以上),附加磁盤(pán)狀態(tài)一致性過(guò)程中產(chǎn)生的臟扇區(qū)和內(nèi)存迭代產(chǎn)生的臟頁(yè)信息,使得整個(gè)遷移過(guò)程發(fā)送的數(shù)據(jù)量過(guò)大,耗費(fèi)過(guò)多網(wǎng)絡(luò)帶寬資源,而且虛擬機(jī)遷移時(shí)間和宕機(jī)時(shí)間過(guò)長(zhǎng)。

發(fā)明內(nèi)容
為了解決上述問(wèn)題,本發(fā)明提供了一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法,在原有虛擬機(jī)在線(xiàn)遷移方法中加入鏡像的遷移,使虛擬機(jī)能夠在多個(gè)虛擬化數(shù)據(jù)中心之間遷移,從而實(shí)現(xiàn)在多個(gè)虛擬化數(shù)據(jù)中心之間實(shí)現(xiàn)虛擬機(jī)和資源的動(dòng)態(tài)映射。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法,該方法包括:步驟I,在廣域網(wǎng)上部署多個(gè)虛擬化數(shù)據(jù)中心,其中每個(gè)虛擬化數(shù)據(jù)中心的業(yè)務(wù)節(jié)點(diǎn)運(yùn)行虛擬機(jī),每個(gè)虛擬化數(shù)據(jù)中心的存儲(chǔ)節(jié)點(diǎn)保存虛擬機(jī)鏡像;步驟2,通過(guò)兩層橋接模式的虛擬專(zhuān)用網(wǎng)絡(luò)連接多個(gè)虛擬化數(shù)據(jù)中心;步驟3,在源節(jié)點(diǎn)上的虛擬機(jī)I/O驅(qū)動(dòng)進(jìn)程中監(jiān)控被遷移虛擬機(jī)每次寫(xiě)入磁盤(pán)的臟塊,并為所述虛擬機(jī)I/o驅(qū)動(dòng)進(jìn)程創(chuàng)建遷移線(xiàn)程,所述遷移線(xiàn)程進(jìn)行用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移和臟塊監(jiān)控記錄的遷移,其中所述臟塊是指虛擬機(jī)每次I/o操作的邏輯上連續(xù)的扇區(qū);步驟4,源節(jié)點(diǎn)上所述虛擬機(jī)的遷移進(jìn)程控制所述用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移和臟塊監(jiān)控記錄的遷移;步驟5,改變所述虛擬機(jī)在目的節(jié)點(diǎn)恢復(fù)進(jìn)程的執(zhí)行順序,為所述恢復(fù)進(jìn)程創(chuàng)建恢復(fù)線(xiàn)程,所述恢復(fù)線(xiàn)程接收所述預(yù)遷移和所述臟塊監(jiān)控記錄遷移的信息,并將所述信息寫(xiě)入所述存儲(chǔ)節(jié)點(diǎn)中。進(jìn)一步的,所述步驟I包括:步驟11,將所述每個(gè)虛擬化數(shù)據(jù)中心的所有硬件資源虛擬化,以虛擬機(jī)的形式提供服務(wù),每個(gè)虛擬機(jī)依附所述存儲(chǔ)節(jié)點(diǎn)中的一個(gè)虛擬機(jī)鏡像文件。;步驟12,將所述虛擬機(jī)鏡像文件分為template和用戶(hù)私有數(shù)據(jù)文件,所述template中包括業(yè)務(wù)運(yùn)行的操作系統(tǒng)和應(yīng)用系統(tǒng),虛擬機(jī)運(yùn)行時(shí)不能改變此文件的內(nèi)容;步驟13,將所述template和所述用戶(hù)私有數(shù)據(jù)文件存儲(chǔ)于所述存儲(chǔ)節(jié)點(diǎn)中。進(jìn)一步的,所述步驟2包括:步驟21,在虛擬化數(shù)據(jù)中心之外的廣域網(wǎng)中隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為VPNserver,每個(gè)虛擬化數(shù)據(jù)中心選擇一個(gè)節(jié)點(diǎn)作為VPNclient,所述VPNserver生成其建立服務(wù)和每個(gè)VPNclient請(qǐng)求連接時(shí)的認(rèn)證文件,其中所述VPNserver為VPN服務(wù)器,VPNclient為VPN客戶(hù);步驟22,在所述VPNserver的配置文件中設(shè)置參數(shù),包括:TCP協(xié)議,tap設(shè)備,IP地址,以及認(rèn)證文件路徑,之后啟動(dòng)VPNserver服務(wù);步驟23,所述每個(gè)虛擬化數(shù)據(jù)中心選擇一個(gè)節(jié)點(diǎn)作為VPNclient后將所述認(rèn)證文件復(fù)制到該節(jié)點(diǎn),并在VPNclient的配置文件中設(shè)置參數(shù),包括=VPNserver的IP地址,TCP協(xié)議,tap設(shè)備,以及認(rèn)證文件路徑,之后啟動(dòng)VPNclient服務(wù),所述VPNclient服務(wù)與VPNserver服務(wù)連接;步驟24,在所述每個(gè)VPNclient上啟動(dòng)虛擬網(wǎng)橋,將所述虛擬網(wǎng)橋與所述tap設(shè)備對(duì)接。進(jìn)一步的,所述步驟3包括:步驟31,記錄所述虛擬機(jī)每次寫(xiě)入磁盤(pán)的臟塊對(duì)應(yīng)的扇區(qū)號(hào)和扇區(qū)個(gè)數(shù);步驟32,當(dāng)所述遷移線(xiàn)程接收到所述用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移命令時(shí),通過(guò)所述預(yù)遷移命令中攜帶的虛擬機(jī)號(hào),在Xenstore中解析所述用戶(hù)私有數(shù)據(jù)文件的路徑和文件名,并將其發(fā)送到目的節(jié)點(diǎn),然后將臟塊的監(jiān)控記錄清零,其中所述Xenstore是啟動(dòng)虛擬機(jī)后在所述源節(jié)點(diǎn)之中保存虛擬機(jī)的所有信息;步驟33,當(dāng)所述遷移線(xiàn)程接收到所述臟塊監(jiān)控記錄的遷移命令時(shí),掃描所述臟塊監(jiān)控記錄,從扇區(qū)號(hào)和扇區(qū)個(gè)數(shù)中讀取文件內(nèi)容,并將所述扇區(qū)號(hào)和扇區(qū)個(gè)數(shù)以及所述文件內(nèi)容發(fā)送到目的節(jié)點(diǎn),然后將監(jiān)控記錄清零。進(jìn)一步的,所述步驟4包括:步驟41,源節(jié)點(diǎn)上所述虛擬機(jī)的遷移進(jìn)程向所述遷移線(xiàn)程發(fā)送所述用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移命令和被遷移虛擬機(jī)的虛擬機(jī)號(hào),進(jìn)行所述用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移,所述用戶(hù)私有數(shù)據(jù)文件預(yù)遷移成功返回后進(jìn)入迭代遷移;步驟42,在每輪迭代遷移結(jié)束后向所述遷移線(xiàn)程發(fā)送臟塊監(jiān)控記錄的遷移命令,進(jìn)行所述臟塊監(jiān)控記錄的遷移。進(jìn)一步的,所述步驟5包括:步驟51,先恢復(fù)虛擬機(jī)的內(nèi)存和CPU,然后再恢復(fù)虛擬機(jī)的I/O ;步驟52,當(dāng)所述恢復(fù)線(xiàn)程接收到的信息為用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移信息時(shí),在與所述用戶(hù)私有數(shù)據(jù)文件對(duì)應(yīng)的路徑下創(chuàng)建該文件,并打開(kāi)此文件,將所述信息內(nèi)容按順序與入該文件中,與入完成后,關(guān)閉該文件;當(dāng)所述恢復(fù)線(xiàn)程接收到的信息為臟塊監(jiān)控記錄的遷移信息時(shí),將所述信息格式化后寫(xiě)入所述用戶(hù)私有數(shù)據(jù)文件對(duì)應(yīng)的邏輯扇區(qū)中。本發(fā)明的有益功效在于,將廣域網(wǎng)上分布的多個(gè)虛擬化數(shù)據(jù)中心通過(guò)VPN連接,在原有Xen虛擬機(jī)遷移機(jī)制的基礎(chǔ)上發(fā)明帶鏡像文件遷移的,遷移鏡像文件時(shí)不遷移template,只遷移用戶(hù)私有數(shù)據(jù)文件和遷移過(guò)程中寫(xiě)入該文件的臟塊,減少發(fā)送的數(shù)據(jù)量,降低遷移開(kāi)銷(xiāo)的同時(shí)提高遷移時(shí)間和宕機(jī)時(shí)間。實(shí)現(xiàn)虛擬機(jī)在多個(gè)虛擬化數(shù)據(jù)中心之間的在線(xiàn)遷移,為虛擬化數(shù)據(jù)中心之間的資源動(dòng)態(tài)管理提供方法,具有良好的使用價(jià)值和市場(chǎng)前景。以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的限定。


圖1為本發(fā)明的跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法流程圖;圖2A是本發(fā)明的一實(shí)施例的跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法流程圖;圖2B是本發(fā)明的一實(shí)施例的跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移實(shí)施過(guò)程中的虛擬化數(shù)據(jù)中心組織結(jié)構(gòu)以及虛擬化數(shù)據(jù)中心之間的網(wǎng)路連接圖。
具體實(shí)施例方式圖1為本發(fā)明的跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法流程圖。如圖1所示,該方法包括:步驟I,在廣域網(wǎng)上部署多個(gè)虛擬化數(shù)據(jù)中心,其中每個(gè)虛擬化數(shù)據(jù)中心的業(yè)務(wù)節(jié)點(diǎn)運(yùn)行虛擬機(jī),每個(gè)虛擬化數(shù)據(jù)中心的存儲(chǔ)節(jié)點(diǎn)保存虛擬機(jī)鏡像;步驟2,通過(guò)兩層橋接模式(tap)的虛擬專(zhuān)用網(wǎng)絡(luò)VPN連接多個(gè)虛擬化數(shù)據(jù)中心;步驟3,在源節(jié)點(diǎn)上的虛擬機(jī)I/O驅(qū)動(dòng)進(jìn)程中監(jiān)控被遷移虛擬機(jī)每次寫(xiě)入磁盤(pán)的臟塊(Block),并為所述虛擬機(jī)I/O驅(qū)動(dòng)進(jìn)程創(chuàng)建一個(gè)遷移線(xiàn)程(S_thread),所述遷移線(xiàn)程進(jìn)行用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移和臟塊監(jiān)控記錄的遷移,其中所述臟塊是指虛擬機(jī)每次I/O操作的邏輯上連續(xù)的扇區(qū);步驟4,源節(jié)點(diǎn)上的虛擬機(jī)的遷移進(jìn)程控制所述用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移和臟塊監(jiān)控記錄的遷移;步驟5,改變所述虛擬機(jī)在目的節(jié)點(diǎn)恢復(fù)進(jìn)程的執(zhí)行順序,為所述恢復(fù)進(jìn)程創(chuàng)建恢復(fù)線(xiàn)程(R_thread),所述恢復(fù)線(xiàn)程接收所述預(yù)遷移和所述臟塊監(jiān)控記錄遷移的信息,并將所述信息寫(xiě)入所述存儲(chǔ)節(jié)點(diǎn)中。進(jìn)一步的,所述步驟I包括:Al.每個(gè)虛擬化數(shù)據(jù)中心的所有節(jié)點(diǎn)屬于同一邏輯局域網(wǎng),業(yè)務(wù)節(jié)點(diǎn)共享存儲(chǔ)節(jié)點(diǎn)之上的文件系統(tǒng)中。A2.使用虛擬化技術(shù),將虛擬化數(shù)據(jù)中心的所有硬件資源虛擬化。以虛擬機(jī)的形式向用戶(hù)提供服務(wù)。A3.將虛擬機(jī)鏡像文件拆分為模板(template)和用戶(hù)私有數(shù)據(jù)文件(Qcow),其中每個(gè)虛擬化數(shù)據(jù)中心備份所有的template,每個(gè)虛擬化數(shù)據(jù)中心擁有的template相同,Qcow文件在用戶(hù)請(qǐng)求服務(wù)時(shí)動(dòng)態(tài)生成。A4.將template和Qcow分別存儲(chǔ)于存儲(chǔ)節(jié)點(diǎn)之上的Volume中。所述“虛擬化數(shù)據(jù)中心”是包含在同一邏輯局域網(wǎng)中的業(yè)務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn),能夠向外界提供計(jì)算和存儲(chǔ)服務(wù)。所述“虛擬機(jī)鏡像文件”在虛擬化數(shù)據(jù)中心以虛擬機(jī)的形式提供服務(wù)時(shí),保存在文件系統(tǒng)中的一個(gè)文件,其中包含操作系統(tǒng)、應(yīng)用軟件和用戶(hù)私有數(shù)據(jù)文件。所述“template”包括業(yè)務(wù)運(yùn)行的操作系統(tǒng)和應(yīng)用系統(tǒng),虛擬機(jī)運(yùn)行時(shí)不能改變此文件的內(nèi)容。所述“Qcow”是依附template動(dòng)態(tài)創(chuàng)建的文件,用戶(hù)將私有數(shù)據(jù)寫(xiě)入其中,用戶(hù)修改template的內(nèi)容時(shí),將其復(fù)制并改寫(xiě)后保存。所述“Volume”是分布式文件系統(tǒng)的一個(gè)卷。進(jìn)一步的,所述步驟2包括:B1.在虛擬化數(shù)據(jù)中心之外的廣域網(wǎng)中選擇一個(gè)節(jié)點(diǎn)作為VPN服務(wù)器(VPNserver),在其上生成自己建立服務(wù)和每個(gè)VPNclient請(qǐng)求連接時(shí)需要的認(rèn)證文件。B2.在VPNserver的配置文件中設(shè)置參數(shù):協(xié)議為T(mén)CP、tap模式、tap設(shè)備使用的虛擬IP地址、以及認(rèn)證文件路徑,之后啟動(dòng)VPNserver服務(wù)。
B3.每個(gè)虛擬化數(shù)據(jù)中心選擇一個(gè)節(jié)點(diǎn)作為VPN客戶(hù)端(VPNclient),將VPNserver生成的認(rèn)證文件復(fù)制到該節(jié)點(diǎn),在配置文件中設(shè)置參數(shù)=VPNserver的IP地址,TCP協(xié)議,tap設(shè)備,以及認(rèn)證文件路徑,啟動(dòng)VPNclient服務(wù),所述服務(wù)請(qǐng)求與VPNserver服務(wù)連接。B4.在每個(gè)VPNclient上啟動(dòng)虛擬網(wǎng)橋,將其與tap設(shè)備對(duì)接。并在VPNclient上設(shè)置到其它虛擬化數(shù)據(jù)中心的net。B5.除VPNclient之外的業(yè)務(wù)節(jié)點(diǎn)上設(shè)置默認(rèn)路由,為本虛擬化數(shù)據(jù)中心VPNclient 的 IP 地址。所述“net”是在VPNclient上設(shè)置其他虛擬化數(shù)據(jù)中心的路由,使其具有轉(zhuǎn)發(fā)數(shù)據(jù)的功能。所述“認(rèn)證文件”是由VPNserver生成的確認(rèn)連接合法性的文件。進(jìn)一步的,所述步驟3包括:Cl.在源節(jié)點(diǎn)上被遷移虛擬機(jī)I/O驅(qū)動(dòng)進(jìn)程中,記錄虛擬機(jī)的每一個(gè)I/O寫(xiě)入Block對(duì)應(yīng)的扇區(qū)號(hào)和扇區(qū)個(gè)數(shù)。C2.S_thread接收xc_domain_save O發(fā)送的兩種控制命令,其一為Qcow文件預(yù)遷移命令,其二為遷移Block監(jiān)控記錄的命令。C3.當(dāng)S_thread接收到Qcow文件預(yù)遷移命令時(shí),通過(guò)命令中攜帶的虛擬機(jī)號(hào),在Xenstore中解析Qcow文件的路徑和文件名,并將Block的監(jiān)控記錄清零,重新開(kāi)始監(jiān)控,然后發(fā)送Qcow文件的文件名和內(nèi)容到目的節(jié)點(diǎn)。C4.當(dāng)S_thread接收到遷移Block監(jiān)控記錄的命令時(shí),掃描每一條監(jiān)控記錄,從每個(gè)(扇區(qū)號(hào),扇區(qū)個(gè)數(shù))位置讀取文件內(nèi)容,將扇區(qū)號(hào)、扇區(qū)個(gè)數(shù)和文件內(nèi)容發(fā)送到目的節(jié)點(diǎn),發(fā)送完成后將監(jiān)控記錄清零。C5.S_thread和I/O驅(qū)動(dòng)進(jìn)程共享Block監(jiān)控記錄,故在修改位置監(jiān)控記錄加線(xiàn)程鎖,使兩者互斥修改。所述“源節(jié)點(diǎn)”是虛擬機(jī)在遷移之前依附的業(yè)務(wù)節(jié)點(diǎn)。所述“目的節(jié)點(diǎn)”是虛擬機(jī)遷移后依附的業(yè)務(wù)節(jié)點(diǎn),本發(fā)明中源節(jié)點(diǎn)和目的節(jié)點(diǎn)分別屬于不同的虛擬化數(shù)據(jù)中心。所述“虛擬機(jī)1/0驅(qū)動(dòng)”是將虛擬機(jī)1/0請(qǐng)求轉(zhuǎn)化為節(jié)點(diǎn)之上1/0請(qǐng)求的機(jī)制。所述“Xenstore”是啟動(dòng)虛擬機(jī)后在所述源節(jié)點(diǎn)之中保存虛擬機(jī)的所有信息的機(jī)制。所述“扇區(qū)號(hào)”是指虛擬機(jī)寫(xiě)文件時(shí)存儲(chǔ)在Qcow文件中的邏輯地址。進(jìn)一步的,所述步驟4包括:Dl.在遷移進(jìn)程初始化變量后向S_thread發(fā)送Qcow文件的預(yù)遷移命令和被遷移虛擬機(jī)的虛擬機(jī)號(hào),等待由S_thread返回的消息,Qcow文件預(yù)遷移成功返回后進(jìn)入內(nèi)存迭代遷移。D2.在每輪內(nèi)存迭代結(jié)束后向S_thread發(fā)送Block監(jiān)控記錄的遷移命令,之后進(jìn)入下一輪迭代。進(jìn)一步的,所述步驟5包括:El.改變?cè)刑摂M機(jī)恢復(fù)進(jìn)程的執(zhí)行順序,將1/0狀態(tài)的恢復(fù)移動(dòng)到內(nèi)存和CPU狀態(tài)恢復(fù)之后。E2.當(dāng)R_thread接受到Qcow文件路徑和文件名后,在本地文件系統(tǒng)的對(duì)應(yīng)路徑下創(chuàng)建該文件,并打開(kāi)此空文件,等待接受文件內(nèi)容。E3.將R_thread接受到的Qcow文件內(nèi)容后按順序?qū)懭朐撐募?。E4.當(dāng)Qcow文件接收完成后,關(guān)閉該文件。用虛擬機(jī)I/O的驅(qū)動(dòng)打開(kāi)文件的方式打開(kāi)Qcow文件。E5.當(dāng)R_thread接受到的文件為Block時(shí),先將接受到的數(shù)據(jù)格式化為三個(gè)部分,分別為:secnum, nb_sector和數(shù)據(jù)。E6.由R_thread將E5步驟中的數(shù)據(jù)寫(xiě)入Qcow文件的以secnum為起始地址的nb_sector個(gè)邏輯扇區(qū)中。下面結(jié)合附圖2A和2B介紹本發(fā)明的一個(gè)實(shí)施例,該實(shí)施例以0penVPN_2.1.3作為建立虛擬化數(shù)據(jù)中心之間連接的工具,Gluster-3.2.0作為每個(gè)虛擬化數(shù)據(jù)中心存儲(chǔ)虛擬機(jī)鏡像的文件系統(tǒng),Xen-4.1.0虛擬化平臺(tái)為例,業(yè)務(wù)節(jié)點(diǎn)上的DomO和存儲(chǔ)節(jié)點(diǎn)上使用linux-2.6.18.8內(nèi)核Linux操作系統(tǒng),展開(kāi)實(shí)現(xiàn)一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法的進(jìn)一步說(shuō)明。圖2A是本發(fā)明的一實(shí)施例的跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法流程圖,圖2B是本發(fā)明的一實(shí)施例的跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移實(shí)施過(guò)程中的虛擬化數(shù)據(jù)中心組織結(jié)構(gòu)以及虛擬化數(shù)據(jù)中心之間的網(wǎng)路連接圖。如圖2A和圖2B所示,該實(shí)施例具體實(shí)現(xiàn)步驟如下:A.部署以圖2B為例的兩個(gè)虛擬化數(shù)據(jù)中心,每個(gè)虛擬化數(shù)據(jù)中心包括多個(gè)業(yè)務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn),并屬于同一邏輯局域網(wǎng),虛擬機(jī)鏡像文件模板template和Qcow存儲(chǔ)于存儲(chǔ)節(jié)點(diǎn)上的文件系統(tǒng)中。具體的一個(gè)實(shí)施步驟為:Al.圖2B中兩個(gè)虛擬化數(shù)據(jù)中心Datacenterl和Datacenter2處于Internet中。Datacenterl中的所有節(jié)點(diǎn)屬于Vlanl,每個(gè)節(jié)點(diǎn)的IP地址為11.11.11.X0 Datacenter2中的所有節(jié)點(diǎn)屬于Vlan2,每個(gè)節(jié)點(diǎn)的IP地址為12.12.12.X。每個(gè)Vlan中的節(jié)點(diǎn)通過(guò)交換機(jī)(Switch)相互連接。步驟Al中所述“Vlan”為邏輯局域網(wǎng)。A2.所有存儲(chǔ)節(jié)點(diǎn)(Storage server)運(yùn)行Glusterfs Server,并將所有存儲(chǔ)節(jié)點(diǎn)通過(guò)Glusterfs的綁定功能形成統(tǒng)一的掛載接口,在其中創(chuàng)建兩個(gè)Volume分別為Vol-template 和 Vol-vm。步驟A2中所述“Glusterfs”為一種分布式文件系統(tǒng)。A3.所有業(yè)務(wù)節(jié)點(diǎn)(APPserver)運(yùn)行基于xen-4.1.0的虛擬機(jī)管理器(VMM)虛擬化計(jì)算環(huán)境和Glusterfs Client,其中DomO為linux-2.6.18.8內(nèi)核的操作系統(tǒng),VM為虛擬機(jī),PM為節(jié)點(diǎn)。并且掛載存儲(chǔ)節(jié)點(diǎn)上的Vol-template到本地路徑/vm/template,掛載Vol-vm到本地路徑/home/vm下。A4.Vol-template中存儲(chǔ)模板鏡像template, Vol-vm中存儲(chǔ)用戶(hù)私有數(shù)據(jù)文件Qcow0B.兩個(gè)Datacenter之間通過(guò)VPN建立虛擬專(zhuān)用的網(wǎng)絡(luò)連接通道,使得連接后Vlanl和Vlan2中的所有節(jié)點(diǎn)可以通過(guò)原有IP地址通信。具體的一個(gè)實(shí)施步驟為:
B1.在Datacenterl和Datacenter2之外的廣域網(wǎng)中選擇一個(gè)節(jié)點(diǎn)作為VPNserver, IP地址為202.201.46.139。在其上生成自己建立服務(wù)和每個(gè)VPNclient請(qǐng)求連接時(shí)需要的認(rèn)證文件,包括:.ca.Key,.crt,.crs,和.pem等文件。本步驟中所述的認(rèn)證文件,均由VPNserver生成,其.ca文件只有一個(gè),VPNserver和VPNclient使用同一文件,.pem文件只為VPNserver使用,其余認(rèn)證文件,每個(gè)節(jié)點(diǎn)之上都使用一套,且互不相同。B2.在VPNserver中的配置文件中設(shè)置協(xié)議為T(mén)CP,tapO模式,tapO設(shè)備使用的虛擬IP地址為10.99.0.0,以及認(rèn)證文件路徑。啟動(dòng)服務(wù)。步驟B2中所述“tapO”是指VPN創(chuàng)建的虛擬網(wǎng)絡(luò)適配器。B3.Datacenterl中選擇一個(gè)節(jié)點(diǎn)作為VPNclient,該節(jié)點(diǎn)擁有兩個(gè)網(wǎng)絡(luò)適配器,其中ethO上IP為11.11.11.43地址屬于VLanl,ethl上為廣域網(wǎng)上的IP地址,將VPNserver生成的認(rèn)證文件復(fù)制到該節(jié)點(diǎn),同樣在配置文件中設(shè)置VPNserver的IP地址為202.201.46.139,TCP協(xié)議,tapO設(shè)備,以及認(rèn)證文件路徑,啟動(dòng)服務(wù)。步驟B3中所述“eth”是網(wǎng)絡(luò)適配器名稱(chēng)。B4.在Vlanl中的VPNclient上啟動(dòng)虛擬網(wǎng)橋vpnbrO,將其與tapO設(shè)備對(duì)接。并在 ethO 上設(shè)置到 Datacenter2 的 net。B5.虛擬化數(shù)據(jù)中心中除VPNclient之外的業(yè)務(wù)節(jié)點(diǎn)上的設(shè)置默認(rèn)路由為
11.11.11.43。本步驟中B3-B5以Datacenterl為例,Datacenter2同理實(shí)施。連接后兩個(gè)虛擬化數(shù)據(jù)中心的節(jié)點(diǎn)可以相互通信。C.把Datacenterl中的一個(gè)業(yè)務(wù)節(jié)點(diǎn)作為源節(jié)點(diǎn),在Qemu-dm進(jìn)程中記錄虛擬機(jī)1/0的寫(xiě)入磁盤(pán)的Block,并為Qemu-dm進(jìn)程創(chuàng)建遷移線(xiàn)程S_thread, S_thread負(fù)責(zé)接收xc_domain_save ()發(fā)送的控制命令、Qcow文件的預(yù)遷移和Blcok監(jiān)控記錄的遷移。具體的一個(gè)實(shí)施步驟為:Cl.在源節(jié)點(diǎn)上被遷移虛擬機(jī)的Qemu-dm進(jìn)程中,寫(xiě)入的Block是由block, c中的bdrv_aio_write O函數(shù)執(zhí)行,在該函數(shù)中通過(guò)數(shù)據(jù)結(jié)構(gòu)structWrec wimg[]數(shù)組記錄虛擬機(jī)的每一個(gè)1/0寫(xiě)入Block,對(duì)應(yīng)的扇區(qū)號(hào)(secnum)和扇區(qū)個(gè)數(shù)(nb_sector)存入Wrec的字段中,不記錄每次寫(xiě)入Block的具體內(nèi)容,數(shù)組中每個(gè)元素記錄一次1/0寫(xiě)操作。步驟Cl中所述“Qemu-dm”是Xen_4.1.0全虛擬化虛擬機(jī)使用的1/0驅(qū)動(dòng)機(jī)制。C2.為 Qemu-dm 進(jìn)程創(chuàng)建遷移線(xiàn)程(S_thread),在 S_thread 中建立 UNIXSocketServer (UNSS), UNSS循環(huán)等待接收來(lái)自xc_domain_save O的兩種控制命令,其一為Qcow文件預(yù)遷移命令,命令中包含虛擬機(jī)號(hào)(dom),其二為遷移Block監(jiān)控記錄的命令“read”。C3.當(dāng)UNSS接收到Qcow文件預(yù)遷移命令時(shí),通過(guò)關(guān)鍵字dom在Xenstore中檢索被遷移虛擬機(jī)的全部配置信息,在配置信息中查找“params”之后的信息為鏡像文件路徑和文件名,如/home/vm/dom500.1mg,解析完成后使用fopen()打開(kāi)文件。C4.將結(jié)構(gòu)體struct Wrec wimg[]全部清零,重新開(kāi)始監(jiān)控。C5.然后通過(guò)Socket Client發(fā)送Qcow文件的文件名和內(nèi)容到目的節(jié)點(diǎn)。發(fā)送消息的格式是一個(gè)結(jié)構(gòu)體struct fomt,該結(jié)構(gòu)體包含四個(gè)字段,包括:int type為消息類(lèi)型,signed long long sectaddr 為扇區(qū)號(hào),int sectnum 為扇區(qū)個(gè)數(shù),char buf [1024]為存儲(chǔ)數(shù)據(jù)的緩沖區(qū)。發(fā)送文件路徑時(shí),type=l,將路徑存入buf中,其他兩個(gè)字段為零。當(dāng)發(fā)送文件內(nèi)容時(shí),type=2,按順序每次讀取1024個(gè)字節(jié)大小的文件緩存在buf中。C4.當(dāng)UNSS接收到遷移Block監(jiān)控記錄的命令“read”時(shí),在數(shù)據(jù)結(jié)構(gòu)structWrec數(shù)組中從頭開(kāi)始掃描每一條監(jiān)控記錄,對(duì)每條記錄的secnum和nb_sector使用bdrv_aio_read()函數(shù)讀取鏡像中對(duì)應(yīng)的信息,緩存于buffer中。nb_sector的大小不同,每一個(gè)扇區(qū)大小為512字節(jié),所以在發(fā)送時(shí)將buffer拆分為小于等于1024字節(jié)的片段。使用Socket Client發(fā)送Qcow文件信息到目的節(jié)點(diǎn),信息格式為:type=3, sectaddr, sectnum為拆分后的扇區(qū)地址和扇區(qū)個(gè)數(shù),buf中存儲(chǔ)拆分后對(duì)應(yīng)的數(shù)據(jù)。發(fā)送完成后將Wrec全部清零,重新開(kāi)始監(jiān)控。C5.UNSS 和 Qemu-dm共享 struct Wrec 數(shù)組,故在 block, h 中定義 pthread_mutex_t mut線(xiàn)程鎖變量,寫(xiě)入和清零Block監(jiān)控記錄時(shí)加線(xiàn)程鎖,在修改struct Wrec時(shí)使用pthread_mutex_lock (&mut)獲得鎖,在操作結(jié)束后使用 pthread_mutex_unlock (&mut)釋放鎖,使兩者互斥修改監(jiān)控記錄。D.Xen原有虛擬機(jī)遷移機(jī)制由xc_domain_save O在源節(jié)點(diǎn)迭代拷貝內(nèi)存信息和CPU 狀態(tài),在 xc_doamin_save O 中建立 UNIX socket client (UNSC),UNSC 向 UNSS 發(fā)送命令,控制Qcow文件的預(yù)遷移和Block監(jiān)控記錄的遷移。Dl.在 xc_domain_save O 中使用文件/tmp/unix.domid 建立 UNSC,并與 UNSS 綁定。D2.在內(nèi)存迭代遷移模塊(for (;;))之前UNSC向UNSS發(fā)送Qcow文件預(yù)遷移命令和dom,其中dom是虛擬機(jī)號(hào)。Qcow文件內(nèi)容發(fā)送完成后,由UNSS向UNSC返回消息,當(dāng)返回發(fā)送Qcow文件名和內(nèi)容到目的節(jié)點(diǎn)的成功消息后進(jìn)入內(nèi)存迭代遷移的過(guò)程。D3.在每輪內(nèi)存迭代結(jié)束后UNSC向UNSS發(fā)送遷移Block監(jiān)控記錄的命令,之后進(jìn)入下一輪迭代。E.在Datacenter2中,目的節(jié)點(diǎn)xc_domain_restore O負(fù)責(zé)恢復(fù)虛擬機(jī)的運(yùn)行,在其中創(chuàng)建恢復(fù)線(xiàn)程(R_thread),在R_thread中建立Socket Server接收源節(jié)點(diǎn)發(fā)送Qcow文件的預(yù)遷移和Block監(jiān)控記錄的遷移,并寫(xiě)入本地存儲(chǔ)服節(jié)點(diǎn)的文件系統(tǒng)中。具體的一個(gè)實(shí)施步驟為:El.將 xc_domain_restore O 中 orig_io_fd_flags=fcntl O 函數(shù)移動(dòng)到“out: ”前一行。在xc_domain_restore ()函數(shù)開(kāi)始創(chuàng)建線(xiàn)程R_thread,并在R_thread中建立Socket Server。E2.R_thread將接受到的數(shù)據(jù)格式化為C5步驟所述的struct fomt結(jié)構(gòu),并通過(guò)type字段的數(shù)值判斷數(shù)據(jù)應(yīng)寫(xiě)入的位置。E3.當(dāng) Socket Server 接受到 Qcow 文件路徑和文件名/hom/vm/dom500.1mg 后,在本地存儲(chǔ)節(jié)點(diǎn)的文件系統(tǒng)的對(duì)應(yīng)路徑下創(chuàng)建該文件,并打開(kāi)dom500.1mg文件,等待接受文件內(nèi)容。E4.當(dāng)Socket Server接收到的Qcow文件內(nèi)容后,R_thread按順序?qū)懭雂om500.1mg 中。E5.當(dāng)dom500.1mg的內(nèi)容接收完成后,關(guān)閉該文件。用Qemu-dm中的驅(qū)動(dòng)打開(kāi)文件。
E6.當(dāng)Socket Server接收到的文件為Block監(jiān)控記錄時(shí),先將其的數(shù)據(jù)格式化為三個(gè)部分,分別為:secnum, nb_sector和數(shù)據(jù)。E7.由R_thread寫(xiě)入文件dom500.1mg中以secnum為起始地址的nb_sector個(gè)邏輯扇區(qū)中。當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法,其特征在于,包括: 步驟1,在廣域網(wǎng)上部署多個(gè)虛擬化數(shù)據(jù)中心,其中每個(gè)虛擬化數(shù)據(jù)中心的業(yè)務(wù)節(jié)點(diǎn)運(yùn)行虛擬機(jī),每個(gè)虛擬化數(shù)據(jù)中心的存儲(chǔ)節(jié)點(diǎn)保存虛擬機(jī)鏡像; 步驟2,通過(guò)兩層橋接模式的虛擬專(zhuān)用網(wǎng)絡(luò)連接多個(gè)虛擬化數(shù)據(jù)中心; 步驟3,在源節(jié)點(diǎn)上的虛擬機(jī)I/O驅(qū)動(dòng)進(jìn)程中監(jiān)控被遷移虛擬機(jī)每次寫(xiě)入磁盤(pán)的臟塊,并為所述虛擬機(jī)I/O驅(qū)動(dòng)進(jìn)程創(chuàng)建一個(gè)遷移線(xiàn)程,所述遷移線(xiàn)程進(jìn)行用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移和臟塊監(jiān)控記錄的遷移,其中所述臟塊是指虛擬機(jī)每次I/O操作的邏輯上連續(xù)的扇區(qū); 步驟4,源節(jié)點(diǎn)上虛擬機(jī)的遷移進(jìn)程控制所述預(yù)遷移和臟塊監(jiān)控記錄的遷移; 步驟5,改變所述虛擬機(jī)在目的節(jié)點(diǎn)恢復(fù)進(jìn)程的執(zhí)行順序,為所述恢復(fù)進(jìn)程創(chuàng)建恢復(fù)線(xiàn)程,所述恢復(fù)線(xiàn)程接收所述預(yù)遷移和所述遷移的信息,并將所述信息寫(xiě)入所述存儲(chǔ)節(jié)點(diǎn)中。
2.按權(quán)利要求1所述的虛擬機(jī)在線(xiàn)遷移方法,其特征在于,所述步驟I包括: 步驟11,將所述每個(gè)虛擬化數(shù)據(jù)中心的所有硬件資源虛擬化,以虛擬機(jī)的形式向用戶(hù)提供服務(wù),每個(gè)虛擬機(jī)依附所述存儲(chǔ)節(jié)點(diǎn)中的一個(gè)虛擬機(jī)鏡像文件; 步驟12,將所述虛擬機(jī)鏡像文件分為template和用戶(hù)私有數(shù)據(jù)文件,所述template中包括業(yè)務(wù)運(yùn)行的操作系統(tǒng)和應(yīng)用系統(tǒng),虛擬機(jī)運(yùn)行時(shí)不能改變此文件的內(nèi)容; 步驟13,將所述template和所述用戶(hù)私有數(shù)據(jù)文件存儲(chǔ)于所述存儲(chǔ)節(jié)點(diǎn)中。
3.按權(quán)利要求1所述 的虛擬機(jī)在線(xiàn)遷移方法,其特征在于,所述步驟2包括: 步驟21,在虛擬化數(shù)據(jù)中心之外的廣域網(wǎng)中隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為VPNserver,每個(gè)虛擬化數(shù)據(jù)中心選擇一個(gè)節(jié)點(diǎn)作為VPNclient,所述VPNserver生成其建立服務(wù)和每個(gè)VPNclient請(qǐng)求連接時(shí)的認(rèn)證文件,其中所述VPNserver為VPN服務(wù)器,VPNclient為VPN客戶(hù); 步驟22,在所述VPNserver的配置文件中設(shè)置參數(shù),包括:TCP協(xié)議,tap設(shè)備,IP地址,以及認(rèn)證文件路徑,之后啟動(dòng)VPNserver服務(wù); 步驟23,所述每個(gè)虛擬化數(shù)據(jù)中心選擇一個(gè)節(jié)點(diǎn)作為VPNclient后將所述認(rèn)證文件復(fù)制到該節(jié)點(diǎn),并在VPNclient的配置文件中設(shè)置參數(shù),包括=VPNserver的IP地址,TCP協(xié)議,tap設(shè)備,以及認(rèn)證文件路徑,之后啟動(dòng)VPNclient服務(wù),所述VPNclient服務(wù)與VPNserver服務(wù)連接; 步驟24,在所述每個(gè)VPNclient上啟動(dòng)虛擬網(wǎng)橋,將所述虛擬網(wǎng)橋與所述tap設(shè)備對(duì)接。
4.按權(quán)利要求1所述的虛擬機(jī)在線(xiàn)遷移方法,其特征在于,所述步驟3包括: 步驟31,記錄所述虛擬機(jī)每次寫(xiě)入磁盤(pán)的臟塊對(duì)應(yīng)的扇區(qū)號(hào)和扇區(qū)個(gè)數(shù); 步驟32,當(dāng)所述遷移線(xiàn)程接收到所述用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移命令時(shí),通過(guò)所述預(yù)遷移命令中攜帶的虛擬機(jī)號(hào),在Xenstore中解析所述用戶(hù)私有數(shù)據(jù)文件的路徑和文件名,并將其發(fā)送到目的節(jié)點(diǎn),然后將臟塊監(jiān)控記錄清零,其中所述Xenstore是啟動(dòng)虛擬機(jī)后在所述源節(jié)點(diǎn)之中保存虛擬機(jī)的所有信息; 步驟33,當(dāng)所述遷移線(xiàn)程接收到所述臟塊監(jiān)控記錄的遷移命令時(shí),掃描所述臟塊監(jiān)控記錄,從扇區(qū)號(hào)和扇區(qū)個(gè)數(shù)中讀取文件內(nèi)容,并將所述扇區(qū)號(hào)和扇區(qū)個(gè)數(shù)以及所述文件內(nèi)容發(fā)送到目的節(jié)點(diǎn),然后將監(jiān)控記錄清零。
5.按權(quán)利要求1所述的虛擬機(jī)在線(xiàn)遷移方法,其特征在于,所述步驟4包括: 步驟41,源節(jié)點(diǎn)上所述虛擬機(jī)的遷移進(jìn)程向所述遷移線(xiàn)程發(fā)送預(yù)遷移命令和被遷移虛擬機(jī)的虛擬機(jī)號(hào),進(jìn)行所述用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移,所述用戶(hù)私有數(shù)據(jù)文件預(yù)遷移成功返回后進(jìn)入迭代遷移; 步驟42,在每輪迭代遷移結(jié)束后向所述遷移線(xiàn)程發(fā)送臟塊監(jiān)控記錄的遷移命令,進(jìn)行所述臟塊監(jiān)控記錄的遷移。
6.按權(quán)利要求1所述的虛擬機(jī)在線(xiàn)遷移方法,其特征在于,所述步驟5包括: 步驟51,先恢復(fù)所屬虛擬機(jī)的內(nèi)存和CPU,然后再恢復(fù)所屬虛擬機(jī)的I/O ; 步驟52,當(dāng)所述恢復(fù)線(xiàn)程接收到的信息為用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移信息時(shí),在與所述用戶(hù)私有數(shù)據(jù)文件對(duì)應(yīng)的路徑下創(chuàng)建該文件,并打開(kāi)此文件,將所述信息內(nèi)容按順序?qū)懭朐撐募校瑢?xiě)入完成后,關(guān)閉該文件; 當(dāng)所述恢復(fù)線(xiàn)程接收到 的信息為臟塊監(jiān)控記錄的遷移信息時(shí),將所述信息的數(shù)據(jù)格式化后寫(xiě)入所述用戶(hù)私有數(shù)據(jù)文件的邏輯扇區(qū)中。
全文摘要
本發(fā)明提供一種跨虛擬化數(shù)據(jù)中心的虛擬機(jī)在線(xiàn)遷移方法,包括步驟1,在廣域網(wǎng)上部署多個(gè)虛擬化數(shù)據(jù)中心,每個(gè)虛擬機(jī)鏡像分為模板和用戶(hù)私有數(shù)據(jù)文件;步驟2,通過(guò)兩層橋接模式的虛擬專(zhuān)用網(wǎng)絡(luò)連接虛擬化數(shù)據(jù)中心;步驟3,源節(jié)點(diǎn)上的虛擬機(jī)I/O驅(qū)動(dòng)進(jìn)程中監(jiān)控每次寫(xiě)入磁盤(pán)的臟塊,并為所述驅(qū)動(dòng)進(jìn)程創(chuàng)建遷移線(xiàn)程,所述遷移線(xiàn)程進(jìn)行用戶(hù)私有數(shù)據(jù)文件的預(yù)遷移和臟塊監(jiān)控記錄的遷移;步驟4,源節(jié)點(diǎn)上所述虛擬機(jī)的遷移進(jìn)程控制所述-預(yù)遷移和監(jiān)控記錄的遷移;步驟5,改變所述虛擬機(jī)在目的節(jié)點(diǎn)恢復(fù)進(jìn)程的執(zhí)行順序,為所述恢復(fù)進(jìn)程創(chuàng)建恢復(fù)線(xiàn)程,所述恢復(fù)線(xiàn)程接收所述預(yù)遷移和所述監(jiān)控記錄遷移的信息,并將所述信息寫(xiě)入存儲(chǔ)節(jié)點(diǎn)中。本發(fā)明能在多個(gè)虛擬化數(shù)據(jù)中心之間實(shí)現(xiàn)虛擬機(jī)和資源的動(dòng)態(tài)映射。
文檔編號(hào)H04L29/08GK103095834SQ20131001620
公開(kāi)日2013年5月8日 申請(qǐng)日期2013年1月16日 優(yōu)先權(quán)日2013年1月16日
發(fā)明者楊鵬斐, 楊坤, 宋 瑩, 趙霞, 孫毓忠 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1