两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種鏡像文件拼裝方法及系統(tǒng)的制作方法

文檔序號:6377827閱讀:205來源:國知局
專利名稱:一種鏡像文件拼裝方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機技術(shù),特 別是涉及一種鏡像文件拼裝方法及系統(tǒng)。
背景技術(shù)
在虛擬化數(shù)據(jù)中心環(huán)境下,虛擬機鏡像文件(鏡像文件)是虛擬化環(huán)境中軟件運行支撐服務(wù)器運行環(huán)境在存儲設(shè)備上的存儲形式。鏡像文件包含操作系統(tǒng)、軟件等運行期依賴的數(shù)據(jù),鏡像文件較大且構(gòu)建時間較長。為了避免鏡像文件的頻繁復制和構(gòu)建,本領(lǐng)域技術(shù)人員通常采用構(gòu)建虛擬機鏡像資產(chǎn)庫的形式來存儲安裝了不同軟件的虛擬機鏡像文件。用戶可通過查詢資產(chǎn)庫查找所需鏡像文件并將所述鏡像文件存儲到指定物理服務(wù)器上運行使用。由于鏡像文件大小通常在IOGB級另I」,且不同類型或同一類型不同版本軟件資產(chǎn)都需要有對應(yīng)的獨立虛擬機鏡像文件才可被用戶直接存儲使用,如“Tomcat5. 5+MySQL5. 0+Ubuntul0”與“Tomcat 6+MySQL5. 0+Ubuntul0”就需要兩個虛擬機鏡像文件,而所述兩個鏡像文件中存儲的數(shù)據(jù)大部分相同,這就造成了存儲空間的浪費。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是實現(xiàn)鏡像文件的壓縮存儲,提供一種鏡像文件拼裝方法及系統(tǒng),以解決現(xiàn)有技術(shù)中因為多個鏡像文件中存儲的數(shù)據(jù)大部分相同造成數(shù)據(jù)冗余的現(xiàn)象,以及該現(xiàn)象導致的存儲空間的浪費的問題。為了解決上述技術(shù)問題,本發(fā)明提供一種鏡像文件拼裝方法及系統(tǒng),本發(fā)明提供如下技術(shù)方案一種鏡像文件拼裝方法,該方法包括根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件;根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列;依據(jù)拼裝文件資源庫中記錄的拼裝文件存儲形式,確定有序拼裝文件序列中每一個拼裝文件的文件屬性;根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件。優(yōu)選的,所述根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列,具體包括根據(jù)預(yù)設(shè)的軟件依賴關(guān)系,確定入度為零或者最接近零的軟件類型拼裝文件,所述入度是指依賴于所述軟件類型拼裝文件而存在的其他拼裝文件的個數(shù);根據(jù)預(yù)設(shè)的軟件版本依賴關(guān)系確定所述軟件類型拼裝文件及其所依賴的拼裝文件的版本號;根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和所述版本號,生成當前鏡像文件的拼裝路徑;
依據(jù)所述拼裝路徑將所述所有拼裝文件生成一個有序拼裝文件序列。優(yōu)選的,所述所有拼裝文件的文件屬性至少包括鏡像文件、鏡像快照以及軟件包中的一個。 優(yōu)選的,所述根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件,具體包括根據(jù)所述拼裝路徑讀取有序拼裝文件序列中的第一個拼裝文件作為當前拼裝文件,進入當前拼裝文件處理流程,所述當前拼裝文件處理流程包括判斷所述當前拼裝文件的文件屬性是否是鏡像,若是鏡像,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝鏡像文件,并將所述拼裝鏡像文件安裝到待拼裝的當前鏡像文件中;若不是鏡像,則判斷所述當前拼裝文件的文件屬性是否是快照,若是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝快照文件,并將所述拼裝快照文件安裝到待拼裝的當前鏡像文件中;若不是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的軟件包,并將所述軟件包安裝到待拼裝的當前鏡像文件中;判斷所述有序拼裝文件序列中的拼裝文件是否都已被讀取,若否,則依據(jù)拼裝路徑,讀取所述有序拼裝文件集合中所述當前拼裝文件的下一個拼裝文件作為當前拼裝文件,執(zhí)行所述判斷當前拼裝文件的文件屬性是否是鏡像的步驟,直至所述有序拼裝文件序列中的拼裝文件都已被讀取。優(yōu)選的,所述根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件,之后,還包括將所述當前鏡像文件發(fā)送到所述當前鏡像文件拼裝請求中指定的服務(wù)器中運行,以啟動所述當前鏡像文件對應(yīng)的虛擬設(shè)備。一種鏡像文件拼裝系統(tǒng),所述系統(tǒng)包括獲取單元,用于根根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件;序列生成單元,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列;屬性確定單元,用于依據(jù)拼裝文件資源庫中記錄的拼裝文件存儲形式,確定有序拼裝文件序列中每一個拼裝文件的文件屬性;拼裝單元,用于根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件。優(yōu)選的,所述序列生成單元包括確定子單元,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系,確定入度為零或者最接近零的軟件類型拼裝文件,所述入度是指依賴于所述軟件類型拼裝文件而存在的其他拼裝文件的個數(shù);版本確定子單元,用于根據(jù)預(yù)設(shè)的軟件版本依賴關(guān)系確定所述軟件類型拼裝文件及其所依賴的拼裝文件的版本號;路徑生成子單元,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和所述版本號,生成當前鏡像文件的拼裝路徑;生成子單元,用于依據(jù)所述拼裝路徑將所述所有拼裝文件生成一個有序拼裝文件序列。優(yōu)選的,所述所有拼裝文件的文件屬性至少包括鏡像文件、鏡像快照以及軟件包中的一個。優(yōu)選的,所述拼裝單元包括讀取子單元,用于根據(jù)所述拼裝路徑,讀取有序拼裝文件序列中的第一個拼裝文件作為當前拼裝文件;處理子單元,用于執(zhí)行當前拼裝文件處理流程,所述當前拼裝文件處理流程包括
判斷所述當前拼裝文件的文件屬性是否是鏡像,若是鏡像,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝鏡像文件,并將所述拼裝鏡像文件安裝到待拼裝的當前鏡像文件中;若不是鏡像,則判斷所述當前拼裝文件的文件屬性是否是快照,若是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝快照文件,并將所述拼裝快照文件安裝到待拼裝的當前鏡像文件中;若不是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的軟件包,并將所述軟件包安裝到待拼裝的當前鏡像文件中;判斷所述有序拼裝文件序列中的拼裝文件是否都已被讀取,若否,則依據(jù)拼裝路徑,讀取所述有序拼裝文件序列中所述當前拼裝文件的下一個拼裝文件作為當前拼裝文件,執(zhí)行所述判斷當前拼裝文件的文件屬性是否是鏡像的步驟,直至所述有序拼裝文件序列中的拼裝文件都已被讀取。優(yōu)選的,所述系統(tǒng)還包括運行單元,用于將所述當前鏡像文件發(fā)送到所述當前鏡像文件拼裝請求中指定的服務(wù)器中運行,以啟動所述當前鏡像文件對應(yīng)的虛擬設(shè)備。本發(fā)明中,預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系是根據(jù)不同類型、不同版本的軟件的共性、去除冗余之后抽象出來的,所以與現(xiàn)有技術(shù)相比,本發(fā)明不需要存儲對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,而是將不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系進行存儲,在需要的時候根據(jù)所述依賴關(guān)系拼裝生成對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,因為存儲不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系所需的空間要遠遠小于一個鏡像文件的大小,所以節(jié)省了大量的存儲空間。


