專利名稱:一種云計(jì)算平臺(tái)的虛擬機(jī)快照管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及云計(jì)算平臺(tái)下的虛擬機(jī)快照管理技術(shù),尤指一種在Linux環(huán)境下,在云計(jì)算平臺(tái)中基于Libvirt等虛擬機(jī)管理工具來進(jìn)行虛擬機(jī)快照管理的方法。
背景技術(shù):
云計(jì)算是一種新興的共享基礎(chǔ)架構(gòu)的方法,它將計(jì)算任務(wù)分布在大量計(jì)算機(jī)構(gòu)成的資源池上,使各種應(yīng)用系統(tǒng)能夠根據(jù)需要獲取計(jì)算力、存儲(chǔ)空間和各種軟件服務(wù)。云計(jì)算的底層需要虛擬化技術(shù)支持。通過虛擬化技術(shù),云計(jì)算可以實(shí)現(xiàn)對資源的靈活以及高效的使用,從而為用戶提供優(yōu)質(zhì)的服務(wù)。
Libvirt是一套免費(fèi)、開源的支持Linux下主流虛擬化工具的C函數(shù)庫,它的目的是為多種虛擬化工具提供一套方便、可靠的編程接口,并支持與多種主流開發(fā)語言綁定。當(dāng)前,Linux下支持多種虛擬化工具的主流云計(jì)算平臺(tái)大部分都是使用Libvirt庫來兼容管理多種虛擬化工具。通過Libvirt庫,云計(jì)算平臺(tái)可以屏蔽各種虛擬化工具的異構(gòu)性,從而不需要為每種虛擬化工具都開發(fā)一套相應(yīng)的管理接口,降低了云計(jì)算平臺(tái)的復(fù)雜性。
虛擬機(jī)快照是虛擬機(jī)在某個(gè)點(diǎn)上對虛擬機(jī)系統(tǒng)進(jìn)行備份的復(fù)本。當(dāng)虛擬機(jī)系統(tǒng)崩潰或異常時(shí),可以通過使用恢復(fù)到虛擬機(jī)快照來保持文件系統(tǒng)和系統(tǒng)存儲(chǔ)。虛擬機(jī)快照根據(jù)創(chuàng)建快照時(shí)虛擬機(jī)系統(tǒng)所處的狀態(tài)分為開機(jī)快照和關(guān)機(jī)快照。開機(jī)快照包括了對內(nèi)存和磁盤兩部分所創(chuàng)建的快照,是在虛擬機(jī)系統(tǒng)處于運(yùn)行狀態(tài)時(shí)進(jìn)行創(chuàng)建的虛擬機(jī)快照。關(guān)機(jī)快照包括對磁盤創(chuàng)建快照,是在虛擬機(jī)系統(tǒng)處于關(guān)閉狀態(tài)時(shí)進(jìn)行創(chuàng)建的虛擬機(jī)快照。
Libvirt為快照管理提供了編程接口。在Libvirt中注冊虛擬機(jī)有兩種方式,一種為永久性注冊,一種為臨時(shí)性注冊。永久性注冊是指在虛擬機(jī)運(yùn)行過程中,用戶對虛擬機(jī)進(jìn)行的一些管理操作都會(huì)被Libvirt所記錄,當(dāng)虛擬機(jī)關(guān)閉后,這些操作不會(huì)消失,除非在Libvirt中注銷該虛擬機(jī),例如在虛擬機(jī)運(yùn)行時(shí)創(chuàng)建的快照,在虛擬機(jī)下次啟動(dòng)時(shí)依然可以對其進(jìn)行操作,直到用戶在Libvirt中注銷了該虛擬機(jī)。臨時(shí)性注冊是指虛擬機(jī)被 Libvirt管理的生命周期為從虛擬機(jī)的一次啟動(dòng)到其關(guān)閉的這段時(shí)間,也就是說,用戶在虛擬機(jī)當(dāng)次運(yùn)行時(shí)所作的全部管理操作在虛擬機(jī)關(guān)閉后,在Libvirt中都沒有相應(yīng)記錄。例如在虛擬機(jī)運(yùn)行時(shí)創(chuàng)建的快照,在虛擬機(jī)下次啟動(dòng)時(shí)無法找到之前的快照記錄,也就無法對之前創(chuàng)建的快照進(jìn)行操作,盡管它是存在的。
Libvirt創(chuàng)建快照的原理是將正在運(yùn)行的虛擬機(jī)當(dāng)前內(nèi)存、CPU寄存器以及磁盤信息等都保存在虛擬機(jī)的磁盤映像當(dāng)中,從磁盤外部無法直接對利用Libvirt創(chuàng)建的快照進(jìn)行操作,只能調(diào)用Libvirt編程接口 ;一旦Libvirt中無法找到該快照的記錄信息,那么該快照是無法使用的,這也是臨時(shí)性注冊在快照管理方面存在的缺陷。
Linux下主流的云計(jì)算平臺(tái)有的使用Libvirt的臨時(shí)性注冊,有的使用永久性注冊。當(dāng)前,使用臨時(shí)性注冊的云平臺(tái)在進(jìn)行快照管理時(shí)存在的問題很明顯,所創(chuàng)建的快照在虛擬機(jī)重啟后可能無法使用,從而無法實(shí)現(xiàn)快照的管理功能。發(fā)明內(nèi)容
鑒于在Linux下使用Libvirt等虛擬機(jī)管理工具進(jìn)行虛擬機(jī)管理的云計(jì)算平臺(tái)在進(jìn)行快照管理時(shí)存在的缺陷,尤其是虛擬機(jī)管理工具的臨時(shí)性注冊問題,提出了一種云計(jì)算平臺(tái)的虛擬機(jī)快照管理方法和系統(tǒng)。
為了解決上述技術(shù)問題,本發(fā)明提供了一種一種云計(jì)算平臺(tái)虛擬機(jī)快照管理方法,其特征在于,當(dāng)要為集群節(jié)點(diǎn)的虛擬機(jī)創(chuàng)建虛擬機(jī)快照時(shí),執(zhí)行以下步驟準(zhǔn)備步驟 如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,云計(jì)算平臺(tái)的控制節(jié)點(diǎn)通過調(diào)用虛擬機(jī)管理工具來將所述虛擬機(jī)暫停并創(chuàng)建所述虛擬機(jī)的內(nèi)存快照;磁盤快照步驟所述控制節(jié)點(diǎn)調(diào)用虛擬化管理工具來創(chuàng)建所述虛擬機(jī)的磁盤快照;后續(xù)處理步驟如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,則通過調(diào)用所述虛擬化管理工具來利用所創(chuàng)建的內(nèi)存快照使得所述虛擬機(jī)恢復(fù)運(yùn)行。
進(jìn)一步,該方法還包括當(dāng)要利用所創(chuàng)建的虛擬機(jī)快照來恢復(fù)所述虛擬機(jī)時(shí),所述控制節(jié)點(diǎn)通過調(diào)用所述虛擬化管理工具利用所述磁盤快照步驟所生成的磁盤快照來恢復(fù)所述虛擬機(jī)的磁盤快照。
進(jìn)一步,該方法還包括如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,將所創(chuàng)建的虛擬機(jī)快照的類型設(shè)置為開機(jī)快照,反之,則將所創(chuàng)建的虛擬機(jī)快照的類型設(shè)置為關(guān)機(jī)快照。
進(jìn)一步,該方法還包括當(dāng)要利用所創(chuàng)建的虛擬機(jī)快照類型為開機(jī)快照的虛擬機(jī)快照來恢復(fù)所述虛擬機(jī)時(shí)若當(dāng)前所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,則先調(diào)用虛擬機(jī)管理工具暫停虛擬機(jī),并將當(dāng)前虛擬機(jī)狀態(tài)保存成內(nèi)存快照,再利用所創(chuàng)建的虛擬機(jī)快照中的磁盤快照和內(nèi)存快照來恢復(fù)所述虛擬機(jī);以及若當(dāng)前所述虛擬機(jī)的狀態(tài)不是正在運(yùn)行,則利用所創(chuàng)建的虛擬機(jī)快照中的磁盤快照和內(nèi)存快照來恢復(fù)所述虛擬機(jī)。
進(jìn)一步,該方法還包括當(dāng)要利用所創(chuàng)建的虛擬機(jī)快照類型為關(guān)機(jī)快照的虛擬機(jī)快照來恢復(fù)所述虛擬機(jī)時(shí),若當(dāng)前所述虛擬機(jī)的狀態(tài)是正在運(yùn)行,則先調(diào)用虛擬機(jī)管理工具將虛擬機(jī)關(guān)閉,再利用所創(chuàng)建的快照中的磁盤快照來恢復(fù)所述虛擬機(jī);以及若當(dāng)前所述虛擬機(jī)的狀態(tài)不是正在運(yùn)行,則利用所創(chuàng)建的虛擬機(jī)快照中的磁盤快照來恢復(fù)所述虛擬機(jī)。
進(jìn)一步,該方法還包括在刪除所創(chuàng)建的虛擬機(jī)快照時(shí),若當(dāng)前的所述虛擬機(jī)的狀態(tài)是正在運(yùn)行,則先調(diào)用所述虛擬機(jī)管理工具暫停所述虛擬機(jī),刪除所創(chuàng)建的虛擬機(jī)快照后,再調(diào)用所述虛擬機(jī)管理工具恢復(fù)所述虛擬機(jī);若當(dāng)前所述虛擬機(jī)的狀態(tài)不是正在運(yùn)行, 則直接刪除所創(chuàng)建的虛擬機(jī)快照。
進(jìn)一步,該方法還包括調(diào)用所述虛擬機(jī)管理工具對內(nèi)存快照進(jìn)行刪除,以及調(diào)用虛擬化管理工具對磁盤快照進(jìn)行刪除。
進(jìn)一步,該方法還包括所述虛擬機(jī)管理工具為Libvirt,所述虛擬化管理工具為 KVM 或 Xen。
本發(fā)明還提供了一種基于云計(jì)算平臺(tái)的虛擬機(jī)快照管理系統(tǒng),其特征在于,包括以下單元虛擬機(jī)狀態(tài)判斷單元,用于判斷所述虛擬機(jī)的當(dāng)前狀態(tài)是否為正在運(yùn)行狀態(tài); 快照類型判斷單元,用于判斷所述快照類型為開機(jī)快照或關(guān)機(jī)快照;快照創(chuàng)建單元,用于調(diào)用虛擬機(jī)管理工具創(chuàng)建內(nèi)存快照,以及調(diào)用虛擬化管理工具創(chuàng)建磁盤快照;快照恢復(fù)單元, 用于調(diào)用所述虛擬機(jī)管理工具對所述內(nèi)存快照進(jìn)行恢復(fù),以及調(diào)用所述虛擬化管理工具對所述磁盤快照進(jìn)行恢復(fù);快照刪除單元,用于調(diào)用所述虛擬機(jī)管理工具對所述內(nèi)存快照進(jìn)行刪除,以及調(diào)用所述虛擬化管理工具對所述磁盤快照進(jìn)行刪除。
進(jìn)一步,該系統(tǒng)還包括所述虛擬機(jī)管理工具為Libvirt,所述虛擬化管理工具為 KVM 或 Xen。
與現(xiàn)有技術(shù)相比,本發(fā)明至少具有以下優(yōu)點(diǎn)
本發(fā)明不需要修改Libvirt源代碼并且適合于Linux下基于Libvirt進(jìn)行虛擬機(jī)管理的任何種類的云計(jì)算平臺(tái),同時(shí)保證云計(jì)算平臺(tái)的一致性,以及提供良好的用戶快照管理體驗(yàn)。
本發(fā)明僅修改云計(jì)算平臺(tái)控制節(jié)點(diǎn)上的平臺(tái)管理代碼,而不需要修改集群節(jié)點(diǎn)及其之上的Libvirt等虛擬機(jī)管理工具與KVM等虛擬化管理工具,通過引入云計(jì)算平臺(tái)下一種新的快照管理方法的方式,使得對云計(jì)算平臺(tái)的改動(dòng)限制在最小的范圍。
本發(fā)明為Linux下基于Libvirt等虛擬機(jī)管理工具進(jìn)行虛擬機(jī)管理的云計(jì)算平臺(tái)提供了一種通用的快照管理方法,有效的彌補(bǔ)了現(xiàn)有的基于Libvirt等虛擬機(jī)管理工具管理虛擬機(jī)的云計(jì)算平臺(tái)所存在的無法進(jìn)行有效快照管理的缺陷,在提供良好的用戶快照管理體驗(yàn)的同時(shí),保證了云計(jì)算平臺(tái)的穩(wěn)定性。
本發(fā)明主要是針對使用Libvirt等虛擬機(jī)管理工具的臨時(shí)性注冊進(jìn)行虛擬機(jī)管理的云計(jì)算平臺(tái),對于所有的基于Libvirt等虛擬機(jī)管理工具進(jìn)行虛擬機(jī)管理的云計(jì)算平臺(tái)都具有通用性。本發(fā)明提出的虛擬機(jī)快照管理方法包括虛擬機(jī)快照創(chuàng)建、快照恢復(fù)以及快照刪除三個(gè)方面,涵蓋了虛擬機(jī)快照管理的所有主要行為操作。本發(fā)明在沒有進(jìn)行快照管理時(shí),不影響云計(jì)算平臺(tái)的正常工作。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中
圖1是本發(fā)明實(shí)施例的云計(jì)算平臺(tái)整體框架圖2是根據(jù)本發(fā)明實(shí)施例一的云計(jì)算平臺(tái)的快照管理方法中的創(chuàng)建虛擬機(jī)快照的流程圖3是根據(jù)本發(fā)明實(shí)施例一的云計(jì)算平臺(tái)的快照管理方法中的恢復(fù)虛擬機(jī)快照的流程圖4是根據(jù)本發(fā)明實(shí)施例一的云計(jì)算平臺(tái)的快照管理方法中的刪除虛擬機(jī)快照的流程圖5是根據(jù)本發(fā)明實(shí)施例二的基于云計(jì)算平臺(tái)的快照管理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。
另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本發(fā)明主要是為了解決在Linux環(huán)境下使用Libvirt等虛擬機(jī)管理工具進(jìn)行虛擬機(jī)管理的云計(jì)算平臺(tái)在進(jìn)行快照管理時(shí)存在的缺陷問題,提出了一種基于云計(jì)算的虛擬機(jī)快照管理方法。
本發(fā)明的實(shí)施例中包括虛擬機(jī)快照創(chuàng)建、快照恢復(fù)以及快照刪除三個(gè)方面,將結(jié)合附圖分別予以說明。優(yōu)選的,本發(fā)明的實(shí)施例采用中標(biāo)麒麟安全云操作系統(tǒng)中的云計(jì)算平臺(tái)NKSCL0UD來實(shí)現(xiàn)各種功能和效果,其中云計(jì)算平臺(tái)NKSCL0UD可使用Libvirt的臨時(shí)性注冊來管理虛擬機(jī)。
圖1為根據(jù)本發(fā)明的Linux下基于Libvirt等虛擬機(jī)管理工具管理虛擬機(jī)的云計(jì)算平臺(tái)整體框架圖。控制節(jié)點(diǎn)是云計(jì)算平臺(tái)的管理端,在其上運(yùn)行所有對云計(jì)算平臺(tái)進(jìn)行管理的服務(wù),如網(wǎng)絡(luò)管理、存儲(chǔ)管理、虛擬機(jī)管理、快照管理以及數(shù)據(jù)庫服務(wù)等。集群節(jié)點(diǎn)是提供虛擬機(jī)服務(wù)的服務(wù)器,在其上除了運(yùn)行多個(gè)虛擬機(jī),還運(yùn)行著進(jìn)行虛擬機(jī)管理的 Libvrit函數(shù)庫以及提供虛擬化功能的虛擬化管理工具,例如KVM(Kernel-based Virtual Machine), Xen等,KVM是集成到Linux內(nèi)核中的開源的虛擬機(jī)監(jiān)視器,Xen是由劍橋大學(xué)開發(fā)的開源的虛擬機(jī)監(jiān)視器。KVM和Xen是Linux下主流的虛擬化管理工具。在云計(jì)算平臺(tái)中允許存在一個(gè)控制節(jié)點(diǎn)以及多個(gè)集群節(jié)點(diǎn),控制節(jié)點(diǎn)通過網(wǎng)絡(luò)對多個(gè)集群節(jié)點(diǎn)進(jìn)行相應(yīng)管理。
實(shí)施例一
圖2為根據(jù)本發(fā)明實(shí)施例一的基于云計(jì)算平臺(tái)的快照管理方法中的創(chuàng)建虛擬機(jī)快照的流程圖。其中箭頭的方向表示了工作流的方向。該流程具體包括以下步驟
步驟S110,云計(jì)算平臺(tái)的控制節(jié)點(diǎn)向虛擬機(jī)發(fā)出創(chuàng)建快照的命令。
步驟S111,控制節(jié)點(diǎn)作快照創(chuàng)建前的準(zhǔn)備工作。
其中具體包括根據(jù)用戶的輸入信息在數(shù)據(jù)庫中添加一條新快照的記錄,該記錄包括快照名稱、快照描述、快照創(chuàng)建時(shí)間等,設(shè)置該快照狀態(tài)為不可用,并記錄該快照類型為開機(jī)快照或關(guān)機(jī)快照,具體的,控制節(jié)點(diǎn)根據(jù)虛擬機(jī)當(dāng)前運(yùn)行狀態(tài)來確定當(dāng)前快照的類型,若虛擬機(jī)當(dāng)前為正在運(yùn)行,則快照類型為開機(jī)快照,若虛擬機(jī)當(dāng)前狀態(tài)為關(guān)機(jī)狀態(tài),則快照類型為關(guān)機(jī)快照。
步驟S112,控制節(jié)點(diǎn)根據(jù)當(dāng)前的虛擬機(jī)狀態(tài)選擇快照類型并執(zhí)行相應(yīng)步驟。如果虛擬機(jī)狀態(tài)為正在運(yùn)行,則進(jìn)入步驟S113,如果虛擬機(jī)狀態(tài)為關(guān)機(jī)狀態(tài),則直接進(jìn)入步驟 S114。
步驟S113,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具,首先將虛擬機(jī)暫停,然后將當(dāng)前虛擬機(jī)狀態(tài)保存成文件,也就是內(nèi)存快照,虛擬機(jī)管理工具保存當(dāng)前虛擬機(jī)狀態(tài)成功后,通知控制節(jié)點(diǎn),并進(jìn)入步驟Sl 15。
步驟Sl 14,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬化管理工具對虛擬機(jī)磁盤映像作磁盤快照。集群節(jié)點(diǎn)對虛擬機(jī)作磁盤快照成功后,通知控制節(jié)點(diǎn),并進(jìn)入步驟S117。
步驟S115,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬化管理工具對虛擬機(jī)磁盤映像作磁盤快照。集群節(jié)點(diǎn)對虛擬機(jī)作磁盤快照成功后,通知控制節(jié)點(diǎn)。
步驟S116,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具將虛擬機(jī)從之前保存的文件恢復(fù)為運(yùn)行狀態(tài)。虛擬機(jī)管理工具操作執(zhí)行成功后,通知控制節(jié)點(diǎn)。進(jìn)入步驟 S117。
步驟S117,控制節(jié)點(diǎn)進(jìn)行的快照創(chuàng)建后續(xù)處理。
具體包括修改數(shù)據(jù)庫中的快照狀態(tài)為可用,增加虛擬機(jī)快照引用計(jì)數(shù),并修改當(dāng)前活動(dòng)快照為本次創(chuàng)建成功的快照等。
其中,步驟Slll中,在數(shù)據(jù)庫中添加一條快照記錄包括檢查是否存在同名快照、 已有快照個(gè)數(shù)是否達(dá)到上限等。
其中,步驟S113中,創(chuàng)建的文件(S卩,內(nèi)存快照)保存了虛擬機(jī)當(dāng)前內(nèi)存當(dāng)中的全部數(shù)據(jù)以及當(dāng)前CPU寄存器狀態(tài)。該文件會(huì)被保存下來,以便在恢復(fù)虛擬機(jī)時(shí)作為內(nèi)存快照來使用。
其中,步驟S113、S114、S115和S116中,如果操作失敗,定義為本次快照創(chuàng)建失敗, 刪除控制節(jié)點(diǎn)數(shù)據(jù)庫中對應(yīng)的快照記錄。
其中,步驟Sl 14和Sl 15中,虛擬化管理工具所產(chǎn)生的磁盤快照是保存在虛擬機(jī)磁盤映像當(dāng)中,并未保存在磁盤映像的外部。
由上可知,當(dāng)創(chuàng)建虛擬機(jī)快照時(shí),若虛擬機(jī)的狀態(tài)為正在運(yùn)行,則所述虛擬機(jī)快照包括所創(chuàng)建的內(nèi)存快照和所創(chuàng)建的磁盤快照,反之,所述虛擬機(jī)快照包括所創(chuàng)建的磁盤快照。
由此,根據(jù)圖2的創(chuàng)建流程,可以通過判斷虛擬機(jī)當(dāng)前的運(yùn)行狀態(tài)創(chuàng)建開機(jī)快照或關(guān)機(jī)快照。
圖3為根據(jù)本發(fā)明實(shí)施例的快照管理方法中的恢復(fù)虛擬機(jī)快照的流程圖,其中箭頭方向表示了工作流的方向。具體包括以下步驟
步驟S210,云計(jì)算平臺(tái)控制節(jié)點(diǎn)向虛擬機(jī)發(fā)出恢復(fù)虛擬機(jī)快照的命令。
步驟S211,控制節(jié)點(diǎn)作快照恢復(fù)前的準(zhǔn)備工作。
具體包括根據(jù)用戶輸入的快照名在數(shù)據(jù)庫中查找指定的快照、獲得虛擬機(jī)當(dāng)前狀態(tài)、獲得快照類型等。
步驟S212,判斷虛擬機(jī)當(dāng)前的運(yùn)行狀態(tài),如果虛擬機(jī)的狀態(tài)為正在運(yùn)行,則進(jìn)入到步驟S213,否則進(jìn)入到步驟S214。
步驟S213,判斷待恢復(fù)的快照類型是否為開機(jī)快照,若是則進(jìn)入到步驟S215,否則進(jìn)入到步驟S217。
步驟S214,判斷待恢復(fù)的快照類型是否為開機(jī)快照,若是則進(jìn)入到步驟S216,否則進(jìn)入到步驟S218。
步驟S215,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具,首先暫停虛擬機(jī), 然后將當(dāng)前虛擬機(jī)狀態(tài)保存成文件(即,保存為內(nèi)存快照),虛擬機(jī)管理工具保存虛擬機(jī)成功后,通知控制節(jié)點(diǎn),并進(jìn)入步驟S216。
步驟S216,集群節(jié)點(diǎn)調(diào)用虛擬化管理工具根據(jù)指定的快照對虛擬機(jī)磁盤進(jìn)行磁盤恢復(fù)操作,集群節(jié)點(diǎn)對虛擬機(jī)的磁盤快照恢復(fù)操作成功后,通知控制節(jié)點(diǎn),并進(jìn)入步驟 S219。
步驟S217,集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具對當(dāng)前虛擬機(jī)進(jìn)行關(guān)機(jī)操作,并進(jìn)入步驟 S218。
步驟S218,集群節(jié)點(diǎn)調(diào)用虛擬化管理工具根據(jù)指定的快照對虛擬機(jī)磁盤進(jìn)行磁盤恢復(fù)操作,集群節(jié)點(diǎn)對虛擬機(jī)的磁盤快照恢復(fù)操作成功后,通知控制節(jié)點(diǎn),并進(jìn)入步驟 S220。需要說明的是,在圖2中包括兩個(gè)步驟S218,這兩個(gè)步驟為相同步驟,僅為繪圖方便而分開表示。
步驟S219,集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具根據(jù)指定的內(nèi)存快照文件將虛擬機(jī)恢復(fù)為運(yùn)行狀態(tài)。虛擬機(jī)管理工具操作執(zhí)行成功后,通知控制節(jié)點(diǎn),并進(jìn)入步驟S220。
步驟S220,控制節(jié)點(diǎn)對快照恢復(fù)進(jìn)行后續(xù)處理。
具體包括修改當(dāng)前活動(dòng)快照為本次恢復(fù)成功的快照等;
以上是恢復(fù)快照的流程,其中,步驟S211中查找到指定的快照,包括獲取該快照的內(nèi)存快照名、磁盤快照名以及該快照是否可用等相關(guān)快照信息。步驟S215中將虛擬機(jī)狀態(tài)保存成的文件是為了防止在快照恢復(fù)過程失敗時(shí)無法將虛擬機(jī)恢復(fù)到正確的運(yùn)行狀態(tài)而使用的。
其中,在步驟S215中,如果操作失敗,即虛擬機(jī)管理工具將虛擬機(jī)保存成文件失敗,虛擬機(jī)管理工具會(huì)自動(dòng)的將虛擬機(jī)恢復(fù)為運(yùn)行狀態(tài)。
其中,在步驟S216和S218中,如果操作失敗,定義為本次快照恢復(fù)操作失敗,根據(jù)步驟S215中的保存的文件將虛擬機(jī)恢復(fù)為運(yùn)行狀態(tài)。
由此,根據(jù)圖2的恢復(fù)流程,可以通過判斷虛擬機(jī)當(dāng)前的運(yùn)行狀態(tài)和指定快照的類型,對快照進(jìn)行恢復(fù),同時(shí)能夠?qū)μ摂M機(jī)運(yùn)行狀態(tài)進(jìn)行保存以避免恢復(fù)失敗時(shí)無法將虛擬機(jī)恢復(fù)到正確的運(yùn)行狀態(tài)。
圖4為根據(jù)本發(fā)明實(shí)施例的快照管理方法中的刪除虛擬機(jī)快照的流程圖,其中箭頭方向表示了工作流的方向。具體包括以下步驟
步驟S310,云計(jì)算平臺(tái)控制節(jié)點(diǎn)向虛擬機(jī)發(fā)出刪除虛擬機(jī)快照的命令。
步驟S311,控制節(jié)點(diǎn)做快照刪除前的準(zhǔn)備工作。具體包括在數(shù)據(jù)庫中查找快照、 虛擬機(jī)當(dāng)前運(yùn)行狀態(tài)等。
步驟S312,判斷虛擬機(jī)當(dāng)前的運(yùn)行狀態(tài)。如果虛擬機(jī)狀態(tài)為正在運(yùn)行,進(jìn)入步驟 S313,否則進(jìn)入步驟S316。
步驟S313,集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具暫定該虛擬機(jī)。虛擬機(jī)管理工具暫停虛擬機(jī)成功后,通知控制節(jié)點(diǎn)。
步驟S314,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)刪除內(nèi)存快照并調(diào)用虛擬化管理工具刪除指定的磁盤快照。集群節(jié)點(diǎn)刪除相應(yīng)的快照文件后,通知控制節(jié)點(diǎn),并進(jìn)入步驟S315。
步驟S315,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具將虛擬機(jī)狀態(tài)由暫?;謴?fù)為正在運(yùn)行,虛擬機(jī)管理工具操作執(zhí)行成功后,通知控制節(jié)點(diǎn),并進(jìn)入步驟S317。
步驟S316,控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)刪除內(nèi)存快照并調(diào)用虛擬化管理工具刪除指定的磁盤快照。集群節(jié)點(diǎn)刪除相應(yīng)的快照文件后,通知控制節(jié)點(diǎn),并進(jìn)入步驟S317。
步驟S317,云計(jì)算平臺(tái)進(jìn)行快照刪除的后續(xù)處理。
具體包括刪除數(shù)據(jù)庫中的快照記錄,減少虛擬機(jī)可用快照計(jì)數(shù),修改當(dāng)前活動(dòng)快照等。
其中,步驟S311中查找到指定的快照,包括獲取該快照的內(nèi)存快照名、磁盤快照-C3 寸。
其中,步驟S313的暫停虛擬機(jī),是為了保證對虛擬機(jī)磁盤映像進(jìn)行操作時(shí)不會(huì)對正在運(yùn)行的操作系統(tǒng)產(chǎn)生影響。
其中,步驟S313,S315和S316中,如果操作失敗,則定義本次刪除快照操作失敗, 集群節(jié)點(diǎn)通知控制節(jié)點(diǎn)本次快照刪除失敗,控制節(jié)點(diǎn)根據(jù)不同的命令返回結(jié)果進(jìn)行相應(yīng)的后續(xù)處理。
其中,步驟S314中,如果操作失敗,則定義本次刪除快照操作失敗,集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具將虛擬機(jī)狀態(tài)由暫?;謴?fù)為正在運(yùn)行。
其中,步驟S314和S316中,控制節(jié)點(diǎn)可以判斷快照類型,如果快照類型為開機(jī)快照,則按照步驟S314和S316中描述的執(zhí)行;如果快照類型為關(guān)機(jī)快照,則集群節(jié)點(diǎn)只需刪除磁盤快照。
實(shí)施例二
圖5為根據(jù)本發(fā)明實(shí)施例二的基于云計(jì)算平臺(tái)的快照管理系統(tǒng)的結(jié)構(gòu)示意圖,下面根據(jù)圖5詳細(xì)說明該系統(tǒng)各部分的組成。
虛擬機(jī)狀態(tài)判斷單元,用于判斷虛擬機(jī)的當(dāng)前狀態(tài)是否為正在運(yùn)行狀態(tài)。
快照類型判斷單元,用于判斷快照類型為開機(jī)快照或關(guān)機(jī)快照。
快照創(chuàng)建單元,用于調(diào)用虛擬機(jī)管理工具創(chuàng)建內(nèi)存快照,以及調(diào)用虛擬化管理工具創(chuàng)建磁盤快照。具體的,在虛擬機(jī)的狀態(tài)為正在運(yùn)行時(shí)創(chuàng)建開機(jī)快照,在虛擬機(jī)為關(guān)機(jī)狀態(tài)時(shí)創(chuàng)建關(guān)機(jī)快照,開機(jī)快照包括內(nèi)存快照和磁盤快照兩部分,關(guān)機(jī)快照僅包括磁盤快照。 通過云計(jì)算平臺(tái)的控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具將當(dāng)前虛擬機(jī)狀態(tài)保存成文件以形成內(nèi)存快照。通過控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬化管理工具對虛擬機(jī)磁盤映像作磁盤快照。
快照恢復(fù)單元,用于調(diào)用所述虛擬機(jī)管理工具對所述內(nèi)存快照進(jìn)行恢復(fù),以及調(diào)用所述虛擬化管理工具對所述磁盤快照進(jìn)行恢復(fù)。具體的,在虛擬機(jī)處于正在運(yùn)行狀態(tài)下, 對于開機(jī)快照,首先通過控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具將當(dāng)前虛擬機(jī)狀態(tài)保存成文件(即,保存為內(nèi)存快照),再利用集群節(jié)點(diǎn)調(diào)用虛擬化管理工具根據(jù)指定的磁盤快照對虛擬機(jī)磁盤進(jìn)行磁盤恢復(fù)操作,調(diào)用虛擬機(jī)管理工具根據(jù)指定的內(nèi)存快照文件將虛擬機(jī)恢復(fù)為運(yùn)行狀態(tài);對于關(guān)機(jī)快照,首先利用集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具對當(dāng)前虛擬機(jī)進(jìn)行關(guān)機(jī)操作,再利用集群節(jié)點(diǎn)調(diào)用虛擬化管理工具根據(jù)指定的磁盤快照對虛擬機(jī)磁盤進(jìn)行磁盤恢復(fù)操作。在關(guān)機(jī)狀態(tài)下,對于開機(jī)快照,利用集群節(jié)點(diǎn)調(diào)用虛擬化管理工具根據(jù)指定的磁盤快照對虛擬機(jī)磁盤進(jìn)行磁盤恢復(fù)操作,調(diào)用虛擬機(jī)管理工具根據(jù)指定的內(nèi)存快照文件將虛擬機(jī)恢復(fù)為運(yùn)行狀態(tài);對于關(guān)機(jī)快照,集群節(jié)點(diǎn)調(diào)用虛擬化管理工具根據(jù)指定的磁盤快照對虛擬機(jī)磁盤進(jìn)行磁盤恢復(fù)操作。
快照刪除單元,用于調(diào)用所述虛擬機(jī)管理工具對所述內(nèi)存快照進(jìn)行刪除,以及調(diào)用所述虛擬化管理工具對所述磁盤快照進(jìn)行刪除。具體的,在虛擬機(jī)處于正在運(yùn)行狀態(tài)下, 首先利用集群節(jié)點(diǎn)暫停虛擬機(jī),再利用控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具刪除內(nèi)存快照并調(diào)用虛擬化管理工具刪除指定的磁盤快照,之后利用控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具將虛擬機(jī)狀態(tài)由暫?;謴?fù)為正在運(yùn)行;在關(guān)機(jī)狀態(tài)下,直接利用控制節(jié)點(diǎn)遠(yuǎn)程連接到集群節(jié)點(diǎn)調(diào)用虛擬機(jī)管理工具刪除內(nèi)存快照并調(diào)用虛擬化管理工具刪除指定的磁盤快照。
本發(fā)明適用于Linux下所有應(yīng)用Libvirt等虛擬機(jī)管理工具進(jìn)行虛擬機(jī)管理的云計(jì)算平臺(tái)。本發(fā)明提供的虛擬機(jī)快照管理方法有效的解決了在云計(jì)算環(huán)境中使用Libvirt 等虛擬機(jī)管理工具進(jìn)行虛擬機(jī)快照管理的缺陷問題。本發(fā)明提供的虛擬機(jī)快照管理方法包括云計(jì)算平臺(tái)對虛擬機(jī)快照的創(chuàng)建、恢復(fù)以及刪除。
本發(fā)明僅以中標(biāo)麒麟安全云操作系統(tǒng)中的云計(jì)算平臺(tái)NKSCL0UD為例進(jìn)行說明, 事實(shí)上所有應(yīng)用Libvirt等虛擬機(jī)管理工具進(jìn)行虛擬機(jī)管理的云計(jì)算平臺(tái)的快照管理都在本發(fā)明的解決范圍之內(nèi)。
本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化, 但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種云計(jì)算平臺(tái)虛擬機(jī)快照管理方法,其特征在于,當(dāng)要為集群節(jié)點(diǎn)的虛擬機(jī)創(chuàng)建虛擬機(jī)快照時(shí),執(zhí)行以下步驟準(zhǔn)備步驟如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,云計(jì)算平臺(tái)的控制節(jié)點(diǎn)通過調(diào)用虛擬機(jī)管理工具來將所述虛擬機(jī)暫停并創(chuàng)建所述虛擬機(jī)的內(nèi)存快照;磁盤快照步驟所述控制節(jié)點(diǎn)調(diào)用虛擬化管理工具來創(chuàng)建所述虛擬機(jī)的磁盤快照;后續(xù)處理步驟如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,則通過調(diào)用所述虛擬化管理工具來利用所創(chuàng)建的內(nèi)存快照使得所述虛擬機(jī)恢復(fù)運(yùn)行。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)要利用所創(chuàng)建的虛擬機(jī)快照來恢復(fù)所述虛擬機(jī)時(shí),所述控制節(jié)點(diǎn)通過調(diào)用所述虛擬化管理工具利用所述磁盤快照步驟所生成的磁盤快照來恢復(fù)所述虛擬機(jī)的磁盤快照。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,將所創(chuàng)建的虛擬機(jī)快照的類型設(shè)置為開機(jī)快照,反之,則將所創(chuàng)建的虛擬機(jī)快照的類型設(shè)置為關(guān)機(jī)快照。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)要利用所創(chuàng)建的虛擬機(jī)快照類型為開機(jī)快照的虛擬機(jī)快照來恢復(fù)所述虛擬機(jī)時(shí)若當(dāng)前所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,則先調(diào)用虛擬機(jī)管理工具暫停虛擬機(jī),并將當(dāng)前虛擬機(jī)狀態(tài)保存成內(nèi)存快照,再利用所創(chuàng)建的虛擬機(jī)快照中的磁盤快照和內(nèi)存快照來恢復(fù)所述虛擬機(jī);以及若當(dāng)前所述虛擬機(jī)的狀態(tài)不是正在運(yùn)行,則利用所創(chuàng)建的虛擬機(jī)快照中的磁盤快照和內(nèi)存快照來恢復(fù)所述虛擬機(jī)。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)要利用所創(chuàng)建的虛擬機(jī)快照類型為關(guān)機(jī)快照的虛擬機(jī)快照來恢復(fù)所述虛擬機(jī)時(shí),若當(dāng)前所述虛擬機(jī)的狀態(tài)是正在運(yùn)行,則先調(diào)用虛擬機(jī)管理工具將虛擬機(jī)關(guān)閉,再利用所創(chuàng)建的快照中的磁盤快照來恢復(fù)所述虛擬機(jī);以及若當(dāng)前所述虛擬機(jī)的狀態(tài)不是正在運(yùn)行,則利用所創(chuàng)建的虛擬機(jī)快照中的磁盤快照來恢復(fù)所述虛擬機(jī)。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,在刪除所創(chuàng)建的虛擬機(jī)快照時(shí),若當(dāng)前的所述虛擬機(jī)的狀態(tài)是正在運(yùn)行,則先調(diào)用所述虛擬機(jī)管理工具暫停所述虛擬機(jī),刪除所創(chuàng)建的虛擬機(jī)快照后,再調(diào)用所述虛擬機(jī)管理工具恢復(fù)所述虛擬機(jī);若當(dāng)前所述虛擬機(jī)的狀態(tài)不是正在運(yùn)行,則直接刪除所創(chuàng)建的虛擬機(jī)快照。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,調(diào)用所述虛擬機(jī)管理工具對內(nèi)存快照進(jìn)行刪除,以及調(diào)用虛擬化管理工具對磁盤快照進(jìn)行刪除。
8.根據(jù)權(quán)利要求1至7所述的任一項(xiàng)方法,其特征在于,所述虛擬機(jī)管理工具為 Libvirt,所述虛擬化管理工具為KVM或Xen。
9.一種基于云計(jì)算平臺(tái)的虛擬機(jī)快照管理系統(tǒng),其特征在于,包括以下單元虛擬機(jī)狀態(tài)判斷單元,用于判斷所述虛擬機(jī)的當(dāng)前狀態(tài)是否為正在運(yùn)行狀態(tài);快照類型判斷單元,用于判斷所述快照類型為開機(jī)快照或關(guān)機(jī)快照;快照創(chuàng)建單元,用于調(diào)用虛擬機(jī)管理工具創(chuàng)建內(nèi)存快照,以及調(diào)用虛擬化管理工具創(chuàng)建磁盤快照;快照恢復(fù)單元,用于調(diào)用所述虛擬機(jī)管理工具對所述內(nèi)存快照進(jìn)行恢復(fù),以及調(diào)用所述虛擬化管理工具對所述磁盤快照進(jìn)行恢復(fù);快照刪除單元,用于調(diào)用所述虛擬機(jī)管理工具對所述內(nèi)存快照進(jìn)行刪除,以及調(diào)用所述虛擬化管理工具對所述磁盤快照進(jìn)行刪除。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述虛擬機(jī)管理工具為Libvirt,所述虛擬化管理工具為KVM或Xen。
全文摘要
本發(fā)明公開了一種云計(jì)算平臺(tái)虛擬機(jī)快照管理方法和系統(tǒng),該方法包括當(dāng)要為集群節(jié)點(diǎn)的虛擬機(jī)創(chuàng)建虛擬機(jī)快照時(shí),執(zhí)行以下步驟。準(zhǔn)備步驟如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,云計(jì)算平臺(tái)的控制節(jié)點(diǎn)通過調(diào)用虛擬機(jī)管理工具來將所述虛擬機(jī)暫停并創(chuàng)建所述虛擬機(jī)的內(nèi)存快照;磁盤快照步驟所述控制節(jié)點(diǎn)調(diào)用虛擬化管理工具來創(chuàng)建所述虛擬機(jī)的磁盤快照;后續(xù)處理步驟如果所述虛擬機(jī)的狀態(tài)為正在運(yùn)行,則通過調(diào)用所述虛擬化管理工具來利用所創(chuàng)建的內(nèi)存快照使得所述虛擬機(jī)恢復(fù)運(yùn)行。本發(fā)明提供良好的用戶快照管理體驗(yàn),保證了云計(jì)算平臺(tái)的一致性和穩(wěn)定性。
文檔編號G06F3/06GK102520881SQ201110397190
公開日2012年6月27日 申請日期2011年12月2日 優(yōu)先權(quán)日2011年12月2日
發(fā)明者蘭雨晴, 夏穎, 姚遠(yuǎn), 宋瀟豫 申請人:中標(biāo)軟件有限公司