虛擬機(jī)鏡像離線升級方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及離線升級方法,更具體地,涉及虛擬機(jī)鏡像離線升級方法(本文中所使用的“離線升級”的含義是:在不啟動虛擬機(jī)的情況下對虛擬機(jī)鏡像進(jìn)行升級)。
【背景技術(shù)】
[0002]目前,隨著計(jì)算機(jī)和網(wǎng)絡(luò)應(yīng)用的日益廣泛以及不同領(lǐng)域的業(yè)務(wù)種類的日益豐富,云計(jì)算環(huán)境變得越來越普遍和重要。通常,云計(jì)算環(huán)境中存在大量的離線的虛擬機(jī)鏡像(或虛擬機(jī)模板),因此,對所述離線的虛擬機(jī)鏡像(或虛擬機(jī)模板)進(jìn)行升級(即打補(bǔ)丁)是非常關(guān)鍵的。
[0003]在現(xiàn)有的技術(shù)方案中,通常采用如下兩種方式進(jìn)行針對離線的虛擬機(jī)鏡像的升級:(I)當(dāng)用戶生成虛擬機(jī)之后對其進(jìn)行在線方式的升級;(2 )將升級腳本注入到虛擬機(jī)鏡像中,隨后在基于虛擬機(jī)鏡像生成虛擬機(jī)時(shí),所生成的虛擬機(jī)會自動地執(zhí)行所述升級腳本以進(jìn)行在線方式的升級。
[0004]然而,現(xiàn)有的技術(shù)方案存在如下問題:升級操作不能被確保執(zhí)行,并且升級所花費(fèi)的時(shí)間較長,由此導(dǎo)致升級效率較低。
[0005]因此,存在如下需求:提供具有更高的升級效率的虛擬機(jī)鏡像離線升級方法。
【發(fā)明內(nèi)容】
[0006]為了解決上述現(xiàn)有技術(shù)方案所存在的問題,本發(fā)明提出了具有更高的升級效率的虛擬機(jī)鏡像離線升級方法。
[0007]本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的:
一種虛擬機(jī)鏡像離線升級方法,所述虛擬機(jī)鏡像離線升級方法包括下列步驟:
(Al)鏡像安全服務(wù)器收集虛擬機(jī)鏡像,以及提取并存儲所收集的虛擬機(jī)鏡像的信息;(A2)所述鏡像安全服務(wù)器基于所收集的虛擬機(jī)鏡像的信息以離線的方式執(zhí)行虛擬機(jī)鏡像升級操作。
[0008]在上面所公開的方案中,優(yōu)選地,所述步驟(Al)進(jìn)一步包括:
(BI)周期性地從虛擬機(jī)鏡像存儲服務(wù)器下載虛擬機(jī)鏡像;
(B2)針對所下載的每個(gè)虛擬機(jī)鏡像執(zhí)行下列步驟:(I)探測所述虛擬機(jī)鏡像以獲取所述虛擬機(jī)鏡像的基礎(chǔ)信息,并將所述基礎(chǔ)信息存儲到元數(shù)據(jù)數(shù)據(jù)庫中;(2)基于所述基礎(chǔ)信息,以與所述虛擬機(jī)鏡像相關(guān)聯(lián)的軟件包管理方式處理所述虛擬機(jī)鏡像;(3)提取所述虛擬機(jī)鏡像的軟件包信息,并將所述軟件包信息存儲在軟件包信息數(shù)據(jù)庫中。
[0009]在上面所公開的方案中,優(yōu)選地,所述步驟(A2)包括:在所述步驟(B2)之后,針對已下載的每個(gè)虛擬機(jī)鏡像執(zhí)行下列步驟:(I)從所述軟件包信息數(shù)據(jù)庫中讀取出與其相關(guān)聯(lián)的軟件包信息;(2)將讀取出的軟件包信息與升級信息數(shù)據(jù)庫中的信息相比較以查找出需要升級的軟件文件,其中,所述升級信息數(shù)據(jù)庫中存儲有已發(fā)布的補(bǔ)丁文件;(3)如果離線補(bǔ)丁數(shù)據(jù)庫中不存在與需要升級的軟件相對應(yīng)的打過補(bǔ)丁的軟件文件,則執(zhí)行腳本分析重寫操作并將所涉及的打過補(bǔ)丁的軟件文件存儲到所述離線補(bǔ)丁數(shù)據(jù)庫中,否則,在所述離線補(bǔ)丁數(shù)據(jù)庫中查找到與需要升級的軟件文件相對應(yīng)的打過補(bǔ)丁的軟件文件,并隨后用所述與需要升級的軟件文件相對應(yīng)的打過補(bǔ)丁的軟件文件替換所述虛擬機(jī)鏡像中相應(yīng)的軟件文件;(4)更新所述軟件包信息數(shù)據(jù)庫,以確保所述軟件包信息數(shù)據(jù)庫中的關(guān)于所述虛擬機(jī)鏡像的信息與所述虛擬機(jī)鏡像的當(dāng)前的實(shí)際信息相一致;(5)將經(jīng)過升級操作的所述虛擬機(jī)鏡像傳送回所述虛擬機(jī)鏡像存儲服務(wù)器。
[0010]在上面所公開的方案中,優(yōu)選地,所述腳本分析重寫操作包括下列步驟:(1)分析相關(guān)的補(bǔ)丁文件中的補(bǔ)丁腳本以檢查所述補(bǔ)丁腳本是否能夠在離線環(huán)境下被安全地執(zhí)行,并且如果所述補(bǔ)丁腳本能夠在離線環(huán)境下被安全地執(zhí)行,則進(jìn)入步驟(3),否則進(jìn)入步驟(2) ; (2)判斷所述補(bǔ)丁腳本是否能夠被轉(zhuǎn)化為能夠在離線環(huán)境下被安全執(zhí)行的腳本,并且如果所述補(bǔ)丁腳本能夠被轉(zhuǎn)化為能夠在離線環(huán)境下被安全執(zhí)行的腳本,則通過腳本重寫的方式將所述補(bǔ)丁腳本轉(zhuǎn)化成能夠在離線環(huán)境下被安全執(zhí)行的補(bǔ)丁腳本并隨后進(jìn)入步驟
(3),否則,將所述補(bǔ)丁腳本設(shè)置為在所述虛擬機(jī)鏡像下一次被啟動時(shí)被自動地執(zhí)行;(3)執(zhí)行所述補(bǔ)丁腳本。
[0011]在上面所公開的方案中,優(yōu)選地,所述補(bǔ)丁腳本中的每個(gè)腳本命令是下列類型中的一個(gè):能夠正確地在離線環(huán)境下執(zhí)行、不能夠正確地在離線環(huán)境下執(zhí)行以及在離線環(huán)境下沒有必要執(zhí)行。
[0012]在上面所公開的方案中,優(yōu)選地,所述腳本重寫包括基于所述補(bǔ)丁腳本中的各個(gè)腳本命令的類型執(zhí)行下列步驟:(1)去除或替換不需要的命令;(2)去除不需要的語句控制結(jié)構(gòu)。
[0013]本發(fā)明所公開的虛擬機(jī)鏡像離線升級方法具有以下優(yōu)點(diǎn):(1)能夠快速地檢索出虛擬機(jī)鏡像中需要升級的軟件文件;(2)能夠以離線的方式對虛擬機(jī)鏡像進(jìn)行升級(即打補(bǔ)丁);(2)能夠顯著地提高虛擬機(jī)鏡像升級操作的效率。
【附圖說明】
[0014]結(jié)合附圖,本發(fā)明的技術(shù)特征以及優(yōu)點(diǎn)將會被本領(lǐng)域技術(shù)人員更好地理解,其中:
圖1是根據(jù)本發(fā)明的實(shí)施例的虛擬機(jī)鏡像離線升級方法的流程圖。
【具體實(shí)施方式】
[0015]圖1是根據(jù)本發(fā)明的實(shí)施例的虛擬機(jī)鏡像離線升級方法的流程圖。如圖1所示,本發(fā)明所公開的虛擬機(jī)鏡像離線升級方法包括下列步驟:(Al)鏡像安全服務(wù)器收集虛擬機(jī)鏡像,以及提取并存儲所收集的虛擬機(jī)鏡像的信息;(A2)所述鏡像安全服務(wù)器基于所收集的虛擬機(jī)鏡像的信息以離線的方式執(zhí)行虛擬機(jī)鏡像升級操作。
[0016]優(yōu)選地,在本發(fā)明所公開的虛擬機(jī)鏡像離線升級方法中,所述步驟(Al)進(jìn)一步包括:(BI)周期性地從虛擬機(jī)鏡像存儲服務(wù)器(例如OpenStack平臺上的Glance組件服務(wù)器)下載虛擬機(jī)鏡像;(B2)針對所下載的每個(gè)虛擬機(jī)鏡像執(zhí)行下列步驟:(I)探測所述虛擬機(jī)鏡像以獲取所述虛擬機(jī)鏡像的基礎(chǔ)信息(例如操作系統(tǒng)類型、操作系統(tǒng)版本、采用的軟件包管理方式等等),并將所述基礎(chǔ)信息存儲到元數(shù)據(jù)數(shù)據(jù)庫中;(2)基于所述基礎(chǔ)信息,以與所述虛擬機(jī)鏡像相關(guān)聯(lián)的軟件包管理方式(諸如yum和dpkg包管理方式)處理所述虛擬機(jī)鏡像;(3)提取所述虛擬機(jī)鏡像的軟件包信息(例如軟件版本信息),并將所述軟件包信息存儲在軟件包信息數(shù)據(jù)庫中。
[0017]示例性地,在本發(fā)明所公開的虛擬機(jī)鏡像離線升級方法中,所述虛擬機(jī)鏡像是開源虛擬化格式(OVF)文件。
[0018]優(yōu)選地,在本發(fā)明所公開的虛擬機(jī)鏡像離線升級方法中,所述步驟(A2)包括:在所述步驟(B2)之后,針對已下載的每個(gè)虛擬機(jī)鏡像(即已經(jīng)在所述軟件包信息數(shù)據(jù)庫中存儲有與其相關(guān)聯(lián)的軟件包信息的虛擬機(jī)鏡像)執(zhí)行下列步驟:(I)從所述軟件包信息數(shù)據(jù)庫中讀取出與其相關(guān)聯(lián)的軟件包信息;(2)將讀取出的軟件包信息與升級信息數(shù)