复制虚拟机器的存储器数据的方法、程序产品及系统转让专利

申请号 : CN201210435890.X

文献号 : CN103514066B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李翰林姜瑞豪阙志克

申请人 : 财团法人工业技术研究院

摘要 :

复制虚拟机器的存储器数据的方法、程序产品及系统。在此提出一种快速复制源虚拟机器Virtual Machine,VM)以及至少一个被复制虚拟机器(Cloned Virtual Machine)存储器数据的方法。来自源虚拟机器或被复制的虚拟机器的访客物理地址与存储器中的主机物理地址之间的映射关系,是由多个分层级别中所配置的多个页表所定义。在所述方法中,将所述多个分层级别的最高级别或较高级别中的页表的元数据复制到虚拟机器。多个分层级别中最高级别或较高级别以外级别中的页表剩下的元数据将根据存取的操作而复制到所述虚拟机器。根据元数据以及被复制的元数据来存取存储于所述存储器的对应地址中的数据。

权利要求 :

1.一种复制虚拟机器存储器数据的方法,适用于一源虚拟机器以及至少一个被复制的虚拟机器对该存储器数据的存取,其中来自该源虚拟机器或该被复制的虚拟机器的一访客物理地址与该存储器的一主机物理地址之间的映射关系是由多个分层级别中所配置的多个页表所定义,其特征在于,该复制虚拟机器存储器数据的方法包括:将所述多个分层级别的最高级别或较高级别对应的所述多个页表的元数据复制到该被复制的虚拟机器;

根据存取的操作,将所述多个分层级别中该最高级别或该较高级别以外的级别中的所述多个页表对应所述存取的操作的元数据复制到该被复制的虚拟机器;以及存取存储于该存储器中对应于所述多个分层级别的最高级别或较高级别对应的所述多个页表的元数据以及根据所述存取的操作所复制的所述多个元数据的对应地址中的数据。

2.如权利要求1所述的复制虚拟机器存储器数据的方法,其中在将所述多个分层级别的最高级别或较高级别对应的所述多个页表的元数据复制之后,该方法还包括:将对应于该最高级别或较高级别的多个页表目录设定为无效。

3.如权利要求1所述的复制虚拟机器存储器数据的方法,其中将该最高级别或较高级别以外的级别中的所述多个页表的剩余元数据复制到该被复制的虚拟机器包括:对应该存取操作,按照需求恢复该最高级别或较高级别以外的级别中的所述多个页表。

4.如权利要求1所述的复制虚拟机器存储器数据的方法,其中存取存储于该存储器的该对应地址中的数据包括:根据所述多个分层级别的最高级别或较高级别对应的所述多个页表的元数据以及根据该存取的操作所复制的所述多个元数据建立一个或多个存取路径,以根据所述多个分层级别的最高级别或较高级别对应的所述多个页表的元数据以及根据该存取的操作所复制的所述多个元数据来存取存储于该存储器的该对应地址中的该数据。

5.如权利要求1所述的复制虚拟机器存储器数据的方法,其中存取存储于该存储器的该对应地址中的数据包括:根据写时复制技术将该数据写入到该存储器的该对应地址。

6.如权利要求5所述的复制虚拟机器存储器数据的方法,其中根据该写时复制技术将数据写入到该存储器的该对应地址之前,将所述多个分层级别的最高级别或较高级别对应的所述多个页表的元数据以及根据该存取的操作所复制的所述多个元数据设定为只读。

7.如权利要求1所述的复制虚拟机器存储器数据的方法,其中该多个分层级别的数量为四。

8.如权利要求1所述的复制虚拟机器存储器数据的方法,其中该访客物理地址与扩展页表结构相容,并且所述多个页表是以多个分层级别来配置以用于转换该访客物理地址。

9.如权利要求1所述的复制虚拟机器存储器数据的方法,其中该访客物理地址与巢状分页结构相容,并且所述多个页表是以该多个分层级别来配置以用于转换该访客物理地址。

10.如权利要求1所述的复制虚拟机器存储器数据的方法,其中在复制该最高级别或较高级别以外的级别中的所述多个页表的剩余元数据之前,对该最高级别或较高级别以外的级别中所配置的每一页表的共用状态计数,以及根据该计数的结果来复制每一页表的该剩余元数据。

11.如权利要求10所述的复制虚拟机器存储器数据的方法,其中将每一页表中的每一计数的结果存储于该计数的对应页表中。

12.如权利要求10所述的复制虚拟机器存储器数据的方法,其中将每一页表中的每一计数的结果存储于一哈希表中。

13.一种计算机系统,其特征在于,包括:

主机,其包括:

总线系统;

存储器模块,其连接到该总线系统,其中包含计算机可执行指令集;以及处理单元,其连接到该总线系统,其中该处理单元执行用于实施根据权利要求1所述的该复制虚拟机器存储器数据的方法的该计算机可执行指令集。

