CN102541619A - 虚拟机管理装置和方法 - Google Patents
虚拟机管理装置和方法 Download PDFInfo
- Publication number
- CN102541619A CN102541619A CN2010106123609A CN201010612360A CN102541619A CN 102541619 A CN102541619 A CN 102541619A CN 2010106123609 A CN2010106123609 A CN 2010106123609A CN 201010612360 A CN201010612360 A CN 201010612360A CN 102541619 A CN102541619 A CN 102541619A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- memory
- shared
- hierarchical information
- software hierarchical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000015654 memory Effects 0.000 claims abstract description 187
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 238000010586 diagram Methods 0.000 claims description 16
- 238000011900 installation process Methods 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 238000009795 derivation Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims 2
- 238000002955 isolation Methods 0.000 abstract description 12
- 238000007726 management method Methods 0.000 abstract description 11
- 238000009434 installation Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
提供了虚拟机管理装置和方法,所述装置包括:虚拟机信息获取单元,配置为获取当前虚拟机的软件层级信息;内存分析单元,配置为参照已安装的至少一个虚拟机的现有软件层级信息和所述当前虚拟机的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分;以及内存映射单元,配置为将上述共享部分映射到物理内存的共享区段,所述共享区段由至少一个已经安装的虚拟机所使用。还提供了与上述装置对应的方法。通过以上装置和方法,可以使得同一物理平台上的多个虚拟机实现内存的部分共享,从而在有效利用内存资源的同时,保持虚拟机的相对独立和隔离。
Description
技术领域
本发明涉及虚拟机,更具体而言,涉及管理虚拟机的装置和方法。
背景技术
近来,虚拟化技术已经广泛应用在各种应用环境之中,用以提高IT资源和应用程序的效率。虚拟化技术可以随时根据需要,将资源、应用程序甚至服务器分配到相应的位置,从而整合资源,提高计算机的可用性,由此节省50%到70%的IT总成本。
虚拟化的典型实现是在一台物理计算机上模拟出一台或多台虚拟的计算机,即虚拟机(Virtual Machine),也就是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。这样的虚拟机与物理计算机一样,承载着自身的客户操作系统和应用程序,并具有物理计算机上的所有组件,包括主板、硬盘、网卡控制器等。虽然多个虚拟机可以共享一台计算机的物理资源,但它们彼此之间保持完全隔离状态,如同它们是不同的物理计算机一样。例如,如果在一台物理服务器上有四个虚拟机,而其中一个虚拟机崩溃了,其他三个虚拟机仍将可用。在可用性和安全性方面,虚拟环境中运行的应用程序之所以远优于在传统的非虚拟化系统中运行的应用程序,隔离就是一个重要的原因。
为了保持虚拟机之间的隔离,虚拟机之间通常会保持硬件资源分配的独立性,尽量少地共享同一部分物理资源。具体地,在内存管理方面,处于物理平台和虚拟机之间的管理程序会为每个虚拟机分配一段独立的内存,每个虚拟机只对自己“专属”的内存进行存取。图1示出现有技术中多个虚拟机的内存管理。如图1所示,在同一物理平台上安装了10个虚拟机,分别标注为虚拟机VM1-10。虚拟机的管理程序根据物理平台的硬件容量和每个虚拟机的运行需要,为每个虚拟机分配一段内存,并维持虚拟机内存和物理内存之间的映射关系。例如在一个例子中,物理平台的总内存容量为15G,管理程序为每个虚拟机分配1G的内存,并且使得每个虚拟机所获得的内存之间相互独立,例如将物理内存的0-1G分配给虚拟机VM1,将1-2G分配给虚拟机VM2。由此,每个虚拟机只能看到分配给自己的1G内存,并对这部分内存进行读写。具体地,在VM2进行内存访问时,VM2的内存管理单元首先将所请求的逻辑地址转化为自己能看到的0-1G物理地址中的相应地址,称为客户物理地址(guest physical address)。然后,管理程序获得该客户物理地址,通过查阅虚拟机内存和物理内存之间的映射关系,将获得的客户物理地址映射到物理内存的真实物理地址,并返回给虚拟机。例如,如果VM2所请求的客户物理地址是0.5G,那么管理程序返回的真实物理地址就是1.5G。如此,每个虚拟机独立地享有专用的内存区段,彼此隔离地进行内存访问。
然而,上述的隔离方法在资源利用上还存在一定不足。假定一个虚拟机流畅地运行一个操作系统和基本的上层应用所需的内存为2G,那么在同一物理平台上安装100个虚拟机就需要至少200G物理内存,这样巨大的内存需要对物理平台提出了很高的要求。然而,实际上,在这100个虚拟机中,很可能大部分虚拟机是基于相同的操作系统,因此物理平台上存在对同一操作系统的多重备份,这就存在着一定的资源浪费。然而,对于整个系统来说,保持虚拟机之间的独立和隔离是虚拟化的基本要求。因此,如何更加有效地利用物理平台的资源,同时保持虚拟机之间的隔离成为一项很有意义的挑战。
发明内容
考虑到以上提出的问题,提出本发明,以提高承载多个虚拟机的物理平台的资源利用率。
根据本发明第一方面,提供一种虚拟机管理装置,包括:虚拟机信息获取单元,配置为获取当前虚拟机的软件层级信息;内存分析单元,配置为参照已安装的至少一个虚拟机的现有软件层级信息和所述当前虚拟机的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分;以及内存映射单元,配置为将上述共享部分映射到物理内存的共享区段,所述共享区段由所述已安装的至少一个虚拟机中的至少一个所使用。
根据本发明第二方面,提供一种虚拟机管理方法,包括:获取当前虚拟机的软件层级信息;参照已安装的至少一个虚拟机的现有软件层级信息和所述当前虚拟机的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分;以及将上述共享部分映射到物理内存的共享区段,所述共享区段由所述已安装的至少一个虚拟机中的至少一个所使用。
通过本发明实施例的方法和装置,可以使得同一物理平台上的多个虚拟机在各个层级上进行内存的部分共享,从而在有效利用内存资源的同时,保持虚拟机的相对独立和隔离。
附图说明
图1示出现有技术中多个虚拟机的内存管理;
图2示出根据本发明一个实施例的虚拟机管理装置的框图;
图3示意性示出根据本发明一个实施例的多个虚拟机的软件层级信息;
图4示意性示出根据本发明另一实施例的多个虚拟机的软件层级信息;
图5示出根据本发明一个实施例的内存映射方式的示意图;
图6示出根据本发明一个实施例的内存映射改变的示意图;以及
图7示出根据本发明一个实施例的管理虚拟机的方法的流程图。
具体实施方式
以下结合附图描述本发明的具体实施例。但是应该理解,以下对具体实施例的描述仅仅是为了解释本发明的执行示例,而不对本发明的范围进行任何限定。
在本发明的多个实施例中,考虑同一物理平台上安装的虚拟机所具有的操作系统和应用软件,也就是虚拟机在各个层级上安装的软件信息,对于在同一层级具有相似软件的虚拟机实施内存的部分共享,从而在有效利用内存资源的同时,保持虚拟机的相对独立和隔离。
图2示出根据本发明一个实施例的虚拟机管理装置的框图,该虚拟机管理装置位于物理平台与虚拟机之间,用以管理在该物理平台上安装的多个虚拟机。如图2所示,虚拟机管理装置20包括虚拟机信息获取单元202,配置为获取当前虚拟机的软件层级信息;内存分析单元204,配置为参照已安装的至少一个虚拟机的现有软件层级信息和所述当前虚拟机的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分;以及内存映射单元206,配置为将上述共享部分映射到物理内存的共享区段,所述共享区段由所述已安装的至少一个虚拟机中的至少一个所使用。
具体地,虚拟机信息获取单元202可以在各个虚拟机的安装过程中捕获每个虚拟机的软件信息。典型地,虚拟机的安装过程包括首先安装最底层的软件,即虚拟机所运行的操作系统,然后在操作系统之上安装各种软件应用。软件应用的安装也是分层级进行的,例如可以先在特定操作系统上安装Java虚拟机(JVM),然后在Java虚拟机环境中安装WAS(WebSphere Application Server),接着在WAS基础上可以安装更为上层的功能,例如WPS(WebSphere Process Server)。一般来说,各个软件应用的安装文件会在文件头部中指明该软件应用的信息,例如名称、版本、发行公司、发行时间等等。因此,在各个层级的软件应用的安装过程中,虚拟机信息获取单元202可以通过读取安装文件的头部信息,获取所安装的软件应用的信息。
对于当前安装的虚拟机,虚拟机信息获取单元202如上所述例如通过读取安装文件中的头部信息获取其软件信息,并结合软件所在的层级,得到当前虚拟机的软件层级信息。进一步地,虚拟机信息获取单元202将获取的当前虚拟机的软件层级信息传送到内存分析单元204。
对于已经安装的虚拟机,虚拟机信息获取单元202已经在其安装过程中获取其软件信息,进而得到每个已安装的虚拟机的软件层级信息。进一步地,虚拟机信息获取单元202可以对多个已安装的虚拟机的软件层级信息进行综合和比较,以各种形式维持已安装的虚拟机的软件层级信息。
在一个实施例中,已安装的虚拟机的软件层级信息被组织为树形图的形式,如图3所示。具体地,图3示意性示出根据本发明一个实施例的多个虚拟机的软件层级信息。在图3的示意图中,示出了已安装的4个虚拟机的软件层级信息,其中,通过树形图中节点之间的继承关系示出各个虚拟机的软件层级信息之间的关系。根据树形图的特点,继承自某一父节点的子节点具有父节点的全部软件层级信息,相应地,继承自同一父节点的两个子节点共享父节点处的软件层级信息。更具体而言,虚拟机1只在操作系统上安装了Java开发工具包(JDK),虚拟机2基于虚拟机1在JDK中安装了WAS,而虚拟机3在虚拟机1的基础上安装了WXS。进一步地,相比于虚拟机2,虚拟机4在虚拟机2的基础上又安装了WPS。虚拟机2和虚拟机3共同具有父节点处的虚拟机1的软件层级信息。通过维持这样的树形图,虚拟机信息获取单元202可以清楚地表示出各个虚拟机的软件层级信息之间的关系。
在另一个实施例中,已安装的虚拟机的软件层级信息被组织为柱形图的形式,如图4所示。具体地,图4示意性示出根据本发明另一实施例的多个虚拟机的软件层级信息。在图4的示意图中,对于每个虚拟机,以柱形图的形式自下而上地示出在各个层级安装的软件的信息。例如,虚拟机1在AIX操作系统上安装了IBM Java虚拟机,在此之上又相继安装了WAS和WPS;虚拟机2的软件层级信息与虚拟机1完全相同;虚拟机3在Java虚拟机上安装的是WXS;而虚拟机4和5则是基于Linux操作系统,其上安装的Java虚拟机版本也不相同,一个来自IBM,一个来自Sun公司。通过维持类似图4的柱形图,虚拟机信息获取单元202可以清楚地表示出每个虚拟机的具体软件层级信息。
可以理解,可以以其他形式维持已安装虚拟机的软件层级信息,例如将其组织为列表、文本形式,或以其他图表形式示出。本领域技术人员能够需要对软件层级信息的维持形式进行选择或修改,这样的选择或修改都在本发明的构思范围之内。
接下来,内存分析单元204通过参照虚拟机信息获取单元202所传送的当前虚拟机的软件层级信息和所维持的已安装虚拟机的软件层级信息,来确定当前虚拟机的内存共享方式。具体地,在虚拟机安装过程中,会通过用户指定或系统默认,为每个虚拟机分配一段内存。这段内存在虚拟机看来是专属于自己使用的内存,但是在虚拟机管理装置看来,只是虚拟机在逻辑上可以使用的内存大小,因此可以将其称为是逻辑内存。为了确定各个虚拟机分配得到的逻辑内存在物理意义上的共享方式,内存分析单元204将当前虚拟机的软件信息与已安装虚拟机的软件层级信息进行比对,从而确定哪个已安装的虚拟机与当前虚拟机的软件层级结构最为接近。通过确定当前虚拟机与最接近的已安装虚拟机所共有的软件层级信息,内存分析单元204将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分,其中共享部分与上述共有的软件层级信息相关联。
具体地,在一个例子中,已安装虚拟机的软件层级信息如图4所示,其中示出了已经安装的5个虚拟机的软件层级信息。在安装新的虚拟机,即第6个虚拟机时,虚拟机信息获取单元202获取该第6虚拟机的安装信息,例如,所安装的操作系统为Linux,操作系统上安装的是IBM Java虚拟机,其上安装的是WXS。内存分析单元204通过将当前的第6虚拟机的软件信息与图4所示的已安装虚拟机的软件层级信息相比较,可以判断得出,已安装的虚拟机4所具有的软件层级结构与当前虚拟机最为相似,两者具有共同的操作系统和Java虚拟机。
实际上,在操作系统维持基本运行环境所需要的内存中,有一部分内存用于维持操作系统所需的各种库函数等固定条目。操作系统通常只对这部分内存进行读取,而不对其进行修改或写入。因此,这部分内存可以在多个虚拟机之间进行共享,而不会妨碍虚拟机之间的隔离。对于软件应用来说,也存在类似的固定内存区段,可在多个虚拟机之间进行共享。因此,在内存分析单元204确定当前虚拟机与虚拟机4具有相同的操作系统和Java虚拟机的情况下,就可以基于操作系统Linux和Java虚拟机所具有的固定内存区段的大小,使得当前虚拟机与虚拟机4共享一部分内存。
具体地,内存分析单元204可以将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分,专用部分是当前虚拟机私有的内存,共享部分是可能与其他虚拟机共同使用的内存部分。一般来说,共享部分的大小关联于当前虚拟机与已安装虚拟机的共同软件部分的大小,以及该共同软件部分所占用的内存中可共享的固定内存区段的大小。在以上例子中,假定Linux操作系统所占用的内存中有0.3G内存是固定内存区段,Java虚拟机所占用内存中有0.2G内存是固定内存区段,那么当前虚拟机与虚拟机4可以共享0.5G的内存。相应地,如果分配给当前虚拟机的内存为2G,那么当前虚拟机的专用内存部分为1.5G。
如上所述,内存分析单元204在逻辑层面确定了内存的共享方案。进而,通过内存映射单元206在物理层面实现上述内存共享。
具体地,在每个虚拟机中都存在内存管理单元,用以维持虚拟机运行过程中所请求的内存的逻辑地址与物理地址之间的映射表。这个物理地址是虚拟机所能看到的、分配给自己的内存区段中的地址,也就是客户物理地址。然而,客户物理地址并不是硬件平台中的物理内存的真实物理地址,需要通过内存映射单元206进行进一步转换。具体而言,内存映射单元206维持虚拟机的客户物理地址与物理内存的真实物理地址之间的映射关系,该映射关系可以以页表的形式存储。在获得虚拟机所请求的客户物理地址之后,内存映射单元206通过查阅所维持的页表确定对应的真实物理地址,从而使得虚拟机能够对该真实物理地址处的内存进行访问。为了实现内存的共享,内存映射单元206需要维持特殊的映射表,从而将多个虚拟机的客户物理地址映射到同一真实物理地址,由此实现物理内存的共享。
图5示出根据本发明一个实施例的内存映射方式的示意图。在图5中,虚拟机4和当前虚拟机6都被分配了2G内存,各自都可以通过客户物理地址对分配给自己的内存进行访问。并且,虚拟机4和当前虚拟机6具有如上所述的软件层级信息,因此可以基于共同的操作系统Linux和同样版本的Java虚拟机而共享0.5G逻辑内存。对于虚拟机4,内存映射单元206如通常方式将0-2G的逻辑内存的客户物理地址映射到真实的物理内存区段S1-S3,其中S1-S3总大小为2G,并且在S1-S3中,操作系统和Java虚拟机所占用的固定内存区段为S2-S3,大小为0.5G。对于当前虚拟机6,已经在逻辑上将分配给它的2G内存划分为专用部分和共享部分,其中共享部分为0.5G,对应于操作系统和Java虚拟机所占用的固定内存区段。因此,内存映射单元206将虚拟机6的0.5G共享部分的客户物理地址映射到物理内存的共享内存区段S2-S3,该内存区段是虚拟机4已经使用的内存区段,将剩余的1.5G逻辑内存的客户物理地址映射到专用于虚拟机6的内存区段S3-S4,其大小为1.5G。这样,经过内存映射单元的映射,虚拟机4和虚拟机6共享了0.5G的内存。在这种情况下,两个虚拟机各自能使用的内存在逻辑上依然是2G,但是所占用的真实物理内存的总大小仅为3.5G。
为了记录内存区段的使用状态,在一个实施例中,内存映射单元206可以在现有的映射表形式的基础上添加一个状态位,用以标记相应内存区段的共享状态。例如,在一个例子中,以S标记共享的内存区段,以P标记专用的内存区段。在上述例子中,在内存映射单元206将虚拟机6的0.5G共享部分映射到内存区段S3-S4时,就可以将该段内存S3-S4的状态位由P改变为S。为了保证共享的安全,在虚拟机访问物理内存时,仅允许对状态位为S的内存区段进行读取,而不能进行修改或写入。由此,即使虚拟机4崩溃,也不会影响内存区段S3-S4的数据,因此虚拟机6仍然可以照常运行而不会受到影响,从而保持了所需的独立性和隔离性。
在以上实施例中,通过内存分析单元204和内存映射单元206,虚拟机之间可以在多个层级进行内存的部分共享。例如,当前虚拟机与虚拟机4在操作系统层级上共享0.3G内存,在Java虚拟机层级上共享0.2G内存,这进一步提高了内存的使用效率,并使得共享方案更加灵活地适应于各种应用场景。
不过,虚拟机之间的共享关系并不是恒定不变的,而是会随着虚拟机软件层级信息的改变而变化。仍然参照以上描述的例子,在物理平台上已安装图4所示的虚拟机1-5的情况下,对于当前安装的虚拟机6,可以采用如图5所示的共享方式。接着,在虚拟机6安装完成之后,有可能用户卸载了虚拟机4,释放虚拟机4所占用的内存。在此情况下,虚拟机信息获取单元202会更新其中维持的软件层级信息,将其转变为已安装的虚拟机1-3,5-6的软件层级信息。在一个实施例中,为了使得虚拟机4的内存释放不影响其他虚拟机的运行,内存映射单元206完全释放虚拟机4所占用的专用内存部分S1-S2,而不释放虚拟机4与虚拟机6共享的内存区段S2-S3,也不改变内存区段S2-S3的状态位S。接着,如果在后续进一步安装新的虚拟机7,则内存分析单元204类似地参照已安装的虚拟机1-3,4-6的软件层级信息确定新的内存共享方式。
此外,在虚拟机的配置状态发生变化时,虚拟机的共享关系和共享方式也会发生改变。图6示出根据本发明一个实施例的内存映射改变的示意图,其中图6A示出初始映射关系,图6B示出改变后的映射关系。如图6A所示,与上述例子相一致,虚拟机4和虚拟机6各自有0.5G的逻辑内存被映射到物理内存的同一区段S2-S3。这一共享内存区段S2-S3可能维持有与操作系统配置方式相关的数据。在某种情况下,如图6B所示,虚拟机6需要对自己的系统配置方式进行改变,因此需要对共享的逻辑内存中的子区段m进行修改。在接收到虚拟机6对内存区段m进行修改的请求后,内存映射单元206通过原有的映射表可以查阅到,该逻辑内存区段m对应于物理内存的共享区段S2-S3中的子区段L,该子区段的状态位为S,不允许修改。这时,内存映射单元206可以从空闲的物理内存中开辟出一段内存L’,将区段L中的数据复制到区段L’,将内存区段L和L’的状态位都设定为P。进一步地,内存映射单元206修改映射表,使得虚拟机6的逻辑内存m对应到物理内存区段L’。由此,虚拟机6通过对状态位为P的内存区段L’进行写入而实现了对逻辑内存区段m的修改。此外,内存区段S2-S3中除子区段L之外的剩余部分仍然由虚拟机4和虚拟机6所共享,而子区段L的状态变为虚拟机4所专有。通过上述过程,可以实现虚拟机对共享内存部分的修改而不影响其他虚拟机。
如上所述,本发明实施例的虚拟机管理装置根据虚拟机的软件层级信息确定虚拟机之间的共享方式,使得不同虚拟机之间在多个层级都可以实现内存的部分共享。可以看到,虚拟机之间共享的内存部分越多,在物理平台上节省的内存就越多。同时,由于共享的内存部分是经过特殊选择的,并且不能被单个虚拟机修改,因此虚拟机之间仍然可以保持相对的独立和隔离,安全性不会受到影响。
基于同一发明构思,本发明还提供了管理虚拟机的方法。图7示出根据本发明一个实施例的管理虚拟机的方法的流程图,该方法用以管理在同一物理平台上安装的多个虚拟机。如图7所示,根据一个实施例的虚拟机管理方法包括:步骤701,在其中获取当前虚拟机的软件层级信息;步骤702,在其中参照已安装的至少一个虚拟机的软件层级信息和所述当前虚拟机的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分;以及步骤703,在其中将上述共享部分映射到物理内存的共享区段,所述共享区段由至少一个已经安装的虚拟机所使用。
在一个实施例中,步骤701可以包括,在当前虚拟机的安装过程中,通过读取安装文件的头部信息,捕获当前虚拟机的软件信息。在此基础上,结合软件所处的层级,可以获得当前虚拟机的软件层级信息。
类似地,对于各个已安装的虚拟机,在其安装过程中都可以获得其软件层级信息。通过对多个已安装的虚拟机的软件层级信息进行综合和比较,可以将其维持为各种形式。在一个实施例中,已安装的虚拟机的软件层级信息被组织为树形图的形式。在另一个实施例中,已安装的虚拟机的软件层级信息被组织为柱形图的形式。可以理解,虚拟机的软件层级信息也可以以其他形式示出,具体例子如参照虚拟机管理装置的描述,在此不再赘述。
接着,在步骤702中,通过参照已安装虚拟机的软件层级信息和步骤701中获取的当前虚拟机的软件层级信息,来确定当前虚拟机的内存划分。具体地,在步骤702中,将当前虚拟机的软件信息与已安装虚拟机的软件层级信息进行比对,从而确定哪个已安装的虚拟机与当前虚拟机的软件层级结构最为接近。基于当前虚拟机与最接近的已安装虚拟机共同的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分,其中专用部分是当前虚拟机私有的内存,共享部分是可能与其他虚拟机共同使用的内存部分。具体地,共享部分的大小关联于当前虚拟机与已安装虚拟机的共同软件部分的大小,以及该共同软件部分所占用的内存中可共享的固定内存区段的大小。
为了在物理层面实现内存共享,在步骤703中,通过维持特殊的映射表,可以将共享部分的地址映射到物理内存的共享区段,该共享区段是其他虚拟机已经在使用的内存区段。也就是说,通过将多个虚拟机的逻辑内存映射到同一物理内存地址,来实现物理内存的共享。
为了记录内存区段的使用状态,在一个实施例中,步骤703还可以包括,在映射表中包含状态位,用以标记相应内存区段的共享状态。对于共享状态的内存区段,虚拟机仅可以对其进行读取,而不能进行修改或写入。
此外,虚拟机之间的共享关系并不是恒定不变的。在卸载虚拟机的情况下,虚拟机管理方法还包括释放内存的步骤(未示出)。在该步骤中,完全释放所卸载的虚拟机占用的专用物理内存部分。对于该虚拟机所占用的共享内存区段,仅在使用该内存区段的最后一个虚拟机卸载的同时释放。在虚拟机的配置状态发生变化时,虚拟机的共享关系和共享方式也会发生改变。具体地,在虚拟机想要修改逻辑内存中的共享部分的情况下,虚拟机管理方法还包括共享修改步骤(未示出),在其中,从空闲的物理内存中开辟出新的内存区段,将共享部分原始映射到的物理内存的共享区段中的数据复制到该新的内存区段,修改映射表,使得共享部分映射到该新的内存区段。由此,就可以对共享部分进行安全地修改而不影响其他虚拟机。具体修改过程的例子如参照虚拟机管理装置所描述,不再赘述。
通过以上结合具体例子的描述可以获知,利用本发明实施例的虚拟机管理装置和方法,可以使得同一物理平台上安装的虚拟机实现内存的部分共享,同时不影响虚拟机的隔离和安全性。
本领域技术人员可以理解,上述管理虚拟机的装置和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。各实施例的装置及其单元可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。用于执行本发明的操作的软件和程序代码,可以用一种或多种程序设计语言的组合来编写,包括但不限于,面向对象的程序设计语言,诸如Java,Smalltalk,C++之类,以及常规的过程式程序设计语言,诸如C程序设计语言或类似的程序设计语言。程序代码可以本地地或远程地在计算机上执行,以完成设定的操作。
虽然以上结合具体实施例,对本发明的管理虚拟机的装置和方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。
Claims (16)
1.一种虚拟机管理装置,包括:
虚拟机信息获取单元,配置为获取当前虚拟机的软件层级信息;
内存分析单元,配置为参照已安装的至少一个虚拟机的现有软件层级信息和所述当前虚拟机的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分;以及
内存映射单元,配置为将上述共享部分映射到物理内存的共享区段,所述共享区段由所述已安装的至少一个虚拟机中的至少一个所使用。
2.如权利要求1所述的虚拟机管理装置,其中,所述虚拟机信息获取单元配置为,在所述当前虚拟机的安装过程中读取其安装文件的头部信息,从而获取当前虚拟机的软件层级信息。
3.如权利要求1所述的虚拟机管理装置,其中,所述虚拟机信息获取单元配置为,以树形图和柱形图中的至少一个的形式维持已安装的至少一个虚拟机的现有软件层级信息。
4.如权利要求1所述的虚拟机管理装置,其中,所述内存分析单元配置为,将当前虚拟机的软件层级信息与所述现有软件层级信息进行比对,确定当前虚拟机与最接近的已安装虚拟机所共有的软件层级信息,并使得所述共享部分与上述共有的软件层级信息相关联。
5.如权利要求1所述的虚拟机管理装置,其中所述内存映射单元配置为,维持映射表,通过所述映射表记录逻辑内存的共享部分与物理内存的共享区段的映射关系。
6.如权利要求5所述的虚拟机管理装置,其中所述映射表包含状态位,用以标记各个内存区段的共享状态。
7.如权利要求1所述的虚拟机管理装置,其中所述内存映射单元配置为,释放卸载的虚拟机的专用部分所对应的物理内存。
8.如权利要求1所述的虚拟机管理装置,其中所述内存映射单元配置为,响应于对所述共享部分的修改请求,从空闲的物理内存中开辟出新的内存区段,将共享部分所对应的共享区段中的数据复制到该新的内存区段,并使得所述共享部分映射到该新的内存区段。
9.一种虚拟机管理方法,包括:
获取当前虚拟机的软件层级信息;
参照已安装的至少一个虚拟机的现有软件层级信息和所述当前虚拟机的软件层级信息,将分配给当前虚拟机的逻辑内存划分为专用部分和共享部分;以及
将上述共享部分映射到物理内存的共享区段,所述共享区段由所述已安装的至少一个虚拟机中的至少一个所使用。
10.如权利要求9所述的方法,其中,获取当前虚拟机的软件层级信息的步骤包括,在所述当前虚拟机的安装过程中读取其安装文件的头部信息,从而获取当前虚拟机的软件层级信息。
11.如权利要求9所述的方法,其中,所述已安装的至少一个虚拟机的现有软件层级信息被维持为树形图和柱形图中的至少一个。
12.如权利要求9所述的方法,其中,划分逻辑内存的步骤包括,将当前虚拟机的软件层级信息与所述现有软件层级信息进行比对,确定当前虚拟机与最接近的已安装虚拟机所共有的软件层级信息,并使得所述共享部分与上述共有的软件层级信息相关联。
13.如权利要求9所述的方法,其中将共享部分映射到共享区段的步骤包括,维持映射表,通过所述映射表记录逻辑内存的共享部分与物理内存的共享区段的映射关系。
14.如权利要求13所述的方法,其中所述映射表包含状态位,用以标记各个内存区段的共享状态。
15.如权利要求9所述的方法,还包括,释放卸载的虚拟机的专用部分所对应的物理内存。
16.如权利要求9所述的方法,还包括,响应于对所述共享部分的修改请求,从空闲的物理内存中开辟出新的内存区段,将共享部分所对应的共享区段中的数据复制到该新的内存区段,并使得所述共享部分映射到该新的内存区段。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010612360.9A CN102541619B (zh) | 2010-12-23 | 2010-12-23 | 虚拟机管理装置和方法 |
US13/330,769 US8578369B2 (en) | 2010-12-23 | 2011-12-20 | Managing memory in multiple virtual machines |
US13/462,072 US8578370B2 (en) | 2010-12-23 | 2012-05-02 | Managing memory in multiple virtual machines |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010612360.9A CN102541619B (zh) | 2010-12-23 | 2010-12-23 | 虚拟机管理装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541619A true CN102541619A (zh) | 2012-07-04 |
CN102541619B CN102541619B (zh) | 2015-09-16 |
Family
ID=46318440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010612360.9A Expired - Fee Related CN102541619B (zh) | 2010-12-23 | 2010-12-23 | 虚拟机管理装置和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8578369B2 (zh) |
CN (1) | CN102541619B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631662A (zh) * | 2013-12-20 | 2014-03-12 | 普元信息技术股份有限公司 | 复杂事件处理云平台事件分析引擎容量评估的系统及方法 |
CN107704324A (zh) * | 2017-07-20 | 2018-02-16 | 哈尔滨工业大学(威海) | 一种面向多核确定性的基于硬件的内存隔离方法 |
CN107943743A (zh) * | 2017-11-17 | 2018-04-20 | 江苏微锐超算科技有限公司 | 计算设备的信息存储、读取方法及共享虚拟介质承载芯片 |
CN109460298A (zh) * | 2018-11-01 | 2019-03-12 | 云宏信息科技股份有限公司 | 一种数据处理方法及装置 |
CN113900829A (zh) * | 2021-12-10 | 2022-01-07 | 深圳比特微电子科技有限公司 | 用于设备的内存管理方法、内存管理设备和计算系统 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3940533A1 (en) | 2009-09-08 | 2022-01-19 | Abbott Diabetes Care, Inc. | Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device |
US8789034B1 (en) * | 2011-12-31 | 2014-07-22 | Parallels IP Holdings GmbH | Method for updating operating system without memory reset |
US9063815B2 (en) * | 2012-09-17 | 2015-06-23 | International Business Machines Corporation | Provisioning a virtual machine from one or more VM images |
US9250827B2 (en) | 2012-12-14 | 2016-02-02 | Vmware, Inc. | Storing checkpoint file in high performance storage device for rapid virtual machine suspend and resume |
US9256469B2 (en) | 2013-01-10 | 2016-02-09 | International Business Machines Corporation | System and method for improving memory usage in virtual machines |
US9372704B2 (en) * | 2013-03-14 | 2016-06-21 | Google Inc. | Virtual environment having harvard architecture |
US9841927B2 (en) * | 2013-09-23 | 2017-12-12 | Red Hat Israel, Ltd | Remote direct memory access with copy-on-write support |
US9323565B2 (en) | 2013-12-20 | 2016-04-26 | Vmware, Inc. | Provisioning customized virtual machines without rebooting |
US10977063B2 (en) | 2013-12-20 | 2021-04-13 | Vmware, Inc. | Elastic compute fabric using virtual machine templates |
US9513949B2 (en) | 2014-08-23 | 2016-12-06 | Vmware, Inc. | Machine identity persistence for users of non-persistent virtual desktops |
CN104461757A (zh) * | 2014-11-03 | 2015-03-25 | 中国联合网络通信集团有限公司 | 一种恢复虚拟机的方法及装置 |
US9507623B2 (en) * | 2014-12-15 | 2016-11-29 | Vmware, Inc. | Handling disk state inheritance for forked virtual machines |
WO2016205976A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Apparatus and method for efficient communication between virtual machines |
WO2017058157A1 (en) * | 2015-09-29 | 2017-04-06 | Hewlett Packard Enterprise Development Lp | Application management data |
US11029863B2 (en) * | 2017-08-31 | 2021-06-08 | Vmware, Inc. | Using non-volatile random access memory as volatile random access memory |
CN108897617A (zh) * | 2018-06-19 | 2018-11-27 | 北京元心科技有限公司 | 内存管理的方法、装置以及终端设备 |
KR20200093168A (ko) * | 2019-01-28 | 2020-08-05 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 제어 방법 |
US11481267B2 (en) * | 2020-05-28 | 2022-10-25 | International Business Machines Corporation | Reinforcement learning approach to root cause analysis |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
US20100217916A1 (en) * | 2009-02-26 | 2010-08-26 | International Business Machines Corporation | Method and apparatus for facilitating communication between virtual machines |
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6075938A (en) | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6381682B2 (en) | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
US6323852B1 (en) | 1999-01-04 | 2001-11-27 | Leadscope, Inc. | Method of analyzing organizing and visualizing chemical data with feature hierarchy |
US6694346B1 (en) | 1999-04-30 | 2004-02-17 | International Business Machines Corporation | Long running, reusable, extendible, virtual machine |
US6738977B1 (en) | 2000-05-31 | 2004-05-18 | International Business Machines Corporation | Class sharing between multiple virtual machines |
US6789156B1 (en) | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
GB2381092B (en) | 2001-10-19 | 2005-10-19 | Ibm | Object locking in a shared VM environment |
EP1398948B1 (en) | 2002-09-13 | 2013-11-06 | Ricoh Company, Ltd. | Image forming apparatus, methods used therein and a computer readable storage medium |
US20040263513A1 (en) | 2003-06-26 | 2004-12-30 | Smith Marc A. | Treemap visualization engine |
US7356665B2 (en) | 2003-12-17 | 2008-04-08 | International Business Machines Corporation | Method and system for machine memory power and availability management in a processing system supporting multiple virtual machines |
US7257811B2 (en) | 2004-05-11 | 2007-08-14 | International Business Machines Corporation | System, method and program to migrate a virtual machine |
US7614045B2 (en) | 2004-09-24 | 2009-11-03 | Sap (Ag) | Sharing classes and class loaders |
WO2007036072A1 (en) | 2005-09-29 | 2007-04-05 | Intel Corporation | Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment |
JP4994909B2 (ja) | 2007-03-26 | 2012-08-08 | キヤノン株式会社 | プログラム管理装置及び方法 |
US8015383B2 (en) | 2007-06-27 | 2011-09-06 | International Business Machines Corporation | System, method and program to manage virtual memory allocated by a virtual machine control program |
US8127291B2 (en) | 2007-11-02 | 2012-02-28 | Dell Products, L.P. | Virtual machine manager for managing multiple virtual machine configurations in the scalable enterprise |
US8745618B2 (en) | 2009-08-25 | 2014-06-03 | International Business Machines Corporation | Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments |
US8463980B2 (en) * | 2010-09-30 | 2013-06-11 | Microsoft Corporation | Shared memory between child and parent partitions |
-
2010
- 2010-12-23 CN CN201010612360.9A patent/CN102541619B/zh not_active Expired - Fee Related
-
2011
- 2011-12-20 US US13/330,769 patent/US8578369B2/en not_active Expired - Fee Related
-
2012
- 2012-05-02 US US13/462,072 patent/US8578370B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
US20100217916A1 (en) * | 2009-02-26 | 2010-08-26 | International Business Machines Corporation | Method and apparatus for facilitating communication between virtual machines |
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631662A (zh) * | 2013-12-20 | 2014-03-12 | 普元信息技术股份有限公司 | 复杂事件处理云平台事件分析引擎容量评估的系统及方法 |
CN103631662B (zh) * | 2013-12-20 | 2017-09-26 | 普元信息技术股份有限公司 | 复杂事件处理云平台事件分析引擎容量评估的系统及方法 |
CN107704324A (zh) * | 2017-07-20 | 2018-02-16 | 哈尔滨工业大学(威海) | 一种面向多核确定性的基于硬件的内存隔离方法 |
CN107704324B (zh) * | 2017-07-20 | 2020-02-07 | 哈尔滨工业大学(威海) | 一种面向多核确定性的基于硬件的内存隔离方法 |
CN107943743A (zh) * | 2017-11-17 | 2018-04-20 | 江苏微锐超算科技有限公司 | 计算设备的信息存储、读取方法及共享虚拟介质承载芯片 |
CN109460298A (zh) * | 2018-11-01 | 2019-03-12 | 云宏信息科技股份有限公司 | 一种数据处理方法及装置 |
CN113900829A (zh) * | 2021-12-10 | 2022-01-07 | 深圳比特微电子科技有限公司 | 用于设备的内存管理方法、内存管理设备和计算系统 |
Also Published As
Publication number | Publication date |
---|---|
US8578369B2 (en) | 2013-11-05 |
US20120166705A1 (en) | 2012-06-28 |
US20120216185A1 (en) | 2012-08-23 |
US8578370B2 (en) | 2013-11-05 |
CN102541619B (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541619A (zh) | 虚拟机管理装置和方法 | |
US9823851B2 (en) | Secure migratable architecture having security features | |
US10509686B2 (en) | Distributable computational units in a continuous computing fabric environment | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US9384060B2 (en) | Dynamic allocation and assignment of virtual functions within fabric | |
KR101020392B1 (ko) | 논리적 파티션 사이에서의 운용 시스템의 커널 공유 | |
US7979869B2 (en) | Method and system for performing I/O operations using a hypervisor | |
US10289564B2 (en) | Computer and memory region management method | |
US20080256530A1 (en) | System and Method for Determining Firmware Compatibility for Migrating Logical Partitions | |
CN102200921A (zh) | 智能引导设备选择和恢复 | |
CN102449599A (zh) | 将java应用程序转换成用于云部署的虚拟服务器镜像的系统和方法 | |
CN104603750A (zh) | 使用bpram来布局和执行软件应用 | |
JP2016167143A (ja) | 情報処理システムおよび情報処理システムの制御方法 | |
KR20160025606A (ko) | 데이터 프로세싱 | |
CN105264506A (zh) | 向内存映射配置分配处理器 | |
CN104583948A (zh) | 使用bpram来布局和执行操作系统 | |
US12067411B2 (en) | Hot growing a cloud hosted block device | |
CN102799483A (zh) | 一种用于转换操作系统运行环境的方法和装置 | |
KR20200098271A (ko) | 컨테이너 환경에서의 스토리지 드라이버의 동작 방법 및 스토리지 드라이버 장치 | |
US9804877B2 (en) | Reset of single root PCI manager and physical functions within a fabric | |
CN107832097B (zh) | 数据加载方法及装置 | |
US12038872B2 (en) | Apparatus and method for managing in-memory container storage | |
CN103106084A (zh) | 执行多重操作系统的方法及电子装置 | |
CN101996089A (zh) | 一种计算机及区域增量的处理方法 | |
KR20240105790A (ko) | 가상 컨테이너간 빅데이터 스토리지 공유를 위한 미들웨어 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150916 |
|
CF01 | Termination of patent right due to non-payment of annual fee |