專利名稱:用于運(yùn)行虛擬機(jī)鏡像的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及云計算(Cloud Computing)。具體的,本發(fā)明涉及云計算中運(yùn)行虛擬機(jī) 鏡像的方法和系統(tǒng)。
背景技術(shù):
云計算是依靠強(qiáng)大的計算能力,使得成千上萬的終端用戶都能夠有效地利用依靠 網(wǎng)絡(luò)連接起來的IT的計算能力而不用擔(dān)心所使用的計算技術(shù)、接入方式等。在云計算中, IT的計算能力是以服務(wù)的方式提供的。虛擬化技術(shù)是云計算中應(yīng)用較為廣泛的一種技術(shù)。 在現(xiàn)有云計算架構(gòu)中,多使用虛擬機(jī)來為用戶提供服務(wù)。云計算環(huán)境中運(yùn)行虛擬機(jī)需要運(yùn) 行虛擬機(jī)鏡像文件,虛擬機(jī)鏡像文件一般包括操作系統(tǒng)、安裝的應(yīng)用程序以及可用磁盤空 間。通常較小的虛擬機(jī)鏡像文件一般在4-5GB。大的虛擬機(jī)鏡像文件可能會數(shù)百個GB,例 如TPM的鏡像文件就大約在100GB。
現(xiàn)有技術(shù)中,為了運(yùn)行虛擬機(jī),通常需要將整個虛擬機(jī)的鏡像文件(包括操作系 統(tǒng)、安裝的應(yīng)用程序以及可用磁盤空間)從存儲服務(wù)器(Storage Server)復(fù)制到宿主主機(jī) (host),然后從虛擬機(jī)鏡像文件啟動虛擬機(jī)。虛擬機(jī)啟動后,在虛擬機(jī)上運(yùn)行應(yīng)用程序。如 果運(yùn)行的過程中對虛擬機(jī)鏡像文件中的數(shù)據(jù)進(jìn)行了改變,在虛擬機(jī)停止之后,需要將改變 后的虛擬機(jī)鏡像文件保存回存儲服務(wù)器。
通常情況下,服務(wù)器集群中會運(yùn)行很多宿主主機(jī)(即云中的服務(wù)器),而每個宿主 主機(jī)有可能會運(yùn)行多個虛擬機(jī)。如上面所提到的,為了運(yùn)行虛擬機(jī),需要將整個虛擬機(jī)的 鏡像文件從存儲服務(wù)器復(fù)制到宿主主機(jī)。由于通常較小的虛擬機(jī)鏡像文件的大小都會在 4-5GB,因此,虛擬機(jī)鏡像文件的復(fù)制將會占用大量的網(wǎng)絡(luò)帶寬。同時,在虛擬機(jī)停止之后, 還需要將改變后的整個虛擬機(jī)鏡像文件保存回存儲服務(wù)器,這種保存的過程也會占用大量 的網(wǎng)絡(luò)帶寬。發(fā)明內(nèi)容
因此,現(xiàn)有技術(shù)中存在一種改進(jìn)的在云計算中運(yùn)行虛擬機(jī)鏡像的方法和系統(tǒng)的需 求。
根據(jù)本發(fā)明的一個方面,提供了一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的方法, 包括接收虛擬機(jī)鏡像部署請求;向存儲服務(wù)器發(fā)送復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬 機(jī)鏡像的請求;接收部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信息 和文件索引信息;通過運(yùn)行接收的部分虛擬機(jī)鏡像在宿主主機(jī)中啟動虛擬機(jī);截獲虛擬機(jī) 中運(yùn)行程序的文件操作請求;向存儲服務(wù)器發(fā)送復(fù)制文件操作請求涉及的文件的請求;接 收文件操作請求所涉及的文件。
根據(jù)本發(fā)明的另一個方面,提供了一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的方 法,包括接收宿主主機(jī)發(fā)送的復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡像的請求;向宿 主主機(jī)發(fā)送部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信息和文件索引信息;接收宿主主機(jī)發(fā)送的復(fù)制文件操作請求涉及的文件的請求;向宿主主機(jī)發(fā)送文 件操作請求涉及的文件。
根據(jù)本發(fā)明的又一個方面,提供了一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的系 統(tǒng),包括鏡像加載器,用于接收虛擬機(jī)鏡像部署請求;向存儲服務(wù)器請求復(fù)制虛擬機(jī)鏡 像部署請求涉及的虛擬機(jī)鏡像;接收部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系 統(tǒng)內(nèi)核、分區(qū)信息和文件索引信息;以及通過運(yùn)行接收的部分虛擬機(jī)鏡像在宿主主機(jī)中啟 動虛擬機(jī);應(yīng)用加載器,用于截獲虛擬機(jī)中運(yùn)行程序的文件操作請求;向存儲服務(wù)器請求 復(fù)制文件操作請求涉及的文件;以及接收文件操作請求所涉及的文件。
根據(jù)本發(fā)明的另一個方面,提供了一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的系 統(tǒng),包括鏡像訪問器,用于接收宿主主機(jī)發(fā)送的復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī) 鏡像的請求;向宿主主機(jī)發(fā)送部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、 分區(qū)信息和文件索引信息;接收宿主主機(jī)發(fā)送的復(fù)制文件操作請求涉及的文件的請求;向 宿主主機(jī)發(fā)送文件操作請求涉及的文件。
利用本發(fā)明,由于開始時只需要傳輸較小的部分虛擬機(jī)鏡像,因而大大降低了對 網(wǎng)絡(luò)帶寬的占用。同時,由于本發(fā)明是以應(yīng)用驅(qū)動進(jìn)行文件的復(fù)制,僅從存儲服務(wù)器復(fù)制必 要的文件,因而大大降低了對網(wǎng)絡(luò)帶寬的占用。
本發(fā)明可以通過參考下文中結(jié)合附圖所給出的描述而得到更好的理解,其中在所 有附圖中使用了相同或相似的附圖標(biāo)記來表示相同或者相似的部件。所述附圖連同下面的 詳細(xì)說明一起包含在本說明書中并且形成本說明書的一部分,而且用來進(jìn)一步舉例說明本 發(fā)明的優(yōu)選實(shí)施例和解釋本發(fā)明的原理和優(yōu)點(diǎn)。在附圖中
圖1顯示了根據(jù)本發(fā)明一個實(shí)施例的用于運(yùn)行虛擬機(jī)鏡像的系統(tǒng)100 ;
圖2顯示了根據(jù)本發(fā)明一個實(shí)施例的用于運(yùn)行虛擬機(jī)鏡像的方法的流程圖200 ;
圖3顯示了根據(jù)本發(fā)明另一個實(shí)施例的用于運(yùn)行虛擬機(jī)鏡像的方法的流程圖 300。
具體實(shí)施方式
在下文中將結(jié)合附圖對本發(fā)明的示范性實(shí)施例進(jìn)行描述。為了清楚和簡明起見, 在說明書中并未描述實(shí)際實(shí)施方式的所有特征。然而,應(yīng)該了解,在開發(fā)任何這種實(shí)際實(shí)施 例的過程中必須做出很多特定于該實(shí)際實(shí)施方式的決定,以便實(shí)現(xiàn)開發(fā)人員的具體目標(biāo), 例如,符合與系統(tǒng)及業(yè)務(wù)相關(guān)的那些限制條件,并且這些限制條件可能會隨著實(shí)施方式的 不同而有所改變。此外,還應(yīng)該了解,雖然開發(fā)工作有可能是非常復(fù)雜和費(fèi)時的,但對得益 于本發(fā)明公開內(nèi)容的本領(lǐng)域技術(shù)人員來說,這種開發(fā)工作僅僅是例行的任務(wù)。
在此,還需要說明的一點(diǎn)是,為了避免因不必要的細(xì)節(jié)而模糊了本發(fā)明,在附圖中 僅僅示出了與根據(jù)本發(fā)明的方案密切相關(guān)的裝置結(jié)構(gòu)和/或處理步驟,而省略了與本發(fā)明 關(guān)系不大的其他細(xì)節(jié)。
本發(fā)明的發(fā)明人在工作中發(fā)現(xiàn),應(yīng)用的運(yùn)行很多時候僅需要虛擬機(jī)鏡像中的部分 文件,比如Apache運(yùn)行時大約只需要100MB的文件,而按照傳統(tǒng)的方法,為了運(yùn)行Apache,整個大約4-5GB的虛擬機(jī)鏡像都必須通過網(wǎng)絡(luò)復(fù)制到宿主主機(jī),這樣造成了大量網(wǎng)絡(luò)帶寬 的浪費(fèi)。而利用本發(fā)明的方法,只需要通過網(wǎng)絡(luò)復(fù)制運(yùn)行Apache所需的100MB文件,因而 大大降低了網(wǎng)絡(luò)帶寬的消耗?;谏鲜霭l(fā)現(xiàn),本發(fā)明的發(fā)明人做出了本發(fā)明。
現(xiàn)在參照圖1,其中顯示了根據(jù)本發(fā)明一個實(shí)施例的用于在宿主主機(jī)中運(yùn)行虛擬 機(jī)鏡像的系統(tǒng)100。根據(jù)本發(fā)明的一個實(shí)施例,用于運(yùn)行虛擬機(jī)鏡像的系統(tǒng)100包括鏡像訪 問器102,鏡像加載器104,應(yīng)用加載器106和鏡像同步器108??蛇x的,用于運(yùn)行虛擬機(jī)鏡 像的系統(tǒng)100包括兩個子系統(tǒng),其中位于存儲服務(wù)器中的鏡像訪問器102構(gòu)成服務(wù)器子系 統(tǒng),位于宿主主機(jī)以及其中運(yùn)行的虛擬機(jī)中的鏡像加載器104,應(yīng)用加載器106和鏡像同步 器108構(gòu)成宿主主機(jī)子系統(tǒng)。
構(gòu)成服務(wù)器子系統(tǒng)的鏡像訪問器102位于存儲服務(wù)器,包括鏡像轉(zhuǎn)換器、鏡像索 引器和鏡像文件訪問器。其中,鏡像轉(zhuǎn)換器用于將原虛擬機(jī)鏡像轉(zhuǎn)換成部分虛擬機(jī)鏡像。部 分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信息和文件索引信息。鏡像索引器用于建立文 件索引信息,該文件索引信息用于在虛擬機(jī)鏡像中定位文件。鏡像轉(zhuǎn)換器首先通過分析虛 擬機(jī)鏡像獲取操作系統(tǒng)的內(nèi)核和分區(qū)信息,然后結(jié)合鏡像索引器建立的文件索引信息產(chǎn)生 部分虛擬機(jī)鏡像。獲取操作系統(tǒng)的內(nèi)核和分區(qū)信息、建立文件索引信息以及產(chǎn)生部分虛擬 機(jī)鏡像的處理可以用現(xiàn)有技術(shù)中的任意手段實(shí)現(xiàn),這里不再贅述。鏡像轉(zhuǎn)換器和鏡像索引 器的上述處理可以離線地完成,也可以動態(tài)的完成。優(yōu)選地,離線地提前準(zhǔn)備好部分虛擬機(jī) 鏡像。鏡像轉(zhuǎn)換器還會在部分虛擬機(jī)鏡像中嵌入應(yīng)用加載代碼,以便與位于宿主主機(jī)中運(yùn) 行的虛擬機(jī)中的應(yīng)用加載器106通信。
鏡像文件訪問器用于接收位于宿主主機(jī)中運(yùn)行的虛擬機(jī)中的應(yīng)用加載器106發(fā) 出的文件讀取請求,讀取虛擬機(jī)鏡像中的文件并作為響應(yīng)返回給應(yīng)用加載器106,鏡像文件 訪問器還用于接收位于宿主主機(jī)中的鏡像同步器108發(fā)送的更新文件并更新存儲服務(wù)器 中虛擬機(jī)鏡像。
下面介紹構(gòu)成宿主主機(jī)子系統(tǒng)的鏡像加載器104,應(yīng)用加載器106和鏡像同步器 108。位于宿主主機(jī)中的鏡像加載器104用于加載(即從存儲服務(wù)器復(fù)制)由鏡像轉(zhuǎn)換器 產(chǎn)生的部分虛擬機(jī)鏡像。在加載部分虛擬機(jī)鏡像之后,鏡像加載器104基于該部分虛擬機(jī) 鏡像中的分區(qū)信息和文件索引信息實(shí)例化該部分虛擬機(jī)鏡像,實(shí)例化的處理與系統(tǒng)管理程 序Hypervisor進(jìn)行的處理類似,這里不再贅述。位于宿主主機(jī)中運(yùn)行的虛擬機(jī)中的應(yīng)用加 載器106包括文件鉤子和本地鏡像訪問器。其中,文件鉤子用于截獲宿主主機(jī)中運(yùn)行的虛 擬機(jī)中運(yùn)行程序的文件操作請求并將該請求發(fā)送給本地鏡像訪問器。本地鏡像訪問器接收 文件鉤子截取的文件操作請求,檢查實(shí)例化的部分虛擬機(jī)鏡像中的分區(qū)信息和文件索引信 息,確定該文件操作請求涉及的文件是否位于宿主主機(jī)中運(yùn)行的虛擬機(jī)的本地數(shù)據(jù)中。如 果該文件操作請求涉及的文件位于本地數(shù)據(jù)中,則通過文件操作應(yīng)用程序接口 API讀取相 應(yīng)文件。如果該文件操作請求涉及的文件沒有在宿主主機(jī)中運(yùn)行的虛擬機(jī)的本地數(shù)據(jù)中, 則向位于存儲服務(wù)器的鏡像訪問器102中的鏡像文件訪問器發(fā)送文件讀取請求,接收鏡像 文件訪問器返回的包含該文件操作所涉及的文件的響應(yīng),并通過文件操作應(yīng)用程序接口 API在本地數(shù)據(jù)中存儲所述響應(yīng)中返回的該文件操作涉及的文件。本地鏡像訪問器還用于 以增量方式記錄文件操作對文件索引信息的改變(即索引增量)。位于宿主主機(jī)中的鏡像 同步器108用于讀取本地鏡像訪問器記錄的文件索引信息的改變,利用改變的文件索引信息讀取本地數(shù)據(jù)中的更新文件并將更新文件發(fā)送至位于存儲服務(wù)器的鏡像訪問器102中 的鏡像文件訪問器以更新存儲服務(wù)器中的虛擬機(jī)鏡像。
下面詳細(xì)描述位于宿主主機(jī)中運(yùn)行的虛擬機(jī)中的應(yīng)用加載器106中的文件鉤子 和本地鏡像訪問器進(jìn)行的處理。文件鉤子可以用現(xiàn)有技術(shù)中任意手段實(shí)現(xiàn),這里不再贅述。
應(yīng)用加載器106接收到虛擬機(jī)中運(yùn)行程序的文件操作請求時,應(yīng)用加載器106中 的文件鉤子截取該文件操作請求。針對不同的文件操作請求,文件鉤子與本地鏡像訪問器 配合分別進(jìn)行相應(yīng)的處理。
如果文件操作請求是文件打開請求,即該文件請求只需獲取文件信息,文件鉤子 截獲到該文件打開請求并將其發(fā)送給本地鏡像訪問器。本地鏡像訪問器讀取分區(qū)信息和文 件索引信息,該文件索引信息通常情況下是文件分配表。本地鏡像訪問器讀取文件索引信 息中的文件描述符,獲得相應(yīng)的文件名、文件存儲路徑、文件訪問權(quán)限等等信息,文件打開 操作結(jié)束。
如果文件操作請求是文件讀取請求,文件鉤子截獲到該文件讀取請求并將其發(fā)送 到本地鏡像訪問器。本地鏡像訪問器在本地索引中查找該文件讀取請求涉及的文件的相應(yīng) 文件信息,如果該文件讀取請求涉及的文件是第一次被讀取,即本地索引中不存在相應(yīng)文 件信息,本地鏡像訪問器通過文件鉤子向位于存儲服務(wù)器的鏡像訪問器102中的鏡像文件 訪問器發(fā)送文件讀取請求。在接收到鏡像文件訪問器返回的包含該文件讀取請求所涉及 的文件的響應(yīng)后在本地索引中記錄該文件讀取請求涉及的文件的相應(yīng)文件信息,并通過文 件操作應(yīng)用程序接口 API在本地數(shù)據(jù)中存儲所述響應(yīng)中返回的該文件讀取請求涉及的文 件。如果本地鏡像訪問器在本地索引中查找該文件讀取請求涉及的文件的相應(yīng)文件信息之 后確定該文件讀取請求涉及的文件不是第一次被讀取,即本地索引中已經(jīng)存在相應(yīng)文件信 息,本地鏡像訪問器則直接根據(jù)本地索引中存儲的相應(yīng)文件信息通過文件操作應(yīng)用程序接 口 API從本地數(shù)據(jù)中讀取所涉及的文件。
如果文件操作請求是文件創(chuàng)建請求,文件鉤子截獲到該文件創(chuàng)建請求并將其發(fā)送 到本地鏡像訪問器。本地鏡像訪問器首先讀取分區(qū)信息和文件索引信息以避免該文件創(chuàng)建 請求所要創(chuàng)建的文件名與現(xiàn)有文件索引信息中存在的文件名重復(fù)。該文件索引信息通常情 況下是文件分配表。如果不存在重復(fù)的文件名,本地鏡像訪問器通過文件鉤子在本地索引 中記錄創(chuàng)建的新文件的相應(yīng)文件信息并通過文件操作應(yīng)用程序接口 API在本地數(shù)據(jù)中以 要創(chuàng)建的文件名創(chuàng)建一個新文件。
如果文件操作請求是文件寫入請求,文件鉤子截獲到該文件寫入請求并將其發(fā)送 到本地鏡像訪問器。本地鏡像訪問器將該文件寫入請求涉及的文件的改變通過文件操作應(yīng) 用程序接口 API寫入本地數(shù)據(jù)中。如果文件寫入請求涉及的文件的相應(yīng)文件信息改變,本 地鏡像訪問器還在本地索引中記錄該文件寫入請求涉及的文件的相應(yīng)文件信息的改變。
在進(jìn)行文件操作之后,本地鏡像訪問器以增量方式記錄文件索引信息改變,由位 于宿主主機(jī)中的鏡像同步器108讀取本地鏡像訪問器記錄的文件索引信息的改變,利用改 變的文件索引信息讀取本地數(shù)據(jù)中的更新文件并將更新文件發(fā)送至位于存儲服務(wù)器的鏡 像訪問器102中的鏡像文件訪問器以更新存儲服務(wù)器中的虛擬機(jī)鏡像。
根據(jù)本發(fā)明的一個實(shí)施例,提供了一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的系 統(tǒng),包括鏡像加載器104,用于接收虛擬機(jī)鏡像部署請求;向存儲服務(wù)器請求復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡像;接收部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作 系統(tǒng)內(nèi)核、分區(qū)信息和文件索引信息;以及通過運(yùn)行接收的部分虛擬機(jī)鏡像在宿主主機(jī)中 啟動虛擬機(jī);應(yīng)用加載器106,用于截獲虛擬機(jī)中運(yùn)行程序的文件操作請求;向存儲服務(wù) 器請求復(fù)制文件操作請求涉及的文件;以及接收文件操作請求所涉及的文件??蛇x地,用于 運(yùn)行虛擬機(jī)鏡像的系統(tǒng)還包括鏡像同步器108,用于如果對宿主主機(jī)中運(yùn)行的虛擬機(jī)鏡 像中的數(shù)據(jù)進(jìn)行了改變,發(fā)送改變的數(shù)據(jù)以更新存儲服務(wù)器中的虛擬機(jī)鏡像。
根據(jù)本發(fā)明的一個實(shí)施例,提供了一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的系 統(tǒng),包括鏡像訪問器102,用于接收宿主主機(jī)發(fā)送的復(fù)制虛擬機(jī)鏡像部署請求涉及的虛 擬機(jī)鏡像的請求;向宿主主機(jī)發(fā)送部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng) 內(nèi)核、分區(qū)信息和文件索引信息;接收宿主主機(jī)發(fā)送的復(fù)制文件操作請求涉及的文件的請 求;向宿主主機(jī)發(fā)送文件操作請求涉及的文件。其中鏡像訪問器還包括鏡像文件訪問器, 用于接收宿主主機(jī)中運(yùn)行的虛擬機(jī)鏡像中改變的數(shù)據(jù),用改變的數(shù)據(jù)更新虛擬機(jī)鏡像???選地,用于運(yùn)行虛擬機(jī)鏡像的系統(tǒng)還包括鏡像索引器,用于產(chǎn)生文件索引信息;鏡像轉(zhuǎn)換 器,用于利用鏡像索引器產(chǎn)生的文件索引信息產(chǎn)生部分虛擬機(jī)鏡像。
現(xiàn)在參照圖2,其中顯示了根據(jù)本發(fā)明一個實(shí)施例的用于在宿主主機(jī)中運(yùn)行虛擬 機(jī)鏡像的方法的流程圖。根據(jù)本發(fā)明的一個實(shí)施例,用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的 方法200從步驟202開始。接下來,在步驟204,宿主主機(jī)接收虛擬機(jī)鏡像部署(provision) 請求;然后,在步驟206,宿主主機(jī)向存儲服務(wù)器發(fā)送復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬 機(jī)鏡像的請求;接下來,在步驟208,宿主主機(jī)接收部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至 少包括操作系統(tǒng)內(nèi)核、分區(qū)信息和文件索引信息;接著,在步驟210,通過運(yùn)行接收的部分 虛擬機(jī)鏡像在宿主主機(jī)中啟動虛擬機(jī);之后,在步驟212,宿主主機(jī)截獲虛擬機(jī)中運(yùn)行程序 的文件操作請求;然后,在步驟214,宿主主機(jī)獲取文件操作請求所涉及的文件。進(jìn)一步,用 于運(yùn)行虛擬機(jī)鏡像的方法200還包括,如果虛擬機(jī)運(yùn)行過程中對宿主主機(jī)中運(yùn)行的虛擬機(jī) 鏡像中的數(shù)據(jù)進(jìn)行了改變,在步驟216發(fā)送改變的數(shù)據(jù)到存儲服務(wù)器以更新虛擬機(jī)鏡像。 然后,根據(jù)本發(fā)明的該實(shí)施例的方法200在步驟218結(jié)束。
進(jìn)一步,當(dāng)接收到文件操作請求時,根據(jù)本發(fā)明的該實(shí)施例的方法200針對不同 的文件操作請求分別進(jìn)行相應(yīng)的處理。
如果文件操作請求是文件打開請求,即該文件請求只需獲取文件信息,則讀取分 區(qū)信息和文件索引信息,獲得相應(yīng)的文件名、文件存儲路徑、文件訪問權(quán)限等等信息,文件 打開操作結(jié)束。
如果文件操作請求是文件讀取請求,則在本地索引中查找該文件讀取請求涉及的 文件的相應(yīng)文件信息,如果該文件讀取請求涉及的文件是第一次被讀取,即本地索引中不 存在相應(yīng)文件信息,向存儲服務(wù)器發(fā)送文件讀取請求。在接收到返回的包含該文件讀取請 求所涉及的文件的響應(yīng)后在本地索引中記錄該文件讀取請求涉及的文件的相應(yīng)文件信息, 并通過文件操作應(yīng)用程序接口 API在本地數(shù)據(jù)中存儲所述響應(yīng)中返回的該文件讀取請求 涉及的文件。如果在本地索引中查找該文件讀取請求涉及的文件的相應(yīng)文件信息之后確定 該文件讀取請求涉及的文件不是第一次被讀取,即本地索引中已經(jīng)存在相應(yīng)文件信息,則 直接根據(jù)本地索引中存儲的相應(yīng)文件信息通過文件操作應(yīng)用程序接口 API從本地數(shù)據(jù)中 讀取所涉及的文件。
如果文件操作請求是文件創(chuàng)建請求,首先讀取分區(qū)信息和文件索引信息以避免該 文件創(chuàng)建請求所要創(chuàng)建的文件名與現(xiàn)有文件索引信息中存在的文件名重復(fù)。如果不存在重 復(fù)的文件名,在本地索引中記錄創(chuàng)建的新文件的相應(yīng)文件信息并通過文件操作應(yīng)用程序接 口 API在本地數(shù)據(jù)中以要創(chuàng)建的文件名創(chuàng)建一個新文件。
如果文件操作請求是文件寫入請求,將該文件寫入請求涉及的文件的改變通過文 件操作應(yīng)用程序接口 API寫入本地數(shù)據(jù)中。如果文件寫入請求涉及的文件的相應(yīng)文件信息 改變,還在本地索引中記錄該文件寫入請求涉及的文件的相應(yīng)文件信息的改變。
在進(jìn)行文件操作之后,以增量方式記錄文件索引信息改變。利用改變的文件索引 信息讀取本地數(shù)據(jù)中的更新文件并將更新文件發(fā)送至存儲服務(wù)器以更新存儲服務(wù)器中的 虛擬機(jī)鏡像。
現(xiàn)在參照圖3,其中顯示了根據(jù)本發(fā)明另一個實(shí)施例的用于運(yùn)行虛擬機(jī)鏡像的方 法的流程圖300。根據(jù)本發(fā)明的另一個實(shí)施例,用于運(yùn)行虛擬機(jī)鏡像的方法300從步驟302 開始。接下來,在步驟304,接收宿主主機(jī)發(fā)送的復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡 像的請求;然后,在步驟306,向宿主主機(jī)發(fā)送部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包 括操作系統(tǒng)內(nèi)核、分區(qū)信息和文件索引信息;之后,在步驟308,接收宿主主機(jī)發(fā)送的復(fù)制 文件操作請求涉及的文件的請求;接下來,在步驟310,向宿主主機(jī)發(fā)送文件操作請求涉及 的文件。然后,根據(jù)本發(fā)明的該實(shí)施例的方法300在步驟312結(jié)束。進(jìn)一步,根據(jù)本發(fā)明的 另一個實(shí)施例的用于運(yùn)行虛擬機(jī)鏡像的方法300還包括產(chǎn)生文件索引信息;以及利用產(chǎn)生 的文件索引信息產(chǎn)生部分虛擬機(jī)鏡像。
以上結(jié)合具體實(shí)施例描述了本發(fā)明的基本原理,但是,需要指出的是,對本領(lǐng)域的 普通技術(shù)人員而言,能夠理解本發(fā)明的方法和裝置的全部或者任何步驟或者部件,可以在 任何計算裝置(包括處理器、存儲介質(zhì)等)或者計算裝置的網(wǎng)絡(luò)中,以硬件、固件、軟件或者 它們的組合加以實(shí)現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說明的情況下運(yùn)用他們 的基本編程技能就能實(shí)現(xiàn)的。
因此,本發(fā)明的目的還可以通過在任何計算裝置上運(yùn)行一個程序或者一組程序來 實(shí)現(xiàn)。所述計算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通過提供包 含實(shí)現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來實(shí)現(xiàn)。也就是說,這樣的程序產(chǎn)品也構(gòu) 成本發(fā)明,并且存儲有這樣的程序產(chǎn)品的存儲介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲介質(zhì)可以 是任何公知的存儲介質(zhì)或者將來所開發(fā)出來的任何存儲介質(zhì)。
還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和 /或重新組合的。這些分解和/或重新組合應(yīng)視為本發(fā)明的等效方案。并且,執(zhí)行上述系列 處理的步驟可以自然地按照說明的順序按時間順序執(zhí)行,但是并不需要一定按照時間順序 執(zhí)行。某些步驟可以并行或彼此獨(dú)立地執(zhí)行。
雖然已經(jīng)詳細(xì)說明了本發(fā)明及其優(yōu)點(diǎn),但是應(yīng)當(dāng)理解在不脫離由所附的權(quán)利要求 所限定的本發(fā)明的精神和范圍的情況下可以進(jìn)行各種改變、替代和變換。而且,本申請的術(shù) 語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要 素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素, 或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下, 由語句“包括一個......”限定的要素,并不排除在包括所述要素的過程、方法、物品或者裝9置中還存在另外的相同要素。
權(quán)利要求
1.一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的方法,包括 接收虛擬機(jī)鏡像部署請求;向存儲服務(wù)器發(fā)送復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡像的請求; 接收部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信息和文件索 引信息;通過運(yùn)行接收的部分虛擬機(jī)鏡像在宿主主機(jī)中啟動虛擬機(jī); 截獲虛擬機(jī)中運(yùn)行程序的文件操作請求; 獲取文件操作請求所涉及的文件。
2.根據(jù)權(quán)利要求1的方法,還包括如果對宿主主機(jī)中運(yùn)行的虛擬機(jī)鏡像中的數(shù)據(jù)進(jìn)行了改變,發(fā)送改變的數(shù)據(jù)以更新存 儲服務(wù)器中的虛擬機(jī)鏡像。
3.根據(jù)權(quán)利要求1的方法,還包括 以增量方式記錄文件索引信息的改變。
4.根據(jù)權(quán)利要求1或2的方法,其中如果文件操作請求涉及的文件在宿主主機(jī)中運(yùn)行的虛擬機(jī)的本地數(shù)據(jù)中已經(jīng)存在,直 接從本地數(shù)據(jù)中讀取文件操作請求涉及的文件。
5.根據(jù)權(quán)利要求1或2的方法,其中如果文件操作請求涉及的文件不在宿主主機(jī)中運(yùn)行的虛擬機(jī)的本地數(shù)據(jù)中,向存儲服 務(wù)器發(fā)送復(fù)制文件操作請求涉及的文件的請求,并從存儲服務(wù)器接收文件操作請求涉及的 文件。
6.一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的方法,包括接收宿主主機(jī)發(fā)送的復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡像的請求; 向宿主主機(jī)發(fā)送部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信 息和文件索引信息;接收宿主主機(jī)發(fā)送的復(fù)制文件操作請求涉及的文件的請求; 向宿主主機(jī)發(fā)送文件操作請求涉及的文件。
7.根據(jù)權(quán)利要求6的方法,還包括接收宿主主機(jī)中運(yùn)行的虛擬機(jī)鏡像中改變的數(shù)據(jù),用改變的數(shù)據(jù)更新虛擬機(jī)鏡像。
8.根據(jù)權(quán)利要求6的方法,還包括 產(chǎn)生文件索引信息;以及利用產(chǎn)生的文件索引信息產(chǎn)生部分虛擬機(jī)鏡像。
9.一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的系統(tǒng),包括 鏡像加載器,用于接收虛擬機(jī)鏡像部署請求;向存儲服務(wù)器請求復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡像; 接收部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信息和文件索 引信息;以及通過運(yùn)行接收的部分虛擬機(jī)鏡像在宿主主機(jī)中啟動虛擬機(jī); 應(yīng)用加載器,用于截獲虛擬機(jī)中運(yùn)行程序的文件操作請求;以及 獲取文件操作請求所涉及的文件。
10.根據(jù)權(quán)利要求9的系統(tǒng),還包括鏡像同步器,用于如果對宿主主機(jī)中運(yùn)行的虛擬機(jī)鏡像中的數(shù)據(jù)進(jìn)行了改變,發(fā)送改 變的數(shù)據(jù)以更新存儲服務(wù)器中的虛擬機(jī)鏡像。
11.根據(jù)權(quán)利要求9的系統(tǒng),其中應(yīng)用加載器以增量方式記錄文件索引信息的改變;以及 鏡像同步器讀取文件索引信息的改變。
12.根據(jù)權(quán)利要求9或10的系統(tǒng),其中如果文件操作請求涉及的文件在宿主主機(jī)中運(yùn)行的虛擬機(jī)的本地數(shù)據(jù)中已經(jīng)存在,應(yīng) 用加載器直接從本地數(shù)據(jù)中讀取文件操作請求涉及的文件。
13.根據(jù)權(quán)利要求9或10的系統(tǒng),其中如果文件操作請求涉及的文件不在宿主主機(jī)中運(yùn)行的虛擬機(jī)的本地數(shù)據(jù)中,應(yīng)用加載 器向存儲服務(wù)器請求復(fù)制文件操作請求涉及的文件,并從存儲服務(wù)器接收文件操作請求涉 及的文件。
14.一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的系統(tǒng),包括 鏡像訪問器,用于接收宿主主機(jī)發(fā)送的復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡像的請求; 向宿主主機(jī)發(fā)送部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信 息和文件索引信息;接收宿主主機(jī)發(fā)送的復(fù)制文件操作請求涉及的文件的請求; 向宿主主機(jī)發(fā)送文件操作請求涉及的文件。
15.根據(jù)權(quán)利要求14的系統(tǒng),其中鏡像訪問器還包括鏡像文件訪問器,用于接收宿主主機(jī)中運(yùn)行的虛擬機(jī)鏡像中改變的數(shù)據(jù),用改變的數(shù) 據(jù)更新虛擬機(jī)鏡像。
16.根據(jù)權(quán)利要求14的系統(tǒng),還包括 鏡像索引器,用于產(chǎn)生文件索引信息;鏡像轉(zhuǎn)換器,用于利用鏡像索引器產(chǎn)生的文件索引信息產(chǎn)生部分虛擬機(jī)鏡像。
全文摘要
本發(fā)明公開了一種用于在宿主主機(jī)中運(yùn)行虛擬機(jī)鏡像的方法和系統(tǒng),其中方法包括接收虛擬機(jī)鏡像部署請求;向存儲服務(wù)器發(fā)送復(fù)制虛擬機(jī)鏡像部署請求涉及的虛擬機(jī)鏡像的請求;接收部分虛擬機(jī)鏡像,該部分虛擬機(jī)鏡像至少包括操作系統(tǒng)內(nèi)核、分區(qū)信息和文件索引信息;通過運(yùn)行接收的部分虛擬機(jī)鏡像在宿主主機(jī)中啟動虛擬機(jī);截獲虛擬機(jī)中運(yùn)行程序的文件操作請求;獲取文件操作請求所涉及的文件。利用本發(fā)明,由于只需要傳輸較小的部分虛擬機(jī)鏡像,便能正常運(yùn)行程序,因而大大降低了對網(wǎng)絡(luò)帶寬的占用。同時,由于以應(yīng)用驅(qū)動進(jìn)行文件的復(fù)制,僅從存儲服務(wù)器的虛擬機(jī)鏡像中復(fù)制必要的文件,因而大大降低了對網(wǎng)絡(luò)帶寬的占用。
文檔編號G06F17/30GK102033755SQ200910174129
公開日2011年4月27日 申請日期2009年9月30日 優(yōu)先權(quán)日2009年9月30日
發(fā)明者李影, 楊杰, 邱杰, 鐘虓 申請人:國際商業(yè)機(jī)器公司