14.一种复制虚拟机器存储器数据的方法,适用于一源虚拟机器以及至少一个被复制的虚拟机器对该存储器数据的存取,其中来自该源虚拟机器或该被复制的虚拟机器的一访客物理地址与该存储器的一主机物理地址之间的映射关系是由多个分层级别中所配置的多个页表所定义,其特征在于,该复制虚拟机器存储器数据的方法包括:将所述多个分层级别的最高级别对应的所述多个页表的元数据复制到该被复制的虚拟机器;

根据存取的操作,将该最高级别以外的级别对应的所述多个页表对应所述存取的操作的元数据复制到该被复制的虚拟机器;以及存取存储于该存储器中对应于该最高级别对应的所述多个页表的所述多个元数据以及根据所述存取的操作所复制的所述多个元数据的对应地址中的数据。

15.如权利要求14所述的复制虚拟机器存储器数据的方法,其中在将该最高级别对应的所述多个页表的所述多个元数据复制之后,该方法还包括:将对应于该最高级别的多个页表目录设定为无效。

16.如权利要求14所述的复制虚拟机器存储器数据的方法,其中将该最高级别以外的所述多个级别中的所述多个页表的剩余元数据复制到该被复制的虚拟机器包括:对应该存取操作,按照需求恢复该最高级别以外的所述多个级别中的所述多个页表。

17.如权利要求14所述的复制虚拟机器存储器数据的方法,其中存取存储于该存储器的该对应地址中的数据包括:根据所述多个分层级别的最高级别对应的所述多个页表的元数据以及根据该存取的操作所复制的所述多个元数据建立一个或多个存取路径,以根据所述多个分层级别的最高级别对应的所述多个页表的元数据以及根据该存取的操作所复制的所述多个元数据来存取存储于该存储器的该对应地址中的该数据。

18.如权利要求14所述的复制虚拟机器存储器数据的方法,其中存取存储于该存储器的该对应地址中的数据包括:根据写时复制技术将该数据写入到该存储器的该对应地址。

19.如权利要求18所述的复制虚拟机器存储器数据的方法,其中根据该写时复制技术将数据写入到该存储器的该对应地址之前,将所述多个分层级别的最高级别对应的所述多个页表的元数据以及根据该存取的操作所复制的所述多个元数据设定为只读。

20.如权利要求14所述的复制虚拟机器存储器数据的方法,其中该多个分层级别的数量为四。

21.如权利要求14所述的复制虚拟机器存储器数据的方法,其中该访客物理地址与扩展页表结构相容,并且所述多个页表是以多个分层级别来配置以用于转换该访客物理地址。

22.根据权利要求14所述的复制虚拟机器存储器数据的方法,其中该访客物理地址与巢状分页结构相容,并且所述多个页表是以该多个分层级别来配置以用于转换该访客物理地址。

23.如权利要求14所述的复制虚拟机器存储器数据的方法,其中在复制该最高级别以外的所述多个级别中的所述多个页表的剩余元数据之前,对该最高级别以外的所述级别中所配置的页表中的每一页表的共用状态计数,以及根据该计数的结果来复制所述每一页表的该剩余元数据。

24.如权利要求23所述的复制虚拟机器存储器数据的方法,其中将每一页表中的每一计数的结果存储于该计数的对应页表中。

25.如权利要求23所述的复制虚拟机器存储器数据的方法,其中将每一页表中的每一计数的结果存储于一哈希表中。

26.一种计算机系统,其特征在于,包括:

主机,其包括:

总线系统;

存储器模块,其连接到该总线系统,其中包含计算机可执行指令集;以及处理单元,其连接到该总线系统,其中该处理单元执行用于实施根据权利要求14所述的该复制虚拟机器存储器数据的方法的该计算机可执行指令集。

说明书 :

复制虚拟机器的存储器数据的方法、程序产品及系统

技术领域

[0001] 本公开涉及一种复制虚拟机器存储器的数据的方法。

背景技术

