本發(fā)明涉及虛擬化云計算技術領域,具體地說是一種實用性強、基于插件機制的虛擬機遷移方法。
背景技術:
隨著虛擬化技術的日漸成熟,出現了很多成熟的商業(yè)和開源虛擬化技術,其中商業(yè)版本以VMware為代表,成熟而且穩(wěn)定。然而,KVM、Xen等開源虛擬化技術也有了快速的發(fā)展,無論在功能和性能上都日漸成熟和穩(wěn)定。在此基礎上,云計算發(fā)展風起云涌,各大廠商紛紛投入資金和技術力量研發(fā)了自己的云產品。
但是,不同廠商的產品底層可能使用了不同的虛擬化技術,這就衍生了一個新的需求虛擬機的V2V(Virtual-to-Virtual)遷移。由于不同虛擬機管理平臺底層虛擬化技術和API接口的不同,使虛擬機跨平臺遷移困難重重。
V2V虛擬機遷移的方式主要分為兩種,靜態(tài)遷移和動態(tài)遷移。靜態(tài)遷移,顧名思義,遷移之前首先將虛擬機暫停或關機,拷貝虛擬機鏡像和狀態(tài)到目的宿主機,然后在目的宿主機重新啟動虛擬機。靜態(tài)遷移,缺點是其遷移過程需要虛擬機停機,影響業(yè)務的運行使用,而動態(tài)遷移,虛擬機遷移過程只需短暫的停機時間,不會導致業(yè)務中斷;靜態(tài)遷移優(yōu)點是具有較強的兼容性,可以實現不同平臺虛擬機之間的遷移。
相同平臺虛擬機之間由于有著相同的實現技術和API接口,可以較為容易的實現靜態(tài)遷移和動態(tài)遷移。但是對于跨平臺虛擬機遷移,由于底層實現技術可能不同,實現起來難度較大。原有開源跨平臺虛擬機遷移工具,比如,virt-v2v可以實現其他虛擬機平臺到基于KVM的libvirt管理平臺的遷移,但是不能很好的支持其他基于KVM的管理平臺,遷移到libvirt管理平臺后只能手工再從libvirt管理平臺導入目的管理平臺,限制了其使用。
基于此,本發(fā)明提出了一種基于插件機制的虛擬機遷移方法。
技術實現要素:
本發(fā)明的技術任務是針對以上不足之處,提供一種實用性強、基于插件機制的虛擬機遷移方法。
一種基于插件機制的虛擬機遷移方法,包括源虛擬機管理平臺和目的虛擬機管理平臺,并設計遷移代理模塊、驅動模塊和導入代理模塊,基于上述三個模塊,虛擬機的具體遷移過程為:
首先遷移代理模塊從源虛擬機管理平臺獲取虛擬機磁盤鏡像和配置規(guī)格參數,并同時完成虛擬機鏡像格式的轉換;
然后驅動模塊用來管理源虛擬機管理平臺和目的虛擬機管理平臺的驅動插件,該插件為即插即用式插件,即針對不同的虛擬機管理平臺,依據標準接口實現驅動插件,使用時只需將插件放入指定目錄即可;
最后導入代理模塊使用轉換后的虛擬機磁盤鏡像在目的虛擬機管理平臺重建虛擬機。
遷移代理模塊獲取虛擬機磁盤鏡像和配置規(guī)格參數包括以下兩種方式:
1)任務包導入方式獲?。哼M行虛擬機的遷移之前,首先將待遷移虛擬機,即源虛擬機的磁盤鏡像和配置規(guī)格信息手工進行獲取并打包;遷移時選擇本地的打包文件作為源虛擬機管理平臺類型,遷移代理模塊自動對選擇的打包文件解包,轉換打包文件內部的磁盤鏡像格式和分析其中的配置規(guī)格信息;
2)自動生成導入任務包:將獲取并轉換格式后的待遷移虛擬機磁盤鏡像和配置規(guī)格信息封裝為一個包括轉換后的磁盤鏡像、配置規(guī)格信息和任務信息的導入任務包。
所述源虛擬機管理平臺的驅動插件實現從源虛擬機管理平臺獲取虛擬機磁盤鏡像和配置規(guī)格信息,該驅動插件提供以下兩個接口:虛擬機磁盤鏡像獲取接口、虛擬機配置規(guī)格信息獲取接口;目的虛擬機管理平臺驅動插件的功能是基于待遷移虛擬機磁盤鏡像和配置規(guī)格信息在目的虛擬機管理平臺重建虛擬機,該驅動插件提供一個重建虛擬機接口。
將虛擬機管理平臺驅動插件存放于一個配置文件指定的目錄,調用時在此目錄加載驅動插件,并調用相應的標準接口;同時在內存中維護一張?zhí)摂M機管理平臺和對應驅動插件的對應關系表,此對應關系表從配置文件中加載,并在調用驅動插件之前重新加載配置文件的對應關系表,從而保證對應關系表是最新的。
所述驅動模塊管理的驅動插件可自動發(fā)現和調用,即當需要支持新的虛擬機管理平臺時,驅動模塊發(fā)現該新的平臺并按照標準接口進行調用實現對應的驅動插件,驅動模塊根據指定的虛擬機管理平臺類型從對應關系表中查詢驅動插件對應的驅動并加載,然后調用標準接口完成獲取虛擬機鏡像和配置規(guī)格信息或者向目的虛擬機管理平臺導入鏡像和重建虛擬機。
所述驅動插件自動發(fā)現和調用的具體過程為:
首先確定管理平臺類型,管理平臺類型支持從參數文件配置和前臺UI的選擇;
掃描驅動管理目錄,查看是否存在指定的管理平臺的驅動插件;
如果即將調用的驅動管理插件存在,則加載,并轉到下一步驟;如果不存在,則返回錯誤信息;
加載后調用驅動插件的標準接口進行待遷移虛擬機磁盤鏡像的獲取或重建。
導入代理模塊支持遷移任務的自動導入,即該導入代理模塊根據遷移代理模塊生成的導入任務包內的待遷移虛擬機磁盤鏡像和配置規(guī)格信息繼續(xù)遷移任務的運行,在目的虛擬機管理平臺重建虛擬機。
基于上述遷移代理模塊、驅動模塊和導入代理模塊,虛擬機遷移的具體步驟為:
通過http協(xié)議、SSH協(xié)議或者虛擬機管理平臺的自有協(xié)議獲取虛擬機的磁盤鏡像和配置規(guī)格信息;
將獲取的虛擬機磁盤鏡像轉換為目的虛擬機管理平臺支持的磁盤鏡像格式;
分析虛擬機磁盤鏡像內是否缺失遷移后需要的虛擬機化硬件驅動庫,若缺失,則進行驅動文件的注入安裝;
根據獲取的虛擬機配置規(guī)格信息和轉換后的磁盤鏡像在目的虛擬機管理平臺重建虛擬機。
本發(fā)明的一種基于插件機制的虛擬機遷移方法,具有以下優(yōu)點:
本發(fā)明提供的一種基于插件機制的虛擬機遷移方法,實現了跨平臺虛擬機的自動遷移,有效的提高虛擬機管理平臺運維過程中虛擬機遷移的效率,本發(fā)明基于可擴展設計架構,使得無需對原有系統(tǒng)進行改動,即可支持新的虛擬機管理平臺;支持虛擬機鏡像于源虛擬機管理平臺的自動下載,源虛擬機管理平臺驅動采用插件機制實現,支持即插即用,可以支持眾多的虛擬化管理平臺;支持待遷移虛擬機到目的虛擬機管理平臺的自動重建,目的虛擬機管理平臺驅動采用插件機制實現,支持即插即用,可以支持眾多的基于KVM的虛擬機管理平臺;支持虛擬機磁盤鏡像格式的自動轉換和硬件驅動的注入安裝,省去了遷移過程中手動安裝驅動的過程,提升了遷移的效率;可以支持目前主流的操作系統(tǒng)遷移,比如CentOS、windows 2003、window2008、windows2012等,實用性強,適用范圍廣泛,易于推廣。
附圖說明
附圖1是虛擬機管理平臺插件發(fā)現機制。
附圖2本發(fā)明實施例中的實現系統(tǒng)圖。
附圖3是實施例中遷移代理和導入代理的邏輯功能實體示意圖。
具體實施方式
下面結合附圖及具體實施例對本發(fā)明作進一步說明。
如附圖1所示,本發(fā)明的一種基于插件機制的虛擬機遷移方法,包括源虛擬機管理平臺和目的虛擬機管理平臺,并設計遷移代理模塊、驅動模塊和導入代理模塊,基于上述三個模塊,虛擬機的具體遷移過程為:
首先遷移代理模塊從源虛擬機管理平臺獲取虛擬機磁盤鏡像和配置規(guī)格參數,并同時完成虛擬機鏡像格式的轉換;
然后驅動模塊用來管理源虛擬機管理平臺和目的虛擬機管理平臺的驅動插件,該插件為即插即用式插件,即針對不同的虛擬機管理平臺,依據標準接口實現驅動插件,使用時只需將插件放入指定目錄即可;
最后導入代理模塊使用轉換后的虛擬機磁盤鏡像在目的虛擬機管理平臺重建虛擬機。
基于上述步驟,本發(fā)明進行以下詳細描述:
本發(fā)明主要包括遷移代理模塊、驅動模塊、導入代理模塊,其中遷移代理模塊負責從源虛擬機管理平臺獲取虛擬機鏡像和配置規(guī)格信息,并完成虛擬機磁盤鏡像的格式轉換。需要特別說明的是,如果需要安裝目的虛擬機管理平臺需要的一些虛擬機化硬件驅動,本專利所述方法采用文件注入的方式安裝。如果待遷移虛擬機存在多個磁盤鏡像,會同時將其下載并進行格式轉換。
由于源虛擬機管理平臺的差異性,導致虛擬機磁盤鏡像和配置規(guī)格信息的獲取方式也是不同的。比如,如果源虛擬機管理平臺是VMware平臺,可以使用http協(xié)議或ssh協(xié)議進行下載。
本專利所述方法中為了適應遷移場景的多樣性,比如有些源虛擬機管理平臺由于安全需要限制了外網連接或不允許未授權軟件進入其管理范圍。
任務包導入方式獲取虛擬機磁盤鏡像:
本專利所述方法中,可以首先將待遷移虛擬機的磁盤鏡像和配置規(guī)格信息手工進行獲取并打包。遷移代理模塊可以選擇本地的打包文件作為源虛擬機管理平臺,其會自動對選擇的打包文件解包,轉換打包文件內部的磁盤鏡像格式和分析其中的配置規(guī)格信息。
1、自動生成導入任務包:
本專利所述方法中,遷移代理模塊支持將獲取的待遷移虛擬機磁盤鏡像和配置規(guī)格信息封裝為一個包括轉換后的磁盤鏡像、配置規(guī)格信息和任務信息的任務包。導入任務包的具體作用將在導入代理模塊功能闡述部分進行介紹。
為了支持不同類型的虛擬機管理平臺,本專利所述方法設計了驅動模塊,針對每個源虛擬機管理平臺,會有一個對應的驅動插件,驅動模塊采用了即插即用的設計思想。如果需要支持新的虛擬機管理平臺,只需按照標準接口實現對應的驅動插件即可。需要特別說明的是,遷移代理模塊通過任務包的導入的方式進行虛擬機磁盤鏡像和配置規(guī)格信息的獲取,也是作為一種源虛擬機管理平臺驅動插件來實現的。
導入代理模塊負責利用轉換后的虛擬機磁盤鏡像和配置規(guī)格信息在目的虛擬機管理平臺重建虛擬機。由于目前基于KVM的虛擬機管理平臺較多,比如openstack、cloudstack等。本專利所述方法針對不同的目的虛擬機管理平臺,同樣采用即插即用設計思想的驅動插件機制。針對每一種目的虛擬機管理平臺,基于標準接口實現一個驅動插件,其功能主要是在目的虛擬機管理平臺重建虛擬機。
本專利所述方法中,為了適應源虛擬機管理平臺和目的虛擬機管理平臺網絡無法連通的場景,導入代理模塊支持任務的自動導入。遷移時可以利用前述遷移代理模塊生成的導入任務包,繼續(xù)遷移任務的運行,基于任務包中的虛擬機磁盤鏡像和配置規(guī)格信息在目的虛擬機管理平臺重建虛擬機。
2、即插即用的驅動插件管理機制。
為了兼容多種虛擬機管理平臺,本專利所述方法設計了一種即插即用的驅動插件管理機制,虛擬機管理平臺驅動插件發(fā)現調用機制如圖1所示。本專利所述方法,針對遷移代理模塊調用的驅動插件和導入代理模塊調用的驅動插件,分別設計一套接口標準,每個插件都依據此接口標準實現。當進行鏡像獲取或重建虛擬機時,會首先掃描驅動管理目錄中是否存在即將調用的驅動插件。如果存在,則調用相應的驅動插件的標準接口進行鏡像的獲取或虛擬機的重建;如果不存在,則返回錯誤。
3、虛擬機的遷移流程。
通過http協(xié)議、ssh協(xié)議或虛擬機管理平臺的自有協(xié)議和接口獲取虛擬機的磁盤鏡像和配置規(guī)格信息,獲取虛擬機磁盤鏡像的方式隨虛擬機管理平臺而定。比如,針對VMware管理平臺可以使用http協(xié)議或ssh協(xié)議。
將獲取的虛擬機磁盤鏡像轉換為目的虛擬機管理平臺支持的磁盤鏡像格式,針對KVM支持的磁盤鏡像格式,使用qemu-img工具進行轉換。
分析虛擬機磁盤鏡像內是否缺失遷移后需要的一些虛擬機化硬件驅動庫,如缺失,則使用三方工具庫將驅動文件注入磁盤鏡像;如存在對應硬件驅動,則轉到下一步驟。
將虛擬機從VMware管理平臺遷移到基于KVM的虛擬機管理平臺時,對于磁盤驅動、網卡驅動一般使用半虛擬機化的virtio驅動,需要在磁盤鏡像內部安裝需要的驅動。
4、根據獲取的虛擬機配置規(guī)格信息和轉換后的磁盤鏡像在目的虛擬機管理平臺重建虛擬機。
參照本發(fā)明附圖2中的系統(tǒng)架構圖,應用于跨平臺虛擬機遷移的場景,v2v-agent負責從源虛擬機管理平臺獲取待遷移虛擬機磁盤鏡像和規(guī)格配置信息,并將磁盤鏡像轉換為KVM支持的鏡像格式,遷移過程中如果需要安裝硬件驅動則將需要安裝的驅動采用文件注入的方式進行安裝。
v2v -agent包含下載業(yè)務邏輯實體、轉換業(yè)務邏輯實體,其中下載業(yè)務邏輯實體用于獲取待遷移虛擬機的磁盤鏡像和配置規(guī)格信息,需要說明的是,如果待遷移虛擬機存在多個磁盤鏡像,會同時將其下載。
轉換業(yè)務邏輯實體,負責將獲取的待遷移虛擬機磁盤鏡像轉換為目的虛擬機管理平臺支持的磁盤鏡像格式,需要說明的是,目的虛擬機管理平臺支持的磁盤鏡像格式由平臺底層Hypervisors所決定。本實施例中,目的磁盤鏡像格式主要是raw、qcow2等kvm支持的磁盤鏡像格式,磁盤鏡像格式轉換采用qemu-img工具來實現。
如附圖3所示,export-agent包括解析業(yè)務邏輯實體和導入業(yè)務邏輯實體,解析業(yè)務邏輯實體主要負責分析獲取的待遷移虛擬機的規(guī)格配置信息,其中主要包括虛擬CPU、內存、磁盤、網卡等,這些信息將會作為在目的虛擬機管理平臺重建虛擬機時的依據。
導入業(yè)務邏輯實體,主要負責基于待遷移虛擬機的磁盤鏡像和配置規(guī)格在目地虛擬機管理平臺重建虛擬機。需要特別指出的是,這里的待遷移虛擬機磁盤鏡像是轉換后的目的虛擬機管理平臺支持的磁盤鏡像。
由于目的虛擬機管理平臺的不同,重建虛擬機的方式可能也不盡相同。以基于KVM的openstack為例,重建虛擬機時需要首先將待遷移虛擬機磁盤鏡像上傳到目的虛擬機管理平臺,同時根據待遷移虛擬機的配置規(guī)格信息建立falvor,最后基于上傳的磁盤鏡像和建立的falvor創(chuàng)建虛擬機。需要注意的是,針對其他虛擬機管理平臺,重建虛擬機的流程可能有所不同。比如,目的虛擬機管理平臺采用libvirt來管理,而其中針對鏡像的管理可能采用了后端共享存儲的方式,這就需要考慮使用其他方式將鏡像導入的目的管理平臺。
如附圖2所示,源虛擬機管理平臺、v2v-agent、export-agent、目的虛擬機管理平臺需要在同一個網絡中,或者他們之間網絡可以連通。v2v-agent和export-agent邏輯實體可以部署在一臺物理機中,也可以分別部署在不同的物理機中,但所部署物理機必須與源虛擬機管理平臺和目的虛擬機管理平臺位于同一個網絡中,或者網絡是連通的。
特別說明的一點,本專利所述方法,為了支持源虛擬機管理平臺和目的虛擬機管理平臺網絡不通的場景,v2v-agent支持將獲取的待遷移虛擬機磁盤鏡像和配置規(guī)格信息,打包為一個導入任務包而暫不導入目的虛擬機管理平臺。導入任務包中包含轉換后的虛擬機磁盤鏡像、待遷移虛擬機配置規(guī)格以及任務信息。
export-agent邏輯實體支持任務的自動導入,導入后會繼續(xù)該遷移任務的運行。它會基于此導入任務包中的虛擬機磁盤鏡像和配置規(guī)格信息在目的虛擬機管理平臺重建虛擬機。
本專利所述方法中,即插即用的虛擬機管理平臺驅動插件采用以下的具體實施例。
首先,需要定義一套統(tǒng)一的接口標準,特別指出,由于源虛擬機管理平臺驅動插件和目的虛擬機管理平臺驅動插件的作用不同,它們的接口標準是不同的。源虛擬機管理平臺驅動插件主要是實現從源虛擬機管理平臺獲取虛擬機磁盤鏡像和配置規(guī)格信息,因此設計以下兩個主要接口:
虛擬機磁盤鏡像獲取接口。
虛擬機配置規(guī)格信息獲取接口。
針對每個源虛擬機管理平臺,以上兩個接口的實現方式可能是不同的,以虛擬機磁盤鏡像獲取接口為例,如果源虛擬機管理平臺采用VMware,可以基于http或ssh協(xié)議獲取磁盤鏡像,如果源虛擬機管理平臺采用其它管理平臺,就需要依據其采用的管理方式,實現虛擬機磁盤鏡像的獲取。
針對目的虛擬機管理平臺驅動插件,其主要功能是基于待遷移虛擬機磁盤鏡像和配置規(guī)格信息在目的虛擬機管理平臺重建虛擬機。因此主要設計一個重建虛擬機接口。
因為不同的目的虛擬機管理平臺,重建虛擬機的方式有所不同。因而,針對不同的虛擬機管理平臺,本專利所述方法基于以上標準接口實現一個驅動插件,其主要實現了在對應虛擬機管理平臺重建虛擬機的功能。
本專利所述方法中,無論是源虛擬機管理平臺驅動插件還是目的虛擬機管理平臺驅動插件,都采用即插即用的加載調用方式,下面闡述如何實現即插即用的驅動插件管理機制。
本專利所述方法中,將虛擬機管理平臺驅動插件存放于一個配置文件指定的目錄,調用時在此目錄加載驅動插件,并調用相應的標準接口。
同時,會在內存中維護一張?zhí)摂M機管理平臺和對應驅動插件的對應關系表,此對應關系表從配置文件中加載,并在調用驅動插件之前重新加載配置文件的對應關系表,從而保證對應關系表是最新的。
源虛擬機管理平臺和目的虛擬機管理平臺的類型可以讓操作人員在UI進行選擇,程序會根據指定的虛擬機管理平臺類型從對應關系表中查詢驅動插件對應的驅動并加載。然后,調用其中實現的標準接口完成獲取虛擬機鏡像和配置規(guī)格信息或者向目的虛擬機管理平臺導入鏡像和重建虛擬機。
下面就本專利所述方法中即插即用的驅動插件管理和發(fā)現機制的主要步驟做一下闡述,本實施例中以源虛擬機管理平臺驅動插件為例進行闡述。
(1)根據從配置文件中讀取的或前臺UI傳入的源虛擬機管理平臺類型在內存中的對應關系表中檢索對應的驅動文件。如果檢索成功,則轉到步驟(2);如果檢索失敗,則返回錯誤信息。
(2)從驅動插件存儲目錄掃描是否存在指定的驅動插件。
(3)如果存在指定的驅動插件,則加載驅動插件;如果不存在,則返回指定插件不存在的錯誤信息。
(4)調用驅動插件標準接口獲取虛擬機磁盤鏡像和配置規(guī)格信息。
本專利所述方法中,虛擬機磁盤鏡像和配置規(guī)格信息的獲取是在驅動插件中實現的,同樣的,在目的虛擬機管理平臺重建待遷移虛擬機也是在驅動插件中實現的。
本專利所述方法的實施例,僅針對虛擬機遷移的主要流程做了闡述,而針對不同的虛擬機管理平臺,具體的磁盤鏡像的獲取和重建方法是不同的,虛擬機遷移的主要流程如下:
①、通過http協(xié)議、ssh協(xié)議或者虛擬機管理平臺的自有協(xié)議獲取虛擬機的磁盤鏡像和配置規(guī)格信息,獲取虛擬機鏡像的方式因虛擬機管理平臺的不同而不同。
②、將獲取的虛擬機鏡像轉換為目的虛擬機管理平臺支持的磁盤鏡像格式,本專利所述方法中是將磁盤鏡像轉換為KVM所支持的磁盤鏡像格式。
③、分析虛擬機鏡像內是否缺失遷移后需要的一些硬件驅動庫。如缺失,則進行驅動文件注入安裝。比如,將虛擬機從VMware管理平臺遷移到基于KVM的虛擬機管理平臺時,對于磁盤驅動、網卡驅動一般使用半虛擬機化的virtio驅動,需要在磁盤鏡像內部安裝virtio驅動。
④、根據獲取的虛擬機配置規(guī)格信息和轉換后的磁盤鏡像在目的虛擬機管理平臺重建虛擬機。
上述具體實施方式僅是本發(fā)明的具體個案,本發(fā)明的專利保護范圍包括但不限于上述具體實施方式,任何符合本發(fā)明的一種基于插件機制的虛擬機遷移方法的權利要求書的且任何所述技術領域的普通技術人員對其所做的適當變化或替換,皆應落入本發(fā)明的專利保護范圍。