一種桌面云計算環(huán)境下的虛擬機更新方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種桌面云計算環(huán)境下的虛擬機更新方法以及系統(tǒng),所述方法包含:虛擬機模板監(jiān)控步驟,監(jiān)控虛擬機模板從而判斷所述虛擬機模板是否被更新;虛擬機搜索步驟,當(dāng)所述虛擬機模板被更新時搜索出需要更新的虛擬機;更新信息推送步驟,根據(jù)更新后的所述虛擬機模板的模板信息構(gòu)造并推送虛擬機更新信息;虛擬機更新步驟,利用所述虛擬機更新信息對搜索到的所述虛擬機進(jìn)行虛擬機更新操作。本發(fā)明的更新系統(tǒng)包含監(jiān)控單元、搜索單元、更新信息構(gòu)造單元以及更新操作單元。與現(xiàn)有技術(shù)相比,基于本發(fā)明的方法以及系統(tǒng)可以自動對大量虛擬機進(jìn)行批量更新操作,從而大大減少了操作人員的工作量。
【專利說明】一種桌面云計算環(huán)境下的虛擬機更新方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,具體說涉及一種桌面云計算環(huán)境下的虛擬機更新方法和系統(tǒng)。
【背景技術(shù)】
[0002]云計算是一種新興的共享基礎(chǔ)架構(gòu)的方法,它將計算任務(wù)分布在大量計算機構(gòu)成的資源池上,使各種應(yīng)用系統(tǒng)能夠根據(jù)需要獲取計算力、存儲空間和各種軟件服務(wù)。云計算的底層需要虛擬化技術(shù)支持。通過虛擬化技術(shù),云計算可以實現(xiàn)對資源的靈活以及高效的使用,從而為用戶提供優(yōu)質(zhì)的服務(wù)。
[0003]云計算環(huán)境可分為桌面云計算環(huán)境與服務(wù)器云計算環(huán)境,其中桌面云計算側(cè)重于在云計算環(huán)境中實現(xiàn)物理桌面的虛擬化,以達(dá)到桌面使用的安全性和靈活性。用戶可以通過任何設(shè)備,在任何地點,任何時間訪問桌面云計算環(huán)境中的屬于他們個人的桌面系統(tǒng)。
[0004]桌面云計算的應(yīng)用場景很多,在其中一類應(yīng)用場景中,用戶基于統(tǒng)一的虛擬機模板建立多個相同的虛擬機以便用戶使用。當(dāng)虛擬機模板更新時,用戶即需要使用基于更新后虛擬機模板創(chuàng)建的虛擬機。例如在學(xué)校教學(xué)場景中虛擬機部署流程如下:教師制作好統(tǒng)一的虛擬機模板,然后用其創(chuàng)建相應(yīng)的桌面虛擬機,學(xué)生們使用相同的桌面虛擬機進(jìn)行課堂實驗。當(dāng)該教師需要更新教學(xué)使用的虛擬機時,需要重新制作一個新的虛擬機模板,然后使用該虛擬機模板重新創(chuàng)建所有的虛擬機,并刪除所有舊的虛擬機。這是一個繁瑣的過程,其大大增加了教師的工作量。
[0005]因此,針對上述虛擬機應(yīng)用中更新虛擬機的繁瑣操作,需要一種新的虛擬機更新方法及系統(tǒng)以減少操作人員的工作量。
【發(fā)明內(nèi)容】
[0006]為了減少虛擬機更新過程中的繁瑣操作,本發(fā)明提供了一種桌面云計算環(huán)境下的虛擬機更新方法,所述方法包含以下步驟:
[0007]虛擬機模板監(jiān)控步驟,監(jiān)控虛擬機模板從而判斷所述虛擬機模板是否被更新;
[0008]虛擬機搜索步驟,當(dāng)所述虛擬機模板被更新時,搜索出所有基于更新前的所述虛擬機模板創(chuàng)建的虛擬機;
[0009]更新信息推送步驟,根據(jù)更新后的所述虛擬機模板的模板信息構(gòu)造虛擬機更新信息,并基于搜索出的所述虛擬機的運行狀態(tài)將所述虛擬機更新信息推送至搜索到的所述虛擬機;
[0010]虛擬機更新步驟,利用所述虛擬機更新信息對搜索到的所述虛擬機進(jìn)行虛擬機更新操作。
[0011]在一實施例中,所述虛擬機模板監(jiān)控步驟包含以下步驟:
[0012]監(jiān)控模板操作步驟,監(jiān)控所述虛擬機模板從而判斷是否有更新操作被成功執(zhí)行;
[0013]模板信息比較步驟,當(dāng)所述更新操作被成功執(zhí)行時比較所述更新操作前后的所述模板信息從而判斷所述虛擬機模板是否被更新。
[0014]在一實施例中,所述監(jiān)控模板操作步驟包含以下步驟:
[0015]在用于操作虛擬機模板的管理程序的接口位置插入鉤子函數(shù),從而利用對所述鉤子函數(shù)的監(jiān)控來判斷是否存在虛擬機模板操作;
[0016]當(dāng)存在所述虛擬機模板操作時判斷所述虛擬機模板操作是否被成功執(zhí)行;
[0017]當(dāng)所述虛擬機模板操作被成功執(zhí)行時分析所述虛擬機模板操作的具體內(nèi)容從而判斷所述虛擬機模板操作是否為所述更新操作。
[0018]在一實施例中,在所述監(jiān)控模板操作步驟中,當(dāng)所述虛擬機模板操作被成功執(zhí)行時判斷所述虛擬機模板操作是否為模板建立操作,當(dāng)所述虛擬機模板操作為所述模板建立操作時將新建立的虛擬機模板保存入模板庫。
[0019]在一實施例中,所述模板信息包含配置信息以及磁盤信息。
[0020]在一實施例中,所述模板信息比較步驟包含以下步驟:
[0021]配置信息比較步驟,比較所述更新操作前后的所述配置信息從而判斷所述配置信息是否被更新;
[0022]磁盤信息比較步驟,比較所述更新操作前后的所述磁盤信息從而判斷所述磁盤信息是否被更新。
[0023]在一實施例中,所述磁盤信息比較步驟包含以下步驟:
[0024]比較所述更新操作前后的磁盤數(shù)目是否相同,當(dāng)所述更新操作前后的磁盤數(shù)目不同時所述磁盤信息被更新;
[0025]當(dāng)所述更新操作前后的磁盤數(shù)目相同時比較每個磁盤在所述更新操作前后的磁盤快照從而判斷所述磁盤信息是否被更新。
[0026]在一實施例中,所述虛擬機更新信息包含配置更新信息以及磁盤更新信息,所述更新信息推送步驟包含配置更新信息推送步驟,根據(jù)更新后的所述配置信息構(gòu)造并推送所述配置更新信息。
[0027]在一實施例中,所述更新信息推送步驟還包含磁盤更新信息推送步驟,所述磁盤更新信息推送步驟包含以下步驟:
[0028]根據(jù)更新后的所述磁盤信息構(gòu)造所述磁盤更新信息;
[0029]判斷所述虛擬機的運行狀態(tài);
[0030]當(dāng)所述虛擬機當(dāng)前沒有運行時,鎖死所述虛擬機并推送所述磁盤更新信息;
[0031]當(dāng)所述虛擬機當(dāng)前正在運行時,延后推送所述磁盤更新信息。
[0032]本發(fā)明還提供了一種桌面云計算環(huán)境下的虛擬機更新系統(tǒng),所述系統(tǒng)包含:
[0033]監(jiān)控單元,用于監(jiān)控虛擬機模板從而判斷所述虛擬機模板是否被更新;
[0034]搜索單元,其與所述監(jiān)控單元相連接,用于當(dāng)所述虛擬機模板被更新時,搜索出所有基于更新前的所述虛擬機模板創(chuàng)建的虛擬機;
[0035]更新信息構(gòu)造單元,其與所述監(jiān)控單元以及所述搜索單元相連,用于當(dāng)所述虛擬機模板被更新時,根據(jù)更新后的所述虛擬機模板的模板信息構(gòu)造虛擬機更新信息,并基于搜索出的所述虛擬機的運行狀態(tài)將所述虛擬機更新信息推送至搜索到的所述虛擬機;
[0036]更新操作單元,其與所述更新信息構(gòu)造單元相連并連接到每臺所述虛擬機,用于利用所述虛擬機更新信息對搜索到的所述虛擬機進(jìn)行虛擬機更新操作。
[0037]與現(xiàn)有技術(shù)相比,基于本發(fā)明的方法以及系統(tǒng)可以自動對大量虛擬機進(jìn)行批量更新操作,從而大大減少了操作人員的工作量。
[0038]本發(fā)明的其它特征或優(yōu)點將在隨后的說明書中闡述。并且,本發(fā)明的部分特征或優(yōu)點將通過說明書而變得顯而易見,或者通過實施本發(fā)明而被了解。本發(fā)明的目的和部分優(yōu)點可通過在說明書、權(quán)利要求書以及附圖中所特別指出的步驟來實現(xiàn)或獲得。
【專利附圖】
【附圖說明】
[0039]附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
[0040]圖1是根據(jù)本發(fā)明一實施例的流程圖;
[0041]圖2是根據(jù)本發(fā)明一實施例的系統(tǒng)結(jié)構(gòu)簡圖。
【具體實施方式】
[0042]以下將結(jié)合附圖及實施例來詳細(xì)說明本發(fā)明的實施方式,借此本發(fā)明的實施人員可以充分理解本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實現(xiàn)過程并依據(jù)上述實現(xiàn)過程具體實施本發(fā)明。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個實施例以及各實施例中的各個特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。
[0043]在桌面云計算環(huán)境下,虛擬機的創(chuàng)建以及使用具有眾多不同的方式。其中一種方式是基于虛擬機模板創(chuàng)建虛擬機。首先建立統(tǒng)一的虛擬機模板,然后根據(jù)虛擬機模板創(chuàng)建多個相同的虛擬機以便用戶使用。在此種情況中,如果虛擬機模板被更新,那么就需要根據(jù)新的虛擬機模板創(chuàng)建新的虛擬機以便用戶使用。此時就需要針對每一個用戶創(chuàng)建新的虛擬機并刪除舊的虛擬機。整個虛擬機的創(chuàng)建以及刪除工作勢必帶來巨大的工作量。
[0044]本發(fā)明公開了一種云計算環(huán)境下的虛擬機更新方法以及系統(tǒng)?;诒景l(fā)明的方法以及系統(tǒng)可以自動對基于統(tǒng)一虛擬機模板建立的大量虛擬機進(jìn)行批量更新操作,從而大大減少了操作人員的工作量。接下來基于流程圖來詳細(xì)說明本發(fā)明的一實施例的詳細(xì)執(zhí)行過程。附圖的流程圖中示出的步驟可以在包含諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行。雖然在流程圖中示出了各步驟的邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0045]本發(fā)明的虛擬機更新方法的目的是在虛擬機模板被更新后自動更新相應(yīng)的虛擬機。在本發(fā)明一實施例中,執(zhí)行虛擬機更新方法首先要判斷虛擬機模板是否被更新,如圖1所示,執(zhí)行虛線框192內(nèi)的步驟。當(dāng)虛擬機模板被更新后則更新相應(yīng)的虛擬機。
[0046]基于對虛擬機模板的相關(guān)特征分析,在本實施例中,將虛擬機模板的信息分為兩大類。一類是配置信息,其包含創(chuàng)建虛擬機所需的處理器(CPU)、內(nèi)存、網(wǎng)卡設(shè)備信息等設(shè)備信息。另一類是磁盤信息,其包含創(chuàng)建虛擬機所需的磁盤數(shù)目以及每個磁盤上的數(shù)據(jù)信息。本實施例基于模板信息的分類構(gòu)造了用于虛擬機更新的更新數(shù)據(jù)結(jié)構(gòu)體。更新數(shù)據(jù)結(jié)構(gòu)體中包含有用于更新的的配置信息以及磁盤信息??紤]到磁盤信息的數(shù)據(jù)量較大,因此在本實施例的更新數(shù)據(jù)結(jié)構(gòu)體中使用了磁盤更新標(biāo)志位,磁盤更新的標(biāo)志位用于標(biāo)記是否要進(jìn)行磁盤更新,磁盤更新時所需的具體磁盤信息則參照更新后的虛擬機模板的磁盤信息。
[0047]在本實施例中,首先要判斷虛擬機模板是否被更新,這就要判斷上述虛擬機模板的信息是否發(fā)生變化。當(dāng)上述虛擬機模板的信息發(fā)生變化時,即虛擬機模板被更新,此時就需要對相應(yīng)的虛擬機進(jìn)行更新。判斷虛擬機模板的信息是否發(fā)生變化,首先要獲取虛擬機模板的初始信息(即變化前的信息)。因此虛擬機更新系統(tǒng)啟動時首先要執(zhí)行一個初始化步驟。在本實施例中,在云計算平臺管理程序啟動過程的最后,執(zhí)行初始化步驟,獲取虛擬機模板的初始信息,初始化更新數(shù)據(jù)結(jié)構(gòu)體以及相關(guān)用于虛擬機更新的存儲器。
[0048]如圖1所示,在初始化步驟中,針對虛擬機模板的配置信息執(zhí)行步驟S101,獲取當(dāng)前虛擬機模板的配置信息并保存到內(nèi)存中。
[0049]在本實施例中,虛擬機的磁盤信息包括磁盤數(shù)目以及每個磁盤上的數(shù)據(jù)信息。針對虛擬機模板的磁盤信息,首先執(zhí)行步驟S103,獲取當(dāng)前虛擬機模板的磁盤數(shù)目并保存到內(nèi)存中。由于磁盤上的數(shù)據(jù)信息通常數(shù)據(jù)量很大,因此本實施例中基于磁盤快照來分析磁盤信息的變換。在這里執(zhí)行步驟S102,對當(dāng)前虛擬機模板的所有磁盤做磁盤快照,并將快照保存到指定位置,將快照的位置信息保存在內(nèi)存中。
[0050]接下來就可以執(zhí)行虛線框192內(nèi)的虛擬機模板監(jiān)控步驟,監(jiān)控虛擬機模板從而判斷虛擬機模板是否被更新。由于監(jiān)控行為應(yīng)當(dāng)是即時進(jìn)行的,即系統(tǒng)要一直進(jìn)行監(jiān)控操作。為了減少系統(tǒng)負(fù)擔(dān),本實施例采用了逐層遞進(jìn)的監(jiān)控方式,首先監(jiān)控最容易監(jiān)控的變量,根據(jù)監(jiān)控需求逐級觸發(fā)計算量更大的監(jiān)控判斷層面。從而在不影響最終監(jiān)控判斷結(jié)果的準(zhǔn)確度的情況下盡可能的降低系統(tǒng)需要一直保持的監(jiān)控操作的計算量。
[0051]在本實施例中,判斷虛擬機模板是否被更新首先是要檢測是否存在更新操作。這里執(zhí)行步驟S111,插入鉤子函數(shù),在編輯、新建虛擬機模板等可能導(dǎo)致虛擬機模板發(fā)生變化的管理程序接口位置插入鉤子函數(shù)。接下來就可以執(zhí)行步驟S112,監(jiān)控鉤子函數(shù),從而利用對鉤子函數(shù)的監(jiān)控來判斷是否存在虛擬機模板操作。
[0052]系統(tǒng)不斷的監(jiān)控設(shè)置的鉤子函數(shù)是否被觸發(fā)。當(dāng)鉤子函數(shù)沒有被觸發(fā)時則說明當(dāng)前不存在虛擬機模板操作,當(dāng)鉤子函數(shù)被觸發(fā)時則說明當(dāng)前存在虛擬機模板操作,此時執(zhí)行步驟S113,判斷操作執(zhí)行成敗,即判斷觸發(fā)了鉤子函數(shù)的虛擬機模板操作是否被成功的執(zhí)行。
[0053]在本實施例中,虛擬機模板操作可分為更新操作以及模板建立操作兩類。更新操作是基于現(xiàn)有的模板進(jìn)行操作,更新現(xiàn)有模板的相關(guān)信息,從而生成所需的虛擬機模板。模板建立操作則是建立全新的虛擬機模板。本發(fā)明的主要目的是在虛擬機模板被更新后自動更新相應(yīng)的虛擬機。不難理解,當(dāng)虛擬機模板操作為建立新模板操作時,并沒有以創(chuàng)建好的虛擬機與新模板對應(yīng),接下來需要的是基于新建立的模板創(chuàng)建新的虛擬機,因此接下來也就暫時不需要進(jìn)行虛擬機更新操作。
[0054]因此在本實施例中,當(dāng)虛擬機模板操作被成功執(zhí)行時就需要執(zhí)行步驟S121,分析虛擬機模板操作的具體內(nèi)容從而判斷虛擬機模板操作是否為更新操作,也就是判斷是否建立了新的模板。當(dāng)虛擬機模板操作為更新操作時,即用戶沒有建立新的模板而是基于現(xiàn)有的模板進(jìn)行操作時就可以執(zhí)行模板信息比較步驟,比較虛擬機模板操作前后的模板信息從而判斷虛擬機模板是否被更新。
[0055]相較建立新的模板,基于現(xiàn)有的模板進(jìn)行更新操作會大大減少操作步驟,從而減少工作量。為了使得用戶在調(diào)用模板時擁有更大的選擇范圍,需要不斷擴充系統(tǒng)中所保存的模板的數(shù)量。因此在本實施例中,當(dāng)虛擬機模板操作為模板建立操作時,執(zhí)行步驟S122,將新的模板保存到樣本模板庫中以便以后調(diào)用。
[0056]新模板被保存后,系統(tǒng)接下來就需要對新模板監(jiān)控,從而在新模板更新后更新由新模板創(chuàng)建的虛擬機。因此為了對新模板進(jìn)行監(jiān)控,在監(jiān)控新模板之前還要執(zhí)行步驟S123,保存新模板的初始信息,即針對新模板執(zhí)行類似步驟S101、S102以及S103的操作,將新樣本模板的配置信息更新到內(nèi)存中,對新樣本模板的磁盤做磁盤快照,并將快照保存到指定位置,將快照的位置信息保存在內(nèi)存中。
[0057]在本實施例中,考慮到用戶在建立新的樣本模板時也有可能建立出與原有樣本模板相同的樣本模板。因此在步驟S121中還需要一個二次確認(rèn)步驟。即將新建的模板與所有原有的模板作對比,當(dāng)新建的模板與所有模板均不一致時才可以確定虛擬機模板操作為模板建立操作且建立了新的模板。當(dāng)然的,基于實際情況,上述二次確認(rèn)步驟也可以省略。
[0058]本實施例將模板信息分為了配置信息以及磁盤信息。因此模板信息比較時首先執(zhí)行步驟S131,配置信息比較步驟,比較虛擬機模板操作前后的虛擬機模板配置信息從而獲取比較結(jié)果。系統(tǒng)獲取更新后的配置信息,并與內(nèi)存中保存的配置信息進(jìn)行比較。當(dāng)更新前后的配置信息不同時,執(zhí)行步驟S132,對比更新前后的配置信息的不同并將變化了的部分保存到更新數(shù)據(jù)結(jié)構(gòu)體中。然后執(zhí)行步驟S133,將更新后的配置信息全部保存到內(nèi)存中并刪除內(nèi)存中保存的更新前的配置信息以便執(zhí)行下一次的更新判斷。
[0059]當(dāng)步驟S133執(zhí)行完畢或者更新前后的虛擬機模板的配置信息相同時,接下來就要執(zhí)行磁盤信息比較步驟,比較虛擬機模板操作前后的磁盤信息從而獲取比較結(jié)果。在本實施例中,將磁盤信息分為磁盤數(shù)目以及每個磁盤上的數(shù)據(jù)信息。不難理解,磁盤數(shù)目比較容易分析,因此首先執(zhí)行步驟S141,比較虛擬機模板操作前后的磁盤數(shù)目是否相同。如果磁盤數(shù)目發(fā)生了變化,則直接說明磁盤信息發(fā)生了變化。
[0060]對當(dāng)磁盤數(shù)目沒有變化時,則需要執(zhí)行步驟S142,對比磁盤快照,比較每個磁盤在虛擬機模板操作前后的磁盤快照是否相同。在步驟S142中,首先對虛擬機模板操作后的模板磁盤做快照,然后對比新的快照與之前步驟S102中獲取的快照是否相同。如果磁盤數(shù)目發(fā)生變化或者磁盤快照不同,則需要執(zhí)行步驟S143,將更新數(shù)據(jù)結(jié)構(gòu)體中的磁盤更新標(biāo)志位標(biāo)記為是。然后執(zhí)行步驟S144,刪除指定位置的舊的磁盤快照并將新快照保存到指定位置。最后更新內(nèi)存中的快照的位置信息以及磁盤數(shù)目信息。
[0061]當(dāng)磁盤信息以及配置信息的對比判斷都完成后就可以執(zhí)行步驟S150,判斷是否需要執(zhí)行更新操作。在本實施例中,即是檢查生成的更新數(shù)據(jù)結(jié)構(gòu)體是否為空。
[0062]本發(fā)明的目的是對所有需要更新的虛擬機自動進(jìn)行更新。因此當(dāng)需要執(zhí)行更新操作時,首先要篩選出需要更新的虛擬機。本實施例中,虛擬機是基于虛擬機模板創(chuàng)建的,如果用于創(chuàng)建虛擬機的虛擬機模板被更新了,那么基于更新前的該模板被創(chuàng)建的虛擬機就需要被更新。因此在本實施例中需要執(zhí)行步驟S160,虛擬機搜索步驟,當(dāng)某一虛擬機模板被更新時,搜索出所有基于更新前的該虛擬機模板創(chuàng)建的虛擬機。在此過程中,系統(tǒng)根據(jù)更新數(shù)據(jù)結(jié)構(gòu)體中的虛擬機模板編號從數(shù)據(jù)庫中查找所有使用該虛擬機模板的虛擬機。
[0063]然后就可以執(zhí)行更新信息推送步驟,基于虛擬機的運行狀態(tài)根據(jù)更新后的虛擬機模板的模板信息構(gòu)造并推送虛擬機更新信息。在本實施例中,虛擬機更新信息包含配置更新信息以及磁盤更新信息。針對不同的虛擬機更新信息采取不同的構(gòu)造以及推送策略。因此在更新信息推送步驟以及之后的虛擬機更新步驟是針對每個虛擬機依次完成的。循環(huán)處理每一個虛擬機,當(dāng)所有的虛擬機都處理完畢,則本次更新過程結(jié)束。
[0064]在更新信息推送步驟中,系統(tǒng)首先執(zhí)行步驟S171,判斷是否需要更新配置信息。當(dāng)需要更新配置信息時,執(zhí)行步驟S172,根據(jù)更新后的配置信息構(gòu)造并推送配置更新信息。
[0065]然后執(zhí)行步驟S173,判斷是否需要更新磁盤信息。檢查更新數(shù)據(jù)結(jié)構(gòu)體中的磁盤更新標(biāo)志位,若標(biāo)志位為是,即當(dāng)需要更新磁盤信息時,執(zhí)行步驟S174,根據(jù)更新后的磁盤信息構(gòu)造磁盤更新信息。由于磁盤信息無法在虛擬機運行時進(jìn)行更新,因此在步驟S174之后需要執(zhí)行步驟S175,判斷虛擬機是否運行。當(dāng)虛擬機正在運行,則執(zhí)行步驟S176,延遲推送直到虛擬機停止運行。
[0066]為了執(zhí)行步驟S176中,本實施例在最初的初始化步驟中就首先初始化一個定時器以及一塊定時推送緩沖區(qū)。計時器用于定期檢查緩沖區(qū)內(nèi)容以及系統(tǒng)其他變量,以確定是否發(fā)起推送操作。定時推送緩沖區(qū)用于保存當(dāng)前需要延遲推送的磁盤更新信息,包括虛擬機編號、虛擬機模板編號、更新的磁盤列表。需要指出的是,本實施例中的初始化步驟,即S10US102以及S103中的信息獲取操作以及上述定時器、定時推送緩沖區(qū)的初始化操作只需要在虛擬機更新系統(tǒng)剛啟動時執(zhí)行。
[0067]在步驟S176中,將更新數(shù)據(jù)結(jié)構(gòu)體中的磁盤信息連同虛擬機編號、虛擬機模板編號作為一條記錄保存到定時推送緩沖區(qū)中。為了保證操作的唯一性,定時推送緩沖區(qū)中的虛擬機編號是唯一的,即同一時刻,一個虛擬機在定時推送緩沖區(qū)中只能有一條記錄;當(dāng)新的記錄發(fā)送到定時推送緩沖區(qū)而舊的記錄還未處理時,則將新的記錄覆蓋掉舊的記錄,從而避免沖突問題。
[0068]根據(jù)預(yù)先設(shè)置好的定時器間隔,更新模塊每隔設(shè)定好的時間間隔,讀出定時推送緩沖區(qū)中的內(nèi)容,循環(huán)處理每條記錄,根據(jù)每條記錄中的虛擬機編號,獲取虛擬機信息并檢查虛擬機是否處于運行狀態(tài),如果虛擬機狀態(tài)為正在運行,則本過程結(jié)束,否則發(fā)起推送并在推送成功后刪除定時推送緩沖區(qū)中該條記錄。
[0069]當(dāng)虛擬機停止運行時,則首先執(zhí)行步驟S177,鎖死虛擬機。在鎖死狀態(tài)下,虛擬機無法進(jìn)行任何操作。然后執(zhí)行步驟S178,推送磁盤更新信息。
[0070]最后則可以根據(jù)推送出的配置更新信息或磁盤更新信息進(jìn)行步驟S181(更新虛擬機磁盤)或步驟S182(更新虛擬機配置)。在本實施例中,首先執(zhí)行步驟S182。步驟S182既可以可以在虛擬機停止運行時執(zhí)行也可以在虛擬機運行的同時執(zhí)行。在步驟S182中,根據(jù)更新數(shù)據(jù)結(jié)構(gòu)體中的數(shù)據(jù)類型的不同,分別調(diào)用底層的虛擬機接口完成CPU熱插拔、內(nèi)存在線分配、網(wǎng)卡熱插拔等操作。
[0071]接下來執(zhí)行步驟S181,步驟181只能在虛擬機停止運行時執(zhí)行且在執(zhí)行步驟S181時虛擬機無法被操作。在步驟S181中,根據(jù)更新數(shù)據(jù)結(jié)構(gòu)體中的磁盤更新標(biāo)志位決定是否更新磁盤,如不需要更新,則本步驟結(jié)束;如需要更新,則刪除虛擬機的所有磁盤,并根據(jù)更新數(shù)據(jù)結(jié)構(gòu)體中的磁盤信息,將虛擬機模板的所有磁盤復(fù)制為虛擬機的磁盤。為了保證其他虛擬機的讀寫效率,在本實施例中,同時進(jìn)行磁盤更新的虛擬機不超過3個。
[0072]基于本發(fā)明的虛擬機更新方法,本發(fā)明還提出了一種虛擬機更新系統(tǒng)。圖2所示為使用本實施例的虛擬機更新方法的一套虛擬機系統(tǒng)。本實施例主要依托中標(biāo)麒麟高級服務(wù)器虛擬化版來構(gòu)建虛擬機更新系統(tǒng),需要指出的是,本發(fā)明的虛擬機更新系統(tǒng)也可以依托其他虛擬機控制平臺來構(gòu)建。
[0073]如圖2所示,從整體架構(gòu)上看,虛擬機控制平臺包含管理節(jié)點254、儲存設(shè)備210以及集群節(jié)點250、251以及252。存儲設(shè)備210是整個云計算環(huán)境的基礎(chǔ)設(shè)備之一,虛擬機磁盤、模板磁盤都保存在存儲設(shè)備上。如圖2所示,存儲設(shè)備210內(nèi)保存有虛擬機磁盤212、213以及214、模板磁盤211。
[0074]管理節(jié)點和集群節(jié)點通過網(wǎng)絡(luò)與存儲設(shè)備連接,并可在存儲設(shè)備上進(jìn)行相關(guān)操作。在本實施例中,桌面云計算平臺中允許存在一個管理節(jié)點以及多個集群節(jié)點,管理節(jié)點通過網(wǎng)絡(luò)對多個集群節(jié)點進(jìn)行管理。如圖2中,管理節(jié)點254下管理集群節(jié)點250、251以及 252。
[0075]管理節(jié)點254是虛擬機控制平臺的管理端,其上構(gòu)造并運行著對桌面云計算環(huán)境進(jìn)行管理的云計算平臺管理模塊200。
[0076]云計算平臺管理模塊200,其包含模板操作單元201以及模板配置單元203。用戶通過模板操作單元201在模板配置單元中選取或創(chuàng)建虛擬機模板,配置所需的虛擬機模板配置,并在存儲設(shè)備中構(gòu)建與上述配置相應(yīng)的模板磁盤211。接著基于虛擬機模板配置以及模板磁盤211創(chuàng)建相應(yīng)的虛擬機。
[0077]在本實施例中,一個虛擬機包括桌面虛擬機(虛擬機運行環(huán)境、系統(tǒng)等配置設(shè)定)以及虛擬機磁盤?;谝粋€虛擬機模板配置以及相應(yīng)的模板磁盤可以創(chuàng)建多個相同的虛擬機。如圖2中桌面虛擬機242和對應(yīng)的虛擬機磁盤212、桌面虛擬機243和對應(yīng)的虛擬機磁盤213以及桌面虛擬機244和對應(yīng)的虛擬機磁盤214就是基于同一個虛擬機模板配置以及模板磁盤211創(chuàng)建的相同的三套虛擬機。另外在本實施例中,用戶還可以在管理節(jié)點上配置多個不同的虛擬機模板并基于不同的虛擬機模板創(chuàng)建不同的虛擬機。
[0078]集群節(jié)點是提供桌面虛擬機服務(wù)的服務(wù)器,例如集群節(jié)點250上運行有桌面虛擬機 242、243 以及 244。
[0079]本實施例的虛擬機更新系統(tǒng)依托虛擬機控制平臺構(gòu)建,其包含監(jiān)控單元220、搜索單元260、更新信息構(gòu)造單元270以及更新操作單元230。監(jiān)控單元220、搜索單元260、更新信息構(gòu)造單元270被構(gòu)造在管理節(jié)點254上。其中,監(jiān)控單元220與云計算平臺管理模塊200相連,用于監(jiān)控虛擬機模板從而判斷虛擬機模板是否被更新作用。
[0080]搜索單元260與監(jiān)控單元220相連,用于基于監(jiān)控單元220的判斷結(jié)果搜索使用被更新的虛擬機模板的虛擬機并輸出搜索結(jié)果,當(dāng)虛擬機模板被更新時搜索出所有使用被更新的虛擬機模板的虛擬機。
[0081]更新信息構(gòu)造單元270與監(jiān)控單元220以及搜索單元260相連,用于當(dāng)虛擬機模板被更新時基于被更新的虛擬機的運行狀態(tài)根據(jù)更新后的虛擬機模板的模板信息構(gòu)造并推送虛擬機更新信息。
[0082]在本實施例中,為了便于針對不同的集群節(jié)點執(zhí)行虛擬機更新操作,在每個集群節(jié)點上構(gòu)造有相應(yīng)的更新操作單元。如圖2所示集群節(jié)點250上構(gòu)造有更新操作單元230。當(dāng)然的也可以針對所有集群節(jié)點構(gòu)造一個統(tǒng)一的更新操作單元。更新操作單元230與更新信息構(gòu)造單元270相連并連接到集群節(jié)點250上的每臺虛擬機,用于基于虛擬機更新信息對相應(yīng)的虛擬機執(zhí)行更新操作。
[0083]在本實施例中,監(jiān)控單元220監(jiān)控所有虛擬機模板的變化,包括配置信息、磁盤、網(wǎng)絡(luò)設(shè)備等。當(dāng)監(jiān)控單元220發(fā)現(xiàn)某個虛擬機模板被更新時,激活搜索單元260。搜索單元260查找云計算平臺管理模塊200的數(shù)據(jù)庫,查找所有使用該虛擬機模板的虛擬機。與此同時更新信息構(gòu)造單元270也構(gòu)造相應(yīng)的虛擬機更新信息(配置更新信息以及磁盤更新信息)。假如搜索單元260的搜索結(jié)果是發(fā)生更新的虛擬機模板對應(yīng)的虛擬機為集群節(jié)點250上運行的虛擬機,則更新信息構(gòu)造單元270將構(gòu)造好的虛擬機更新信息推送給更新操作單元230。(當(dāng)然,在推送過程中需要檢測虛擬機的運行狀態(tài),這里就不多加贅述。)更新操作單元230基于虛擬機更新信息調(diào)用相關(guān)虛擬機所在節(jié)點上的操作模塊或直接操作存儲設(shè)備進(jìn)行不同的處理。即對存儲設(shè)備中的虛擬機磁盤212、213以及214,還有集群節(jié)點250上的桌面虛擬機242、243以及244執(zhí)行更新操作。
[0084] 雖然本發(fā)明所公開的實施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。本發(fā)明所述的方法還可有其他多種實施例。在不背離本發(fā)明實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變或變形,但這些相應(yīng)的改變或變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種桌面云計算環(huán)境下的虛擬機更新方法,其特征在于,所述方法包含以下步驟: 虛擬機模板監(jiān)控步驟,監(jiān)控虛擬機模板從而判斷所述虛擬機模板是否被更新; 虛擬機搜索步驟,當(dāng)所述虛擬機模板被更新時,搜索出所有基于更新前的所述虛擬機模板創(chuàng)建的虛擬機; 更新信息推送步驟,根據(jù)更新后的所述虛擬機模板的模板信息構(gòu)造虛擬機更新信息,并基于搜索出的所述虛擬機的運行狀態(tài)將所述虛擬機更新信息推送至搜索到的所述虛擬機; 虛擬機更新步驟,利用所述虛擬機更新信息對搜索到的所述虛擬機進(jìn)行虛擬機更新操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述虛擬機模板監(jiān)控步驟包含以下步驟: 監(jiān)控模板操作步驟,監(jiān)控所述虛擬機模板從而判斷是否有更新操作被成功執(zhí)行; 模板信息比較步驟,當(dāng)所述更新操作被成功執(zhí)行時比較所述更新操作前后的所述模板信息從而判斷所述虛擬機模板是否被更新。
3.如權(quán)利要求2所述的方法,其特征在于,所述監(jiān)控模板操作步驟包含以下步驟: 在用于操作虛擬機模板的管理程序的接口位置插入鉤子函數(shù),從而利用對所述鉤子函數(shù)的監(jiān)控來判斷是否存在虛擬機模板操作; 當(dāng)存在所述虛擬機模板操作時判斷所述虛擬機模板操作是否被成功執(zhí)行; 當(dāng)所述虛擬機模板操作被成功執(zhí)行時分析所述虛擬機模板操作的具體內(nèi)容從而判斷所述虛擬機模板操作是否為所述更新操作。
4.如權(quán)利要求3所述的方法,其特征在于,在所述監(jiān)控模板操作步驟中,當(dāng)所述虛擬機模板操作被成功執(zhí)行時判斷所述虛擬機模板操作是否為模板建立操作,當(dāng)所述虛擬機模板操作為所述模板建立操作時將新建立的虛擬機模板保存入模板庫。
5.如權(quán)利要求2所述的方法,其特征在于,所述模板信息包含配置信息以及磁盤信息。
6.如權(quán)利要求5所述的方法,其特征在于,所述模板信息比較步驟包含以下步驟: 配置信息比較步驟,比較所述更新操作前后的所述配置信息從而判斷所述配置信息是否被更新; 磁盤信息比較步驟,比較所述更新操作前后的所述磁盤信息從而判斷所述磁盤信息是否被更新。
7.如權(quán)利要求6所述的方法,其特征在于,所述磁盤信息比較步驟包含以下步驟: 比較所述更新操作前后的磁盤數(shù)目是否相同,當(dāng)所述更新操作前后的磁盤數(shù)目不同時所述磁盤信息被更新; 當(dāng)所述更新操作前后的磁盤數(shù)目相同時比較每個磁盤在所述更新操作前后的磁盤快照從而判斷所述磁盤信息是否被更新。
8.如權(quán)利要求5所述的方法,其特征在于,所述虛擬機更新信息包含配置更新信息以及磁盤更新信息,所述更新信息推送步驟包含配置更新信息推送步驟,根據(jù)更新后的所述配置信息構(gòu)造并推送所述配置更新信息。
9.如權(quán)利要求8所述的方法,其特征在于,所述更新信息推送步驟還包含磁盤更新信息推送步驟,所述磁盤更新信息推送步驟包含以下步驟: 根據(jù)更新后的所述磁盤信息構(gòu)造所述磁盤更新信息; 判斷所述虛擬機的運行狀態(tài); 當(dāng)所述虛擬機當(dāng)前沒有運行時,鎖死所述虛擬機并推送所述磁盤更新信息; 當(dāng)所述虛擬機當(dāng)前正在運行時,延后推送所述磁盤更新信息。
10.一種桌面云計算環(huán)境下的虛擬機更新系統(tǒng),其特征在于,所述系統(tǒng)包含: 監(jiān)控單元,用于監(jiān)控虛擬機模板從而判斷所述虛擬機模板是否被更新; 搜索單元,其與所述監(jiān)控單元相連接,用于當(dāng)所述虛擬機模板被更新時,搜索出所有基于更新前的所述虛擬機模板創(chuàng)建的虛擬機; 更新信息構(gòu)造單元,其與所述監(jiān)控單元以及所述搜索單元相連,用于當(dāng)所述虛擬機模板被更新時,根據(jù)更新后的所述虛擬機模板的模板信息構(gòu)造虛擬機更新信息,并基于搜索出的所述虛擬機的運行狀態(tài)將所述虛擬機更新信息推送至搜索到的所述虛擬機; 更新操作單元,其與所述更新信息構(gòu)造單元相連并連接到每臺所述虛擬機,用于利用所述虛擬機更新信息對搜索到的所述虛擬機進(jìn)行虛擬機更新操作。
【文檔編號】H04L29/08GK104461693SQ201410766455
【公開日】2015年3月25日 申請日期:2014年12月11日 優(yōu)先權(quán)日:2014年12月11日
【發(fā)明者】姚遠(yuǎn), 喬詠, 趙峰, 馬立克, 蔣濤, 張維婷, 宋瀟豫, 張永軍 申請人:中標(biāo)軟件有限公司