[0002] 系统虚拟化(System Virtualization)是将共用平台上的资源聚集以及抽象化。此抽象化过程是将软件与硬件分离,而且使多个操作系统映像文件能够并行地在单一实体平台上运行,而不会相互干扰。虚拟化可将需要经由许多实体机上运行的工作负载,合并到单一实体机上运行的多个虚拟机器进行,如此可增加计算资源的利用率。而此合并可大大减少数据中心中所需要的电力消耗以及占地面积。可使用集中式管理界面来依照需求供应虚拟机器、对其进行复制和迁移。
[0003] 为了使得多个操作系统能够在同一实体平台上运行,以软件方式运作的一平台层(Platform layer)可将操作系统与硬件分离。此层被称作虚拟机器管理程序(Hypervisor)或虚拟机器监控程序(Virtual Machine Monitor,VMM)。在系统虚拟化的架构下,被虚拟化的操作系统称作“客操作系统(GuestOperating System)”。为了适当地虚拟化并隔离访客,虚拟机器管理程序或虚拟机器监控程序(VMM)必须控制或调节访客所执行的所有特权操作。虚拟机器管理程序可使用各种技术来完成此控制或调节。
[0004] 在虚拟化环境或用于系统虚拟化的平台中,需注意虚拟机器(VM)的快速或近乎即时的复制。此技术可用于负载平衡(Load Balancing)、预先部署测试(Pre-deployment Testing)、预测执行(Speculative Execution)、数据探勘(DataMiming)以及在大的数据中心所进行的病毒扫描或恶意软件分析。当载入或准备要执行未知软件时,进行未知软件的执行可能会被防毒程序或代理拦截或中断。此时,可能提前请求快速复制虚拟机器。被复制的虚拟机具有同父级虚拟机器或原始虚拟机器相同的操作环境以及状态。此代理可在执行病毒扫描或恶意软件分析的同时,任意地执行此未知软件。甚至在所述软件的执行可能导致所述虚拟机器崩溃或瘫痪的情况下,原始虚拟机器仍不会受到影响,这是因为损坏只发生在被复制的虚拟机器上。
[0005] 在传统技术中,即时迁移(Live Migration)技术常用于虚拟机器的快速或近乎即时的复制。即时迁移允许服务器管理员在不停止与用户端的连接或是停止应用程序的情况下,在不同的实体机器之间转移正在运行中的虚拟机器或应用。而对于一个成功的即时迁移而言,需要将虚拟机器的存储器、存储装置以及网络连接迁移到目的地。但是,虚拟机器的复制在存储器、存储装置或磁片的数据移转完成之后才能开始,而如此则可能无法满足虚拟机器快速或近乎即时的复制的需要。
[0006] 在传统技术中,快照(Snapshot)机制也常被提及用来快速复制虚拟机器以及初始化被复制的虚拟机器。但是,执行此快照机制需要将原始虚拟机器关闭或令其处于停顿状态中,如此达成处于执行状态中的虚拟机器的复制。此快照机制可用来快速地复制大量虚拟机器,但对复制却并不支持即时隔离环境。在其他传统技术中,在执行复制源虚拟机器的过程期间,用来复制存储在实体存储器中的数据的方法可能会将源虚拟机器的全部元数据复制到目标虚拟机器。而在目标虚拟机器中的元数据(例如,页表)将会被重新引导到源虚拟机器的存储器中。两个元数据所指向的存储器的所有页中所存储的信息将会被标记为“只读”。写时复制(Copy-on-write,COW)将用于存取操作。但是,在页表目录(Page Table Directory,PTD)结构中,将分页表项目(Page Table Entry,PTE)设定为只读的唯一方法为遍历(Traverse)整个页表,并将所有分页表项目的读取标志(Flag)改变为“只读”。此类操作所耗时间几乎与复制整个页表所耗时间相同。如果存储器容量按需要增加,那么此类操作所耗时间将同样增加。如果存储器容量达到几千百万字节(GB)或以上,那么所耗时间将增加到几秒钟以上甚至更多,而此要求将无法满足虚拟机器(VM)的快速或近乎即时的复制技术。

发明内容

[0007] 本公开内容提供一种示范性实施例之一,包括一种复制源虚拟机器(VM)以及至少一个被复制的虚拟机器的存储器中的数据的方法。来自源虚拟机器或被复制的虚拟机器的访客物理地址与所述存储器的主机物理地址之间的映射关系是由多个分层级别中所配置的多个页表来予以定义。所述方法包括:将所述多个分层级别的最高级别或较高级别中的页表的元数据复制到所述虚拟机器;将所述多个分层级别中最高级别或较高级别以外的级别中的页表的剩余元数据根据存取的操作而对应复制到所述虚拟机器;以及根据所述元数据以及所复制的元数据来存取存储于所述存储器的对应地址中的数据。
[0008] 为让本公开的上述和其他目的、特征和优点能更明显易懂,下文特举优选实施例,并配合附图,作详细说明如下。

附图说明

