擬機中的軟件進行升級,本步驟中將獲取滿足升級要求的虛擬機上的軟件對應的升級組件。
[0140]關于獲取滿足升級要求的虛擬機上的軟件對應的升級組件的方式,本實施例不作具體的限定,由于服務器的tdb數(shù)據(jù)庫中預先存儲著,因此,包括但不限于從存儲服務器上軟件對應的升級組件的tdb數(shù)據(jù)庫中獲取。
[0141]需要說明的是,tdb數(shù)據(jù)庫中存儲的組件有Virtual PC、VMware Workstat1n、PVDriver等,由于對PV Driver組件的升級是對其他軟件對應的升級組件進行升級的基礎,在PV Driver組件升級后,其他軟件對應的升級組件才能進行升級,因此,在獲取軟件對應的升級組件時,若有PV Driver組件存在,需要先獲取PV Driver組件。
[0142]305:通過與滿足升級要求的虛擬機之間預先建立的升級通道將獲取到的升級組件發(fā)送至滿足升級要求的虛擬機中。
[0143]針對該步驟,由于上述步驟304服務器已經(jīng)獲取了軟件對應的升級組件,且通過上述步驟303建立了與各個虛擬機之間的升級通道,因此,本步驟中服務器可以通過與滿足升級要求的虛擬機之間預先建立的升級通道將獲取到的升級組件發(fā)送至滿足升級要求的虛擬機中。
[0144]具體地,如果服務器所使用的操作系統(tǒng)為Iinux操作系統(tǒng),虛擬機所使用的操作系統(tǒng)為Windows操作系統(tǒng)或Iinux操作系統(tǒng),不同的操作系統(tǒng)下軟件的配置是不同的,因此,服務器在通過與滿足升級要求的虛擬機之間預先建立的升級通道向滿足升級要求的虛擬機中發(fā)送獲取到的升級組件時,需要先判斷虛擬機所使用的操作系統(tǒng)。關于判斷虛擬機所使用的操作系統(tǒng)的方式,包括但不限于通過設置/local/domain/vmid/control/uvp/windows_flag的值進行判斷,具體設置時,可以將flag的值設為I代表是windows操作系統(tǒng),將flag的值設為O代表Iinux操作系統(tǒng),也可以將flag的值設為O代表是windows操作系統(tǒng),將flag的值設為I代表Iinux操作系統(tǒng),當然flag的值除了 O和I以外,當然,也可以設置為其他值,本實施例不對判斷虛擬機所使用的操作系統(tǒng)的方式作具體限定。
[0145]在判斷虛擬機所使用的操作系統(tǒng)后,為了向使用不同的操作系統(tǒng)的虛擬機發(fā)送不同操作系統(tǒng)下適用的升級組件,本實施例提供的方法在向使用不同的操作系統(tǒng)的虛擬機發(fā)送升級組件之前,需要先根據(jù)所發(fā)送升級組件的虛擬機修改/usr/bin/pvdrive;r_upgrade/目錄下的配置文件。通過修改/usr/bin/pvdriver_upgrade/目錄下的配置文件,從而使不同的操作系統(tǒng)的虛擬機可接收到不同操作系統(tǒng)下適用的升級組件。
[0146]進一步地,在向使用不同的操作系統(tǒng)的虛擬機發(fā)送不同操作系統(tǒng)下適用的升級組件后,服務器還將向虛擬機的control/upv/upgrade/mountiso鍵寫入mount-tools-1so,觸發(fā)虛擬機拷貝升級文件。當所有滿足升級要求的虛擬機將升級組件拷貝完成后,將升級組件拷貝完成的虛擬機還將向服務器的/local/domain/vmid/control/uvp/upgrade/ftpfail寫入tools-upgrade-ok,觸發(fā)服務器將該升級組件進行卸載。
[0147]需要說明的是,由于升級PV Driver組件是對其他軟件對應的升級組件進行升級的基礎,上述步驟304中優(yōu)先獲取了 PV Driver組件,因此,本步驟通過與滿足升級要求的虛擬機之間預先建立的升級通道將獲取到的升級組件發(fā)送至滿足升級要求的虛擬機中時,也將優(yōu)先發(fā)送PV Driver組件。
[0148]306:控制滿足升級要求的虛擬機根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級。
[0149]針對該步驟,滿足升級要求的虛擬機將升級組件拷貝完成后,本實施例提供的方法還將控制滿足升級要求的虛擬機根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級。具體地,關于控制滿足升級要求的虛擬機根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級,包括但不限于:
[0150]通過升級通道向滿足升級要求的虛擬機發(fā)送升級指令,使?jié)M足升級要求的虛擬機接收到升級指令后,根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級。
[0151]具體地,服務器可向服務器與虛擬機之間共享的存儲系統(tǒng)寫入start^pgrade,共享的存儲系統(tǒng)在接收到服務器發(fā)送的命令后,將通過升級通道將該指令發(fā)送給滿足升級要求的對應的虛擬機,滿足升級要求的虛擬機在接收到服務器發(fā)送的指令后,將根據(jù)該指令和升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級。
[0152]307:對進行組件升級的虛擬機進行重啟操作。
[0153]針對該步驟,雖然上述步驟306中已使?jié)M足升級要求的虛擬機上的軟件對應的組件進行升級,但后續(xù)還需對進行組件升級的虛擬機進行重啟操作以完成軟件對應的組件的升級工作。具體地,關于對進行組件升級的虛擬機進行重啟操作的方式,本實施例不作具體的限定,包括但不限于服務器觸發(fā)服務器與虛擬機之間共享的存儲系統(tǒng)中的watch使虛擬機彈出提示框,提示用戶進行重啟操作的確認,并在收到確認指令后,對進行組件升級的虛擬機進行重啟操作,以完成升級。
[0154]308:通過升級通道獲取滿足升級要求的虛擬機對滿足升級要求的虛擬機上的軟件對應的組件進行升級后的升級結果。
[0155]該步驟為優(yōu)選步驟,為了便于系統(tǒng)的整體維護和升級,方便用戶隨時獲知虛擬機中軟件對應的組件的升級結果,本實施例提供的方法在對虛擬機中的軟件對應的組件進行升級后,還將通過升級通道獲取滿足升級要求的虛擬機對滿足升級要求的虛擬機上的軟件對應的組件進行升級后的升級結果,并通過升級通道將獲取到的滿足升級要求的虛擬機對滿足升級要求的虛擬機上的軟件對應的組件進行升級后的升級結果寫入到服務器和虛擬機之間共享的存儲系統(tǒng)中。
[0156]進一步地,一段時間后,若用戶想要獲知虛擬機中軟件對應的組件的升級結果,可通過向服務器寫入gentresult.sh命令,進而從服務器和虛擬機之間共享的存儲系統(tǒng)中獲取升級結果。
[0157]本發(fā)明實施例提供的方法,通過判斷在線的虛擬機是否滿足升級要求,進而獲取滿足升級要求的虛機上的軟件對應的升級組件,并通過預先建立的升級通道將獲取到的升級組件發(fā)送至滿足升級要求的虛擬機中,從而控制滿足升級要求的虛擬機根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級,而無需用戶手動操作,因而升級方式更為便捷;且不需要在服務器上額外部署其他管理,從而進一步降低了升級的復雜度,并提升了升級效率。
[0158]實施例三
[0159]參見圖4,本發(fā)明實施例提供了一種對虛擬機中的軟件進行升級的裝置,該裝置包括:
[0160]確定模塊401,用于確定在線虛擬機;
[0161]判斷模塊402,用于判斷在線虛擬機中是否存在滿足升級要求的虛擬機;
[0162]第一獲取模塊403,用于當存在滿足升級要求的虛擬機時,獲取滿足升級要求的虛擬機上的軟件對應的升級組件;
[0163]發(fā)送模塊404,用于通過與滿足升級要求的虛擬機之間預先建立的升級通道將獲取到的升級組件發(fā)送至滿足升級要求的虛擬機中;
[0164]控制模塊405,用于控制滿足升級要求的虛擬機根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級。
[0165]參見圖5,判斷模塊402,包括:
[0166]第一判斷單元4021,用于判斷在線虛擬機中是否存在滿足第一升級條件的虛擬機;
[0167]第二判斷單元4022,用于當存在滿足第一升級條件的虛擬機時,判斷滿足第一升級條件的虛擬機是否滿足第二升級條件;
[0168]第一確定單元4023,用于當存在滿足第一升級條件且滿足第二升級條件的虛擬機時,確定滿足第一升級條件且滿足第二升級條件的虛擬機是否具有升級標識;
[0169]第二確定單元4024,用于將滿足第一升級條件、第二升級條件且具有升級標識的虛擬機確定為滿足升級要求的虛擬機。
[0170]作為一種優(yōu)選的實施例,第一判斷單元4021,用于判斷在線虛擬機中是否存在未進行虛擬處理器熱插拔、內(nèi)存快照、休眠喚醒和熱遷移的虛擬機;
[0171]當在線虛擬機中存在未進行虛擬處理器熱插拔、內(nèi)存快照、休眠喚醒和熱遷移的虛擬機時,將未進行虛擬處理器熱插拔、內(nèi)存快照、休眠喚醒和熱遷移的虛擬機作為滿足第一升級條件的虛擬機。
[0172]作為一種優(yōu)選的實施例,第二判斷單元4022,用于判斷滿足第一升級條件的虛擬機上的軟件對應的組件版本號與獲取到的升級組件的版本號進行比較;
[0173]當滿足第一升級條件的虛擬機上的軟件對應的組件版本號與獲取到的升級組件的版本號不一致時,判斷滿足第一升級條件的虛擬機滿足第二升級條件。
[0174]作為一種優(yōu)選的實施例,控制模塊405,用于通過升級通道向滿足升級要求的虛擬機發(fā)送升級指令,使?jié)M足升級要求的虛擬機接收到升級指令后,根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級。
[0175]作為一種優(yōu)選的實施例,控制模塊405,還用于對進行組件升級的虛擬機進行重啟操作。
[0176]參見圖6,該裝置,還包括:
[0177]第二獲取模塊406,用于通過升級通道獲取滿足升級要求的虛擬機對滿足升級要求的虛擬機上的軟件對應的組件進行升級后的升級結果。
[0178]本發(fā)明實施例提供的裝置,通過判斷在線的虛擬機是否滿足升級要求,進而獲取滿足升級要求的虛機上的軟件對應的升級組件,并通過預先建立的升級通道將獲取到的升級組件發(fā)送至滿足升級要求的虛擬機中,從而控制滿足升級要求的虛擬機根據(jù)升級組件對滿足升級要求的虛擬機上的軟件對應的組件進行升級,而無需用戶手動操作,因而升級方式更為便捷,從而進一步降低了升級的復雜度,并提升了升級效率。
[0179]實施例四
[0180]圖7為一個實施方式中服務器的結構示意圖,該服務器包括處理器701、發(fā)射機702和接收機703 ;
[0181]其中,
[0182]處理器701,用于確定在線虛擬機,并判斷在線虛擬機中是否存在滿足升級要求的虛擬機;
[0183]處理器701,還用于當存在滿足升級要求的虛擬機時,獲取滿足升級要求的虛擬機上的軟件對應的升級組件;
[0184]發(fā)射機702,用于通過與滿足升級要求的虛擬機之間預先建立