亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于流技術(shù)的軟件映像更新的制作方法

文檔序號(hào):6362465閱讀:185來(lái)源:國(guó)知局
專利名稱:基于流技術(shù)的軟件映像更新的制作方法
基于流技術(shù)的軟件映像更新技術(shù)領(lǐng)域
根據(jù)本發(fā)明的一種或多個(gè)實(shí)施例的解決方案涉及數(shù)據(jù)處理領(lǐng)域。更特別地,該解決方案涉及軟件映像(software image)的遷移。
背景技術(shù)
軟件映像的遷移是現(xiàn)代數(shù)據(jù)處理系統(tǒng)中很平常的活動(dòng);一般而言,軟件映像是包括安裝于計(jì)算機(jī)的大容量存儲(chǔ)器上的軟件模塊(例如,其操作系統(tǒng)、應(yīng)用程序和/或數(shù)據(jù))的結(jié)構(gòu)。例如,典型的情景是計(jì)算機(jī)的刷新,以將其操作系統(tǒng)更新到它的新版本。
旨在將當(dāng)前安裝于計(jì)算機(jī)上的操作系統(tǒng)(稱為源操作系統(tǒng))移動(dòng)到另一操作系統(tǒng)(稱為目標(biāo)操作系統(tǒng))的標(biāo)準(zhǔn)遷移過(guò)程一般地涉及下列步驟。首先,獲取計(jì)算機(jī)的快照,并且將其存儲(chǔ)于外部設(shè)備(例如,移動(dòng)硬盤或遠(yuǎn)程服務(wù)器)上。然后,運(yùn)行遷移工具以收集計(jì)算機(jī)的配置信息(該計(jì)算機(jī)的配置信息同樣存儲(chǔ)于外部設(shè)備上)。在這點(diǎn)上,可以將目標(biāo)操作系統(tǒng)安裝于計(jì)算機(jī)上。然后,遷移工具再次運(yùn)行以將所存儲(chǔ)的配置信息應(yīng)用于目標(biāo)操作系統(tǒng)。在目標(biāo)操作系統(tǒng)遇到了任何問(wèn)題(例如,計(jì)算機(jī)的不正確操作)的情況下,源操作系統(tǒng)的快照就被恢復(fù)到計(jì)算機(jī)上以便返回其初始狀態(tài)。
但是,上述遷移過(guò)程存在幾個(gè)缺點(diǎn)。
特別地,遷移過(guò)程很緩慢。實(shí)際上,目標(biāo)操作系統(tǒng)的安裝耗費(fèi)的時(shí)間長(zhǎng)(量級(jí)為30-60分鐘);在這段時(shí)間內(nèi),計(jì)算機(jī)是完全不可用的。而且,原操作系統(tǒng)的恢復(fù)(在必要時(shí))耗費(fèi)的時(shí)間同樣是長(zhǎng)的(在這段時(shí)間內(nèi)計(jì)算機(jī)也是不可用的)。還要花費(fèi)更多的時(shí)間來(lái)獲取源操作系統(tǒng)的快照,該操作應(yīng)當(dāng)總是在安裝目標(biāo)操作系統(tǒng)之前進(jìn)行的(以便允許在有問(wèn)題的情況下恢復(fù)源操作系統(tǒng))。
遷移過(guò)程還需要大量存儲(chǔ)空間(在外部設(shè)備上)來(lái)存儲(chǔ)源操作系統(tǒng)的快照,此外還需要更多的存儲(chǔ)空間來(lái)存儲(chǔ)配置信息。
另外,一旦目標(biāo)操作系統(tǒng)已經(jīng)安裝于計(jì)算機(jī)上,就丟失尚未以遷移工具收集的任何配置信息(例如,因?yàn)樗驯贿z漏)。因此,該配置信息無(wú)法再恢復(fù)。實(shí)際上,訪問(wèn)它的唯一可能是恢復(fù)源操作系統(tǒng)的快照;但是,該操作是如此耗時(shí)以致于在實(shí)踐中幾乎不會(huì)執(zhí)行它。相反地,當(dāng)這發(fā)生時(shí),常見(jiàn)的做法是設(shè)法手工施加丟失的配置信息;但是,該操作很容易出錯(cuò)和/或疏漏。
作為代替,US-B·-6,920,555描述了就地(in-place)遷移過(guò)程。為了這個(gè)目的,估計(jì)需要保存配置信息的存儲(chǔ)空間;在計(jì)算機(jī)的硬盤內(nèi)創(chuàng)建空閑存儲(chǔ)空間,以致于足以存儲(chǔ)配置信息。然后,將目標(biāo)軟件映像安裝于計(jì)算機(jī)上(例如,通過(guò)使用可引導(dǎo)光盤或網(wǎng)絡(luò)引導(dǎo)映像)。在這點(diǎn)上,可以將配置信息從空閑存儲(chǔ)空間恢復(fù)到目標(biāo)軟件映像。
這允許避免對(duì)在例如網(wǎng)絡(luò)服務(wù)器上存儲(chǔ)配置信息的需要;以此方式,遷移過(guò)程可以在多個(gè)計(jì)算機(jī)上并行進(jìn)行。而且,配置信息的遷移也可以在沒(méi)有任何網(wǎng)絡(luò)連接的情況下執(zhí)行。但是,該文獻(xiàn)所描述的方法存在以上所指出的所有其他缺點(diǎn)。

發(fā)明內(nèi)容
一般地說(shuō),根據(jù)本發(fā)明的一種或多個(gè)實(shí)施例的解決方案基于在遷移過(guò)程中維持大容量存儲(chǔ)器的初始內(nèi)容的思路。特別地,根據(jù)本發(fā)明的具體實(shí)施例的解決方案的一個(gè)或多個(gè)方面在獨(dú)立權(quán)利要求中闡明,在從屬權(quán)利要求中闡明同一解決方案的有利特征,這些權(quán)利要求的用詞以引用方式逐字并入本文(具有參照根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案的一個(gè)具體方案來(lái)提供的任何有利特征,該具體方面加以必要變更可應(yīng)用于該解決方案的所有其他方面)。更具體地,根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案的一個(gè)方面提供了一種用于將數(shù)據(jù)處理實(shí)體(例如,計(jì)算機(jī))從安裝于該數(shù)據(jù)處理實(shí)體的大容量存儲(chǔ)器上的原軟件映像遷移到存儲(chǔ)于外部源(例如,遠(yuǎn)程映像儲(chǔ)存庫(kù))上的目標(biāo)軟件映像的方法。每個(gè)軟件映像包括多個(gè)存儲(chǔ)塊;每個(gè)存儲(chǔ)塊在軟件映像內(nèi)都具有對(duì)應(yīng)的映像地址。大容量存儲(chǔ)器包括多個(gè)存儲(chǔ)位置,每個(gè)存儲(chǔ)位置用于保存存儲(chǔ)塊;存儲(chǔ)位置在大容量存儲(chǔ)器內(nèi)具有對(duì)應(yīng)的存儲(chǔ)地址。該方法包括下列步驟。釋放大容量存儲(chǔ)器的一部分(例如,通過(guò)收縮(Shrink)源軟件映像)。存儲(chǔ)于目標(biāo)軟件映像的引導(dǎo)位置內(nèi)的存儲(chǔ)塊被重定位于所釋放部分上;引導(dǎo)位置是具有與目標(biāo)軟件映像的引導(dǎo)塊的映像地址相等的存儲(chǔ)地址的存儲(chǔ)位置內(nèi),該引導(dǎo)塊包括將數(shù)據(jù)處理實(shí)體引導(dǎo)到加載流功能(streaming function)(適合于從外部源中下載目標(biāo)軟件映像)的存儲(chǔ)塊。引導(dǎo)塊存儲(chǔ)于對(duì)應(yīng)的引導(dǎo)位置。數(shù)據(jù)處理實(shí)體從對(duì)應(yīng)引導(dǎo)位置內(nèi)的引導(dǎo)塊引導(dǎo)(由此加載流功能)。對(duì)讀取目標(biāo)軟件映像的選定存儲(chǔ)塊的每個(gè)請(qǐng)求都通過(guò)流功能來(lái)服務(wù):當(dāng)選定的存儲(chǔ)塊不能在大容量存儲(chǔ)器中獲得時(shí),流功能從外部源中下載選定的存儲(chǔ)塊,并且將所選存儲(chǔ)塊存儲(chǔ)于所釋放部分內(nèi),或者(否者的話)流功能從大容量存儲(chǔ)器中檢索所選定的存儲(chǔ)塊。根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案的另一方面提供了包括用于在計(jì)算機(jī)程序執(zhí)行于數(shù)據(jù)處理系統(tǒng)上時(shí)促使數(shù)據(jù)處理系統(tǒng)執(zhí)行本方法的步驟的代碼裝置的計(jì)算機(jī)程序;根據(jù)本發(fā)明的一種能夠?qū)嵤├挠忠环矫嫣峁┝税w現(xiàn)計(jì)算機(jī)程序的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)程序產(chǎn) 品,計(jì)算機(jī)程序包括可直接加載到數(shù)據(jù)處理系統(tǒng)的工作存儲(chǔ)器內(nèi)由此配置數(shù)據(jù)處理系統(tǒng)使其執(zhí)行該同一方法的代碼裝置。根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案的另一方面提供了包括用于執(zhí)行所述方法的步驟的裝置的系統(tǒng)。