[0009] 图1A用以绘示多个示范性实施例其中之一的新页表结构示意图。
[0010] 图1B以及图1C用以绘示通过四个级别的页表在访客物理地址与主机物理地址之间建立映射的一个实施例示意图。
[0011] 图2用以绘示在多个示范性实施例其中之一,复制虚拟机器存储器状态的方法的流程示意图。
[0012] 图3用以绘示在B树状存储器管理算法中在源虚拟机器与实体存储器之间的关系示意图。
[0013] 图4A以及图4B用以绘示在本公开的多个示范性实施例其中之一,在无计数器的情况下复制虚拟机器存储器状态的方法示意图。
[0014] 图5A以及图5B用以绘示在本公开的多个示范性实施例其中之一,在有计数器的情况下复制虚拟机器存储器状态的方法示意图。
[0015] 图6A以及图6B用以绘示在本公开的多个示范性实施例其中之一,在有计数器的情况下复制虚拟机器的虚拟机器存储器状态的方法示意图。
[0016] 【主要元件符号说明】
[0017] 102:访客IA-32页表
[0018] 104:多级页表
[0019] 106:线性或虚拟地址
[0020] 108:基准指针(Base Pointer)
[0021] 110、112、114以及116:页表
[0022] 341、342、343以及344:区块
[0023] 320:源虚拟机器
[0024] 322、332、332a、332b:访客页表
[0025] 330、330a、330b:目标虚拟机器
[0026] 340:元数据层
[0027] 341、342、343以及344:路径
[0028] 360:实体存储器
[0029] 362:页
[0030] 402、404、406、408、410、412:页表
[0031] 406a、410a、412a:页表
[0032] 411:路径
[0033] 502、504、506、508、510、512:页表
[0034] 506a、510a、512a:页表
[0035] 602、604、606、610、612:页表
[0036] 606a、610a、612a:页表
[0037] 606b、610b、612b:页表

具体实施方式

