復(fù)制虛擬機(jī)器的存儲(chǔ)器數(shù)據(jù)的方法、程序產(chǎn)品及系統(tǒng)的制作方法
【專利摘要】復(fù)制虛擬機(jī)器的存儲(chǔ)器數(shù)據(jù)的方法、程序產(chǎn)品及系統(tǒng)。在此提出一種快速?gòu)?fù)制源虛擬機(jī)器(Virtual?Machine,VM)以及至少一個(gè)被復(fù)制虛擬機(jī)器(Cloned?Virtual?Machine)存儲(chǔ)器數(shù)據(jù)的方法。來(lái)自源虛擬機(jī)器或被復(fù)制的虛擬機(jī)器的訪客物理地址與存儲(chǔ)器中的主機(jī)物理地址之間的映射關(guān)系,是由多個(gè)分層級(jí)別中所配置的多個(gè)頁(yè)表所定義。在所述方法中,將所述多個(gè)分層級(jí)別的最高級(jí)別或較高級(jí)別中的頁(yè)表的元數(shù)據(jù)復(fù)制到虛擬機(jī)器。多個(gè)分層級(jí)別中最高級(jí)別或較高級(jí)別以外級(jí)別中的頁(yè)表剩下的元數(shù)據(jù)將根據(jù)存取的操作而復(fù)制到所述虛擬機(jī)器。根據(jù)元數(shù)據(jù)以及被復(fù)制的元數(shù)據(jù)來(lái)存取存儲(chǔ)于所述存儲(chǔ)器的對(duì)應(yīng)地址中的數(shù)據(jù)。
【專利說(shuō)明】復(fù)制虛擬機(jī)器的存儲(chǔ)器數(shù)據(jù)的方法、程序產(chǎn)品及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本公開(kāi)涉及一種復(fù)制虛擬機(jī)器存儲(chǔ)器的數(shù)據(jù)的方法。
【背景技術(shù)】
[0002]系統(tǒng)虛擬化(System Virtualization)是將共用平臺(tái)上的資源聚集以及抽象化。此抽象化過(guò)程是將軟件與硬件分離,而且使多個(gè)操作系統(tǒng)映像文件能夠并行地在單一實(shí)體平臺(tái)上運(yùn)行,而不會(huì)相互干擾。虛擬化可將需要經(jīng)由許多實(shí)體機(jī)上運(yùn)行的工作負(fù)載,合并到單一實(shí)體機(jī)上運(yùn)行的多個(gè)虛擬機(jī)器進(jìn)行,如此可增加計(jì)算資源的利用率。而此合并可大大減少數(shù)據(jù)中心中所需要的電力消耗以及占地面積。可使用集中式管理界面來(lái)依照需求供應(yīng)虛擬機(jī)器、對(duì)其進(jìn)行復(fù)制和遷移。
[0003]為了使得多個(gè)操作系統(tǒng)能夠在同一實(shí)體平臺(tái)上運(yùn)行,以軟件方式運(yùn)作的一平臺(tái)層(Platform layer)可將操作系統(tǒng)與硬件分離。此層被稱作虛擬機(jī)器管理程序(Hypervisor)或虛擬機(jī)器監(jiān)控程序(Virtual Machine Monitor, VMM)。在系統(tǒng)虛擬化的架構(gòu)下,被虛擬化的操作系統(tǒng)稱作“客操作系統(tǒng)(GuestOperating System)”。為了適當(dāng)?shù)靥摂M化并隔離訪客,虛擬機(jī)器管理程序或虛擬機(jī)器監(jiān)控程序(VMM)必須控制或調(diào)節(jié)訪客所執(zhí)行的所有特權(quán)操作。虛擬機(jī)器管理程序可使用各種技術(shù)來(lái)完成此控制或調(diào)節(jié)。
[0004]在虛擬化環(huán)境或用于系統(tǒng)虛擬化的平臺(tái)中,需注意虛擬機(jī)器(VM)的快速或近乎即時(shí)的復(fù)制。此技術(shù)可用于負(fù)載平衡(Load Balancing)、預(yù)先部署測(cè)試(Pre-deploymentTesting)、預(yù)測(cè)執(zhí)行(Speculative Execution)、數(shù)據(jù)探勘(DataMiming)以及在大的數(shù)據(jù)中心所進(jìn)行的病毒掃描或惡意軟件分析。當(dāng)載入或準(zhǔn)備要執(zhí)行未知軟件時(shí),進(jìn)行未知軟件的執(zhí)行可能會(huì)被防毒程序或代理攔截或中斷。此時(shí),可能提前請(qǐng)求快速?gòu)?fù)制虛擬機(jī)器。被復(fù)制的虛擬機(jī)具有同父級(jí)虛擬機(jī)器或原始虛擬機(jī)器相同的操作環(huán)境以及狀態(tài)。此代理可在執(zhí)行病毒掃描或惡意軟件分析的同時(shí),任意地執(zhí)行此未知軟件。甚至在所述軟件的執(zhí)行可能導(dǎo)致所述虛擬機(jī)器崩潰或癱瘓的情況下,原始虛擬機(jī)器仍不會(huì)受到影響,這是因?yàn)閾p壞只發(fā)生在被復(fù)制的虛擬機(jī)器上。
[0005]在傳統(tǒng)技術(shù)中,即時(shí)遷移(Live Migration)技術(shù)常用于虛擬機(jī)器的快速或近乎即時(shí)的復(fù)制。即時(shí)遷移允許服務(wù)器管理員在不停止與用戶端的連接或是停止應(yīng)用程序的情況下,在不同的實(shí)體機(jī)器之間轉(zhuǎn)移正在運(yùn)行中的虛擬機(jī)器或應(yīng)用。而對(duì)于一個(gè)成功的即時(shí)遷移而言,需要將虛擬機(jī)器的存儲(chǔ)器、存儲(chǔ)裝置以及網(wǎng)絡(luò)連接遷移到目的地。但是,虛擬機(jī)器的復(fù)制在存儲(chǔ)器、存儲(chǔ)裝置或磁片的數(shù)據(jù)移轉(zhuǎn)完成之后才能開(kāi)始,而如此則可能無(wú)法滿足虛擬機(jī)器快速或近乎即時(shí)的復(fù)制的需要。
[0006]在傳統(tǒng)技術(shù)中,快照(Snapshot)機(jī)制也常被提及用來(lái)快速?gòu)?fù)制虛擬機(jī)器以及初始化被復(fù)制的虛擬機(jī)器。但是,執(zhí)行此快照機(jī)制需要將原始虛擬機(jī)器關(guān)閉或令其處于停頓狀態(tài)中,如此達(dá)成處于執(zhí)行狀態(tài)中的虛擬機(jī)器的復(fù)制。此快照機(jī)制可用來(lái)快速地復(fù)制大量虛擬機(jī)器,但對(duì)復(fù)制卻并不支持即時(shí)隔離環(huán)境。在其他傳統(tǒng)技術(shù)中,在執(zhí)行復(fù)制源虛擬機(jī)器的過(guò)程期間,用來(lái)復(fù)制存儲(chǔ)在實(shí)體存儲(chǔ)器中的數(shù)據(jù)的方法可能會(huì)將源虛擬機(jī)器的全部元數(shù)據(jù)復(fù)制到目標(biāo)虛擬機(jī)器。而在目標(biāo)虛擬機(jī)器中的元數(shù)據(jù)(例如,頁(yè)表)將會(huì)被重新引導(dǎo)到源虛擬機(jī)器的存儲(chǔ)器中。兩個(gè)元數(shù)據(jù)所指向的存儲(chǔ)器的所有頁(yè)中所存儲(chǔ)的信息將會(huì)被標(biāo)記為“只讀”。寫(xiě)時(shí)復(fù)制(Copy-on-write,COW)將用于存取操作。但是,在頁(yè)表目錄(Page TableDirectory, PTD)結(jié)構(gòu)中,將分頁(yè)表項(xiàng)目(Page Table Entry, PTE)設(shè)定為只讀的唯一方法為遍歷(Traverse)整個(gè)頁(yè)表,并將所有分頁(yè)表項(xiàng)目的讀取標(biāo)志(Flag)改變?yōu)椤爸蛔x”。此類操作所耗時(shí)間幾乎與復(fù)制整個(gè)頁(yè)表所耗時(shí)間相同。如果存儲(chǔ)器容量按需要增加,那么此類操作所耗時(shí)間將同樣增加。如果存儲(chǔ)器容量達(dá)到幾千百萬(wàn)字節(jié)(GB)或以上,那么所耗時(shí)間將增加到幾秒鐘以上甚至更多,而此要求將無(wú)法滿足虛擬機(jī)器(VM)的快速或近乎即時(shí)的復(fù)制技術(shù)。
【發(fā)明內(nèi)容】
[0007]本公開(kāi)內(nèi)容提供一種示范性實(shí)施例之一,包括一種復(fù)制源虛擬機(jī)器(VM)以及至少一個(gè)被復(fù)制的虛擬機(jī)器的存儲(chǔ)器中的數(shù)據(jù)的方法。來(lái)自源虛擬機(jī)器或被復(fù)制的虛擬機(jī)器的訪客物理地址與所述存儲(chǔ)器的主機(jī)物理地址之間的映射關(guān)系是由多個(gè)分層級(jí)別中所配置的多個(gè)頁(yè)表來(lái)予以定義。所述方法包括:將所述多個(gè)分層級(jí)別的最高級(jí)別或較高級(jí)別中的頁(yè)表的元數(shù)據(jù)復(fù)制到所述虛擬機(jī)器;將所述多個(gè)分層級(jí)別中最高級(jí)別或較高級(jí)別以外的級(jí)別中的頁(yè)表的剩余元數(shù)據(jù)根據(jù)存取的操作而對(duì)應(yīng)復(fù)制到所述虛擬機(jī)器;以及根據(jù)所述元數(shù)據(jù)以及所復(fù)制的元數(shù)據(jù)來(lái)存取存儲(chǔ)于所述存儲(chǔ)器的對(duì)應(yīng)地址中的數(shù)據(jù)。
[0008]為讓本公開(kāi)的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉優(yōu)選實(shí)施例,并配合附圖,作詳細(xì)說(shuō)明如下。
【專利附圖】
【附圖說(shuō)明】
[0009]圖1A用以繪示多個(gè)示范性實(shí)施例其中之一的新頁(yè)表結(jié)構(gòu)示意圖。
[0010]圖1B以及圖1C用以繪示通過(guò)四個(gè)級(jí)別的頁(yè)表在訪客物理地址與主機(jī)物理地址之間建立映射的一個(gè)實(shí)施例示意圖。
[0011]圖2用以繪示在多個(gè)示范性實(shí)施例其中之一,復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法的流程示意圖。
[0012]圖3用以繪示在B樹(shù)狀存儲(chǔ)器管理算法中在源虛擬機(jī)器與實(shí)體存儲(chǔ)器之間的關(guān)系示意圖。
[0013]圖4A以及圖4B用以繪示在本公開(kāi)的多個(gè)示范性實(shí)施例其中之一,在無(wú)計(jì)數(shù)器的情況下復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法示意圖。
[0014]圖5A以及圖5B用以繪示在本公開(kāi)的多個(gè)示范性實(shí)施例其中之一,在有計(jì)數(shù)器的情況下復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法示意圖。
[0015]圖6A以及圖6B用以繪示在本公開(kāi)的多個(gè)示范性實(shí)施例其中之一,在有計(jì)數(shù)器的情況下復(fù)制虛擬機(jī)器的虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法示意圖。
[0016]【主要元件符號(hào)說(shuō)明】
[0017]102:訪客 IA-32 頁(yè)表
[0018]104:多級(jí)頁(yè)表
[0019]106:線性或虛擬地址[0020]108:基準(zhǔn)指針(Base Pointer)
[0021]110、112、114 以及 116:頁(yè)表
[0022]341、342、343 以及 344:區(qū)塊
[0023]320:源虛擬機(jī)器
[0024]322、332、332a、332b:訪客頁(yè)表
[0025]330、330a、330b:目標(biāo)虛擬機(jī)器
[0026]340:元數(shù)據(jù)層
[0027]341、342、343 以及 344:路徑
[0028]360:實(shí)體存儲(chǔ)器
[0029]362:頁(yè)
[0030]402、404、406、408、410、412:頁(yè)表
[0031]406a、410a、412a:頁(yè)表
[0032]411:路徑
[0033]502、504、506、508、510、512:頁(yè)表
[0034]506a、510a、512a:頁(yè)表
[0035]602、604、606、610、612:頁(yè)表
[0036]606a、610a、612a:頁(yè)表
[0037]606b、610b、612b:頁(yè)表
【具體實(shí)施方式】
[0038]本公開(kāi)提供一種快速?gòu)?fù)制存儲(chǔ)于虛擬機(jī)器(VM)的存儲(chǔ)器中的數(shù)據(jù)的方法。示范性實(shí)施例之一包括提供一種通過(guò)存取時(shí)復(fù)制(Copy-0n-ACCeSs,C0A)復(fù)制元數(shù)據(jù),以及通過(guò)寫(xiě)時(shí)復(fù)制(Copy-on-write,COW)復(fù)制數(shù)據(jù),以便快速?gòu)?fù)制虛擬機(jī)器的存儲(chǔ)器數(shù)據(jù)的方法。如此,可達(dá)成并應(yīng)用不同級(jí)別虛擬機(jī)器的隔離保護(hù)和/或獨(dú)立執(zhí)行。
[0039]在示范性實(shí)施例之一中,當(dāng)虛擬機(jī)器想要存取數(shù)據(jù)時(shí),使用存取時(shí)復(fù)制(COA)技術(shù)復(fù)制對(duì)應(yīng)在此存取操作的剩余元數(shù)據(jù)來(lái)實(shí)施此存取操作。如果源虛擬機(jī)器或目標(biāo)虛擬機(jī)器將數(shù)據(jù)寫(xiě)入到實(shí)體存儲(chǔ)器,那么使用寫(xiě)時(shí)復(fù)制(COW)技術(shù)來(lái)復(fù)制實(shí)體存儲(chǔ)器中所存取的對(duì)應(yīng)地址中所存儲(chǔ)的數(shù)據(jù)。在系統(tǒng)虛擬化的架構(gòu)下,虛擬地址(Virtual Address)為程序用來(lái)存取數(shù)據(jù)以及指令的地址。虛擬地址包含區(qū)段(Segment)以及偏移字段(欄位)。此區(qū)段信息用來(lái)判斷此區(qū)段的保護(hù)信息以及開(kāi)始地址。操作系統(tǒng)一般使用平滑分段(FlatSegmentation),其中將所有區(qū)段映射到整個(gè)物理地址空間。根據(jù)平滑分段,虛擬地址實(shí)際上成為線性地址(Linear Address)。如果啟用分頁(yè)(Paging),則使用處理器分頁(yè)硬件(Processor Paging Hardware)將線性地址轉(zhuǎn)換成物理地址。為了使用分頁(yè),操作系統(tǒng)建立并且管理頁(yè)表集(Set)。所述的地址轉(zhuǎn)換將使用這些頁(yè)表以及在線性地址中的各種位字段。請(qǐng)看圖1A,其示意性地說(shuō)明本文中所引入的一種新頁(yè)表(Page-Table)結(jié)構(gòu)示意圖。在系統(tǒng)虛擬化的架構(gòu)下,被虛擬化的操作系統(tǒng)稱作“訪客”。為適當(dāng)?shù)靥摂M化并隔離訪客,虛擬機(jī)器管理程序(Hypervisor)或虛擬機(jī)器監(jiān)控程序(VMM)可控制或調(diào)節(jié)訪客所執(zhí)行的所有特權(quán)操作。在虛擬機(jī)器管理程序或虛擬機(jī)器監(jiān)控程序中的存儲(chǔ)器管理硬件電路的控制下,此新頁(yè)表結(jié)構(gòu)用來(lái)定義訪客物理地址與主機(jī)物理地址之間的映射關(guān)系。在此頁(yè)表結(jié)構(gòu)中,訪客對(duì)其自身的訪客IA-32頁(yè)表102具有完全控制。在訪客的控制下,通過(guò)使用控制寄存器3 (CR3)來(lái)將訪客線性地址映射到訪客物理地址。在一個(gè)實(shí)施例中,所述CR3常被稱作頁(yè)目錄庫(kù)寄存器(Page Directory Base Register, F1DBRX前述的寄存器含有頁(yè)的物理地址,其可為一頁(yè)目錄(Page Directory)。如果啟動(dòng)分頁(yè),并將CR3設(shè)定為無(wú)效或未初始化的頁(yè)目錄,那么此機(jī)器很有可能遭受不可恢復(fù)的故障,這是因?yàn)樗写鎯?chǔ)器的參照信息將從機(jī)器之下脫離。
[0040]接著,根據(jù)存儲(chǔ)器管理硬件電路的控制,通過(guò)多級(jí)頁(yè)表104以及基準(zhǔn)指針(BasePointer)將訪客物理地址映射到主機(jī)物理地址。多級(jí)頁(yè)表104可為B樹(shù)狀(B_tree like)結(jié)構(gòu),并且可具有多個(gè)級(jí)別以便將訪客地址轉(zhuǎn)換成物理地址。在虛擬化平臺(tái)中,中央管理單元(CPU)、存儲(chǔ)器管理單元(MemoryManagement Unit, MMU)以及輸入/輸出(I/O)裝置會(huì)造成一些負(fù)擔(dān)(Overheads)。一些最新的x86處理器(例如,AMD?以及Intel.?)開(kāi)始提供硬件擴(kuò)展(Hardware Extension)以說(shuō)明如何解決此性能問(wèn)題。兩大供應(yīng)商分別通過(guò)AMD-Virtualization? (AMD-V?)以及丨ntel.? VT-χ技術(shù)引入對(duì)x86虛擬化的第一代硬件的支持。Intel引入了其具有存儲(chǔ)器管理單元虛擬化(MMUvirtualization)的硬件支持,稱作“擴(kuò)展頁(yè)表(Extended Page Table, EPT)。在一個(gè)實(shí)施例中,不論是 AMD-Virtualization?(AMD-v?)技術(shù)還是丨mel? ντ-χ技術(shù),抑或是其他技術(shù),均使用硬件擴(kuò)展來(lái)通過(guò)四級(jí)頁(yè)表定義訪客物理地址與主機(jī)物理地址之間的映射。
[0041]請(qǐng)看圖1B以及圖1C,其繪示在訪客物理地址與主機(jī)物理地址之間建立映射的一個(gè)實(shí)施例,其在分層存儲(chǔ)管理(Hierarchiecal Levels)的實(shí)施例中,采用例如四級(jí)的頁(yè)表,但并非以此為限制。在此實(shí)施例中,線性或虛擬地址106包含若干區(qū)段(Segment)字段以及偏移(Offset)字段,例如,來(lái)自64地址中的第12個(gè)位到第47位形成了第一級(jí)到第四級(jí)的表偏移字段。如果啟用分頁(yè),將可使用處理器分頁(yè)硬件將線性地址106轉(zhuǎn)換成物理地址。為了使用分頁(yè),操作系統(tǒng)建立并管理頁(yè)表集(Set of Page Tables),例如,如圖所示的第四級(jí)到第一級(jí)頁(yè)表110、112、114以及116?;鶞?zhǔn)指針(Base Pointer) 108用于地址轉(zhuǎn)換。圖1C繪示用于地址轉(zhuǎn)換的高等級(jí)別(High Level)算法。通過(guò)映射到不同級(jí)別的頁(yè)表(例如,第四級(jí)到第一級(jí)頁(yè)表110、112、114以及116)來(lái)分別轉(zhuǎn)換不同級(jí)別的頁(yè)表偏移字段的內(nèi)容。在分層存儲(chǔ)管理中,存儲(chǔ)容量可達(dá)到512千百萬(wàn)字節(jié)(Giga Byte, GB)0在多個(gè)示范性實(shí)施例其中之一,提出通過(guò)利用在分層存儲(chǔ)管理結(jié)構(gòu)中地址轉(zhuǎn)換的高等級(jí)別算法來(lái)快速?gòu)?fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)。在復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法中,復(fù)制有關(guān)最高級(jí)別或較高級(jí)別的頁(yè)表的元數(shù)據(jù)(Metadata),并且所復(fù)制的元數(shù)據(jù)由兩個(gè)虛擬機(jī)器(例如,源虛擬機(jī)器與目標(biāo)虛擬機(jī)器)同時(shí)共用。目標(biāo)虛擬機(jī)器為從源虛擬機(jī)器復(fù)制的虛擬機(jī)器。在多個(gè)示范性實(shí)施例其中之一,在復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法中采用最高級(jí)別(第四級(jí)),但本公開(kāi)不限于此。對(duì)復(fù)制虛擬機(jī)器而言,有可能采用較高的級(jí)別,例如,第三級(jí)以及第四級(jí),或第二級(jí)到第四級(jí)。在所述實(shí)施例中,復(fù)制有關(guān)最高級(jí)別(第四級(jí))中的多個(gè)頁(yè)表的元數(shù)據(jù),并將其設(shè)定為“無(wú)效”。此類復(fù)制所耗時(shí)間幾乎是固定。對(duì)稍后的操作則采用存取時(shí)復(fù)制(COA)和/或?qū)憰r(shí)復(fù)制(C0W)。當(dāng)源虛擬機(jī)器或目標(biāo)虛擬機(jī)器存取數(shù)據(jù)時(shí),使用存取時(shí)復(fù)制(COA)技術(shù)復(fù)制其他級(jí)別剩余元數(shù)據(jù)以便進(jìn)行此存取的操作。如果源虛擬機(jī)器或目標(biāo)虛擬機(jī)器將數(shù)據(jù)寫(xiě)入到實(shí)體存儲(chǔ)器中的被存取地址的存儲(chǔ)空間,那么當(dāng)將數(shù)據(jù)存儲(chǔ)于實(shí)體存儲(chǔ)器中的對(duì)應(yīng)被存取地址中時(shí),使用寫(xiě)時(shí)復(fù)制(COW)技術(shù)來(lái)復(fù)制數(shù)據(jù)。請(qǐng)看圖2,其為繪示在示范性實(shí)施例之一中復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法的流程示意圖。在所述示范性實(shí)施例中,對(duì)復(fù)制采用了最高級(jí)別,但本公開(kāi)不限于此。在步驟S202中,復(fù)制較高級(jí)別中的元數(shù)據(jù)。訪客物理地址與主機(jī)物理地址之間的映射關(guān)系是由四個(gè)級(jí)別的頁(yè)表予以定義。為便于說(shuō)明,將四個(gè)元數(shù)據(jù)層L4到LI看作不同級(jí)別中的相應(yīng)元數(shù)據(jù),例如,元數(shù)據(jù)層L4表示最高級(jí)別。在步驟S204中,回應(yīng)于存取的操作,實(shí)施存取時(shí)復(fù)制(COA)技術(shù)來(lái)復(fù)制剩余的元數(shù)據(jù)。在步驟S206中,使用寫(xiě)時(shí)復(fù)制(COW)技術(shù)來(lái)復(fù)制實(shí)體存儲(chǔ)器中所存取的對(duì)應(yīng)地址中所存儲(chǔ)的數(shù)據(jù)。前述結(jié)構(gòu)類似于依照需求復(fù)制(Cloning On-demand),其中,如果虛擬機(jī)器試圖存取數(shù)據(jù),那么需要進(jìn)行存取的操作,接著對(duì)應(yīng)的一個(gè)或多個(gè)存取路徑將通過(guò)以下兩種方法來(lái)建立,包括對(duì)應(yīng)于所述存取的操作,利用存取時(shí)復(fù)制(COA)來(lái)復(fù)制剩余元數(shù)據(jù);和/或利用寫(xiě)時(shí)復(fù)制(COW)來(lái)復(fù)制實(shí)體存儲(chǔ)器中所存取的對(duì)應(yīng)地址中所存儲(chǔ)的數(shù)據(jù)。請(qǐng)參照?qǐng)D3,其繪示在B樹(shù)狀存儲(chǔ)器管理算法中,源虛擬機(jī)器與實(shí)體存儲(chǔ)器之間的關(guān)系示意圖。訪客物理地址與主機(jī)物理地址之間的映射關(guān)系是通過(guò)使用四個(gè)級(jí)別的頁(yè)表來(lái)予以定義。在元數(shù)據(jù)層340中,四個(gè)元數(shù)據(jù)層L4到LI分別視為不同級(jí)別中的頁(yè)表的相應(yīng)元數(shù)據(jù)。在區(qū)塊341、342、343以及344中,分別表示不同頁(yè)表目錄(PTD)中頁(yè)表之間的關(guān)系。不同的存取路徑可用以對(duì)存取的訪客物理地址與實(shí)體存儲(chǔ)器中的主機(jī)物理地址產(chǎn)生關(guān)聯(lián)。例如,在源虛擬機(jī)器320中,通過(guò)訪客頁(yè)表322將用于存取操作的訪客虛擬地址映射到訪客物理地址。對(duì)應(yīng)于所述訪客物理地址,在所述訪客物理地址與對(duì)應(yīng)于實(shí)體存儲(chǔ)器360中的不同頁(yè)的主機(jī)物理地址之間,從路徑344、343、342以及341建立一個(gè)存取路徑。
[0042]請(qǐng)參照?qǐng)D4A以及圖4B,其繪示本公開(kāi)的多個(gè)示范性實(shí)施例其中之一,在無(wú)計(jì)數(shù)器的情況下復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法示意圖。在所述實(shí)施例中,如果對(duì)源虛擬機(jī)器僅需要復(fù)制一個(gè)虛擬機(jī)器,那么不必使用計(jì)數(shù)器來(lái)記錄頁(yè)表中的每一分頁(yè)表項(xiàng)目(PTE)的共用狀態(tài)。
[0043]如圖4A所示,源虛擬機(jī)器320被復(fù)制,并且相應(yīng)地產(chǎn)生目標(biāo)虛擬機(jī)器330。源虛擬機(jī)器320具有訪客頁(yè)表322,而目標(biāo)虛擬機(jī)器330同樣具有從訪客頁(yè)表322復(fù)制的訪客頁(yè)表332。在此示范性實(shí)施例中,在復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法中采用最高級(jí)別(第四級(jí)),但本公開(kāi)不限于此。對(duì)復(fù)制虛擬機(jī)器而言,有可能采用幾個(gè)較高的級(jí)別,例如,第三級(jí)及第四級(jí),或第二級(jí)到第四級(jí)。在此實(shí)施例中,最高級(jí)別(第四級(jí))中的頁(yè)表的元數(shù)據(jù)將被復(fù)制,然后設(shè)定為“無(wú)效”,例如,復(fù)制源虛擬機(jī)器的頁(yè)表402的元數(shù)據(jù),并作為目標(biāo)虛擬機(jī)器最高級(jí)別(第四級(jí))的頁(yè)表404的元數(shù)據(jù)。并將最高級(jí)別(第四級(jí))中的頁(yè)表目錄(PTD)設(shè)定為無(wú)效。
[0044]在此頁(yè)表數(shù)據(jù)結(jié)構(gòu)中,對(duì)于目標(biāo)虛擬機(jī)器330中的頁(yè)表404,還建立了兩個(gè)頁(yè)表目錄,所述兩個(gè)頁(yè)表目錄在源虛擬機(jī)器320的第四級(jí)中的頁(yè)表402與下一較低級(jí)別(第三級(jí))中的頁(yè)表406以及408之間有關(guān)聯(lián)性(Correlated)。在較低級(jí)別(第三級(jí)到第一級(jí))中的頁(yè)表目錄保持不變,也就是說(shuō),較低級(jí)別的元數(shù)據(jù)保持不變。如果一個(gè)訪客虛擬地址被轉(zhuǎn)換成實(shí)體存儲(chǔ)器360中的頁(yè)362的主機(jī)物理地址,那么一個(gè)存取路徑將會(huì)被建立在從第三級(jí)中的頁(yè)表406、第二級(jí)中的頁(yè)表410、第一級(jí)中的頁(yè)表412到實(shí)體存儲(chǔ)器360中的分頁(yè)362的主機(jī)物理地址。
[0045]如圖4B所示,如果用于存取操作的一個(gè)訪客虛擬地址通過(guò)訪客頁(yè)表322映射到訪客物理地址,那么對(duì)應(yīng)在此訪客物理地址,在此訪客物理地址與對(duì)應(yīng)于實(shí)體存儲(chǔ)器360中的頁(yè)362的主機(jī)物理地址之間建立一個(gè)存取路徑。根據(jù)此存取路徑,將首先按照需求(Ondemand)恢復(fù)較低級(jí)別中有關(guān)沿著存取路徑的頁(yè)表目錄的頁(yè)表。也就是說(shuō),恢復(fù)第三級(jí)中的頁(yè)表406a、第二級(jí)中的頁(yè)表410a、以及第一級(jí)中的頁(yè)表412a。與存取路徑無(wú)關(guān)的其他頁(yè)表仍保持“無(wú)效”狀態(tài)。根據(jù)到實(shí)體存儲(chǔ)器360的頁(yè)362的存取路徑,頁(yè)表412a中所存取的分頁(yè)表項(xiàng)目(PTE)的標(biāo)志(Flags)標(biāo)記為只讀,這代表準(zhǔn)備好進(jìn)行寫(xiě)時(shí)復(fù)制(COW)的操作。如果需要寫(xiě)入操作,那么使用寫(xiě)時(shí)復(fù)制(COW)技術(shù)來(lái)復(fù)制實(shí)體存儲(chǔ)器360中的頁(yè)362中所存取的對(duì)應(yīng)地址中所存儲(chǔ)的數(shù)據(jù)。
[0046]請(qǐng)看圖5A以及圖5B,其繪示本公開(kāi)的多個(gè)示范性實(shí)施例其中之一,在采用計(jì)數(shù)器的情況下復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法。圖5A以及圖5B使用圖4A以及圖4B中的相同標(biāo)號(hào)來(lái)表示相同元件或結(jié)構(gòu)。
[0047]如圖5A所示,復(fù)制源虛擬機(jī)器320并相應(yīng)產(chǎn)生目標(biāo)虛擬機(jī)器330。源虛擬機(jī)器320具有訪客頁(yè)表322,而目標(biāo)虛擬機(jī)器330同樣具有從訪客頁(yè)表322復(fù)制的訪客頁(yè)表332。在此示范性實(shí)施例中,在復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法中采用了最高級(jí)別(第四級(jí)),但本公開(kāi)不限于此。對(duì)復(fù)制虛擬機(jī)器而言,有可能部署較高級(jí)別,例如,第三級(jí)以及第四級(jí),或是第二級(jí)到第四級(jí)。在此實(shí)施例中,復(fù)制最高級(jí)別(第四級(jí))中的元數(shù)據(jù),且接著將其標(biāo)記為“只讀”。將最高級(jí)別(第四級(jí))中的頁(yè)表目錄(PTD)也設(shè)定為只讀(Read Only)”。
[0048]計(jì)數(shù)器用于對(duì)不同級(jí)別中的每一頁(yè)表的共用狀態(tài)進(jìn)行計(jì)數(shù)。如果對(duì)應(yīng)于一個(gè)頁(yè)表的數(shù)字為“1”,那么此意謂建立了到所述頁(yè)表的僅一個(gè)連結(jié)(Link)或一個(gè)路徑(Path)。除非執(zhí)行寫(xiě)入操作(即,寫(xiě)時(shí)復(fù)制,C0W),否則不必復(fù)制所述頁(yè)表。如果建立了到所述頁(yè)表的兩個(gè)或兩個(gè)以上的連結(jié)或路徑,那么在下一寫(xiě)入操作中對(duì)應(yīng)于所述頁(yè)表的數(shù)字將大于“ I ”,此意謂在對(duì)所述頁(yè)表執(zhí)行寫(xiě)入操作時(shí)復(fù)制操作是必要的。
[0049]如果其中有一頁(yè)由源虛擬機(jī)器320或由目標(biāo)虛擬機(jī)器寫(xiě)入,那么對(duì)應(yīng)于存取路徑的頁(yè)表的計(jì)數(shù)器的數(shù)字將加一,因此例如變?yōu)椤?”。在寫(xiě)入操作中將復(fù)制所述頁(yè)表,并且將建立新頁(yè)表來(lái)按照需求(On Demand)恢復(fù)所述頁(yè)表。在此頁(yè)表數(shù)據(jù)結(jié)構(gòu)中,對(duì)于目標(biāo)虛擬機(jī)器330中的頁(yè)表504,還建立了兩個(gè)頁(yè)表目錄,所述兩個(gè)頁(yè)表目錄在源虛擬機(jī)器320的第四級(jí)中的頁(yè)表502與下一較低級(jí)別(第三級(jí))中的頁(yè)表506以及508之間有其關(guān)聯(lián)性。較低級(jí)別(第三級(jí)到第一級(jí))中的頁(yè)表目錄保持不變,即,較低級(jí)別的元數(shù)據(jù)保持不變。在實(shí)體存儲(chǔ)器360中的頁(yè)362的下一寫(xiě)入操作中,頁(yè)表506的計(jì)數(shù)器的數(shù)量變?yōu)椤癐”。如圖5B所示,建立了從第三級(jí)中的頁(yè)表506、第二級(jí)中的頁(yè)表510、第一級(jí)中的頁(yè)表512到實(shí)體存儲(chǔ)器360中的頁(yè)362的主機(jī)物理地址的一個(gè)存取路徑。沿著此存取路徑,頁(yè)表506、510以及512將被恢復(fù)。與存取路徑無(wú)關(guān)的其他頁(yè)表仍保持“只讀”狀態(tài)。根據(jù)到實(shí)體存儲(chǔ)器360的頁(yè)362的存取路徑,沿著所述存取路徑的頁(yè)表504、506a、510a以及512a中所存取的分頁(yè)表項(xiàng)目(PTE)的標(biāo)志(Flags)標(biāo)記為只讀,這代表準(zhǔn)備好進(jìn)行寫(xiě)時(shí)復(fù)制(COW)操作。
[0050]在圖5A以及圖5B中使用數(shù)字“I”或“2”僅是為了解釋每一分頁(yè)的共用狀態(tài)。此計(jì)數(shù)器也可配置在頁(yè)表數(shù)據(jù)結(jié)構(gòu)或其他位置。例如,在Intel? VT-x技術(shù)的擴(kuò)展頁(yè)表(EPT)結(jié)構(gòu)中,一些預(yù)留位可用于所述計(jì)數(shù)器。如果在其他位置中建立計(jì)數(shù)器,那么可使用哈希(雜湊)表(Hash Table)來(lái)與每一頁(yè)表進(jìn)行關(guān)聯(lián)性的連結(jié)。在一些其他實(shí)施例中,整個(gè)頁(yè)表也可完全不被共用。
[0051]對(duì)于復(fù)制多個(gè)虛擬機(jī)器的情況,請(qǐng)參照?qǐng)D6A以及圖6B,其繪示本公開(kāi)的多個(gè)示范性實(shí)施例其中之一,在有計(jì)數(shù)器的情況下復(fù)制虛擬機(jī)器的虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法。
[0052]如圖6A所示,源虛擬機(jī)器320將被復(fù)制并且相應(yīng)地產(chǎn)生第一目標(biāo)虛擬機(jī)器330a以及第二目標(biāo)虛擬機(jī)器330b。源虛擬機(jī)器320具有訪客頁(yè)表322,而第一目標(biāo)虛擬機(jī)器330a以及第二目標(biāo)虛擬機(jī)器330b同樣具有其從訪客頁(yè)表322復(fù)制的相應(yīng)訪客頁(yè)表332a以及332b。在此示范性實(shí)施例中,在復(fù)制虛擬機(jī)器存儲(chǔ)器狀態(tài)的方法中采用了最高級(jí)別(第四級(jí)),但本公開(kāi)不限于此。對(duì)復(fù)制虛擬機(jī)器而言,有可能部署較高級(jí)別,例如,第三級(jí)以及第四級(jí),或第二級(jí)到第四級(jí)。在所述實(shí)施例中,復(fù)制較高級(jí)別(第四級(jí))中的元數(shù)據(jù),且接著將其標(biāo)記為“只讀”。
[0053]如圖5A以及圖5B所示,計(jì)數(shù)器用于對(duì)不同級(jí)別中的每一頁(yè)表的共用狀態(tài)進(jìn)行計(jì)數(shù)。如果其中有一頁(yè)由第一目標(biāo)虛擬機(jī)器330a寫(xiě)入,那么在寫(xiě)入操作中將復(fù)制此頁(yè)表,并且將按照需求建立新的頁(yè)表以恢復(fù)所述頁(yè)表。如圖6A所示,如果第一目標(biāo)虛擬機(jī)器330a存取實(shí)體存儲(chǔ)器360中的頁(yè)362,那么存取路徑將建立在從第三級(jí)中的頁(yè)表608、第二級(jí)中的頁(yè)表610、第一級(jí)中的頁(yè)表612到實(shí)體存儲(chǔ)器360中的頁(yè)362的主機(jī)物理地址。沿著此存取路徑的頁(yè)表606、610以及612將恢復(fù)。與存取路徑無(wú)關(guān)的其他頁(yè)表仍保持“只讀”狀態(tài)。根據(jù)到實(shí)體存儲(chǔ)器360的頁(yè)362的存取路徑,沿著所述存取路徑的頁(yè)表604、608a、610a以及612a中所存取的分頁(yè)表項(xiàng)目(PTE)的標(biāo)志被標(biāo)記為只讀,這將代表準(zhǔn)備好進(jìn)行寫(xiě)時(shí)復(fù)制(COW)操作。
[0054]在另一情況下,如圖6B所示,如果第二目標(biāo)虛擬機(jī)器330b存取實(shí)體存儲(chǔ)器360中的頁(yè)362,那么另一個(gè)存取路徑將建立在從第一級(jí)中的頁(yè)表606、第三級(jí)中的頁(yè)表608a、第二級(jí)中的頁(yè)表610a、第一級(jí)中的頁(yè)表612a到實(shí)體存儲(chǔ)器360中的頁(yè)362的主機(jī)物理地址。沿著此存取路徑的頁(yè)表608a、610a以及612a分別恢復(fù)到頁(yè)表608b、610b以及612b。與存取路徑無(wú)關(guān)的其他頁(yè)表仍保持“無(wú)效”狀態(tài)。根據(jù)到實(shí)體存儲(chǔ)器360的頁(yè)362的存取路徑,沿著所述存取路徑的頁(yè)表604、608b、610b以及612b中所存取的分頁(yè)表項(xiàng)目(PTE)的標(biāo)志標(biāo)記為只讀,這將表示已經(jīng)準(zhǔn)備好進(jìn)行寫(xiě)時(shí)復(fù)制(COW)操作。
[0055]本公開(kāi)提供一種快速?gòu)?fù)制存儲(chǔ)于虛擬機(jī)器(VM)的存儲(chǔ)器的數(shù)據(jù)的方法。多個(gè)示范性實(shí)施例其中之一包括提供一種通過(guò)存取時(shí)復(fù)制(COA)的方式復(fù)制元數(shù)據(jù)以及經(jīng)由寫(xiě)時(shí)復(fù)制(COW)的方式復(fù)制數(shù)據(jù)以快速?gòu)?fù)制虛擬機(jī)器的方法。在多個(gè)示范性實(shí)施例其中之一,當(dāng)虛擬機(jī)器想要存取數(shù)據(jù)時(shí),使用存取時(shí)復(fù)制(COA)技術(shù)復(fù)制剩余元數(shù)據(jù)來(lái)實(shí)施存取操作。如果源虛擬機(jī)器或目標(biāo)虛擬機(jī)器將數(shù)據(jù)寫(xiě)入到實(shí)體存儲(chǔ)器,那么使用寫(xiě)時(shí)復(fù)制(COW)技術(shù)來(lái)復(fù)制實(shí)體存儲(chǔ)器中所存取的對(duì)應(yīng)地址中所存儲(chǔ)的數(shù)據(jù)。
[0056]快速?gòu)?fù)制存儲(chǔ)于虛擬機(jī)器(VM)的存儲(chǔ)器中的數(shù)據(jù)的方法可應(yīng)用于不同的虛擬化結(jié)構(gòu),例如,AMD-Virtualization?(AMD-VTM)及Intel? VT-x 技術(shù)。在Intel? VT-χ 技術(shù)中,提出擴(kuò)展頁(yè)表(EPT)結(jié)構(gòu)。在AMD-Virtualization?(AMD-VTM)技術(shù)中,提出巢狀分頁(yè)(NestedPaging)結(jié)構(gòu)。擴(kuò)展頁(yè)表(EPT)為Intel用于存儲(chǔ)器管理單元(MMU)的第二代x86虛擬化技術(shù)。當(dāng)此特征可用時(shí),普通IA-32頁(yè)表(由控制寄存器CR3所參照)從線性地址轉(zhuǎn)換成訪客物理地址。獨(dú)立的頁(yè)表(EPT表)集從訪客物理地址轉(zhuǎn)換成用來(lái)存取存儲(chǔ)器的主機(jī)物理地址。結(jié)果將是可允許訪客軟件修改其自身的IA-32頁(yè)表并且直接處理頁(yè)故障。這將允許虛擬機(jī)器監(jiān)控程序(VMM)避免與頁(yè)表虛擬化相關(guān)聯(lián)的虛擬機(jī)器退出,而在無(wú)EPT時(shí)此類虛擬機(jī)器退出實(shí)為虛擬化開(kāi)銷的主要來(lái)源。[0057]本公開(kāi)的不同的運(yùn)用上,可采用完全硬件實(shí)施例、完全軟件實(shí)施例或含有硬件以及軟件元件兩者的實(shí)施例的形式實(shí)施。在優(yōu)選實(shí)施例中,本公開(kāi)是以軟件來(lái)實(shí)施,所述套裝軟件含但不限于固件、常駐軟件、微碼等。
[0058]另外,本公開(kāi)的不同的運(yùn)用上,可采用從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)存取的計(jì)算機(jī)程序產(chǎn)品的形式,提供供計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或結(jié)合計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)來(lái)使用的程序代碼。根據(jù)本公開(kāi)內(nèi)容,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)為可含有、存儲(chǔ)、傳達(dá)、傳播或傳送供指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的程序的任何有形設(shè)備。
[0059]所述介質(zhì)可為電子、磁性、光學(xué)、電磁、紅外線或半導(dǎo)體系統(tǒng)(或設(shè)備,或裝置)或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的實(shí)例包含半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可移動(dòng)計(jì)算機(jī)磁片、隨機(jī)存取存儲(chǔ)器(random access memory, RAM)、只讀存儲(chǔ)器(read-only memory, ROM)、硬磁片或光盤(pán)。光盤(pán)的當(dāng)前實(shí)例包含光盤(pán)-只讀存儲(chǔ)器(compact disk-read only memory,⑶-ROM)、可重復(fù)讀寫(xiě)光盤(pán)(compact disk-read/write,⑶-R/W)以及數(shù)字多功能光盤(pán)(DVD)0
[0060]本公開(kāi)的不同的運(yùn)用上,可利用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可為計(jì)算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。例如,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可為(但不限于)電子、磁性、光學(xué)、電磁、紅外線或半導(dǎo)體系統(tǒng)、設(shè)備或裝置,或前述系統(tǒng)、設(shè)備或裝置的任何適當(dāng)組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更多特定實(shí)例(非詳盡清單)包含以下各者:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁片、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可程序設(shè)計(jì)只讀存儲(chǔ)器(erasabIe programmabIeread-only memory,EPR0M;或快閃存儲(chǔ)器)、光纖、便攜光盤(pán)只讀存儲(chǔ)器(⑶-ROM)、光學(xué)存儲(chǔ)裝置、磁性存儲(chǔ)裝置或前述各者的任何適當(dāng)組合。在本公開(kāi)的內(nèi)容中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可為可含有或存儲(chǔ)供指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置來(lái)使用的程序的任何有形介質(zhì)。
[0061]上述計(jì)算機(jī)可讀信號(hào)介質(zhì)可包含傳播的數(shù)據(jù)信號(hào),所述傳播數(shù)據(jù)信號(hào)具有體現(xiàn)于其中(例如,在基頻中或作為載波的部分)的計(jì)算機(jī)可讀程序代碼。此類傳播信號(hào)可采取各種形式中的任一個(gè),包含但不限于電磁、光學(xué)或其任何適當(dāng)組合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可為并非計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)但可傳達(dá)、傳播或傳送供指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置來(lái)使用的程序的任何計(jì)算機(jī)可讀介質(zhì)。
[0062]可使用任何適當(dāng)介質(zhì)來(lái)傳輸體現(xiàn)于計(jì)算機(jī)可讀介質(zhì)上的程序代碼,所述適當(dāng)介質(zhì)包含(但不限于)無(wú)線、有線、光纖纜線、RF等或前述各者的任何適當(dāng)組合。
[0063]本公開(kāi)的不同的運(yùn)用上,可用一種或多種程序設(shè)計(jì)語(yǔ)言的任何組合來(lái)撰寫(xiě)用于實(shí)行本公開(kāi)的若干方面的操作的計(jì)算機(jī)程序代碼,所述一種或多種程序設(shè)計(jì)語(yǔ)言包含例如Java、Smalltalk、C++或其類似者的物件導(dǎo)向的程序設(shè)計(jì)語(yǔ)言以及例如“C”程序設(shè)計(jì)語(yǔ)言或相似程序設(shè)計(jì)語(yǔ)言的常規(guī)程序性程序設(shè)計(jì)語(yǔ)言。所述程序代碼可完全在使用者計(jì)算機(jī)上執(zhí)行,部分地在使用者計(jì)算機(jī)上執(zhí)行,作為獨(dú)立套裝軟件來(lái)執(zhí)行,部分地在使用者計(jì)算機(jī)上執(zhí)行且部分地在遠(yuǎn)端計(jì)算機(jī)上執(zhí)行,或完全在遠(yuǎn)端計(jì)算機(jī)或服務(wù)器上執(zhí)行。在完全在遠(yuǎn)端計(jì)算機(jī)或服務(wù)器上執(zhí)行的情形下,遠(yuǎn)端計(jì)算機(jī)可通過(guò)任何類型的網(wǎng)絡(luò)(包含局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))連接到使用者計(jì)算機(jī),或可連接到外部計(jì)算機(jī)(例如,使用互聯(lián)網(wǎng)服務(wù)提供者,通過(guò)互聯(lián)網(wǎng)來(lái)連接)。
[0064]本公開(kāi)的不同的運(yùn)用上,參考本公開(kāi)的實(shí)施例的方法、設(shè)備(系統(tǒng))以及計(jì)算機(jī)程序產(chǎn)品的流程圖說(shuō)明和/或框圖來(lái)描述本公開(kāi)的若干方面。應(yīng)理解,可通過(guò)計(jì)算機(jī)程序指令來(lái)實(shí)施流程圖說(shuō)明和/或框圖的每一框以及流程圖說(shuō)明和/或框圖中的若干框的組合??蓪⑦@些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其他可程序設(shè)計(jì)數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生機(jī)器,以使得通過(guò)所述計(jì)算機(jī)或其他可程序設(shè)計(jì)數(shù)據(jù)處理設(shè)備的處理器而執(zhí)行的指令產(chǎn)生用于實(shí)施所述流程圖和/或框圖的一個(gè)或多個(gè)框中所指定的功能/動(dòng)作的構(gòu)件。
[0065]也可將這些計(jì)算機(jī)程序指令存儲(chǔ)于計(jì)算機(jī)可讀介質(zhì)中,其可引導(dǎo)計(jì)算機(jī)、其他可程序設(shè)計(jì)數(shù)據(jù)處理設(shè)備或其他裝置以特定方式行使功能,使得存儲(chǔ)于所述計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生包含實(shí)施所述流程圖和/或框圖的一個(gè)或多個(gè)框中所指定的功能/動(dòng)作的指令的制品。
[0066]也可將所述計(jì)算機(jī)程序指令載入到計(jì)算機(jī)、其他可程序設(shè)計(jì)數(shù)據(jù)處理設(shè)備或其他裝置上,以使一系列操作步驟在所述計(jì)算機(jī)、其他可程序設(shè)計(jì)設(shè)備或其他裝置上執(zhí)行以產(chǎn)生計(jì)算機(jī)實(shí)施的過(guò)程,使得在所述計(jì)算機(jī)或其他可程序設(shè)計(jì)設(shè)備上執(zhí)行的指令提供用于實(shí)施所述流程圖和/或框圖的一個(gè)或多個(gè)框中所指定的功能/動(dòng)作的過(guò)程。本公開(kāi)的流程圖用以說(shuō)明根據(jù)本公開(kāi)的各種實(shí)施例的系統(tǒng)、方法以及計(jì)算機(jī)程序產(chǎn)品的可能實(shí)施的體系結(jié)構(gòu)、功能性以及操作。因此,流程圖中的每一區(qū)塊可表示程序代碼的模塊、段或部分,其包括用于實(shí)施指定的邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令。同樣應(yīng)注意,在一些替代實(shí)施中,框中所提到的功能可不以諸圖中所提到的次序發(fā)生。例如,取決于所涉及的功能性,連續(xù)展示的兩個(gè)區(qū)塊實(shí)際上可實(shí)質(zhì)上同時(shí)執(zhí)行,或所述區(qū)塊有時(shí)可按相反次序執(zhí)行。還應(yīng)注意,可通過(guò)執(zhí)行指定功能或動(dòng)作的基于專用硬件的系統(tǒng)或?qū)S糜布c計(jì)算機(jī)指令的組合來(lái)實(shí)施區(qū)塊和/或流程圖說(shuō)明的每一區(qū)塊和/或流程圖說(shuō)明中的區(qū)塊的組合。本文中使用的術(shù)語(yǔ)僅用于描述特定實(shí)施例,而且并不意欲限制本公開(kāi)。如本文中所使用,單數(shù)形式“一”及“該”意欲同樣包含復(fù)數(shù)形式,除非上下文另有清晰指示。應(yīng)進(jìn)一步理解,當(dāng)在本說(shuō)明書(shū)中使用術(shù)語(yǔ)“包括”時(shí),其指明存在所陳述的特征、整體、步驟、操作、元件和/或元件,但不排除存在或添加一個(gè)或多個(gè)其他特征、整體、步驟、操作、元件、元件和/或其群組。適合于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)包含通過(guò)系統(tǒng)總線直接或間接耦接到存儲(chǔ)器元件的至少一個(gè)處理器。所述存儲(chǔ)器元件可包含在程序代碼的實(shí)際執(zhí)行期間所應(yīng)用的本機(jī)寄存器、大型存儲(chǔ)裝置以及快取存儲(chǔ)器,所述快取存儲(chǔ)器提供至少一些程序代碼的暫時(shí)存儲(chǔ),以便減少在執(zhí)行期間必須從大型存儲(chǔ)裝置檢索存取的次數(shù)。
[0067]雖然本公開(kāi)已以優(yōu)選實(shí)施例公開(kāi)如上,然其并非用以限定本公開(kāi),本領(lǐng)域技術(shù)人員在不脫離本公開(kāi)的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤(rùn)飾,因此本公開(kāi)的保護(hù)范圍當(dāng)視所附權(quán)利要求書(shū)所界定者為準(zhǔn)。
【權(quán)利要求】
1.一種復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,適用于一源虛擬機(jī)器以及至少一個(gè)被復(fù)制的虛擬機(jī)器對(duì)該存儲(chǔ)器數(shù)據(jù)的存取,其中來(lái)自該源虛擬機(jī)器或該被復(fù)制的虛擬機(jī)器的一訪客物理地址與該存儲(chǔ)器的一主機(jī)物理地址之間的映射關(guān)系是由多個(gè)分層級(jí)別中所配置的多個(gè)頁(yè)表所定義,其特征在于,該復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法包括: 將這些分層級(jí)別的最高級(jí)別或較高級(jí)別對(duì)應(yīng)的這些頁(yè)表的元數(shù)據(jù)復(fù)制到該虛擬機(jī)器; 根據(jù)存取的操作,將這些分層級(jí)別中該最高級(jí)別或該較高級(jí)別以外級(jí)別中的這些頁(yè)表,對(duì)應(yīng)該存取的操作的元數(shù)據(jù)復(fù)制到該虛擬機(jī)器;以及 存取存儲(chǔ)于該存儲(chǔ)器中,對(duì)應(yīng)于這些元數(shù)據(jù)以及根據(jù)該存取的操作所復(fù)制的這些元數(shù)據(jù)的對(duì)應(yīng)地址中的數(shù)據(jù)。
2.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在根據(jù)將這些分層級(jí)別的最高級(jí)別或較高級(jí)別對(duì)應(yīng)的這些頁(yè)表的這些元數(shù)據(jù)復(fù)制之后,該方法還包括: 將對(duì)應(yīng)于該最高級(jí)別或該或這些較高級(jí)別的多個(gè)頁(yè)表目錄設(shè)定為無(wú)效。
3.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中將該最高級(jí)別或該或這些較高級(jí)別以外的該或這些級(jí)別中的這些頁(yè)表的剩余元數(shù)據(jù)復(fù)制到該虛擬機(jī)器包括: 對(duì)應(yīng)該存取操作,按照需求恢復(fù)該最高級(jí)別或該或這些較高級(jí)別以外的該或這些級(jí)別中的這些頁(yè)表。
4.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中存取存儲(chǔ)于該存儲(chǔ)器的該對(duì)應(yīng)地址中的數(shù)據(jù)包括: 根據(jù)這些元數(shù)據(jù)以及根據(jù)該 存取的操作所復(fù)制的這些元數(shù)據(jù)建立一個(gè)或多個(gè)存取路徑,以根據(jù)這些元數(shù)據(jù)以及根據(jù)該存取的操作所復(fù)制的這些元數(shù)據(jù)來(lái)存取存儲(chǔ)于該存儲(chǔ)器的該對(duì)應(yīng)地址中的該數(shù)據(jù)。
5.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中存取存儲(chǔ)于該存儲(chǔ)器的該對(duì)應(yīng)地址中的數(shù)據(jù)包括: 根據(jù)寫(xiě)時(shí)復(fù)制技術(shù)將該數(shù)據(jù)寫(xiě)入到該存儲(chǔ)器的該對(duì)應(yīng)地址。
6.如權(quán)利要求5所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中根據(jù)該寫(xiě)時(shí)復(fù)制技術(shù)將數(shù)據(jù)寫(xiě)入到該存儲(chǔ)器的該對(duì)應(yīng)地址之前,將這些元數(shù)據(jù)以及根據(jù)該存取的操作所復(fù)制的這些元數(shù)據(jù)設(shè)定為只讀。
7.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在于該多個(gè)分層級(jí)別的數(shù)量為四。
8.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在于該訪客物理地址與擴(kuò)展頁(yè)表結(jié)構(gòu)相容,并且這些頁(yè)表是以多個(gè)分層級(jí)別來(lái)配置以用于轉(zhuǎn)換該訪客物理地址。
9.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在該訪客物理地址與巢狀分頁(yè)結(jié)構(gòu)相容,并且這些頁(yè)表是以該多個(gè)分層級(jí)別來(lái)配置以用于轉(zhuǎn)換該訪客物理地址。
10.如權(quán)利要求1所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在復(fù)制該最高級(jí)別或該或這些較高級(jí)別以外的該或這些級(jí)別中的這些頁(yè)表的剩余元數(shù)據(jù)之前,對(duì)該最高級(jí)別或該或這些較高級(jí)別以外的該或這些級(jí)別中所配置的每一該頁(yè)表的共用狀態(tài)計(jì)數(shù),以及根據(jù)該計(jì)數(shù)的結(jié)果來(lái)復(fù)制每一該頁(yè)表的該剩余元數(shù)據(jù)。
11.如權(quán)利要求10所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中將每一該頁(yè)表中的每一該計(jì)數(shù)的結(jié)果存儲(chǔ)于該計(jì)數(shù)的對(duì)應(yīng)該頁(yè)表中。
12.如權(quán)利要求10所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中將每一該頁(yè)表中的每一該計(jì)數(shù)的結(jié)果存儲(chǔ)于一哈希表中。
13.一種存儲(chǔ)于計(jì)算機(jī)可存取介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品,其包括用于在一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)中實(shí)施根據(jù)權(quán)利要求1所述的該復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法的計(jì)算機(jī)可讀程序集。
14.一種計(jì)算機(jī)系統(tǒng),其特征在于,包括: 主機(jī),其包括: 總線系統(tǒng); 存儲(chǔ)器模塊,其連接到該總線系統(tǒng),其中包含計(jì)算機(jī)可執(zhí)行指令集;以及 處理單元,其連接到該總線系統(tǒng),其中該處理單元執(zhí)行用于實(shí)施根據(jù)權(quán)利要求1所述的該復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法的該計(jì)算機(jī)可執(zhí)行指令集。
15.一種復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,適用于一源虛擬機(jī)器以及至少一個(gè)被復(fù)制的虛擬機(jī)器對(duì)該存儲(chǔ)器數(shù)據(jù)的存取,其中來(lái)自該源虛擬機(jī)器或該被復(fù)制的虛擬機(jī)器的一訪客物理地址與該存儲(chǔ)器的一主機(jī)物理地址之間的映射關(guān)系是由多個(gè)分層級(jí)別中所配置的多個(gè)頁(yè)表所定義,其特征在于,該復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法包括: 將這些分層級(jí)別的最高級(jí)別對(duì)應(yīng)的這些頁(yè)表的元數(shù)據(jù)復(fù)制到該虛擬機(jī)器; 根據(jù)存取的操作,將該最高級(jí)別以外的這些級(jí)別中的這些頁(yè)表,對(duì)應(yīng)該存取的操作的元數(shù)據(jù)復(fù)制到該虛擬機(jī)器;以`及 存取存儲(chǔ)于該存儲(chǔ)器中,對(duì)應(yīng)于該最高級(jí)別對(duì)應(yīng)的這些頁(yè)表的這些元數(shù)據(jù)以及根據(jù)該存取的操作所復(fù)制的這些元數(shù)據(jù)的對(duì)應(yīng)地址中的數(shù)據(jù)。
16.如權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在根據(jù)將該最高級(jí)別對(duì)應(yīng)的這些頁(yè)表的這些元數(shù)據(jù)復(fù)制之后,該方法還包括: 將對(duì)應(yīng)于該最高級(jí)別的多個(gè)頁(yè)表目錄設(shè)定為無(wú)效。
17.如權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中將該最高級(jí)別以外的這些級(jí)別中的這些頁(yè)表的剩余元數(shù)據(jù)復(fù)制到該虛擬機(jī)器包括: 對(duì)應(yīng)該存取操作,按照需求恢復(fù)該最高級(jí)別以外的這些級(jí)別中的這些頁(yè)表。
18.如權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中存取存儲(chǔ)于該存儲(chǔ)器的該對(duì)應(yīng)地址中的數(shù)據(jù)包括: 根據(jù)這些元數(shù)據(jù)以及根據(jù)該存取的操作所復(fù)制的這些元數(shù)據(jù)建立一個(gè)或多個(gè)存取路徑,以根據(jù)這些元數(shù)據(jù)以及根據(jù)該存取的操作所復(fù)制的這些元數(shù)據(jù)來(lái)存取存儲(chǔ)于該存儲(chǔ)器的該對(duì)應(yīng)地址中的該數(shù)據(jù)。
19.如權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中存取存儲(chǔ)于該存儲(chǔ)器的該對(duì)應(yīng)地址中的數(shù)據(jù)包括: 根據(jù)寫(xiě)時(shí)復(fù)制技術(shù)將該數(shù)據(jù)寫(xiě)入到該存儲(chǔ)器的該對(duì)應(yīng)地址。
20.如權(quán)利要求19所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中根據(jù)該寫(xiě)時(shí)復(fù)制技術(shù)將數(shù)據(jù)寫(xiě)入到該存儲(chǔ)器的該對(duì)應(yīng)地址之前,將這些元數(shù)據(jù)以及根據(jù)該存取的操作所復(fù)制的這些元數(shù)據(jù)設(shè)定為只讀。
21.如權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在于該多個(gè)分層級(jí)別的數(shù)量為四。
22.如權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在于該訪客物理地址與擴(kuò)展頁(yè)表結(jié)構(gòu)相容,并且這些頁(yè)表是以多個(gè)分層級(jí)別來(lái)配置以用于轉(zhuǎn)換該訪客物理地址。
23.根據(jù)權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在該訪客物理地址與巢狀分頁(yè)結(jié)構(gòu)相容,并且這些頁(yè)表是以該多個(gè)分層級(jí)別來(lái)配置以用于轉(zhuǎn)換該訪客物理地址。
24.如權(quán)利要求15所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中在復(fù)制該最高級(jí)別以外的這些級(jí)別中的這些頁(yè)表的剩余元數(shù)據(jù)之前,對(duì)該最高級(jí)別以外的該或這些級(jí)別中所配置的每一該頁(yè)表的共用狀態(tài)計(jì)數(shù),以及根據(jù)該計(jì)數(shù)的結(jié)果來(lái)復(fù)制每一該頁(yè)表的該剩余元數(shù)據(jù)。
25.如權(quán)利要求24所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中將每一該頁(yè)表中的每一該計(jì)數(shù)的結(jié)果存儲(chǔ)于該計(jì)數(shù)的對(duì)應(yīng)該頁(yè)表中。
26.如權(quán)利要求24所述的復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法,其中將每一該頁(yè)表中的每一該計(jì)數(shù)的結(jié)果存儲(chǔ)于一哈希表中。
27.一種存儲(chǔ)于計(jì)算機(jī)可存取介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品,其包括用于在一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)中實(shí)施根據(jù)權(quán)利要求15所述的該復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法的計(jì)算機(jī)可讀程序集。
28.一種計(jì)算機(jī)系統(tǒng),其特征在于,包括: 主機(jī),其包括:` 總線系統(tǒng); 存儲(chǔ)器模塊,其連接到該總線系統(tǒng),其中包含計(jì)算機(jī)可執(zhí)行指令集;以及 處理單元,其連接到該總線系統(tǒng),其中該處理單元執(zhí)行用于實(shí)施根據(jù)權(quán)利要求15所述的該復(fù)制虛擬機(jī)器存儲(chǔ)器數(shù)據(jù)的方法的該計(jì)算機(jī)可執(zhí)行指令集。
【文檔編號(hào)】G06F11/14GK103514066SQ201210435890
【公開(kāi)日】2014年1月15日 申請(qǐng)日期:2012年11月5日 優(yōu)先權(quán)日:2012年6月28日
【發(fā)明者】李翰林, 姜瑞豪, 闕志克 申請(qǐng)人:財(cái)團(tuán)法人工業(yè)技術(shù)研究院