參考下面純粹以非限制性的指示的方式給出的應(yīng)結(jié)合附圖來(lái)閱讀的具體實(shí)施方式
,根據(jù)本發(fā)明的一種或多個(gè)實(shí)施例的解決方案,以及它的更多特征和優(yōu)點(diǎn)將會(huì)得到最佳的理解(在附圖中,為了簡(jiǎn)單起見(jiàn),對(duì)應(yīng)的元件以相同的或類似的參照符號(hào)來(lái)表示,并且不重復(fù)關(guān)于它們的解釋,以及每個(gè)實(shí)體的名稱一般被用來(lái)指示其類型和屬性兩者,例如,它的值、內(nèi)容和表示)。具體地:圖1示出了其中可應(yīng)用根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案的計(jì)算機(jī)的示意性框圖;圖2A至圖2G不出了表不根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案的一個(gè)不例性應(yīng)用的總體概覽的協(xié)作圖,
圖3A-圖3C示出了描述與根據(jù)本發(fā)明的一個(gè)實(shí)施例的遷移過(guò)程相關(guān)的活動(dòng)流程的活動(dòng)圖,以及
圖4示出了表示可以用來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明的一個(gè)實(shí)施例的制備過(guò)程的主要軟件構(gòu)件的協(xié)作圖。
具體實(shí)施方式
特別地參照?qǐng)D1,圖中示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案可應(yīng)用于其中的計(jì)算機(jī)100的示例性框圖。計(jì)算機(jī)100 (例如,PC)由與系統(tǒng)總線105并行連接的若干單元形成。詳細(xì)地,一個(gè)或多個(gè)微處理器(μ Ρ)110控制著計(jì)算機(jī)100的操作;RAM115由微處理器110用作工作存儲(chǔ)器,以及R0M120存儲(chǔ)計(jì)算機(jī)100的基本代碼。若干外圍單元聚集于局部總線125周圍(借助于各自的接口)。特別地,大容量存儲(chǔ)器包括一個(gè)或多個(gè)硬盤130以及用于讀取光盤140 (例如,DVD或⑶)的驅(qū)動(dòng)器135。而且,計(jì)算機(jī)100包括輸入單元145(例如,鍵盤和鼠標(biāo)),以及輸出單元150 (例如,監(jiān)視器和打印機(jī))。適配器155被用來(lái)將計(jì)算機(jī)100連接至網(wǎng)絡(luò)(圖中未示出)。橋接器單元160使系統(tǒng)總線105與局部總線120接口連接(interface)。每個(gè)微處理器110和橋接器單元160能夠作為為了傳輸信息請(qǐng)求對(duì)系統(tǒng)總線105的訪問(wèn)的主代理來(lái)操作。仲裁器165管理對(duì)系統(tǒng)總線105的互斥訪問(wèn)的授權(quán)。
根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案被用來(lái)遷移安裝于計(jì)算機(jī)100上的軟件映像(例如,將其操作系統(tǒng)更新為它的新版本)。一般地,每個(gè)軟件映像包括一個(gè)或多個(gè)軟件模塊(例如,操作系統(tǒng)、應(yīng)用程序和/或數(shù)據(jù));軟件映像由一組存儲(chǔ)塊(例如,每個(gè)存儲(chǔ)塊為1-10MB)形成,該組存儲(chǔ)塊在軟件映像內(nèi)具有對(duì)應(yīng)的地址(稱為映像地址)。
更具體地,在圖2A-圖2G中示出了代表根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案的一種示例性應(yīng)用的總體概覽的協(xié)作圖。協(xié)作圖示出了所涉及的主要軟件構(gòu)件的作用,并且特別地示出了它們的靜態(tài)結(jié)構(gòu)(以標(biāo)記符號(hào)200標(biāo)示為一個(gè)整體)和動(dòng)態(tài)行為(通過(guò)一系列交換消息,每個(gè)交換消息代表對(duì)應(yīng)的動(dòng)作,以符號(hào)“A”開(kāi)頭的漸進(jìn)序列編號(hào)標(biāo)示)。
從圖2A開(kāi)始,源軟件映像205s被安裝于硬盤130上;源軟件映像205s包括硬盤130的一個(gè)或多個(gè)邏輯分區(qū),圖中未示出(例如,主引導(dǎo)分區(qū)和可能的附加分區(qū))。硬盤130被組織成在硬盤130內(nèi)具有對(duì)應(yīng)地址(稱為,存儲(chǔ)地址)的一組存儲(chǔ)位置,每個(gè)存儲(chǔ)位置用于保存存儲(chǔ)塊。源軟件映像205s包括至少部分加載到工作存儲(chǔ)器115內(nèi)的源操作系統(tǒng)210s和部署代理215 (在下面描述 )。
計(jì)算機(jī)100的用戶220向部署代理215提交使計(jì)算機(jī)100遷移至可在外部源(例如,遠(yuǎn)程映像儲(chǔ)存庫(kù))上獲得的目標(biāo)軟件映像225 (動(dòng)作“Al:遷移(Migrate)”)的請(qǐng)求。響應(yīng)于此,部署代理215通過(guò)例如利用源操作系統(tǒng)210s的內(nèi)置功能來(lái)收縮源軟件映像205s(動(dòng)作 “A2:收縮(Shrink)”)。
結(jié)果,如圖2B所示,硬盤130的一部分230被釋放。在這點(diǎn)上,部署代理215下載目標(biāo)軟件映像225的一組引導(dǎo)塊(通過(guò)稱為引導(dǎo)地址的對(duì)應(yīng)的映像地址來(lái)標(biāo)識(shí));目標(biāo)軟件映像225的弓I導(dǎo)塊包括需要用以開(kāi)始目標(biāo)軟件映像225的弓I導(dǎo)順序以加載部署代理的流驅(qū)動(dòng)器的存儲(chǔ)塊(將在下面描述)(動(dòng)作“A3:下載(Download)”)。部署代理215然后將存儲(chǔ)于目標(biāo)軟件映像225的引導(dǎo)位置(具有它們的等于目標(biāo)軟件映像225的引導(dǎo)地址的存儲(chǔ)地址)內(nèi)的源軟件映像205s的存儲(chǔ)塊重定位到釋放部分230的對(duì)應(yīng)存儲(chǔ)位置——稱為重定位的存儲(chǔ)位置235s (動(dòng)作“A4:重定位(Relocate)”)。部署代理215現(xiàn)在能夠?qū)⒛繕?biāo)軟件映像225的引導(dǎo)塊存儲(chǔ)于它們的引導(dǎo)位置中——在這些引導(dǎo)位置中它們以深灰色來(lái)區(qū)分并且以符號(hào)240t標(biāo)示。以此方式,引導(dǎo)塊240t被布置于硬盤130內(nèi),正好于它們?cè)谀繕?biāo)軟件映像225的引導(dǎo)順序期間被預(yù)期被發(fā)現(xiàn)的地方;然而,這不會(huì)導(dǎo)致源軟件映像205s中的信息的任何損失,因?yàn)楸桓采w的對(duì)應(yīng)存儲(chǔ)塊被保存于重定位的存儲(chǔ)位置235s內(nèi)(動(dòng)作“A5:存儲(chǔ)(Store)”)。在這點(diǎn)上,部署代理215關(guān)閉,然后開(kāi)啟計(jì)算機(jī)100,以便從其引導(dǎo)位置內(nèi)的目標(biāo)軟件映像225的引導(dǎo)塊240t重新引導(dǎo)它(動(dòng)作“A6:重新引導(dǎo)(Re-boot)”)。因此,如圖2C所示,目標(biāo)軟件映像225的目標(biāo)操作系統(tǒng)210t的對(duì)應(yīng)于其引導(dǎo)塊240t的部分及部署代理215的流驅(qū)動(dòng)器被加載到工作存儲(chǔ)器115內(nèi)。部署代理215然后將源軟件映像205s的用戶配置傳輸?shù)秸惭b于計(jì)算機(jī)100上的目標(biāo)軟件映像225 ;例如,源軟件映像205s的配置信息被從(安裝于目標(biāo)操作系統(tǒng)210t內(nèi)的)硬盤130中收集,并且然后被應(yīng)用于目標(biāo)軟件映像225的本地版本一即,在被寫入釋放部分230中的對(duì)應(yīng)存儲(chǔ)塊內(nèi)(動(dòng)作“A7:傳輸(Transfer)”)。計(jì)算機(jī)100現(xiàn)在能夠以由流驅(qū)動(dòng)器以流方式提供的目標(biāo)軟件映像225的每個(gè)存儲(chǔ)塊來(lái)正常地使用(運(yùn)行目標(biāo)軟件映像225的本地版本);為了該目的,如同下面將詳細(xì)描述的,流驅(qū)動(dòng)器在其可從硬盤130中獲得時(shí)通過(guò)在硬盤130中檢索存儲(chǔ)塊來(lái)讀取存儲(chǔ)塊,否則通過(guò)從外部源下載存儲(chǔ)塊來(lái)讀取它(同時(shí)將其存儲(chǔ)于釋放部分230內(nèi)),并且無(wú)論何種情況都通過(guò)將其存儲(chǔ)于釋放部分230內(nèi)來(lái)寫入存儲(chǔ)塊。然后,用戶220能夠廣泛地測(cè)試?yán)媚繕?biāo)軟件映像225的本地版本的計(jì)算機(jī)100,以便驗(yàn)證它是否操作正確(動(dòng)作 “A8:流(Stream)”)?,F(xiàn)在參照?qǐng)D2D,當(dāng)用戶220確信(satisfy)利用目標(biāo)軟件映像225的本地版本的計(jì)算機(jī)100的操作時(shí),她/他通過(guò)將對(duì)應(yīng)的請(qǐng)求提交到部署代理215來(lái)提交遷移(動(dòng)作“A9:提交(Commit)”)。響應(yīng)于此,部署代理215將目標(biāo)軟件映像225的本地版本的全部存儲(chǔ)塊(在可從釋放部分230獲得時(shí)則從釋放部分230復(fù)制,否則從外部源復(fù)制)復(fù)制到它們?cè)谟脖P130中的實(shí)際存儲(chǔ)位置(具有等于對(duì)應(yīng)的映像地址的存儲(chǔ)地址)(動(dòng)作“A10:復(fù)制(Copy)”)。因此,如圖2E所·示,目標(biāo)軟件映像的本地版本(以符號(hào)205t標(biāo)示)現(xiàn)在已通過(guò)覆蓋源軟件映像的方式完全安裝于硬盤130上。計(jì)算機(jī)100現(xiàn)在能夠自目標(biāo)軟件映像205t重新引導(dǎo),以便正常地操作(動(dòng)作“All:重新引導(dǎo)(Re-boot)”)。相反地,如圖2F所示,如果用戶不確信具有目標(biāo)軟件映像225的本地版本的計(jì)算機(jī)100的操作,她/他可以通過(guò)將對(duì)應(yīng)的請(qǐng)求提交到部署代理215而回滾至源軟件映像205s (動(dòng)作“A12:回滾(Roll-back)”)。響應(yīng)于此,部署代理215使源軟件映像205t的存儲(chǔ)塊從重定位的位置235s恢復(fù)到目標(biāo)軟件映像225的引導(dǎo)位置(動(dòng)作“A13:恢復(fù)(Restore)”)。然后,部署代理215放大源軟件映像205s以便恢復(fù)其原始尺寸,由此覆蓋存儲(chǔ)于釋放部分230內(nèi)的目標(biāo)軟件映像225的存儲(chǔ)塊(動(dòng)作“A14:放大(Enlarge)”)。在這點(diǎn)上,部署代理215關(guān)閉并然后開(kāi)啟計(jì)算機(jī)100。因此,如圖2G所示,計(jì)算機(jī)100自源軟件映像205s重新引導(dǎo),由此再次加載源操作系統(tǒng)210s (動(dòng)作“A15:重新引導(dǎo)(Re-boot)”)。上述解決方案使計(jì)算機(jī)在很短的時(shí)間內(nèi)一剛好在其引導(dǎo)塊已經(jīng)存儲(chǔ)于硬盤內(nèi)之后(例如,對(duì)于10-200Mb的典型尺寸的引導(dǎo)塊,在1-2分鐘之后)準(zhǔn)備好以目標(biāo)軟件映像來(lái)使用;然后,計(jì)算機(jī)的操作是完全正常的(其引導(dǎo)如往常一樣直接來(lái)自硬盤),與在硬盤內(nèi)是否可獲得目標(biāo)軟件映像的其他存儲(chǔ)塊無(wú)關(guān)一當(dāng)它訪問(wèn)還要從外部源下載的存儲(chǔ)塊時(shí),計(jì)算機(jī)的性能只是稍微下降(該性能下降隨時(shí)間減小,因?yàn)橐坏┐鎯?chǔ)塊被訪問(wèn)過(guò)一次,則越來(lái)越多的存儲(chǔ)塊將已經(jīng)是可在硬盤上獲得的)。而且,使計(jì)算機(jī)做好使用準(zhǔn)備所需要的時(shí)間與目標(biāo)軟件映像的尺寸無(wú)關(guān)。
該遷移過(guò)程不需要任何另加的存儲(chǔ)空間。實(shí)際上,源軟件映像保留于硬盤上;因此,其配置信息可以直接從硬盤中收集,以便將其應(yīng)用于目標(biāo)軟件映像。
而且,源軟件映像被維持為原樣,直到用戶決定提交到目標(biāo)軟件映像的遷移。因此,源軟件映像的配置信息仍然可由目標(biāo)軟件映像訪問(wèn)(直到遷移被提交)。以此方式,可以收集(從源軟件映像)并且在利用目標(biāo)軟件映像的計(jì)算機(jī)的測(cè)試期間的任何時(shí)間應(yīng)用(到目標(biāo)軟件映像)任一配置信息(即使它在開(kāi)始時(shí)已被遺忘);這避免了或者至少基本上降低了在遷移過(guò)程中丟失任一配置信息的風(fēng)險(xiǎn)。
上述解決方案還允許在很短的時(shí)間內(nèi)恢復(fù)源操作系統(tǒng)(在必要時(shí)),因?yàn)樗匀豢稍谟脖P上獲得;實(shí)際上,該操作只需要恢復(fù)已經(jīng)重定位的源軟件映像的存儲(chǔ)塊(以存儲(chǔ)目標(biāo)軟件映像的引導(dǎo)塊)。而且,該解決方案不需要預(yù)先獲取源軟件映像的任何快照用于其在出問(wèn)題的情況下恢復(fù)(相對(duì)應(yīng)地節(jié)省時(shí)間)。
現(xiàn)在參照?qǐng)D3A-3C,圖中示出了描述與根據(jù)本發(fā)明的一個(gè)實(shí)施例的遷移過(guò)程相關(guān)的活動(dòng)流程的活動(dòng)圖,該遷移過(guò)程以方法300表示。
方法300從黑色的開(kāi)始圓形302開(kāi)始,并且然后一旦用戶提交使計(jì)算機(jī)遷移到目標(biāo)軟件映像的請(qǐng)求(到部署代理)就轉(zhuǎn)到塊304。響應(yīng)于此,部署代理在塊306處收縮源軟件映像,以便釋放硬盤的一部分;例如,該結(jié)果可以通過(guò)恢復(fù)尚未分配給任何文件的未使用存儲(chǔ)空間,或者通過(guò)刪除臨時(shí)文件來(lái)獲得(使用源操作系統(tǒng)的內(nèi)置功能)。轉(zhuǎn)到塊308,部署代理從外部源下載目標(biāo)軟件映像的引導(dǎo)塊(如其中與目標(biāo)軟件映像關(guān)聯(lián)地所指定的);例如,在微軟的Windows中,引導(dǎo)塊包括(除了流驅(qū)動(dòng)器外)主引導(dǎo)記錄(MBR)、引導(dǎo)扇區(qū)、bootmgr.exe文件、boot\bcd文件、系統(tǒng)注冊(cè)表、winload, exe文件,以及在系統(tǒng)注冊(cè)表中指定的驅(qū)動(dòng)文件。為了該目的,當(dāng)目 標(biāo)軟件映像被存儲(chǔ)于遠(yuǎn)程服務(wù)器的映像儲(chǔ)存庫(kù)內(nèi)時(shí),部署代理可以充當(dāng)基于例如互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口(iSCSI)協(xié)議而與遠(yuǎn)程服務(wù)器的遠(yuǎn)程訪問(wèn)服務(wù)程序交互的遠(yuǎn)程訪問(wèn)啟動(dòng)程序。
現(xiàn)在參照塊310,部署代理將存儲(chǔ)于目標(biāo)軟件映像的引導(dǎo)位置內(nèi)的源軟件映像的存儲(chǔ)塊重定位到釋放部分。特別地,存儲(chǔ)于目標(biāo)軟件映像的引導(dǎo)位置內(nèi)的存儲(chǔ)塊被連續(xù)地讀取,并且將其按相同的順序復(fù)制到釋放部分的第一存儲(chǔ)位置內(nèi)。
繼續(xù)到塊312,部署代理以流驅(qū)動(dòng)器的控制結(jié)構(gòu)來(lái)初始化所釋放部分。為了該目的,部署代理創(chuàng)建用來(lái)使目標(biāo)軟件映像的每個(gè)存儲(chǔ)塊與其在硬盤中存儲(chǔ)的存儲(chǔ)位置關(guān)聯(lián)的塊映射(block map)(在開(kāi)始時(shí),指示在硬盤中沒(méi)有可獲得的目標(biāo)軟件映像的存儲(chǔ)塊)。特別地,當(dāng)所釋放部分(更精確地,其在重定位的存儲(chǔ)位置和控制結(jié)構(gòu)之后的有用部分)具有允許存儲(chǔ)整個(gè)目標(biāo)軟件映像的尺寸時(shí),它可以作為用于目標(biāo)軟件映像的本地儲(chǔ)存庫(kù)來(lái)操作。在這種情況下,塊映射可以是位圖;位圖具有用于目標(biāo)軟件映像的每個(gè)映像地址的條目,該條目包括用于指示對(duì)應(yīng)的存儲(chǔ)塊是否存儲(chǔ)于所釋放部分中的相同位置內(nèi)的可用性標(biāo)記(即,在具有等于映像地址加上在硬盤內(nèi)的釋放部分的有用部分的偏移的存儲(chǔ)地址的存儲(chǔ)位置中);在開(kāi)始時(shí),所有可用性標(biāo)記都被取消斷言(以指示對(duì)應(yīng)的存儲(chǔ)塊沒(méi)有存儲(chǔ)于所釋放部分內(nèi))。相反地,當(dāng)所釋放部分具有不允許存儲(chǔ)整個(gè)目標(biāo)軟件映像的尺寸時(shí),它可以作為用于目標(biāo)軟件映像的本地高速緩存來(lái)操作。在這種情況下,塊映射可以是查找表;查找表具有用于所釋放部分的有用部分的每個(gè)存儲(chǔ)位置的存儲(chǔ)地址的條目,該條目包括存儲(chǔ)于其內(nèi)的目標(biāo)軟件映像的存儲(chǔ)塊的映像地址,并且指示存儲(chǔ)塊是否已經(jīng)更新過(guò)的更新標(biāo)記(關(guān)于其在外部源內(nèi)的原始版本);在開(kāi)始時(shí),查找表的所有條目都具有等于空值的映像地址(以指示存儲(chǔ)塊沒(méi)有存儲(chǔ)于所釋放部分內(nèi))。另外,部署代理創(chuàng)建引導(dǎo)列表;引導(dǎo)列表指出目標(biāo)軟件映像的引導(dǎo)地址。部署代理還創(chuàng)建復(fù)制計(jì)數(shù)器,該復(fù)制計(jì)數(shù)器指定在遷移提交之后已經(jīng)復(fù)制到其在硬盤內(nèi)的正確位置的目標(biāo)軟件映像的最后存儲(chǔ)塊的映像地址,這將在下面描述(該復(fù)制計(jì)數(shù)器在開(kāi)始時(shí)被設(shè)定為零)?,F(xiàn)在轉(zhuǎn)到塊314,部署代理將目標(biāo)軟件映像的引導(dǎo)塊存儲(chǔ)于它們的引導(dǎo)位置內(nèi)(這在引導(dǎo)列表內(nèi)指出)。在塊316,部署代理關(guān)閉并然后開(kāi)啟計(jì)算機(jī),以便促使其自在其引導(dǎo)位置內(nèi)的目標(biāo)軟件映像的引導(dǎo)塊重新引導(dǎo)。實(shí)際上,存儲(chǔ)于計(jì)算機(jī)的固件內(nèi)的在計(jì)算機(jī)開(kāi)啟時(shí)執(zhí)行的引導(dǎo)加載程序(例如,基本輸入/輸出系統(tǒng)(BIOS))將硬盤識(shí)別為可引導(dǎo)設(shè)備;因此,BIOS加載MBR,MBR加載引導(dǎo)扇區(qū),引導(dǎo)扇區(qū)找到并啟動(dòng)bootmgr.exe文件,bootmgr.exe找到并讀取boot\bcd文件以確定系統(tǒng)注冊(cè)表的存儲(chǔ)位置(the memory locations of)并然后加載系統(tǒng)注冊(cè)表、winload, exe文件以及在系統(tǒng)注冊(cè)表中指定的驅(qū)動(dòng)文件;winload.exe然后啟動(dòng)部署代理的流驅(qū)動(dòng)器,該流驅(qū)動(dòng)器覆蓋目標(biāo)操作系統(tǒng)的標(biāo)準(zhǔn)文件系統(tǒng)驅(qū)動(dòng)器(以服務(wù)訪問(wèn)目標(biāo)軟件映像的任何存儲(chǔ)塊的每個(gè)請(qǐng)求,這將在下面描述)。繼續(xù)到塊318,部署代理根據(jù)目標(biāo)操作系統(tǒng)來(lái)安裝計(jì)算機(jī)上的硬盤(以便允許訪問(wèn)它,并且然后源軟件映像)。在這點(diǎn)上,部署代理將源軟件映像的用戶配置傳輸?shù)侥繕?biāo)軟件映像;例如,源軟件映像的用戶配置包括設(shè)定(例如,與操作系統(tǒng)或應(yīng)用程序的外觀和行為相關(guān)的)和/或數(shù)據(jù)(例如,外設(shè)驅(qū)動(dòng)器、Cookie和地址簿)。為了該目的,部署代理在塊320處通過(guò)運(yùn)行合適的遷移工具(例如,Windows中的用戶狀態(tài)遷移工具(USMT)的ScanState.exe程序)來(lái)收集源軟件映像的配置信息。在這 種情況下,對(duì)于讀取在對(duì)應(yīng)的映像地址處的源軟件映像的存儲(chǔ)塊(分別稱為配置映像地址和配置存儲(chǔ)塊)的每個(gè)請(qǐng)求(由遷移工具),流驅(qū)動(dòng)器在塊322處驗(yàn)證配置存儲(chǔ)塊是否已經(jīng)重定位到釋放部分(即,當(dāng)配置映像地址等于目標(biāo)軟件映像的引導(dǎo)地址之一時(shí),如同在其引導(dǎo)列表內(nèi)所指出的)。若果如此,流驅(qū)動(dòng)器在塊324處更新配置映像地址以便指向?qū)?yīng)的重定位的存儲(chǔ)位置。然后,方法300下行至塊326 ;當(dāng)配置存儲(chǔ)位置還未被重定位時(shí),也可從塊322直接到達(dá)該同一點(diǎn)。在這點(diǎn)上,流驅(qū)動(dòng)器從具有等于(可能已更新的)配置映像地址的存儲(chǔ)地址的存儲(chǔ)位置中檢索配置存儲(chǔ)塊。繼續(xù)到塊328,流驅(qū)動(dòng)器將所收集的配置信息應(yīng)用于目標(biāo)軟件映像(通過(guò)執(zhí)行在所討論的實(shí)例中的USMT的LoadState.exe程序);為了該目的,流驅(qū)動(dòng)器將目標(biāo)軟件映像的對(duì)應(yīng)存儲(chǔ)塊寫入硬盤內(nèi)(這將在下面描述)?,F(xiàn)在,計(jì)算機(jī)100能夠正常地使用(運(yùn)行目標(biāo)軟件映像)。特別地,方法300 —旦讀取目標(biāo)軟件映像的選定存儲(chǔ)塊(在對(duì)應(yīng)的選定映像地址處)的請(qǐng)求被提交給目標(biāo)操作系統(tǒng)(例如,由應(yīng)用程序)就下行至塊330。讀請(qǐng)求在塊332處被傳遞到流驅(qū)動(dòng)器,該流驅(qū)動(dòng)器驗(yàn)證所選定的存儲(chǔ)塊是否已經(jīng)可在硬盤上獲得。為了該目的,流驅(qū)動(dòng)器首先將所選定映像地址與目標(biāo)軟件映像的引導(dǎo)地址進(jìn)行比較(如在引導(dǎo)列表中所指示的),以確定所選定的存儲(chǔ)塊是否是引導(dǎo)塊,并且然后總是存儲(chǔ)于對(duì)應(yīng)的引導(dǎo)位置內(nèi)。若否,則流驅(qū)動(dòng)器將所選定的映像地址與復(fù)制計(jì)數(shù)器比較,以確定所選定的映像地址是否等于或高于復(fù)制計(jì)數(shù)器,并且然后所選定的存儲(chǔ)塊已經(jīng)被復(fù)制到其在硬盤內(nèi)的正確位置(在遷移已經(jīng)提交之后,這將在下面描述)。相反地,按照所釋放部分的操作模式來(lái)執(zhí)行不同的操作。特別地,當(dāng)所釋放部分作為本地儲(chǔ)存庫(kù)來(lái)操作時(shí),流驅(qū)動(dòng)器檢索位圖中對(duì)應(yīng)的可用性標(biāo)記,以確定所選定的存儲(chǔ)塊是否存儲(chǔ)于釋放部分內(nèi)(分別在可用標(biāo)記已斷言或已取消斷言時(shí));另一方面,當(dāng)釋放部分作為本地高速緩存來(lái)操作時(shí),流驅(qū)動(dòng)器在查找表中查找所選定的映像地址,以確定所選定的存儲(chǔ)塊是否存儲(chǔ)于釋放部分內(nèi)(分別在所選定的映像地址被找到或者未被找到時(shí))。然后,活動(dòng)流程根據(jù)驗(yàn)證的結(jié)果在塊334處分出支路。
當(dāng)所選定的存儲(chǔ)塊在硬盤中不可獲得時(shí),流驅(qū)動(dòng)器在塊336處從外部源下載所選定的存儲(chǔ)塊?,F(xiàn)在,方法300根據(jù)釋放部分的操作模式分成可擇一地執(zhí)行的兩個(gè)支路。特別地,如果釋放部分作為本地儲(chǔ)存庫(kù)來(lái)操作,則流驅(qū)動(dòng)器在塊338處將所選定的存儲(chǔ)器存儲(chǔ)到釋放部分的對(duì)應(yīng)存儲(chǔ)位置(具有等于所選定的映像地址加上其偏移的存儲(chǔ)地址)內(nèi);同時(shí),在位圖中的對(duì)應(yīng)的可用性標(biāo)記被斷言(以指出所選定的存儲(chǔ)塊現(xiàn)在可在硬盤中獲得)。相反地,如果釋放部分作為本地高速緩存來(lái)操作,則流驅(qū)動(dòng)器在塊340處查找在釋放部分中的空閑存儲(chǔ)位置(即,具有在查找表內(nèi)等于空值的對(duì)應(yīng)的映像地址)。下行至塊342,如果沒(méi)有空閑的存儲(chǔ)位置可用,則流驅(qū)動(dòng)器在塊344處回收(evict)釋放部分的存儲(chǔ)位置;待回收的存儲(chǔ)位置僅在用于保存從外部源下載之后尚未更新的存儲(chǔ)塊的存儲(chǔ)位置(如已取消斷言的對(duì)應(yīng)的更新標(biāo)記所指示的)當(dāng)中根據(jù)例如最近最少使用(LRU)算法來(lái)選擇,以便避免任何信息丟失。然后,方法300下行至塊346 ;當(dāng)空閑存儲(chǔ)位置已經(jīng)找到時(shí),也可從塊342直接到達(dá)該同一點(diǎn)。在這點(diǎn)上,流驅(qū)動(dòng)器將所選定的存儲(chǔ)塊存儲(chǔ)于釋放部分的第一空閑存儲(chǔ)位置內(nèi);同時(shí),在查找表內(nèi),對(duì)應(yīng)的條目被設(shè)定于所選定的映像地址(以指示所選定的存儲(chǔ)塊現(xiàn)在可從其中獲得),并且對(duì)應(yīng)的更新標(biāo)記被取消斷言(以指示所選定的存儲(chǔ)塊尚未更新)。
返回至塊334,如果所選定的存儲(chǔ)塊相反地可在硬盤中獲得(在對(duì)應(yīng)的引導(dǎo)塊內(nèi),在其于硬盤中的正確位置內(nèi),或者在釋放部分內(nèi)),則該方法下行至塊348。在該階段,流驅(qū)動(dòng)器從硬盤中檢索所選定的存儲(chǔ)塊。特別地,如果所選定的存儲(chǔ)塊是引導(dǎo)塊(即,所選定的映像地址是在引導(dǎo)列表中指示的引導(dǎo)地址之一),則所選定的存儲(chǔ)塊從對(duì)應(yīng)的引導(dǎo)位置中檢索(具有等于所選定的映像地址的存儲(chǔ)地址)。類似地,如果所選定的存儲(chǔ)塊已經(jīng)被復(fù)制到其在硬盤內(nèi)的正確位置(·即,所選定的映像地址小于復(fù)制計(jì)數(shù)器),則所選定的存儲(chǔ)塊從其正確的存儲(chǔ)位置(具有等于所選定的映像地址的存儲(chǔ)地址)中檢索。作為代替,如果所選定的存儲(chǔ)器被存儲(chǔ)于釋放部分內(nèi),則所選定的存儲(chǔ)塊從釋放部分內(nèi)具有等于所選定的映像地址加上釋放部分的偏移的存儲(chǔ)地址的存儲(chǔ)位置中檢索(當(dāng)所釋放部分作為本地儲(chǔ)存庫(kù)來(lái)操作時(shí)),或者從具有與存儲(chǔ)所選定的映像地址的查找表的條目關(guān)聯(lián)的存儲(chǔ)地址的存儲(chǔ)位置中檢索(當(dāng)所選定的部分作為本地高速緩存來(lái)操作時(shí))。在任何情況下,來(lái)自塊338、塊346或塊348的活動(dòng)流程在塊350合并;在這點(diǎn)上,流驅(qū)動(dòng)器將所選定的存儲(chǔ)塊返回至文件系統(tǒng)驅(qū)動(dòng)器,該文件系統(tǒng)驅(qū)動(dòng)器進(jìn)而將它返回至應(yīng)用程序。
—旦寫入目標(biāo)軟件映像的選定存儲(chǔ)塊(在對(duì)應(yīng)的選定的映像地址處)的請(qǐng)求被提交給目標(biāo)操作系統(tǒng)(例如,由應(yīng)用程序),方法300就相反地下行至塊352。寫請(qǐng)求在塊354被傳遞到流驅(qū)動(dòng)器,該流驅(qū)動(dòng)器驗(yàn)證所選的定存儲(chǔ)塊是否已經(jīng)可在硬盤上獲得,如同上述。然后,活動(dòng)流程在塊356根據(jù)驗(yàn)證的結(jié)果而分出支路。當(dāng)所選定的存儲(chǔ)塊不可在硬盤中獲得時(shí),流驅(qū)動(dòng)器通過(guò)重復(fù)上文所述的相同操作將所選定的存儲(chǔ)塊存儲(chǔ)于硬盤內(nèi)。特別地,如果釋放部分作為本地儲(chǔ)存庫(kù)來(lái)操作,則流驅(qū)動(dòng)器在塊358處將所選定的存儲(chǔ)塊存儲(chǔ)于釋放部分的對(duì)應(yīng)存儲(chǔ)位置(具有等于所選定的映像地址加上其偏移的存儲(chǔ)地址)內(nèi);同時(shí),在位圖中的對(duì)應(yīng)的可用性標(biāo)記被斷言。相反地,如果所釋放部分作為本地高速緩存來(lái)操作,則流驅(qū)動(dòng)器在塊360處查找在釋放部分內(nèi)的空閑存儲(chǔ)位置。下行至塊362,如果沒(méi)有找到空閑的存儲(chǔ)位置,則流驅(qū)動(dòng)器在塊364處回收所釋放部分的存儲(chǔ)位置(在用于保存尚未更新的存儲(chǔ)塊的存儲(chǔ)位置當(dāng)中)。然后,方法300下行至塊366 ;當(dāng)找到了空閑的存儲(chǔ)位置時(shí),也可從塊362直接到達(dá)該同一點(diǎn)。在這點(diǎn)上,流驅(qū)動(dòng)器將所選定的存儲(chǔ)塊存儲(chǔ)于所釋放部分的第一空閑存儲(chǔ)位置內(nèi);同時(shí),在查找表中,對(duì)應(yīng)的條目被設(shè)定于所選定的映像地址,并且對(duì)應(yīng)的更新標(biāo)記被取消斷言。返回至塊356,如果所選定的存儲(chǔ)塊相反地可在硬盤中獲得,則方法下行至塊368。在該階段,流驅(qū)動(dòng)器將所選定的存儲(chǔ)塊存儲(chǔ)于對(duì)應(yīng)的存儲(chǔ)位置內(nèi)。特別地,如果所選定的存儲(chǔ)塊是引導(dǎo)快(即,所選定的映像地址是在引導(dǎo)列表中指示的引導(dǎo)地址之一),則所選定的存儲(chǔ)塊被存儲(chǔ)于對(duì)應(yīng)的引導(dǎo)位置(具有等于所選定的映像地址的存儲(chǔ)地址)內(nèi)。類似地,如果所選定的存儲(chǔ)塊已經(jīng)被復(fù)制到其在硬盤內(nèi)的正確位置(即,所選定的映像地址小于復(fù)制計(jì)數(shù)器),所選定的存儲(chǔ)塊被存儲(chǔ)于其正確的存儲(chǔ)位置(具有等于所選定的映像地址的存儲(chǔ)地址)內(nèi)。作為代替,如果所選定的存儲(chǔ)器被存儲(chǔ)于釋放部分內(nèi),則所選定的存儲(chǔ)塊被存儲(chǔ)于釋放部分中的具有等于所選定的映像地址加上釋放部分的偏移的存儲(chǔ)地址的存儲(chǔ)位置內(nèi)(當(dāng)釋放部分作為本地儲(chǔ)存庫(kù)來(lái)操作時(shí)),或者被存儲(chǔ)于具有與用于存儲(chǔ)所選定的映像地址的查找表的條目關(guān)聯(lián)的存儲(chǔ)地址的存儲(chǔ)位置內(nèi)(當(dāng)釋放部分作為本地高速緩存來(lái)操作時(shí))。因而,這種流技術(shù)旨在將盡可能多的目標(biāo)軟件映像的存儲(chǔ)塊存儲(chǔ)于硬盤上(與本技術(shù)領(lǐng)域已知的用于按需提供軟件映像的流技術(shù)相反,在該已知的流技術(shù)中,僅為了其直接使用而將軟件映像的存儲(chǔ)塊下載到計(jì)算機(jī)上)。而且,當(dāng)釋放部分作為本地儲(chǔ)存庫(kù)來(lái)操作時(shí),所下載的存儲(chǔ)塊被永久地存儲(chǔ)于硬盤上(在它們的使用之后不消失,在計(jì)算機(jī)關(guān)閉時(shí)也不消失),使得它們不必為了它們的下次使用而再次下載?,F(xiàn)在,一旦對(duì)提交到目標(biāo)軟件映像的遷移的請(qǐng)求被提交給部署代理,方法300就下行至塊370(通過(guò)合并自塊358、塊366或塊368)。響應(yīng)于此,部署代理在塊372處可以獲取源軟件映像的快照(例如,用于其備份)。為了該目的,源軟件映像的各個(gè)存儲(chǔ)塊都從硬盤中檢索;特別地,如果對(duì)應(yīng)的存儲(chǔ)位置尚未重定位,則存儲(chǔ)塊從對(duì)應(yīng)的存儲(chǔ)位置中檢索,否則從對(duì)應(yīng)的重定位的存儲(chǔ)位置中檢索。然后,存儲(chǔ)塊被存儲(chǔ)于外部設(shè)備(例如,移動(dòng)盤)上。因此,在這種情況下,可以僅在其確實(shí)有必要時(shí)才獲取源軟件映像的快照。然后,對(duì)目標(biāo)軟件映像的每個(gè)存儲(chǔ)塊都執(zhí)行循環(huán)。該循環(huán)開(kāi)始于塊374,其中流驅(qū)動(dòng)器同上文一樣驗(yàn)證目標(biāo)軟件映像在對(duì)應(yīng)的當(dāng)前映像地址(等于復(fù)制計(jì)數(shù)器加I)處的當(dāng)前存儲(chǔ)塊是否已經(jīng)可在硬盤上獲得(在這種情況下,僅在引導(dǎo)位置內(nèi)或者在釋放部分內(nèi))。然后,活動(dòng)流程根據(jù)驗(yàn)證的結(jié)果在塊376分出支路。在當(dāng)前存儲(chǔ) 塊沒(méi)有在硬盤中獲得時(shí),流驅(qū)動(dòng)器在塊378處從外部源下載當(dāng)前存儲(chǔ)塊。反之,活動(dòng)流程從塊376下行至塊380。在這點(diǎn)上,如果當(dāng)前存儲(chǔ)塊不是引導(dǎo)塊,則流驅(qū)動(dòng)器在塊382處從釋放部分中檢索它;特別地,當(dāng)前存儲(chǔ)塊從具有等于當(dāng)前映像地址加上釋放部分的偏移的存儲(chǔ)地址的存儲(chǔ)位置中檢索(當(dāng)釋放部分作為本地儲(chǔ)存庫(kù)來(lái)操作時(shí)),或者從具有與用于存儲(chǔ)當(dāng)前映像地址的查找表的條目關(guān)聯(lián)的存儲(chǔ)地址的存儲(chǔ)位置中檢索(當(dāng)釋放部分作為本地高速緩存來(lái)操作時(shí))。然后,方法300從塊378或塊382下行至塊384。在該階段,當(dāng)前存儲(chǔ)塊被復(fù)制到其正確的存儲(chǔ)位置(具有等于當(dāng)前映像地址的存儲(chǔ)地址),復(fù)制計(jì)數(shù)器隨后加I ;同時(shí),如果釋放部分作為本地高速緩存來(lái)操作,則在查找表中的對(duì)應(yīng)條目被回收(通過(guò)將其映像地址設(shè)定為空值)?;顒?dòng)流程現(xiàn)在轉(zhuǎn)到塊386 ;在當(dāng)前存儲(chǔ)塊是引導(dǎo)塊時(shí),也可在不執(zhí)行任何操作的情況下從塊380直接到達(dá)該同一點(diǎn)(因?yàn)樗呀?jīng)存儲(chǔ)于正確的位置內(nèi))?,F(xiàn)在進(jìn)行測(cè)試以驗(yàn)證是否目標(biāo)軟件映像的全部存儲(chǔ)塊都已經(jīng)被處理。若否,活動(dòng)流程返回至塊372以對(duì)目標(biāo)軟件映像的下一存儲(chǔ)塊重復(fù)相同的操作。相反地,循環(huán)通過(guò)下行至塊388而退出,在該塊388中,部署代理禁用流驅(qū)動(dòng)器(此外還從目標(biāo)軟件映像的引導(dǎo)順序中去除它)。在這點(diǎn)上,部署代理在塊390處關(guān)閉并然后開(kāi)啟計(jì)算機(jī),以便從目標(biāo)軟件映像來(lái)重新引導(dǎo)它,用于其正常的操作(不再需要外部源)。
該復(fù)制過(guò)程可以在后臺(tái)執(zhí)行,以便對(duì)于計(jì)算機(jī)的操作基本上是不透明;以此方式,計(jì)算機(jī)可以繼續(xù)正常地工作,僅有的差別是目標(biāo)軟件映像的任意存儲(chǔ)塊現(xiàn)在可在其被復(fù)制到它的正確位置之后在該正確位置中訪問(wèn)。更具體地,當(dāng)對(duì)訪問(wèn)(或者用于讀取或者用于寫入)目標(biāo)軟件映像的選定存儲(chǔ)塊(在對(duì)應(yīng)的選定映像地址處)的請(qǐng)求被提交給操作系統(tǒng)時(shí),訪問(wèn)請(qǐng)求被再次傳遞到流驅(qū)動(dòng)器,該流驅(qū)動(dòng)器驗(yàn)證所選定的存儲(chǔ)塊是否已經(jīng)被復(fù)制(即,所選定的映像地址是否低于或等于復(fù)制計(jì)數(shù)器)。若果如此,則在具有等于所選定的映像地址的存儲(chǔ)地址的存儲(chǔ)位置中訪問(wèn)所選定的存儲(chǔ)塊;否則,通過(guò)重復(fù)以上所述的相同操作來(lái)讀取或?qū)懭胨x定的存儲(chǔ)塊。
例如,復(fù)制過(guò)程的操作可以根據(jù)計(jì)算機(jī)的工作負(fù)荷來(lái)重復(fù)。為了該目的,計(jì)算機(jī)的工作負(fù)荷被監(jiān)測(cè)(例如,每隔10-100毫秒(ms));如果計(jì)算機(jī)的工作負(fù)荷低于預(yù)定的閾值(例如,由于在此刻沒(méi)有操作被執(zhí)行),則通過(guò)重復(fù)上述操作來(lái)復(fù)制目標(biāo)軟件映像的一個(gè)或多個(gè)存儲(chǔ)塊。以此方式,可以使復(fù)制過(guò)程對(duì)計(jì)算機(jī)的操作的影響最小化。結(jié)果,到目標(biāo)軟件映像的實(shí)際切換是很快的(因?yàn)樗恍枰匦乱龑?dǎo)計(jì)算機(jī))。
作為選擇,一旦對(duì)回滾源軟件映像的請(qǐng)求被提交給部署代理,方法300就相反地下行(從塊358,從塊366或 者從塊368)至塊392。響應(yīng)于此,部署代理在塊394處將源軟件映像的存儲(chǔ)塊從重定位的位置恢復(fù)到目標(biāo)軟件映像的引導(dǎo)位置(通過(guò)連續(xù)地從重定位的存儲(chǔ)位置中讀出它們,并且將它們按相同的順序復(fù)制到目標(biāo)軟件映像的對(duì)應(yīng)引導(dǎo)位置內(nèi),如在其引導(dǎo)列表中所指示的)。然后,部署代理在塊396處放大源軟件映像(例如,再次通過(guò)利用源操作系統(tǒng)的內(nèi)置功能),以便恢復(fù)其原始尺寸并且然后重寫目標(biāo)軟件映像的任何存儲(chǔ)塊。在這點(diǎn)上,部署代理在塊398處關(guān)閉并然后開(kāi)啟計(jì)算機(jī),以便為了該計(jì)算機(jī)正常的操作而從源軟件映像重新引導(dǎo)該計(jì)算機(jī)。
在兩種情形中,方法300結(jié)束于中心為白色/黑色的停止圓形399處(或者來(lái)自塊390或者來(lái)自塊398)。
上述解決方案需要知道每個(gè)軟件映像的引導(dǎo)塊。為了該目的,例如,可以因此而準(zhǔn)備軟件映像。在這方面,參照?qǐng)D4,該圖中示出了表示可以用來(lái)實(shí)現(xiàn)待使用于根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案中的通用軟件映像的準(zhǔn)備過(guò)程的主要軟件構(gòu)件(整體標(biāo)示為符號(hào)400)的作用的協(xié)作圖。該準(zhǔn)備過(guò)程被實(shí)現(xiàn)于包括服務(wù)器計(jì)算機(jī)405s (具有其工作存儲(chǔ)器和大容量存儲(chǔ)器,分別以符號(hào)415s和430s標(biāo)示)的系統(tǒng)中。服務(wù)器計(jì)算機(jī)405s運(yùn)行部署管理器435——例如,IBM公司的用于操作系統(tǒng)部署的IBM Tivoli配置管理器(或用于OSD的TPM)的IBMTivoli映像配置管理器(或TPMfI) (IBM和Tivoli是IBM公司的商標(biāo))。部署管理器435管理主軟件映像(或者簡(jiǎn)寫為主映像)440的儲(chǔ)存庫(kù);每個(gè)主映像440提供對(duì)應(yīng)的軟件映像的基本版本(例如,通過(guò)采集它先前安裝于其內(nèi)的施主計(jì)算機(jī)的硬盤內(nèi)容而創(chuàng)建的),其中與施主計(jì)算機(jī)的任何配置相關(guān)的具體內(nèi)容(例如,驅(qū)動(dòng)器和注冊(cè)表設(shè)定)已經(jīng)被去除。服務(wù)器計(jì)算機(jī)405s還包括模型445的儲(chǔ)存庫(kù);每個(gè)模型445又包括軟件映像必須部署于其內(nèi)的計(jì)算機(jī)的對(duì)應(yīng)配置所專有的內(nèi)容。而且,部署管理器435與允許遠(yuǎn)程訪問(wèn)數(shù)據(jù)的遠(yuǎn)程訪問(wèn)服務(wù)器450交互(例如,基于iSCSI協(xié)議)。操作者455為具體類型的計(jì)算機(jī)(由對(duì)應(yīng)的輔助計(jì)算機(jī)405a表示)選擇軟件映像(包括選定的主映像440和選定的模型445)(動(dòng)作“B1:選擇(Select)”)。輔助計(jì)算機(jī)405a(具有其工作存儲(chǔ)器和大容量存儲(chǔ)器,分別以符號(hào)415a和430a標(biāo)不)運(yùn)行用于與部署管理器435交互的部署代理460。響應(yīng)于此,部署管理器435通過(guò)傳遞所選定的軟件映像的標(biāo)識(shí)符來(lái)喚醒輔助計(jì)算機(jī)405a上的部署代理460 (動(dòng)作“B2:喚醒(Wake-up)”)。結(jié)果,部署代理460將所選定的軟件映像安裝為用于通過(guò)遠(yuǎn)程訪問(wèn)服務(wù)器450來(lái)對(duì)其進(jìn)行遠(yuǎn)程訪問(wèn)的遠(yuǎn)程盤(即,通過(guò)充當(dāng)所討論的實(shí)例中的iSCSI啟動(dòng)程序)。結(jié)果,用于通過(guò)輔助計(jì)算機(jī)405a來(lái)進(jìn)行排他性訪問(wèn)的臨時(shí)軟件映像(或者簡(jiǎn)寫為臨時(shí)映像)465被創(chuàng)建;臨時(shí)映像465簡(jiǎn)單地通過(guò)指向所選定的主映像440及所選定的模型445的存儲(chǔ)塊的索引結(jié)構(gòu)來(lái)定義——即,在沒(méi)有制作它的任何副本的情況下。臨時(shí)映像465以所啟用的塊跟蹤功能來(lái)安裝,以便跟蹤被訪問(wèn)的臨時(shí)映像465的任何存儲(chǔ)塊的映像地址(動(dòng)作“B3:安裝(Mount)”)。在這點(diǎn)上,部署代理460模擬在臨時(shí)映像465上的輔助計(jì)算機(jī)405a的引導(dǎo)順序(直至部署代理的加載);例如,在微軟的Windows中,部署代理460讀出MBR、引導(dǎo)扇區(qū)、bootmgr.exe文件、boot\bcd文件、系統(tǒng)注冊(cè)表、winload, exe文件、在系統(tǒng)注冊(cè)表中指定的驅(qū)動(dòng)文件,以及流驅(qū)動(dòng)器·(動(dòng)作“B4:模擬引導(dǎo)(Simulated boot)”)。一旦完成了所模擬的引導(dǎo)順序,部署代理460就卸載臨時(shí)映像465 (動(dòng)作“B5:卸載(Unmount)”)。然后,部署代理460將臨時(shí)映像465提交到部署管理器435 (動(dòng)作“B6:提交(Commit)”)。響應(yīng)于此,部署管理器435根據(jù)臨時(shí)映像465 (由其檢索結(jié)構(gòu)簡(jiǎn)單定義的)來(lái)構(gòu)建新的軟件映像(或者簡(jiǎn)寫為新映像)470 ;而且,新映像470與在所模擬的引導(dǎo)過(guò)程中已經(jīng)訪問(wèn)過(guò)的存儲(chǔ)塊的列表關(guān)聯(lián),這些存儲(chǔ)塊定義了對(duì)應(yīng)的引導(dǎo)塊(動(dòng)作“B7:構(gòu)建(Bui Id) ”)。自然地,為了滿足局部的及具體的要求,本領(lǐng)域技術(shù)人員可以對(duì)以上所描述的解決方案加以許多邏輯的和/或物理的修改和改變。更具體地,雖然本解決方案在某種特定的程度上已經(jīng)參照它的一種或多個(gè)實(shí)施例進(jìn)行了描述,但是應(yīng)當(dāng)理解,形式及細(xì)節(jié)的各種刪除、替換和改變以及其他實(shí)施例都是可能的(例如,關(guān)于數(shù)字值)。特別地,本發(fā)明的不同實(shí)施例甚至可以在沒(méi)有前面的描述所闡明的具體細(xì)節(jié)的情況下實(shí)施,以提供對(duì)本發(fā)明的更徹底的理解;相反地,可以省略或簡(jiǎn)化眾所周知的特征,以免以不必要的細(xì)節(jié)來(lái)混淆該描述。而且,應(yīng)當(dāng)明確指出,結(jié)合所公開(kāi)的解決方案的任何實(shí)施例來(lái)描述的具體元件和/或方法步驟可以作為通用設(shè)計(jì)選擇的事項(xiàng)并入任何其他實(shí)施例中。
例如,如果相同的解決方案以等同的方法來(lái)實(shí)現(xiàn),則應(yīng)用類似的考慮(通過(guò)使用具有其更多的步驟或部分的相同功能的類似步驟,去除某些非必要的步驟,或者添加更多的可選步驟);而且,步驟可以按照不同順序、同時(shí)地或者以交織的方式(至少部分地)來(lái)執(zhí)行。
軟件映像可以包括任何軟件程序(例如,只是沒(méi)有任何應(yīng)用程序的操作系統(tǒng));類似地,存儲(chǔ)塊可以包括任何類型的信息(例如,一個(gè)或多個(gè)扇區(qū)、文件、庫(kù)、目錄,它們的組合或某些部分)。而且,目標(biāo)軟件映像可以由任何等同的外部源(例如,移動(dòng)存儲(chǔ)設(shè)備)來(lái)提供。在任何情況下,所提出的技術(shù)可以被用來(lái)安裝不同的操作系統(tǒng),以使計(jì)算機(jī)降級(jí)到相同操作系統(tǒng)的先前版本,從而為了災(zāi)難恢復(fù)或者任何其他原因而恢復(fù)計(jì)算機(jī)的快照。
相同的技術(shù)也可以應(yīng)用于具有任意引導(dǎo)順序的任何其他操作系統(tǒng)。例如,在Linux(是Linus Torvalds的商標(biāo))中,引導(dǎo)塊包括(除了流驅(qū)動(dòng)器之外)包含GRBU弓丨導(dǎo)加載程序的MBR,以及包含內(nèi)核及initrd文件系統(tǒng)的/boot目錄;在這種情況下,在引導(dǎo)順序中,BIOS加載包含GRBU的MBR,BRBU找到/boot目錄并且加載內(nèi)核和initrd文件系統(tǒng),GRBU在內(nèi)核上引導(dǎo),內(nèi)核啟動(dòng)initrd文件系統(tǒng),并且initrd文件系統(tǒng)啟動(dòng)流驅(qū)動(dòng)器。
在任何情況下,上述流功能可以由任何等同結(jié)構(gòu)來(lái)實(shí)現(xiàn)(即使沒(méi)有任何部署代理)。而且,軟件映像可以按不同的方式來(lái)準(zhǔn)備(例如,通過(guò)實(shí)際引導(dǎo)輔助計(jì)算機(jī),并且跟蹤在引導(dǎo)順序中被訪問(wèn)的存儲(chǔ)塊,以識(shí)別其引導(dǎo)塊)。
所提出的技術(shù)也可以被用來(lái)準(zhǔn)確地安裝目標(biāo)軟件映像,因?yàn)樗赏獠吭刺峁?例如,用于恢復(fù)計(jì)算機(jī)先前的快照)。
在這種情況下,也可以避免傳輸源軟件映像的任何配置信息。
在任何情況下,配置信息可以包括任何其他類型的信息(例如,應(yīng)用程序、文檔等);配置信息也可以從源軟件映像中收集和/或以等同的技術(shù)應(yīng)用于目標(biāo)軟件映像(即使是手動(dòng)地,通過(guò)簡(jiǎn)單地復(fù)制某些文件)。
提交到目標(biāo)軟件映像的遷移的操作(通過(guò)將其存儲(chǔ)塊復(fù)制到它們?cè)谟脖P內(nèi)的正確位置)可以用任何其他方式來(lái)執(zhí)行。
例如,存儲(chǔ)塊即使在計(jì)算機(jī)被測(cè)試時(shí)也可以連續(xù)地下載;而且,也可以在單個(gè)動(dòng)作中提交到目標(biāo)軟件映像的遷移(例如,通過(guò)在它們已經(jīng)被下載之后同時(shí)復(fù)制其全部存儲(chǔ)塊)。
工作負(fù)荷可以按任何其他頻率或者僅在具體的時(shí)段內(nèi)(例如,在晚上)來(lái)監(jiān)測(cè);如果對(duì)計(jì)算機(jī)、服務(wù)器、網(wǎng)絡(luò)或者它們的任意組合進(jìn)行工作負(fù)荷監(jiān)測(cè),則應(yīng)用類似的考慮。而且,工作負(fù)荷的閾值可以用任何其他方式來(lái)定義(例如,通過(guò)為其貢獻(xiàn)分配不同的權(quán)重)。如果兩個(gè)或更多的存儲(chǔ)塊在工作負(fù)荷降至閾值以下的同時(shí)被下載,則應(yīng)用類似的考慮。
可以實(shí)現(xiàn)等同的算法,以在目標(biāo)軟件映像的存儲(chǔ)塊被復(fù)制到其正確的位置時(shí)確保它們的一致性。
作為選擇,也可以使流驅(qū)動(dòng)器保持為總是啟用的,即使在目標(biāo)軟件映像已經(jīng)被完全下載(例如,用于下載最新版本的存儲(chǔ)塊)之后。
如果設(shè)想用于回滾到源軟件映像的其他過(guò)程,則應(yīng)用類似的考慮。
硬盤的釋放部分可以用任何其他方式來(lái)獲得(例如,通過(guò)壓縮某些文件);在任何情況下,只有硬盤的一部分可以被收縮(例如,硬盤的某些 分區(qū))。
可以實(shí)現(xiàn)任何等同的控制結(jié)構(gòu),以便由流驅(qū)動(dòng)器使用(當(dāng)釋放部分作為本地儲(chǔ)存庫(kù)或本地高速緩存來(lái)操作時(shí))。如果程序(該程序可以用來(lái)實(shí)現(xiàn)本發(fā)明的每一個(gè)實(shí)施例)以不同的方式構(gòu)造,或者如果提供附加的模塊或功能,則應(yīng)用類似的考慮;類似地,存儲(chǔ)器結(jié)構(gòu)可以是其他類型的,或者可以用等同的實(shí)體替換(不一定包括物理存儲(chǔ)介質(zhì))。該程序可以采取適合于由任何數(shù)據(jù)處理系統(tǒng)使用的任何形式或者與其結(jié)合(例如,在虛擬機(jī)內(nèi));特別地,程序可以是以下形式:外部或駐留軟件、固件或微代碼(目標(biāo)代碼或源代碼一例如,待編譯的或待解釋的)。而且,可以將程序作為實(shí)現(xiàn)于任何計(jì)算機(jī)可用的介質(zhì)上的制造品來(lái)提供;該介質(zhì)能夠是適合于容納、存儲(chǔ)、傳達(dá)、傳播或傳輸程序的任何元件。例如,該介質(zhì)可以是電子、磁、光、電磁、紅外或半導(dǎo)體類型的;此類介質(zhì)的實(shí)例是固定盤(在固定盤中,程序能夠預(yù)先加載)、移動(dòng)盤、帶、卡、導(dǎo)線、光纖、無(wú)線連接、網(wǎng)絡(luò)、廣播電波等。在任何情況下,根據(jù)本發(fā)明的一個(gè)實(shí)施例的解決方案適用于甚至以硬件結(jié)構(gòu)(例如,集成于半導(dǎo)體材料的芯片內(nèi))或者以適當(dāng)?shù)赜昧硗獾呐渲脕?lái)編程的軟件和硬件的組合來(lái)實(shí)現(xiàn)。作為選擇,該系統(tǒng)具有不同的結(jié)構(gòu)或者包括等同的構(gòu)件,或者它具有其他操作特性。在任何情況下,它的每個(gè)構(gòu)件都可以分離成多個(gè)元件,或者兩個(gè)或更多的構(gòu)件可以結(jié)合在一起成為單個(gè)元件;而且,每個(gè)構(gòu)件都可以被復(fù)制以支持對(duì)應(yīng)操作并行的執(zhí)行。同樣應(yīng)當(dāng)指出,(除非另有說(shuō)明)在不同構(gòu)件之間的任何交互一般都不需要是連續(xù)的,并且它可以是直接的也可以是間接的(通過(guò)一個(gè)或多個(gè)中間物)。特別地,該系統(tǒng)可以基于不同的體系結(jié)構(gòu)(例如,廣域網(wǎng)、全球網(wǎng)絡(luò)、蜂窩網(wǎng)絡(luò)或衛(wèi)星網(wǎng)絡(luò)),并且可以利用任何類型的(有線和/或無(wú)線)連接。在任何情況下,每個(gè)計(jì)算機(jī)都可以具有別的結(jié)構(gòu)或者可以包括類似的元件(例如,任何其他大容量存儲(chǔ)器一例如,基于閃存的);而且,可以以任何數(shù)據(jù)處理實(shí)體(基于物理機(jī)或虛擬機(jī)(例如,PDA、移 動(dòng)電話等))或者以多個(gè)實(shí)體的組合來(lái)替換計(jì)算機(jī)。
權(quán)利要求
1.一種用于使數(shù)據(jù)處理實(shí)體(100)從安裝于所述數(shù)據(jù)處理實(shí)體的大容量存儲(chǔ)器(130)上的源軟件映像(205s)遷移至存儲(chǔ)于外部源(225)上的目標(biāo)軟件映像的方法(300),每個(gè)軟件映像包括多個(gè)存儲(chǔ)塊,每一個(gè)存儲(chǔ)塊在所述軟件映像之內(nèi)具有對(duì)應(yīng)映像地址,并且所述大容量存儲(chǔ)器包括多個(gè)存儲(chǔ)位置,每一個(gè)存儲(chǔ)位置用于保存存儲(chǔ)塊,所述存儲(chǔ)位置在所述大容量存儲(chǔ)器之內(nèi)具有對(duì)應(yīng)存儲(chǔ)地址,其中所述方法包括以下步驟: 釋放(306)所述大容量存儲(chǔ)器的一部分, 將存儲(chǔ)于所述目標(biāo)軟件映像的引導(dǎo)位置內(nèi)的所述存儲(chǔ)塊重定位(310)到所釋放部分,所述引導(dǎo)位置是具有等于所述目標(biāo)軟件映像的引導(dǎo)塊的所述映像地址的所述存儲(chǔ)地址的所述存儲(chǔ)位置,所述目標(biāo)軟件映像包括引導(dǎo)所述數(shù)據(jù)處理實(shí)體來(lái)加載適于從所述外部源下載所述目標(biāo)軟件映像的流功能(215)所需要的所述存儲(chǔ)塊, 將所述引導(dǎo)塊存儲(chǔ)(314)于對(duì)應(yīng)引導(dǎo)位置內(nèi), 從所述對(duì)應(yīng)引導(dǎo)位置內(nèi)的所述引導(dǎo)塊來(lái)引導(dǎo)(316)所述數(shù)據(jù)處理實(shí)體,由此加載所述流功能,以及 由所述流功能服務(wù)(330-350)每個(gè)讀取所述目標(biāo)軟件映像的選定存儲(chǔ)塊的請(qǐng)求,當(dāng)在所述大容量存儲(chǔ)器中不可獲得所述選定存儲(chǔ)塊時(shí),所述流功能從所述外部源下載(336)所述選定存儲(chǔ)塊并將所述選定存儲(chǔ)塊存儲(chǔ)(338-346)于所釋放部分內(nèi),否則從所述大容量存儲(chǔ)器中檢索(348)所述選定存儲(chǔ)塊。
2.根據(jù)權(quán)利要求1所述的方法(300),還包括以下步驟: 由所述流功能(215)服務(wù)(352-368)每個(gè)寫入所述目標(biāo)軟件映像的另一個(gè)選定存儲(chǔ)塊的請(qǐng)求,當(dāng)所述另一選定存儲(chǔ)塊是所述引導(dǎo)塊之一時(shí),所述流功能則將所述另一選定存儲(chǔ)塊存儲(chǔ)(354-368)于所述對(duì)應(yīng)引導(dǎo)位置內(nèi),否則存儲(chǔ)(354-368)于所釋放部分內(nèi)。
3.根據(jù)權(quán)利要求1或2所述的方法(300),其中所述方法在引導(dǎo)(316)所述數(shù)據(jù)處理實(shí)體之后還包括以下步驟: 從所述源軟件映像中收集(318-326)配置信息,以及 通過(guò)將對(duì)應(yīng)存儲(chǔ)塊存儲(chǔ)于所釋放部分內(nèi)而將所述配置信息應(yīng)用(328 )于所述目標(biāo)軟件映像。
4.根據(jù)權(quán)利要求3所述的方法(300),其中從所述源軟件映像中收集(318-326)配置信息的步驟包括: 檢索(320-324)所述源軟件映像的一組配置存儲(chǔ)塊,每個(gè)配置存儲(chǔ)塊在被重定位于所釋放部分內(nèi)時(shí)則從所釋放部分中檢索,否則從所述對(duì)應(yīng)存儲(chǔ)位置中檢索。
5.根據(jù)權(quán)利要求1至4中的任一權(quán)利要求所述的方法(300),還包括響應(yīng)于提交到所述目標(biāo)軟件映像的遷移的請(qǐng)求(370)的以下步驟: 將所述目標(biāo)軟件映像的不同于所述引導(dǎo)塊的全部存儲(chǔ)塊復(fù)制(372-386)到具有等于所述對(duì)應(yīng)映像地址的存儲(chǔ)地址的所述存儲(chǔ)位置內(nèi)。
6.根據(jù)權(quán)利要求5所述的方法(300),其中復(fù)制(374-386)所述目標(biāo)軟件映像的全部存儲(chǔ)塊的步驟包 括通過(guò)以下操作來(lái)重復(fù)復(fù)制(374-384)所述目標(biāo)軟件映像的至少一個(gè)當(dāng)前存儲(chǔ)塊的步驟: 當(dāng)在所釋放部分中不可獲得所述當(dāng)前存儲(chǔ)塊時(shí),則從所述外部源中下載(378)所述當(dāng)前存儲(chǔ)塊,否則從所釋放部分中檢索(382)所述當(dāng)前存儲(chǔ)塊,以及將所述當(dāng)前存儲(chǔ)塊存儲(chǔ)(384)于具有等于所述對(duì)應(yīng)映像地址的存儲(chǔ)地址的所述存儲(chǔ)位置內(nèi)。
7.根據(jù)權(quán)利要求6所述的方法(300),其中復(fù)制(374-386)所述目標(biāo)軟件映像的全部存儲(chǔ)塊的步驟包括: 監(jiān)測(cè)(374)數(shù)據(jù)處理實(shí)體的工作負(fù)荷,所述復(fù)制(374-384)所述目標(biāo)軟件映像的至少一個(gè)當(dāng)前存儲(chǔ)塊的步驟在所述工作負(fù)荷降至閾值以下時(shí)執(zhí)行。
8.根據(jù)權(quán)利要求5至7中的任一權(quán)利要求所述的方法(300),其中,在提交到所述目標(biāo)軟件映像的遷移的請(qǐng)求(370)之后,在所述選定存儲(chǔ)塊已經(jīng)被復(fù)制到具有等于所述對(duì)應(yīng)映像地址的存儲(chǔ)地址的所述存儲(chǔ)位置中之后,所述流功能從所述存儲(chǔ)位置中檢索(348)所述大容量存儲(chǔ)器中可獲得的所述選定存儲(chǔ)塊,否則從所釋放部分中檢索,并且在所述另一個(gè)選定存儲(chǔ)塊已經(jīng)被復(fù)制到具有等于所述對(duì)應(yīng)映像地址的存儲(chǔ)地址的所述存儲(chǔ)位置之后,則將所述另一選定存儲(chǔ)塊存儲(chǔ)(366)于所述存儲(chǔ)位置內(nèi),否則存儲(chǔ)(366)于所釋放部分內(nèi)。
9.根據(jù)權(quán)利要求5至8中的任一權(quán)利要求所述的方法(300),還包括以下步驟: 在復(fù)制(372-386)所述目標(biāo)軟件映像的全部存儲(chǔ)塊之后禁用(388)所述流功能。
10.根據(jù)權(quán)利要求1至9中的任一權(quán)利要求所述的方法(300),還包括響應(yīng)于回滾至所述目標(biāo)軟件映像的請(qǐng)求(392)的以下步驟: 將所述重定位的存儲(chǔ)塊恢復(fù)(394)到所述目標(biāo)軟件映像的所述引導(dǎo)位置內(nèi),以及 恢復(fù)(396)所述大容量存儲(chǔ)器的所釋放部分。
11.根據(jù)權(quán)利要求1至10中的任一權(quán)利要求所述的方法(300),其中釋放(306)所述大容量存儲(chǔ)器的一部分的步驟包括: 收縮(306)所述源軟件映像。
12.根據(jù)權(quán)利要求1至11中的任一權(quán)利要求所述的方法(300),其中所釋放部分(230)具有足以存儲(chǔ)所述目標(biāo)軟件映像(225)的全部存儲(chǔ)塊的尺寸,存儲(chǔ)(338-346)所述選定存儲(chǔ)塊的步驟以及存儲(chǔ)(354-368)所述另一選定存儲(chǔ)塊的步驟包括: 將所述選定存儲(chǔ)塊或者所述另一選定存儲(chǔ)塊存儲(chǔ)于所釋放部分的具有等于所述對(duì)應(yīng)映像地址加上所釋放部分在所述大容量存儲(chǔ)器中的偏移的存儲(chǔ)地址的存儲(chǔ)位置。
13.根據(jù)權(quán)利要求1至12中的任一權(quán)利要求所述的方法(300),其中所釋放部分(230)具有足以存儲(chǔ)所述目 標(biāo)軟件映像的只是一部分存儲(chǔ)塊的尺寸,存儲(chǔ)(338-346)所述選定存儲(chǔ)塊的步驟以及存儲(chǔ)(354-368)所述另一選定存儲(chǔ)塊的步驟包括: 查找(340,360)在所釋放部分內(nèi)可獲得的的空閑存儲(chǔ)位置,用于存儲(chǔ)所述選定存儲(chǔ)塊或者所述另一選定存儲(chǔ)塊, 當(dāng)找不到空閑存儲(chǔ)位置時(shí),通過(guò)回收所釋放部分的選定存儲(chǔ)位置來(lái)創(chuàng)建(344,364)所述空閑存儲(chǔ)位置,所述選定存儲(chǔ)位置在所釋放部分的用于保存在下載之后未被寫入的存儲(chǔ)塊的存儲(chǔ)位置中選擇,以及 將所述選定存儲(chǔ)塊或者所述另一選定存儲(chǔ)塊存儲(chǔ)(346,366)于所述空閑存儲(chǔ)位置內(nèi)。
14.一種計(jì)算機(jī)程序(200),包括用于在所述計(jì)算機(jī)程序被執(zhí)行于數(shù)據(jù)處理系統(tǒng)(100)上時(shí)促使所述數(shù)據(jù)處理系統(tǒng)執(zhí)行根據(jù)權(quán)利要求1至13中的任一權(quán)利要求所述的方法(300)的步驟的代碼裝置。
15.一種系統(tǒng)(100),包括用于執(zhí)行根據(jù)權(quán)利要求1至13中的任一權(quán)利要求所述的方法(300)的步驟的裝置 (200)。
全文摘要
本發(fā)明公開(kāi)了一種解決方案,用于使數(shù)據(jù)處理實(shí)體(100)從安裝于數(shù)據(jù)處理實(shí)體的大容量存儲(chǔ)器(130)上的源軟件映像(205s)遷移至存儲(chǔ)于外部源(225)上的目標(biāo)軟件映像,每個(gè)軟件映像包括每一個(gè)在軟件映像內(nèi)都具有對(duì)應(yīng)的映像地址的多個(gè)存儲(chǔ)塊,并且大容量存儲(chǔ)器包括每一個(gè)都用于保存存儲(chǔ)塊的多個(gè)存儲(chǔ)位置,該存儲(chǔ)位置在大容量存儲(chǔ)器內(nèi)具有對(duì)應(yīng)的存儲(chǔ)地址。對(duì)應(yīng)的方法(300)包括以下步驟釋放(306)大容量存儲(chǔ)器的一部分,將存儲(chǔ)于目標(biāo)軟件映像的引導(dǎo)位置內(nèi)的存儲(chǔ)塊重定位(310)到所釋放部分,引導(dǎo)位置是具有等于目標(biāo)軟件映像的引導(dǎo)塊的映像地址的存儲(chǔ)地址的存儲(chǔ)位置,該目標(biāo)軟件映像包括引導(dǎo)數(shù)據(jù)處理實(shí)體來(lái)加載適于從外部源下載目標(biāo)軟件映像的流功能(215)所需的存儲(chǔ)塊,將引導(dǎo)塊存儲(chǔ)(314)于對(duì)應(yīng)的引導(dǎo)位置內(nèi),從對(duì)應(yīng)的引導(dǎo)位置內(nèi)的引導(dǎo)塊中引導(dǎo)(316)數(shù)據(jù)處理實(shí)體,由此引導(dǎo)流功能,并且服務(wù)(330-350)通過(guò)流功能來(lái)讀取目標(biāo)軟件映像的選定存儲(chǔ)塊的每個(gè)請(qǐng)求,流功能從外部源中下載(336)選定的存儲(chǔ)塊,并且當(dāng)在大容量存儲(chǔ)器內(nèi)不可獲得選定的存儲(chǔ)塊時(shí),將選定的存儲(chǔ)塊存儲(chǔ)(338-346)于所釋放部分內(nèi),否則從大容量存儲(chǔ)器中檢索(348)選定的存儲(chǔ)塊。
文檔編號(hào)G06F9/445GK103250134SQ201180059218
公開(kāi)日2013年8月14日 申請(qǐng)日期2011年11月10日 優(yōu)先權(quán)日2010年12月13日
發(fā)明者C·馬里內(nèi)利, M·弗伊勒烏米爾·斯圖克爾伯格, J·方迪格尼耶 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1