[0038] 本公开提供一种快速复制存储于虚拟机器(VM)的存储器中的数据的方法。示范性实施例之一包括提供一种通过存取时复制(Copy-On-Access,COA)复制元数据,以及通过写时复制(Copy-on-write,COW)复制数据,以便快速复制虚拟机器的存储器数据的方法。如此,可达成并应用不同级别虚拟机器的隔离保护和/或独立执行。
[0039] 在示范性实施例之一中,当虚拟机器想要存取数据时,使用存取时复制(COA)技术复制对应在此存取操作的剩余元数据来实施此存取操作。如果源虚拟机器或目标虚拟机器将数据写入到实体存储器,那么使用写时复制(COW)技术来复制实体存储器中所存取的对应地址中所存储的数据。在系统虚拟化的架构下,虚拟地址(Virtual Address)为程序用来存取数据以及指令的地址。虚拟地址包含区段(Segment)以及偏移字段(栏位)。此区段信息用来判断此区段的保护信息以及开始地址。操作系统一般使用平滑分段(FlatSegmentation),其中将所有区段映射到整个物理地址空间。根据平滑分段,虚拟地址实际上成为线性地址(Linear Address)。如果启用分页(Paging),则使用处理器分页硬件(Processor Paging Hardware)将线性地址转换成物理地址。为了使用分页,操作系统建立并且管理页表集(Set)。所述的地址转换将使用这些页表以及在线性地址中的各种位字段。
请看图1A,其示意性地说明本文中所引入的一种新页表(Page-Table)结构示意图。在系统虚拟化的架构下,被虚拟化的操作系统称作“访客”。为适当地虚拟化并隔离访客,虚拟机器管理程序(Hypervisor)或虚拟机器监控程序(VMM)可控制或调节访客所执行的所有特权操作。在虚拟机器管理程序或虚拟机器监控程序中的存储器管理硬件电路的控制下,此新页表结构用来定义访客物理地址与主机物理地址之间的映射关系。在此页表结构中,访客对其自身的访客IA-32页表102具有完全控制。在访客的控制下,通过使用控制寄存器3(CR3)来将访客线性地址映射到访客物理地址。在一个实施例中,所述CR3常被称作页目录库寄存器(Page Directory Base Register,PDBR)。前述的寄存器含有页的物理地址,其可为一页目录(Page Directory)。如果启动分页,并将CR3设定为无效或未初始化的页目录,那么此机器很有可能遭受不可恢复的故障,这是因为所有存储器的参照信息将从机器之下脱离。
[0040] 接着,根据存储器管理硬件电路的控制,通过多级页表104以及基准指针(Base Pointer)将访客物理地址映射到主机物理地址。多级页表104可为B树状(B-tree like)结构,并且可具有多个级别以便将访客地址转换成物理地址。在虚拟化平台中,中央管理单元(CPU)、存储器管理单元(MemoryManagement Unit,MMU)以及输入/输出(I/O)装置会造成一些负担(Overheads)。一些最新的x86处理器(例如, 以及 )开始提供硬件扩展(Hardware Extension)以说明如何解决此性能问题。两大供应商分别通过AMD-TM TMVirtualization(AMD-V )以及 VT-x技术引入对x86虚拟化的第一代硬件的支持。
Intel引入了其具有存储器管理单元虚拟化(MMUvirtualization)的硬件支持,称作“扩展页表(Extended Page Table,EPT)。在一个实施例中,不论是AMD-VirtualizationT(M AMD-VTM)技术还是 VT-x技术,抑或是其他技术,均使用硬件扩展来通过四级页表定义访客物理地址与主机物理地址之间的映射。
[0041] 请看图1B以及图1C,其绘示在访客物理地址与主机物理地址之间建立映射的一个实施例,其在分层存储管理(Hierarchiecal Levels)的实施例中,采用例如四级的页表,但并非以此为限制。在此实施例中,线性或虚拟地址106包含若干区段(Segment)字段以及偏移(Offset)字段,例如,来自64地址中的第12个位到第47位形成了第一级到第四级的表偏移字段。如果启用分页,将可使用处理器分页硬件将线性地址106转换成物理地址。为了使用分页,操作系统建立并管理页表集(Set of Page Tables),例如,如图所示的第四级到第一级页表110、112、114以及116。基准指针(Base Pointer)108用于地址转换。图1C绘示用于地址转换的高等级别(High Level)算法。通过映射到不同级别的页表(例如,第四级到第一级页表110、112、114以及116)来分别转换不同级别的页表偏移字段的内容。在分层存储管理中,存储容量可达到512千百万字节(Giga Byte,GB)。在多个示范性实施例其中之一,提出通过利用在分层存储管理结构中地址转换的高等级别算法来快速复制虚拟机器存储器状态。在复制虚拟机器存储器状态的方法中,复制有关最高级别或较高级别的页表的元数据(Metadata),并且所复制的元数据由两个虚拟机器(例如,源虚拟机器与目标虚拟机器)同时共用。目标虚拟机器为从源虚拟机器复制的虚拟机器。在多个示范性实施例其中之一,在复制虚拟机器存储器状态的方法中采用最高级别(第四级),但本公开不限于此。对复制虚拟机器而言,有可能采用较高的级别,例如,第三级以及第四级,或第二级到第四级。在所述实施例中,复制有关最高级别(第四级)中的多个页表的元数据,并将其设定为“无效”。此类复制所耗时间几乎是固定。对稍后的操作则采用存取时复制(COA)和/或写时复制(COW)。当源虚拟机器或目标虚拟机器存取数据时,使用存取时复制(COA)技术复制其他级别剩余元数据以便进行此存取的操作。如果源虚拟机器或目标虚拟机器将数据写入到实体存储器中的被存取地址的存储空间,那么当将数据存储于实体存储器中的对应被存取地址中时,使用写时复制(COW)技术来复制数据。请看图2,其为绘示在示范性实施例之一中复制虚拟机器存储器状态的方法的流程示意图。在所述示范性实施例中,对复制采用了最高级别,但本公开不限于此。在步骤S202中,复制较高级别中的元数据。访客物理地址与主机物理地址之间的映射关系是由四个级别的页表予以定义。为便于说明,将四个元数据层L4到L1看作不同级别中的相应元数据,例如,元数据层L4表示最高级别。在步骤S204中,回应于存取的操作,实施存取时复制(COA)技术来复制剩余的元数据。在步骤S206中,使用写时复制(COW)技术来复制实体存储器中所存取的对应地址中所存储的数据。前述结构类似于依照需求复制(Cloning On-demand),其中,如果虚拟机器试图存取数据,那么需要进行存取的操作,接着对应的一个或多个存取路径将通过以下两种方法来建立,包括对应于所述存取的操作,利用存取时复制(COA)来复制剩余元数据;和/或利用写时复制(COW)来复制实体存储器中所存取的对应地址中所存储的数据。请参照图3,其绘示在B树状存储器管理算法中,源虚拟机器与实体存储器之间的关系示意图。访客物理地址与主机物理地址之间的映射关系是通过使用四个级别的页表来予以定义。在元数据层340中,四个元数据层L4到L1分别视为不同级别中的页表的相应元数据。在区块341、342、343以及344中,分别表示不同页表目录(PTD)中页表之间的关系。不同的存取路径可用以对存取的访客物理地址与实体存储器中的主机物理地址产生关联。例如,在源虚拟机器320中,通过访客页表322将用于存取操作的访客虚拟地址映射到访客物理地址。对应于所述访客物理地址,在所述访客物理地址与对应于实体存储器360中的不同页的主机物理地址之间,从路径344、343、342以及341建立一个存取路径。
[0042] 请参照图4A以及图4B,其绘示本公开的多个示范性实施例其中之一,在无计数器的情况下复制虚拟机器存储器状态的方法示意图。在所述实施例中,如果对源虚拟机器仅需要复制一个虚拟机器,那么不必使用计数器来记录页表中的每一分页表项目(PTE)的共用状态。
[0043] 如图4A所示,源虚拟机器320被复制,并且相应地产生目标虚拟机器330。源虚拟机器320具有访客页表322,而目标虚拟机器330同样具有从访客页表322复制的访客页表332。在此示范性实施例中,在复制虚拟机器存储器状态的方法中采用最高级别(第四级),但本公开不限于此。对复制虚拟机器而言,有可能采用几个较高的级别,例如,第三级及第四级,或第二级到第四级。在此实施例中,最高级别(第四级)中的页表的元数据将被复制,然后设定为“无效”,例如,复制源虚拟机器的页表402的元数据,并作为目标虚拟机器最高级别(第四级)的页表404的元数据。并将最高级别(第四级)中的页表目录(PTD)设定为无效。
[0044] 在此页表数据结构中,对于目标虚拟机器330中的页表404,还建立了两个页表目录,所述两个页表目录在源虚拟机器320的第四级中的页表402与下一较低级别(第三级)中的页表406以及408之间有关联性(Correlated)。在较低级别(第三级到第一级)中的页表目录保持不变,也就是说,较低级别的元数据保持不变。如果一个访客虚拟地址被转换成实体存储器360中的页362的主机物理地址,那么一个存取路径将会被建立在从第三级中的页表406、第二级中的页表410、第一级中的页表412到实体存储器360中的分页362的主机物理地址。
[0045] 如图4B所示,如果用于存取操作的一个访客虚拟地址通过访客页表322映射到访客物理地址,那么对应在此访客物理地址,在此访客物理地址与对应于实体存储器360中的页362的主机物理地址之间建立一个存取路径。根据此存取路径,将首先按照需求(On demand)恢复较低级别中有关沿着存取路径的页表目录的页表。也就是说,恢复第三级中的页表406a、第二级中的页表410a、以及第一级中的页表412a。与存取路径无关的其他页表仍保持“无效”状态。根据到实体存储器360的页362的存取路径,页表412a中所存取的分页表项目(PTE)的标志(Flags)标记为只读,这代表准备好进行写时复制(COW)的操作。如果需要写入操作,那么使用写时复制(COW)技术来复制实体存储器360中的页362中所存取的对应地址中所存储的数据。
[0046] 请看图5A以及图5B,其绘示本公开的多个示范性实施例其中之一,在采用计数器的情况下复制虚拟机器存储器状态的方法。图5A以及图5B使用图4A以及图4B中的相同标号来表示相同元件或结构。
[0047] 如图5A所示,复制源虚拟机器320并相应产生目标虚拟机器330。源虚拟机器320具有访客页表322,而目标虚拟机器330同样具有从访客页表322复制的访客页表332。在此示范性实施例中,在复制虚拟机器存储器状态的方法中采用了最高级别(第四级),但本公开不限于此。对复制虚拟机器而言,有可能部署较高级别,例如,第三级以及第四级,或是第二级到第四级。在此实施例中,复制最高级别(第四级)中的元数据,且接着将其标记为“只读”。将最高级别(第四级)中的页表目录(PTD)也设定为只读(Read Only)”。
[0048] 计数器用于对不同级别中的每一页表的共用状态进行计数。如果对应于一个页表的数字为“1”,那么此意谓建立了到所述页表的仅一个连结(Link)或一个路径(Path)。除非执行写入操作(即,写时复制,COW),否则不必复制所述页表。如果建立了到所述页表的两个或两个以上的连结或路径,那么在下一写入操作中对应于所述页表的数字将大于“1”,此意谓在对所述页表执行写入操作时复制操作是必要的。
[0049] 如果其中有一页由源虚拟机器320或由目标虚拟机器写入,那么对应于存取路径的页表的计数器的数字将加一,因此例如变为“2”。在写入操作中将复制所述页表,并且将建立新页表来按照需求(On Demand)恢复所述页表。在此页表数据结构中,对于目标虚拟机器330中的页表504,还建立了两个页表目录,所述两个页表目录在源虚拟机器320的第四级中的页表502与下一较低级别(第三级)中的页表506以及508之间有其关联性。较低级别(第三级到第一级)中的页表目录保持不变,即,较低级别的元数据保持不变。在实体存储器360中的页362的下一写入操作中,页表506的计数器的数量变为“1”。如图5B所示,建立了从第三级中的页表506、第二级中的页表510、第一级中的页表512到实体存储器360中的页362的主机物理地址的一个存取路径。沿着此存取路径,页表506、510以及512将被恢复。与存取路径无关的其他页表仍保持“只读”状态。根据到实体存储器360的页362的存取路径,沿着所述存取路径的页表504、506a、510a以及512a中所存取的分页表项目(PTE)的标志(Flags)标记为只读,这代表准备好进行写时复制(COW)操作。
[0050] 在图5A以及图5B中使用数字“1”或“2”仅是为了解释每一分页的共用状态。此计数器也可配置在页表数据结构或其他位置。例如,在 VT-x技术的扩展页表(EPT)结构中,一些预留位可用于所述计数器。如果在其他位置中建立计数器,那么可使用哈希(杂凑)表(Hash Table)来与每一页表进行关联性的连结。在一些其他实施例中,整个页表也可完全不被共用。
[0051] 对于复制多个虚拟机器的情况,请参照图6A以及图6B,其绘示本公开的多个示范性实施例其中之一,在有计数器的情况下复制虚拟机器的虚拟机器存储器状态的方法。
[0052] 如图6A所示,源虚拟机器320将被复制并且相应地产生第一目标虚拟机器330a以及第二目标虚拟机器330b。源虚拟机器320具有访客页表322,而第一目标虚拟机器330a以及第二目标虚拟机器330b同样具有其从访客页表322复制的相应访客页表332a以及332b。在此示范性实施例中,在复制虚拟机器存储器状态的方法中采用了最高级别(第四级),但本公开不限于此。对复制虚拟机器而言,有可能部署较高级别,例如,第三级以及第四级,或第二级到第四级。在所述实施例中,复制较高级别(第四级)中的元数据,且接着将其标记为“只读”。
[0053] 如图5A以及图5B所示,计数器用于对不同级别中的每一页表的共用状态进行计数。如果其中有一页由第一目标虚拟机器330a写入,那么在写入操作中将复制此页表,并且将按照需求建立新的页表以恢复所述页表。如图6A所示,如果第一目标虚拟机器330a存取实体存储器360中的页362,那么存取路径将建立在从第三级中的页表608、第二级中的页表610、第一级中的页表612到实体存储器360中的页362的主机物理地址。沿着此存取路径的页表606、610以及612将恢复。与存取路径无关的其他页表仍保持“只读”状态。根据到实体存储器360的页362的存取路径,沿着所述存取路径的页表604、608a、610a以及612a中所存取的分页表项目(PTE)的标志被标记为只读,这将代表准备好进行写时复制(COW)操作。
[0054] 在另一情况下,如图6B所示,如果第二目标虚拟机器330b存取实体存储器360中的页362,那么另一个存取路径将建立在从第一级中的页表606、第三级中的页表608a、第二级中的页表610a、第一级中的页表612a到实体存储器360中的页362的主机物理地址。沿着此存取路径的页表608a、610a以及612a分别恢复到页表608b、610b以及612b。与存取路径无关的其他页表仍保持“无效”状态。根据到实体存储器360的页362的存取路径,沿着所述存取路径的页表604、608b、610b以及612b中所存取的分页表项目(PTE)的标志标记为只读,这将表示已经准备好进行写时复制(COW)操作。
[0055] 本公开提供一种快速复制存储于虚拟机器(VM)的存储器的数据的方法。多个示范性实施例其中之一包括提供一种通过存取时复制(COA)的方式复制元数据以及经由写时复制(COW)的方式复制数据以快速复制虚拟机器的方法。在多个示范性实施例其中之一,当虚拟机器想要存取数据时,使用存取时复制(COA)技术复制剩余元数据来实施存取操作。如果源虚拟机器或目标虚拟机器将数据写入到实体存储器,那么使用写时复制(COW)技术来复制实体存储器中所存取的对应地址中所存储的数据。
[0056] 快速复制存储于虚拟机器(VM)的存储器中的数据的方法可应用于不同的虚拟化结构,例如,AMD-VirtualizationT(M AMD-VTM)及 VT-x技术。在 VT-x技术中,提出扩展页表(EPT)结构。在AMD-VirtualizationT(M AMD-VTM)技术中,提出巢状分页(Nested Paging)结构。扩展页表(EPT)为Intel用于存储器管理单元(MMU)的第二代x86虚拟化技术。当此特征可用时,普通IA-32页表(由控制寄存器CR3所参照)从线性地址转换成访客物理地址。独立的页表(EPT表)集从访客物理地址转换成用来存取存储器的主机物理地址。结果将是可允许访客软件修改其自身的IA-32页表并且直接处理页故障。这将允许虚拟机器监控程序(VMM)避免与页表虚拟化相关联的虚拟机器退出,而在无EPT时此类虚拟机器退出实为虚拟化开销的主要来源。
[0057] 本公开的不同的运用上,可采用完全硬件实施例、完全软件实施例或含有硬件以及软件元件两者的实施例的形式实施。在优选实施例中,本公开是以软件来实施,所述套装软件含但不限于固件、常驻软件、微码等。
[0058] 另外,本公开的不同的运用上,可采用从计算机可用或计算机可读介质存取的计算机程序产品的形式,提供供计算机或任何指令执行系统使用或结合计算机或任何指令执行系统来使用的程序代码。根据本公开内容,计算机可用或计算机可读介质为可含有、存储、传达、传播或传送供指令执行系统、设备或装置使用或结合指令执行系统、设备或装置使用的程序的任何有形设备。
[0059] 所述介质可为电子、磁性、光学、电磁、红外线或半导体系统(或设备,或装置)或传播介质。计算机可读介质的实例包含半导体或固态存储器、磁带、可移动计算机磁片、随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、硬磁片或光盘。光盘的当前实例包含光盘-只读存储器(compact disk-read only memory,CD-ROM)、可重复读写光盘(compact disk-read/write,CD-R/W)以及数字多功能光盘(DVD)。
[0060] 本公开的不同的运用上,可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可为(但不限于)电子、磁性、光学、电磁、红外线或半导体系统、设备或装置,或前述系统、设备或装置的任何适当组合。计算机可读存储介质的更多特定实例(非详尽清单)包含以下各者:具有一个或多个导线的电连接、便携式计算机磁片、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可程序设计只读存储器(erasable programmableread-only memory,EPROM;或快闪存储器)、光纤、便携光盘只读存储器(CD-ROM)、光学存储装置、磁性存储装置或前述各者的任何适当组合。在本公开的内容中,计算机可读存储介质可为可含有或存储供指令执行系统、设备或装置使用或结合指令执行系统、设备或装置来使用的程序的任何有形介质。
[0061] 上述计算机可读信号介质可包含传播的数据信号,所述传播数据信号具有体现于其中(例如,在基频中或作为载波的部分)的计算机可读程序代码。此类传播信号可采取各种形式中的任一个,包含但不限于电磁、光学或其任何适当组合。计算机可读信号介质可为并非计算机可读存储介质但可传达、传播或传送供指令执行系统、设备或装置使用或结合指令执行系统、设备或装置来使用的程序的任何计算机可读介质。
[0062] 可使用任何适当介质来传输体现于计算机可读介质上的程序代码,所述适当介质包含(但不限于)无线、有线、光纤缆线、RF等或前述各者的任何适当组合。
[0063] 本公开的不同的运用上,可用一种或多种程序设计语言的任何组合来撰写用于实行本公开的若干方面的操作的计算机程序代码,所述一种或多种程序设计语言包含例如Java、Smalltalk、C++或其类似者的物件导向的程序设计语言以及例如“C”程序设计语言或相似程序设计语言的常规程序性程序设计语言。所述程序代码可完全在使用者计算机上执行,部分地在使用者计算机上执行,作为独立套装软件来执行,部分地在使用者计算机上执行且部分地在远端计算机上执行,或完全在远端计算机或服务器上执行。在完全在远端计算机或服务器上执行的情形下,远端计算机可通过任何类型的网络(包含局域网(LAN)或广域网(WAN))连接到使用者计算机,或可连接到外部计算机(例如,使用互联网服务提供者,通过互联网来连接)。
[0064] 本公开的不同的运用上,参考本公开的实施例的方法、设备(系统)以及计算机程序产品的流程图说明和/或框图来描述本公开的若干方面。应理解,可通过计算机程序指令来实施流程图说明和/或框图的每一框以及流程图说明和/或框图中的若干框的组合。可将这些计算机程序指令提供给通用计算机、专用计算机或其他可程序设计数据处理设备的处理器以产生机器,以使得通过所述计算机或其他可程序设计数据处理设备的处理器而执行的指令产生用于实施所述流程图和/或框图的一个或多个框中所指定的功能/动作的构件。
[0065] 也可将这些计算机程序指令存储于计算机可读介质中,其可引导计算机、其他可程序设计数据处理设备或其他装置以特定方式行使功能,使得存储于所述计算机可读介质中的指令产生包含实施所述流程图和/或框图的一个或多个框中所指定的功能/动作的指令的制品。
[0066] 也可将所述计算机程序指令载入到计算机、其他可程序设计数据处理设备或其他装置上,以使一系列操作步骤在所述计算机、其他可程序设计设备或其他装置上执行以产生计算机实施的过程,使得在所述计算机或其他可程序设计设备上执行的指令提供用于实施所述流程图和/或框图的一个或多个框中所指定的功能/动作的过程。本公开的流程图用以说明根据本公开的各种实施例的系统、方法以及计算机程序产品的可能实施的体系结构、功能性以及操作。因此,流程图中的每一区块可表示程序代码的模块、段或部分,其包括用于实施指定的逻辑功能的一个或多个可执行指令。同样应注意,在一些替代实施中,框中所提到的功能可不以诸图中所提到的次序发生。例如,取决于所涉及的功能性,连续展示的两个区块实际上可实质上同时执行,或所述区块有时可按相反次序执行。还应注意,可通过执行指定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实施区块和/或流程图说明的每一区块和/或流程图说明中的区块的组合。本文中使用的术语仅用于描述特定实施例,而且并不意欲限制本公开。如本文中所使用,单数形式“一”及“该”意欲同样包含复数形式,除非上下文另有清晰指示。应进一步理解,当在本说明书中使用术语“包括”时,其指明存在所陈述的特征、整体、步骤、操作、元件和/或元件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、元件和/或其群组。适合于存储和/或执行程序代码的数据处理系统包含通过系统总线直接或间接耦接到存储器元件的至少一个处理器。所述存储器元件可包含在程序代码的实际执行期间所应用的本机寄存器、大型存储装置以及快取存储器,所述快取存储器提供至少一些程序代码的暂时存储,以便减少在执行期间必须从大型存储装置检索存取的次数。
[0067] 虽然本公开已以优选实施例公开如上,然其并非用以限定本公开,本领域技术人员在不脱离本公开的精神和范围内,当可作些许的更动与润饰,因此本公开的保护范围当视所附权利要求书所界定者为准。