本發(fā)明涉及計算機(jī)領(lǐng)域內(nèi)云計算環(huán)境下虛擬機(jī)的跨數(shù)據(jù)中心遷移技術(shù),具體涉及一種云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法。
背景技術(shù):
隨著企業(yè)信息化程度的提高,企業(yè)級數(shù)據(jù)中心的建設(shè)已經(jīng)成為當(dāng)前行業(yè)信息化的新熱點(diǎn)。與傳統(tǒng)數(shù)據(jù)中心相比,數(shù)據(jù)中心內(nèi)服務(wù)器、存儲、網(wǎng)絡(luò)的不斷增長和集中,為其管理運(yùn)維帶來了更多的挑戰(zhàn)性問題。
目前隨著云計算技術(shù)的日益成熟,云計算技術(shù)已經(jīng)在軍事和經(jīng)濟(jì)領(lǐng)域得到了廣泛的應(yīng)用,也被廣泛的應(yīng)用在數(shù)據(jù)中心的建設(shè)中。通過實(shí)現(xiàn)數(shù)據(jù)中心基礎(chǔ)設(shè)施的資源虛擬化,將應(yīng)用、數(shù)據(jù)與物理資源在邏輯管理上相互分離,IT部門可以更加有效地、應(yīng)變更加迅速地和更加靈活地提供和維護(hù)數(shù)據(jù)中心的服務(wù),業(yè)務(wù)部門也可以更加專注于應(yīng)用和數(shù)據(jù)的服務(wù)??偟膩碚f通過數(shù)據(jù)中心虛擬化可以IT部門實(shí)現(xiàn)下列優(yōu)勢奠定基礎(chǔ):①降低總體擁有成本(TCO):數(shù)據(jù)中心虛擬化可以幫助IT部門提高設(shè)備利用率和能源利用的有效性,提升運(yùn)營效率,以及降低投資開支。②提高永續(xù)性:數(shù)據(jù)中心虛擬化所提供的抽象能力有助于在不中斷正常業(yè)務(wù)的情況下進(jìn)行預(yù)先安排的停機(jī)維護(hù),以及更加迅速地從意外斷網(wǎng)事故中恢復(fù)。③提高靈活性:因為IT部門不會受到服務(wù)和物理硬件之間預(yù)定關(guān)系的限制,所以一個協(xié)調(diào)一致的虛擬化基礎(chǔ)設(shè)施可以迅速地滿足新的應(yīng)用和服務(wù)需求。同時由于災(zāi)備、辦公場所分散的原因,企業(yè)一般都會建設(shè)兩個或多個數(shù)據(jù)中心,不同的數(shù)據(jù)中心通過互聯(lián)網(wǎng)加密隧道進(jìn)行數(shù)據(jù)傳輸。
為了方便適用數(shù)據(jù)中心的虛擬化資源,數(shù)據(jù)中心內(nèi)部采用桌面虛擬化技術(shù)來保障用戶對虛擬資源的可用性??傮w來說桌面虛擬化具有如下的優(yōu)勢:①更廣泛與簡化的終端設(shè)備支持。作為云計算的一種方式,由于所有的計算都在服務(wù)器上進(jìn)行,不再要求高端的終端設(shè)備,終端設(shè)備的可選擇性更加廣泛,滿足不同的應(yīng)用需求。②終端設(shè)備采購、維護(hù)成本大大降低。③集中管理、統(tǒng)一配置,使用安全。管理員可以在數(shù)據(jù)中心對所有桌面和應(yīng)用進(jìn)行統(tǒng)一配置和管理,如系統(tǒng)升級、應(yīng)用安裝等,避免了由于終端分布造成的管理困難和成本高昂。但是其也帶來一定的不足,由于虛擬桌面是通過后臺的虛擬機(jī)提供計算能力,再通過網(wǎng)絡(luò)傳輸數(shù)據(jù)到前端展現(xiàn),所以在性能上與傳統(tǒng)的PC機(jī)相比,具有明顯的差距,特別是網(wǎng)絡(luò)性能較差時。
為了解決虛擬桌面在網(wǎng)絡(luò)性能不佳時給應(yīng)用帶來的限制,在單數(shù)據(jù)中心下,通常采用位置感知的虛擬機(jī)放置策略,使得用戶的虛擬機(jī)和虛擬桌面終端之間具有一定的網(wǎng)絡(luò)帶寬保障。但是在多數(shù)據(jù)中心運(yùn)行環(huán)境中,如果虛擬機(jī)和虛擬桌面所處不同數(shù)據(jù)中心,則虛擬桌面在使用過程中,需要借助互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)傳輸,極大的影響了虛擬桌面的用戶體驗。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題:針對現(xiàn)有技術(shù)的上述問題,提供一種不依賴于共享存儲的支持、虛擬桌面后端數(shù)據(jù)的讀寫不需要通過建立在互聯(lián)網(wǎng)上的數(shù)據(jù)通道、容災(zāi)備份的效率高、占用存儲空間小、備份速率快的云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法。
為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:
一種云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法,步驟包括:
1)建立操作系統(tǒng)的鏡像庫,所述鏡像庫中存儲有創(chuàng)建虛擬機(jī)所需的操作系統(tǒng)鏡像;當(dāng)用戶基于鏡像庫中的操作系統(tǒng)鏡像創(chuàng)建虛擬機(jī)實(shí)例時,將虛擬機(jī)實(shí)例的操作系統(tǒng)鏡像在本地數(shù)據(jù)中心的共享存儲上采用共用操作系統(tǒng)鏡像加獨(dú)立的增量文件的形式進(jìn)行存儲;在任意一個源數(shù)據(jù)中心收到操作人員發(fā)送的將目標(biāo)虛擬機(jī)從源數(shù)據(jù)中心遷移至目標(biāo)數(shù)據(jù)中心的跨數(shù)據(jù)中心虛擬機(jī)遷移指令后,跳轉(zhuǎn)執(zhí)行步驟2);
2)源數(shù)據(jù)中心將目標(biāo)虛擬機(jī)的信息向本地代理進(jìn)行注冊,每一個數(shù)據(jù)中心的本地代理維護(hù)有跨數(shù)據(jù)中心待遷移虛擬機(jī)的信息記錄,所述信息記錄包括下述字段信息;
<image_id,user_id,instance_id,slocation,dlocation,data,flag>
其中,image_id為目標(biāo)虛擬機(jī)的鏡像唯一標(biāo)識符,user_id為系統(tǒng)中用戶的唯一標(biāo)識符,instance_id為虛擬機(jī)實(shí)例的唯一標(biāo)識符,slocation為源數(shù)據(jù)中心的標(biāo)識符,dlocation為目標(biāo)數(shù)據(jù)中心的標(biāo)識符,data表示目標(biāo)虛擬機(jī)的增量文件的壓縮數(shù)據(jù),flag為數(shù)據(jù)同步狀態(tài),flag為0表示同步未完成,flag為1表示數(shù)據(jù)同步完成;
3)源數(shù)據(jù)中心對本地代理注冊的信息記錄進(jìn)行周期性掃描,如果某條信息記錄的dlocation字段與源數(shù)據(jù)中心的標(biāo)識符不一致且flag值為0,則啟動數(shù)據(jù)遠(yuǎn)程同步機(jī)制,將該條信息記錄同步至dlocation字段對應(yīng)的目標(biāo)數(shù)據(jù)中心的本地代理;同步完成后,源數(shù)據(jù)中心、目標(biāo)數(shù)據(jù)中心分別將本地代理存儲的該信息記錄的flag值設(shè)置為1;
4)目標(biāo)數(shù)據(jù)中心創(chuàng)建新虛擬機(jī)實(shí)例,在目標(biāo)數(shù)據(jù)中心的共享存儲上生成共用操作系統(tǒng)鏡像加獨(dú)立的增量文件,將本地代理存儲的信息記錄的data字段進(jìn)行解壓縮得到目標(biāo)虛擬機(jī)的增量文件,并將目標(biāo)虛擬機(jī)的增量文件替換新虛擬機(jī)實(shí)例的增量文件,然后重新啟動新虛擬機(jī)實(shí)例,完成目標(biāo)虛擬機(jī)在目標(biāo)數(shù)據(jù)中心的恢復(fù);
5)目標(biāo)數(shù)據(jù)中心的本地代理刪除所述信息記錄,并通知被刪除信息記錄中slocation字段對應(yīng)的源數(shù)據(jù)中心的本地代理刪除對應(yīng)的信息記錄。
優(yōu)選地,步驟1)中所述鏡像庫中每個操作系統(tǒng)鏡像通過<image_id,iamge_name,image_des,image_url>字段進(jìn)行描述,其中image_id是操作系統(tǒng)鏡像的唯一標(biāo)示,image_name為操作系統(tǒng)鏡像的名稱,image_des為操作系統(tǒng)鏡像的描述信息,image_url為操作系統(tǒng)鏡像的存儲位置。
優(yōu)選地,步驟1)中將虛擬機(jī)實(shí)例的操作系統(tǒng)鏡像在本地數(shù)據(jù)中心的共享存儲上采用共用操作系統(tǒng)鏡像加獨(dú)立的增量文件的形式進(jìn)行存儲時,所有操作系統(tǒng)鏡像的存儲組織形式如下式所示;
上式中,base表示操作系統(tǒng)鏡像的共同部分內(nèi)容,inst11和inst12表示共用操作系統(tǒng)鏡像的兩個虛擬機(jī)實(shí)例的增量文件,inst21表示使用操作系統(tǒng)鏡像的虛擬機(jī)實(shí)例的增量文件。
本發(fā)明云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法將虛擬機(jī)實(shí)例的操作系統(tǒng)鏡像在本地數(shù)據(jù)中心的共享存儲上采用共用操作系統(tǒng)鏡像加獨(dú)立的增量文件的形式進(jìn)行存儲,采用包含增量文件壓縮數(shù)據(jù)的信息記錄進(jìn)行同步,極大地提高了虛擬機(jī)跨數(shù)據(jù)中心遷移的代價,該方法具有以下幾個優(yōu)勢:
1、本發(fā)明不依賴于共享存儲的支持。目前現(xiàn)有的虛擬遷移主要集中在數(shù)據(jù)中心內(nèi)部的在線遷移,在共享存儲的支持下,只需要遷移內(nèi)存數(shù)據(jù)即可完成虛擬機(jī)在不同物理服務(wù)器之間的遷移。在多數(shù)據(jù)中心、跨數(shù)據(jù)中心的虛擬機(jī)遷移中,目前還是借鑒在線遷移的思路,依賴于共享存儲的支持。
2、虛擬桌面后端數(shù)據(jù)的讀寫不需要通過建立在互聯(lián)網(wǎng)上的數(shù)據(jù)通道、能夠提高桌面虛擬化的用戶體驗。由于網(wǎng)絡(luò)性能的關(guān)系,用戶可以借助虛擬桌面等產(chǎn)品使用本數(shù)據(jù)中心的虛擬資源,但是一旦由于業(yè)務(wù)等需要去其它地方辦公,即使采用現(xiàn)有的虛擬機(jī)遷移方法,后端數(shù)據(jù)的讀寫仍然需要通過建立在互聯(lián)網(wǎng)上的數(shù)據(jù)通道,影響用戶的體驗。
3、本發(fā)明能夠提高容災(zāi)備份的效率?,F(xiàn)有容災(zāi)備份機(jī)制即使采用增量式備份在對虛擬機(jī)進(jìn)行初次備份的時,仍然需要做一次全量備份,不僅極大的浪費(fèi)的存儲空間,而且也降低了備份速率。本發(fā)明采用共用操作系統(tǒng)鏡像、獨(dú)立的增量文件相互分離的形式,占用存儲空間小,而且備份也只需要對增量文件進(jìn)行備份,從而能夠提高容災(zāi)備份的效率。
4、本發(fā)明結(jié)合現(xiàn)有的在線遷移技術(shù)為虛擬機(jī)跨數(shù)據(jù)中心在線遷移提供一種可能性。在本發(fā)明中提供了虛擬機(jī)跨數(shù)據(jù)中心的遷移,此遷移的局限性是虛擬機(jī)在遷移過程中需要停機(jī)。針對此局限性后續(xù)可以通過借鑒在線遷移過程中內(nèi)存同步技術(shù),實(shí)現(xiàn)虛擬機(jī)跨數(shù)據(jù)中心在線遷移。
附圖說明
圖1為本發(fā)明實(shí)施例方法的基本流程示意圖。
具體實(shí)施方式
下文將以麒麟云計算系統(tǒng)為例,對本發(fā)明云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法進(jìn)行進(jìn)一步的詳細(xì)說明。需要指出的是,本發(fā)明并不局限于任何具體的硬件平臺和操作系統(tǒng),方法可以方便地移植到其它環(huán)境中,具有較廣泛的通用性。
如圖1所示,本實(shí)施例云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法的步驟包括:
1)設(shè)置虛擬機(jī)鏡像庫和虛擬機(jī)實(shí)例組織方式:建立操作系統(tǒng)的鏡像庫,所述鏡像庫中存儲有創(chuàng)建虛擬機(jī)所需的操作系統(tǒng)鏡像;當(dāng)用戶基于鏡像庫中的操作系統(tǒng)鏡像創(chuàng)建虛擬機(jī)實(shí)例時,將虛擬機(jī)實(shí)例的操作系統(tǒng)鏡像在本地數(shù)據(jù)中心的共享存儲上采用共用操作系統(tǒng)鏡像加獨(dú)立的增量文件的形式進(jìn)行存儲;在任意一個源數(shù)據(jù)中心收到操作人員發(fā)送的將目標(biāo)虛擬機(jī)從源數(shù)據(jù)中心遷移至目標(biāo)數(shù)據(jù)中心的跨數(shù)據(jù)中心虛擬機(jī)遷移指令后,跳轉(zhuǎn)執(zhí)行步驟2)。
本實(shí)施例中,步驟1)中所述鏡像庫中每個操作系統(tǒng)鏡像通過<image_id,iamge_name,image_des,image_url>字段進(jìn)行描述,其中image_id是操作系統(tǒng)鏡像的唯一標(biāo)示,image_name為操作系統(tǒng)鏡像的名稱(比如windows7、kylin64bit等),image_des為操作系統(tǒng)鏡像的描述信息,image_url為操作系統(tǒng)鏡像的存儲位置;本實(shí)施例中,為了便于后期的虛擬機(jī)跨數(shù)據(jù)中心遷移,image_id采用鏡像的原文件的MD5值;且本實(shí)施例中各數(shù)據(jù)中心采用相同的鏡像庫,即所采用的操作系統(tǒng)均為統(tǒng)一提供的操作系統(tǒng),基于此兩個數(shù)據(jù)中心同一個版本的操作系統(tǒng)則具有相同的image_id值。
本實(shí)施例中,步驟1)中將虛擬機(jī)實(shí)例的操作系統(tǒng)鏡像在本地數(shù)據(jù)中心的共享存儲上采用共用操作系統(tǒng)鏡像加獨(dú)立的增量文件的形式進(jìn)行存儲時,所有操作系統(tǒng)鏡像的存儲組織形式如下式所示;
上式中,base表示操作系統(tǒng)鏡像的共同部分內(nèi)容,inst11和inst12表示共用操作系統(tǒng)鏡像的兩個虛擬機(jī)實(shí)例的增量文件,inst21表示使用操作系統(tǒng)鏡像的虛擬機(jī)實(shí)例的增量文件。inst11、inst12、inst21等為各自虛擬機(jī)實(shí)例獨(dú)有的增量文件,其名稱(以下標(biāo)進(jìn)行區(qū)別)與虛擬機(jī)實(shí)例的唯一標(biāo)識符(instance_id)相同,一般而言一個10G大小的鏡像創(chuàng)建出來的虛擬機(jī)增量部分文件大小僅有200M左右(會隨著虛擬機(jī)使用過程中用戶程序的增加而增加)。例如本實(shí)施例中用戶創(chuàng)建三個虛擬機(jī)實(shí)例分別是instance11、instance12和instance21,其中instance11、instance12兩個虛擬機(jī)采用相同的操作系統(tǒng)鏡像創(chuàng)建,則在共享存儲中虛擬機(jī)文件按照共性base加各自的增量文件形式組織,即因此每次在創(chuàng)建虛擬機(jī)時,首先會在base中檢測是否存在相同鏡像的虛擬機(jī)實(shí)例,如果存在只需要為此虛擬機(jī)創(chuàng)建獨(dú)立的增量文件即可,否則需要同時創(chuàng)建base中的共性鏡像文件和獨(dú)立的增量文件。
2)虛擬機(jī)遷移預(yù)處理:源數(shù)據(jù)中心將目標(biāo)虛擬機(jī)的信息向本地代理進(jìn)行注冊,每一個數(shù)據(jù)中心的本地代理維護(hù)有跨數(shù)據(jù)中心待遷移虛擬機(jī)的信息記錄,所述信息記錄包括下述字段信息;
<image_id,user_id,instance_id,slocation,dlocation,data,flag>
其中,image_id為目標(biāo)虛擬機(jī)的鏡像唯一標(biāo)識符,user_id為系統(tǒng)中用戶的唯一標(biāo)識符,instance_id為虛擬機(jī)實(shí)例的唯一標(biāo)識符,slocation為源數(shù)據(jù)中心的標(biāo)識符,dlocation為目標(biāo)數(shù)據(jù)中心的標(biāo)識符,data表示目標(biāo)虛擬機(jī)的增量文件的壓縮數(shù)據(jù)(由instance_id對應(yīng)的虛擬機(jī)實(shí)例在共享存儲中對應(yīng)的增量文件壓縮得到),flag為數(shù)據(jù)同步狀態(tài),flag為0表示同步未完成,flag為1表示數(shù)據(jù)同步完成。系統(tǒng)接收到操作人員發(fā)送的虛擬機(jī)跨數(shù)據(jù)中心遷移指令后,對目標(biāo)虛擬機(jī)的數(shù)據(jù)進(jìn)行預(yù)處理,具體來說主要是執(zhí)行步驟2)將目標(biāo)虛擬機(jī)相關(guān)信息向源數(shù)據(jù)中心的本地代理進(jìn)行注冊。
3)跨數(shù)據(jù)中心虛擬機(jī)增量文件同步:源數(shù)據(jù)中心對本地代理注冊的信息記錄進(jìn)行周期性掃描,如果某條信息記錄的dlocation字段與源數(shù)據(jù)中心的標(biāo)識符不一致且flag值為0,則啟動數(shù)據(jù)遠(yuǎn)程同步機(jī)制,將該條信息記錄同步至dlocation字段對應(yīng)的目標(biāo)數(shù)據(jù)中心的本地代理;同步完成后,源數(shù)據(jù)中心、目標(biāo)數(shù)據(jù)中心分別將本地代理存儲的該信息記錄的flag值設(shè)置為1。步驟3)主要實(shí)現(xiàn)多數(shù)據(jù)中心代理之間的數(shù)據(jù)同步。每個中心代理通過對本代理存儲信息的周期性掃描,及時發(fā)現(xiàn)待遷移的虛擬機(jī)的數(shù)據(jù),并和遠(yuǎn)程數(shù)據(jù)中心代理之間進(jìn)行數(shù)據(jù)同步。傳輸過程可以采用現(xiàn)有的具備斷點(diǎn)續(xù)傳等功能的文件同步工具等。
4)虛擬機(jī)跨數(shù)據(jù)中心遷移:目標(biāo)數(shù)據(jù)中心創(chuàng)建新虛擬機(jī)實(shí)例,在目標(biāo)數(shù)據(jù)中心的共享存儲上生成共用操作系統(tǒng)鏡像加獨(dú)立的增量文件,將本地代理存儲的信息記錄的data字段進(jìn)行解壓縮得到目標(biāo)虛擬機(jī)的增量文件,并將目標(biāo)虛擬機(jī)的增量文件替換新虛擬機(jī)實(shí)例的增量文件,然后重新啟動新虛擬機(jī)實(shí)例,完成目標(biāo)虛擬機(jī)在目標(biāo)數(shù)據(jù)中心的恢復(fù)。
本實(shí)施例中,目標(biāo)數(shù)據(jù)中心創(chuàng)建新虛擬機(jī)實(shí)例時,目標(biāo)數(shù)據(jù)中心的本地代理周期性掃描所存儲的信息記錄,如果發(fā)現(xiàn)信息記錄中某條記錄的flag值為1且dlocation字段的值為本數(shù)據(jù)中心標(biāo)示,則啟動創(chuàng)建虛擬機(jī)過程?;诓襟E1)中鏡像命名假設(shè),創(chuàng)建虛擬機(jī)的過程中虛擬機(jī)所采用的操作系統(tǒng)鏡像唯一標(biāo)識符為image_id。虛擬機(jī)創(chuàng)建成功后,在本中心的共享存儲上也會存在{base{imageid},instnew}兩個文件,其instnew為新虛擬機(jī)實(shí)例的增量文件。對所創(chuàng)建的新虛擬機(jī)實(shí)例的虛擬機(jī)狀態(tài)進(jìn)行檢測,當(dāng)虛擬機(jī)創(chuàng)建成功時,對創(chuàng)建成功的虛擬機(jī)增量文件進(jìn)行替換,即將目標(biāo)虛擬機(jī)的增量文件替換新虛擬機(jī)實(shí)例的增量文件instnew的文件內(nèi)容。文件替換成功后,通過系統(tǒng)虛擬化支持的rebuild工具對虛擬機(jī)進(jìn)行重啟,完成整個虛擬機(jī)的恢復(fù)。
5)虛擬機(jī)遷移后處理:目標(biāo)數(shù)據(jù)中心的本地代理刪除所述信息記錄,并通知被刪除信息記錄中slocation字段對應(yīng)的源數(shù)據(jù)中心的本地代理刪除對應(yīng)的信息記錄。
綜上所述,本實(shí)施例云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法不需要共享數(shù)據(jù)的支持,但是需要停機(jī)進(jìn)行數(shù)據(jù)傳輸,需要較長的時間耗費(fèi),但是對于虛擬機(jī)伴隨人員的需求完全可以滿足要求。本實(shí)施例云計算環(huán)境下的跨數(shù)據(jù)中心虛擬機(jī)遷移方法還可以進(jìn)一步可以配合現(xiàn)有的內(nèi)存狀態(tài)同步技術(shù),在步驟4)恢復(fù)完成虛擬機(jī)后,可以和原始的虛擬機(jī)進(jìn)行內(nèi)存數(shù)據(jù)同步,進(jìn)一步降低虛擬機(jī)服務(wù)中斷時間。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。