為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明一種鏡像文件的拼裝方法實施例I的流程圖;圖2為本發(fā)明采用的軟件依賴關(guān)系圖3為本發(fā)明采用的軟件版本依賴關(guān)系圖;圖4為本發(fā)明一種鏡像文件的拼裝方法實施例2的流程圖;圖5為本發(fā)明一種鏡像文件的拼裝系統(tǒng)實施例的結(jié)構(gòu)示意圖;圖6為系統(tǒng)實施例中序列生成單元的結(jié)構(gòu)示意圖;圖7為本發(fā)明系統(tǒng)實施例中拼裝單元的結(jié)構(gòu)示意圖;圖8為本發(fā)明在實際應(yīng)用中的一種結(jié)構(gòu)示意圖。
具體實施例方式為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅是本 發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。參考圖I所示,為本發(fā)明一種鏡像文件的拼裝方法實施例I的流程圖,本實施例具體可以包括步驟101 :根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件。用戶要生成對應(yīng)于某個類型的軟件的鏡像文件,才能使用某個類型的軟件,而如果要生成對應(yīng)于某個類型的軟件的鏡像文件,首先要生成對應(yīng)于該類型軟件及其版本的鏡像文件的拼裝請求,所述拼裝請求由用戶根據(jù)需要定義的包含所需軟件類型及版本信息的,具有一定格式的消息包,所述拼裝請求可通過圖形化工具或文本編輯器編輯生成。步驟102 :根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列。所述軟件依賴關(guān)系是根據(jù)不同類型的軟件安裝時的共性抽象出來的,可以表示不同類型的軟件在安裝時需要遵循的相關(guān)軟件的安裝順序和依賴關(guān)系。以軟件類型為Tomcat和MySQL時的軟件依賴關(guān)系舉例進行說明,參考圖2所示,圖2為軟件依賴關(guān)系的示意圖,圖2中所有的線可以稱為有向邊,所述有向邊代表不同軟件資源之間的安裝順序和依賴關(guān)系,比如,Tomcat和MySQL的安裝要依賴Ubuntu、Redhat OS或者CentOS。圖2中每個矩形可以看作是一個節(jié)點,不同節(jié)點代表了不同的軟件資源,其中出度為O的節(jié)點代表的軟件資源的存儲類型為鏡像文件,所述出度為O的節(jié)點是指起始于所述節(jié)點的有向邊的個數(shù),比如,起始于節(jié)點Ubuntu、Redhat OS和CentOS的有向邊的個數(shù)是零,終止于節(jié)點Ubuntu、Redhat OS和CentOS的有向邊的個數(shù)均為2,所以節(jié)點Ubuntu、Redhat OS和CentOS均是出度為O的節(jié)點,在圖2所示的軟件依賴關(guān)系中找到入度為零或者最近接零的節(jié)點,所述入度為零或者最近接零的節(jié)點代表軟件類型拼裝文件,所述入度指終止于節(jié)點的有向邊的個數(shù),根據(jù)入度為零或者最近接零的軟件類型拼裝文件節(jié)點查找軟件版本依賴關(guān)系圖,確定軟件類型拼裝文件及其依賴的拼裝文件的版本號,圖2中入度為零或者最近接零的軟件類型拼裝文件節(jié)點為Tomcat和MySQL。以軟件類型拼裝文件為Tomcat及其依賴的拼裝文件為Ubuntu為例,參考圖3所示,圖3為軟件版本依賴關(guān)系的示意圖,軟件版本依賴關(guān)系可以表示相互依賴的軟件之間具體版本的依賴關(guān)系。由圖3可知,Tomcat的版本有V5. 0、V5. 5和V6. 0,其中版本V5. O的安裝依賴于版本為V10、V11. 04的Ubuntu,當用戶需要安裝軟件的時候,軟件的版本是確定的,根據(jù)預(yù)設(shè)的軟件版本依賴關(guān)系即可確定待安裝的軟件類型拼裝文件所依賴的拼裝文件的版本,若給出的軟件版本依賴關(guān)系中不包含本次安裝的軟件的版本,則隨機根據(jù)軟件版本依賴關(guān)系確定本次安裝軟件所依賴的軟件的版本。那么根據(jù)圖2所示的軟件依賴關(guān)系和確定的拼裝文件的版本號,確定一個鏡像文件的拼裝路徑的原則是任意一條包含出度為零的節(jié)點的簡單路徑,由圖2可知要生成一個鏡像文件,確定要生成的鏡像文件的拼裝路徑可能不止一個,在實際應(yīng)用中,可以根據(jù)實際需要在多個拼裝路徑中選擇一個作為最終的拼裝路徑,在拼裝一個鏡像文件的時候要根據(jù)所述拼裝路徑進行有序的拼裝。參考圖2和圖3生成拼裝路徑的原理,在生成當前鏡像文件時,可以根據(jù)具體的軟件依賴關(guān)系和軟件版本依賴關(guān)系確定生成所述當前鏡像文件的拼裝路徑,并根據(jù)所述當前鏡像文件的拼裝路徑將所述所有拼裝文件生成一個有序拼裝文件序列。步驟103 :依據(jù)拼裝文件資源庫中記錄的拼裝文件存儲形式,確定有序拼裝文件·序列中每一個拼裝文件的文件屬性。拼裝文件資源庫中記錄了所有可用的拼裝鏡像文件、拼裝快照和拼裝軟件包,也就是說拼裝文件的存儲形式為鏡像文件、快照和軟件包,將所述拼裝文件的存儲形式作為拼裝文件的文件屬性。步驟104 :根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件。確定每個拼裝文件的文件屬性后,即可按照當前鏡像文件的拼裝路徑,依次將所述每一個拼裝文件拼裝到當前鏡像文件中以得到當前鏡像文件。本實施例的技術(shù)方案中,預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系是根據(jù)不同類型、不同版本的軟件的共性、去除冗余之后抽象出來的,所以與現(xiàn)有技術(shù)相比,本發(fā)明不需要存儲對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,而是將不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系進行存儲,在需要的時候根據(jù)所述依賴關(guān)系拼裝生成對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,因為存儲不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系所需的空間要遠遠小于一個鏡像文件的大小,所以節(jié)省了大量的存儲空間。參考圖4所示,為一種鏡像文件的拼裝方法實施例2的流程圖,本實施例可以看作是實施例I的一個具體實現(xiàn),本實施例具體可以包括步驟401 :根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件。步驟402 :根據(jù)預(yù)設(shè)的軟件依賴關(guān)系確定初始拼裝路徑。步驟403 :根據(jù)預(yù)設(shè)的軟件版本依賴關(guān)系,確定軟件類型拼裝文件及其依賴的拼裝文件的版本號。步驟404 :根據(jù)初始拼裝路徑和版本號確定當前鏡像拼裝文件的目的拼裝路徑。步驟405 :根據(jù)所述拼裝路徑將所述所有拼裝文件生成一個有序拼裝文件序列。步驟406 :獲取所述有序拼裝文件序列中每一個拼裝文件的文件屬性。本實施例中步驟40廣步驟406的實現(xiàn)參考實施例I中的步驟IOf步驟103的實現(xiàn)方式,此處不再贅述,其中在步驟401獲取當前鏡像文件所需的所有拼裝文件后,進一步的,可以在拼裝文件資源庫中查找所有所述拼裝文件,若所有拼裝文件中的任何一個拼裝文件不在拼裝文件資源庫中,則結(jié)束當前鏡像文件的拼裝流程。步驟407:根據(jù)每一個拼裝文件的文件屬性,按照拼裝路徑拼裝得到當前鏡像文件。本步驟的具體實現(xiàn)可以包括以下子步驟子步驟Al :讀取當前鏡像文件。 其中當前鏡像文件的獲取具體為根據(jù)所述拼裝路徑讀取有序拼裝文件序列中的第一個拼裝文件作為當前拼裝文件。子步驟A2 :判斷所述當前拼裝文件的文件屬性是否是鏡像,若是鏡像,則進入子步驟A3,若不是鏡像,則進入子步驟A4。子步驟A3 :查找所述當前拼裝文件對應(yīng)的拼裝鏡像文件并安裝。本步驟的具體實現(xiàn)為從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝鏡像文件,找到后,將所述拼裝鏡像文件安裝到待拼裝的當前鏡像文件中。子步驟A4:判斷所述當前拼裝文件的文件屬性是否是快照,若是快照,則進入子步驟A5,若不是快照,則進入子步驟A6。子步驟A5 :查找所述當前拼裝文件對應(yīng)的拼裝快照文件并安裝。本步驟的具體實現(xiàn)為從資源管理器中,找到后,將所述拼裝快照文件安裝到待拼裝的當前鏡像文件中。子步驟A6 :查找所述當前拼裝文件對應(yīng)的軟件包并安裝。本步驟的具體實現(xiàn)為從資源管理器中查找所述當前拼裝文件對應(yīng)的軟件包,找到后,將所述軟件包安裝到待拼裝的當前鏡像文件中。子步驟A7:判斷所述有序拼裝文件序列中的拼裝文件是否都已被讀取,若是,則結(jié)束,若否,則進入子步驟AS。子步驟AS:依據(jù)拼裝路徑,讀取所述有序拼裝文件集合中所述當前拼裝文件的下一個拼裝文件作為當前拼裝文件,返回子步驟A2。執(zhí)行完子步驟ΑΓΑ8,即可得到拼裝的當前鏡像文件。再返回圖4所示的實施例2,進入步驟408。步驟408 :運行當前鏡像文件。將所述當前鏡像文件發(fā)送到所述當前鏡像文件拼裝請求中指定的服務(wù)器中運行,以啟動所述當前鏡像文件對應(yīng)的虛擬設(shè)備。本實施例的技術(shù)方案中,預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系是根據(jù)不同類型、不同版本的軟件的共性、去除冗余之后抽象出來的,所以與現(xiàn)有技術(shù)相比,本發(fā)明不需要存儲對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,而是將不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系進行存儲,在需要的時候根據(jù)所述依賴關(guān)系拼裝生成對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,因為存儲不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系所需的空間要遠遠小于一個鏡像文件的大小,所以節(jié)省了大量的存儲空間。參考圖5所示,圖5為一種鏡像文件拼裝系統(tǒng)的結(jié)構(gòu)示意圖,所述系統(tǒng)包括
獲取單元510,用于根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件;序列生成單元520,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列;屬性確定單元530,用于依據(jù)拼裝文件資源庫中記錄的拼裝文件存儲形式,確定有序拼裝文件序列中每一個拼裝文件的文件屬性;拼裝單元540,用于根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件。在實際應(yīng)用中,參考圖6所示,為所述序列生成單元520的結(jié)構(gòu)框圖,所述序列生成單元520具體可以包括確定子單元610,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系,確定入度為零或者最接近零的軟 件類型拼裝文件,所述入度是指依賴于所述軟件類型拼裝文件而存在的其他拼裝文件的個數(shù);版本確定子單元620,用于根據(jù)預(yù)設(shè)的軟件版本依賴關(guān)系確定所述軟件類型拼裝文件及其所依賴的拼裝文件的版本號;路徑生成子單元630,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和所述版本號,生成當前鏡像文件的拼裝路徑;生成子單元640,用于依據(jù)所述拼裝路徑將所述所有拼裝文件生成一個有序拼裝文件序列。在實際應(yīng)用中,參考圖7所示,為所述拼裝單元540的結(jié)構(gòu)框圖,所述拼裝單元540具體可以包括讀取子單元710,用于根據(jù)所述拼裝路徑,讀取有序拼裝文件序列中的第一個拼裝文件作為當前拼裝文件;處理子單元720,用于執(zhí)行當前拼裝文件處理流程,所述前拼裝文件處理流程的具體實現(xiàn)參考步驟407,此處不再贅述。進一步的,所述系統(tǒng)還可以包括運行單元,用于將所述當前鏡像文件發(fā)送到所述當前鏡像文件拼裝請求中指定的服務(wù)器中運行,以啟動所述當前鏡像文件對應(yīng)的虛擬設(shè)備。在實際應(yīng)用中,本發(fā)明實施例的具體實現(xiàn)可以通過圖8所示的結(jié)構(gòu)來完成,包括分析模塊810,用于從拼裝請求中解析出拼裝當前鏡像文件所需的所有鏡像文件;資產(chǎn)目錄820,用于提供存儲設(shè)備上可用的所有拼裝文件目錄,為其它模塊提供文件檢索功能;元數(shù)據(jù)管理器830,用于管理數(shù)據(jù)庫中存儲的元數(shù)據(jù),為其它模塊提供資源查詢和圖檢索功能;資產(chǎn)元數(shù)據(jù)庫840,用于記錄所有可用的鏡像文件、快照、軟件包資源描述以及不同類型資源之間依賴關(guān)系圖、相互依賴的資源之間的版本依賴關(guān)系圖;拼裝服務(wù)器850,用于拼裝當前鏡像文件;資源管理器860,用于管理存儲在不同類型存儲設(shè)備上的鏡像文件、快照和軟件包資源,可以為其它模塊提供資源查詢和讀取功能。本實施例的技術(shù)方案中,預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系是根據(jù)不同類型、不同版本的軟件的共性、去除冗余之后抽象出來的,所以與現(xiàn)有技術(shù)相比,本發(fā)明不需要存儲對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,而是將不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系進行存儲,在需要的時候根據(jù)所述依賴關(guān)系拼裝生成對應(yīng)于不同類型、不同版本的軟件資源的鏡像文件,因為存儲不同類型、不同版本的軟件依賴關(guān)系和軟件版本依賴關(guān)系所需的空間要遠遠小于一個鏡像文件的大小,所以節(jié)省了大量的存儲空間。需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對于系統(tǒng)實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的系統(tǒng)實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。以上所述僅是本發(fā)明的具體實施方式
,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種鏡像文件拼裝方法,其特征在于,包括 根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件; 根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列; 依據(jù)拼裝文件資源庫中記錄的拼裝文件存儲形式,確定有序拼裝文件序列中每一個拼裝文件的文件屬性; 根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列,具體包括 根據(jù)預(yù)設(shè)的軟件依賴關(guān)系,確定入度為零或者最接近零的軟件類型拼裝文件,所述入度是指依賴于所述軟件類型拼裝文件而存在的其他拼裝文件的個數(shù); 根據(jù)預(yù)設(shè)的軟件版本依賴關(guān)系確定所述軟件類型拼裝文件及其所依賴的拼裝文件的版本號; 根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和所述版本號,生成當前鏡像文件的拼裝路徑; 依據(jù)所述拼裝路徑將所述所有拼裝文件生成一個有序拼裝文件序列。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述所有拼裝文件的文件屬性至少包括鏡像文件、鏡像快照以及軟件包中的一個。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件,具體包括 根據(jù)所述拼裝路徑讀取有序拼裝文件序列中的第一個拼裝文件作為當前拼裝文件,進入當前拼裝文件處理流程,所述當前拼裝文件處理流程包括 判斷所述當前拼裝文件的文件屬性是否是鏡像,若是鏡像,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝鏡像文件,并將所述拼裝鏡像文件安裝到待拼裝的當前鏡像文件中; 若不是鏡像,則判斷所述當前拼裝文件的文件屬性是否是快照,若是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝快照文件,并將所述拼裝快照文件安裝到待拼裝的當前鏡像文件中; 若不是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的軟件包,并將所述軟件包安裝到待拼裝的當前鏡像文件中; 判斷所述有序拼裝文件序列中的拼裝文件是否都已被讀取,若否,則依據(jù)拼裝路徑,讀取所述有序拼裝文件集合中所述當前拼裝文件的下一個拼裝文件作為當前拼裝文件,執(zhí)行所述判斷當前拼裝文件的文件屬性是否是鏡像的步驟,直至所述有序拼裝文件序列中的拼裝文件都已被讀取。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件,之后,還包括 將所述當前鏡像文件發(fā)送到所述當前鏡像文件拼裝請求中指定的服務(wù)器中運行,以啟動所述當前鏡像文件對應(yīng)的虛擬設(shè)備。
6.一種鏡像文件拼裝系統(tǒng),其特征在于,所述系統(tǒng)包括獲取單元,用于根根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件; 序列生成單元,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列; 屬性確定單元,用于依據(jù)拼裝文件資源庫中記錄的拼裝文件存儲形式,確定有序拼裝文件序列中每一個拼裝文件的文件屬性; 拼裝單元,用于根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述序列生成單元包括 確定子單元,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系,確定入度為零或者最接近零的軟件類型拼裝文件,所述入度是指依賴于所述軟件類型拼裝文件而存在的其他拼裝文件的個數(shù); 版本確定子單元,用于根據(jù)預(yù)設(shè)的軟件版本依賴關(guān)系確定所述軟件類型拼裝文件及其所依賴的拼裝文件的版本號; 路徑生成子單元,用于根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和所述版本號,生成當前鏡像文件的拼裝路徑; 生成子單元,用于依據(jù)所述拼裝路徑將所述所有拼裝文件生成一個有序拼裝文件序列。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述所有拼裝文件的文件屬性至少包括鏡像文件、鏡像快照以及軟件包中的一個。
9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述拼裝單元包括 讀取子單元,用于根據(jù)所述拼裝路徑,讀取有序拼裝文件序列中的第一個拼裝文件作為當前拼裝文件; 處理子單元,用于執(zhí)行當前拼裝文件處理流程,所述當前拼裝文件處理流程包括 判斷所述當前拼裝文件的文件屬性是否是鏡像,若是鏡像,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝鏡像文件,并將所述拼裝鏡像文件安裝到待拼裝的當前鏡像文件中; 若不是鏡像,則判斷所述當前拼裝文件的文件屬性是否是快照,若是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的拼裝快照文件,并將所述拼裝快照文件安裝到待拼裝的當前鏡像文件中; 若不是快照,則從資源管理器中查找所述當前拼裝文件對應(yīng)的軟件包,并將所述軟件包安裝到待拼裝的當前鏡像文件中; 判斷所述有序拼裝文件序列中的拼裝文件是否都已被讀取,若否,則依據(jù)拼裝路徑,讀取所述有序拼裝文件序列中所述當前拼裝文件的下一個拼裝文件作為當前拼裝文件,執(zhí)行所述判斷當前拼裝文件的文件屬性是否是鏡像的步驟,直至所述有序拼裝文件序列中的拼裝文件都已被讀取。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,還包括 運行單元,用于將所述當前鏡像文件發(fā)送到所述當前鏡像文件拼裝請求中指定的服務(wù)器中運行,以啟動所述當前鏡像文件對應(yīng)的虛擬設(shè)備。
全文摘要
本發(fā)明公開了一種鏡像文件拼裝方法及系統(tǒng),所述方法包括根據(jù)當前鏡像文件的拼裝請求獲取當前鏡像文件所需的所有拼裝文件;根據(jù)預(yù)設(shè)的軟件依賴關(guān)系和軟件版本依賴關(guān)系,將所述所有拼裝文件生成一個有序拼裝文件序列;依據(jù)拼裝文件資源庫中記錄的拼裝文件存儲形式,確定有序拼裝文件序列中每一個拼裝文件的文件屬性;根據(jù)確定的文件屬性依次將所述每一個拼裝文件按照所述拼裝路徑進行拼裝以得到當前鏡像文件。本發(fā)明中,采用存儲軟件依賴關(guān)系和軟件版本依賴關(guān)系代替存儲不同的鏡像文件,存儲所述軟件依賴關(guān)系和版本依賴關(guān)系所需的空間要遠遠小于一個鏡像文件的大小,所以節(jié)省了大量的存儲空間。
文檔編號G06F17/30GK102902770SQ20121036474
公開日2013年1月30日 申請日期2012年9月26日 優(yōu)先權(quán)日2012年9月26日
發(fā)明者許力 申請人:東軟集團股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
札达县| 邮箱| 永丰县| 偃师市| 桂东县| 吕梁市| 廉江市| 布尔津县| 福贡县| 泰顺县| 阿克陶县| 甘南县| 开封市| 定边县| 阳原县| 万载县| 南江县| 子长县| 延边| 望江县| 安阳市| 秭归县| 嘉鱼县| 泸溪县| 高州市| 阳春市| 鹤山市| 大兴区| 武清区| 维西| 岐山县| 上思县| 平阴县| 乐亭县| 莎车县| 江川县| 平原县| 老河口市| 仲巴县| 扎囊县| 阿瓦提县|