CN103092678B - 一种多增量虚拟机内存管理系统和方法 - Google Patents
一种多增量虚拟机内存管理系统和方法 Download PDFInfo
- Publication number
- CN103092678B CN103092678B CN201310022422.4A CN201310022422A CN103092678B CN 103092678 B CN103092678 B CN 103092678B CN 201310022422 A CN201310022422 A CN 201310022422A CN 103092678 B CN103092678 B CN 103092678B
- Authority
- CN
- China
- Prior art keywords
- page
- module
- virtual machine
- memory
- image file
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000015654 memory Effects 0.000 claims abstract description 209
- 238000012544 monitoring process Methods 0.000 claims abstract description 70
- 238000004064 recycling Methods 0.000 claims abstract description 66
- 230000008569 process Effects 0.000 claims abstract description 30
- 238000012423 maintenance Methods 0.000 claims description 4
- 230000006835 compression Effects 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 3
- 230000008901 benefit Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种多增量虚拟机管理系统,包括页面读监控模块、页面写监控模块、共享管理模块、页面拷贝模块、内存分配回收模块以及类气球驱动模块,页面读监控模块用于监控虚拟机对镜像文件的读操作,并在虚拟机读取过程中需要访问基础镜像文件时通知共享管理模块,页面写监控模块用于监控虚拟机对内存页面的写操作,并在写操作作用在共享管理模块管理的页面上时通知共享管理模块,共享管理模块用于管理来自基础镜像文件的页面,并对该页面做标记以方便页面写监控模块进行写监控,记录所管理的各个页面被索引的次数。本发明避免了基于同一基础镜像文件的多个增量虚拟机针对磁盘上基础镜像文件中相同的数据内容所进行的重复的读操作。
Description
技术领域
本发明属于虚拟化技术领域,更具体地,涉及一种多增量虚拟机内存管理系统和方法。
背景技术
系统虚拟化是云计算的重要技术支撑,基于x86架构的系统虚拟化技术是整个云计算发展的基石之一。在以系统虚拟化为技术支撑的云计算环境下,每台物理机上都运行着多个虚拟机,他们由各个物理机上的虚拟机管理系统(VirtualMachineMonitor,简称VMM)统一管理。物理机之上多个虚拟机创建启动的速度和运行的效率成为了计算机科学工作者关注的焦点。SnowFlock是多伦多大学的一个项目,核心想法是把Unix操作系统中fork的概念引入到云计算,不过不是用于fork进程,是fork虚拟机,包括fork虚拟机到其他的物理机上,之所以如此设计一个快速克隆的系统主要是为了达到虚拟机快速创建和启动也就是快速部署的目的,究其原理之所以克隆速度快,主要是因为该系统只复制了必要的状态信息,比如VM描述器(Descriptor)、内存状态以及多播、资源分配上的优化等等。针对内存,差别引擎(DifferenceEngine)系统在VMM上进行了页面共享、页面补丁、页面压缩方面的尝试提高了内存的使用效率,Satori系统提供了一套在VMM上快速侦测页面共享时机的方案以较小的开销减小了内存的使用量。此外被提出和实现的方案还有按照虚拟机需求动态调整虚拟机内存大小、Hotplug和Balloon技术等等。
另一方面,为了减小虚拟机对物理磁盘的占用量,写时复制(CopyonWrite,简称COW)技术被广泛运用在了虚拟机的虚拟磁盘上。在物理机上,虚拟机往往选择单个镜像文件来作为自己的虚拟硬盘,一个虚拟机的虚拟硬盘中如果被占用了10GB,那么作为虚拟硬盘的镜像文件就至少会有10GB的大小,而一台物理机上往往有多个启动了的或是关闭着的虚拟机,这就意味着有多个镜像文件将大量吞噬着物理磁盘的空间。现在可以基于一个现有的基础镜像文件生成多个增量镜像文件来创建虚拟机,也就是每创建一个虚拟机只多生成一个增量镜像文件,这样新创建的虚拟机后续的改变将会被记录在增量镜像文件中,而基础镜像文件中的操作系统和应用程序还有数据都可以被新创建的虚拟机使用。在本文档中基于增量镜像文件创建的虚拟机被简称为增量虚拟机。由于增量镜像文件是很小的,这样基于同一个基础镜像文件创建多台虚拟机就节省了大量的物理硬盘空间。
在这里,我们考虑单台物理机搭建的Xen虚拟化平台上有多个虚拟机由基于同一个基础镜像的多个增量镜像创建的情况。首先虚拟机管理系统中的特权域对于来自各个镜像文件的页面有两种处理方式,一种方式是不缓存任何虚拟机读取的页面,另一种方式是对所有的虚拟机读取的页面采用默认的页面置换策略来缓存。在前一种方式下,虚拟机启动运行过程中都要向基础镜像申请页面,一方面由增量镜像创建的虚拟机访问基础镜像文件中的页面需要经过一个较为复杂的多级镜像查找过程,另一方面基础镜像中的页面会被多个虚拟机重复申请。在后一种方式下,所有虚拟机读取的页面都有机会被缓存在dom0中,对于页面的淘汰并没有因页面的来源而不同。就如普通的计算平台上增加了虚拟化层后原有的磁盘调度算法对I/O密集型应用无法良好适应、缓存污染型应用的影响造成竞争应用缓存命中率降低等等一样,由于系统运行在虚拟域中与底层硬件隔离,特权域页面缓存的置换算法无法公平应对各个虚拟机的需求。
另外,由于使用增量镜像文件作为虚拟机的虚拟磁盘之后,物理机上基于同一基础镜像文件创建的多台增量虚拟机之间有许多相似之处,可是这些相似因子并没有被加以利用。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种多增量虚拟机内存管理系统,该系统能够优化这种情况中多个虚拟机的整体效率,并通过利用基于同一基础镜像文件创建的多台增量虚拟机之间的相似因子,使得来自基础镜像文件的页面可以被物理机上运行的多台增量虚拟机共享,避免了基于同一基础镜像文件的多个增量虚拟机针对磁盘上基础镜像文件中相同的数据内容所进行的重复的读操作。
为实现上述目的,本发明提供了一种多增量虚拟机管理系统,包括页面读监控模块、页面写监控模块、共享管理模块、页面拷贝模块、内存分配回收模块以及类气球驱动模块,页面读监控模块用于监控虚拟机对镜像文件的读操作,并在虚拟机读取过程中需要访问基础镜像文件时通知共享管理模块,页面写监控模块用于监控虚拟机对内存页面的写操作,并在写操作作用在共享管理模块管理的页面上时通知共享管理模块,共享管理模块用于管理来自基础镜像文件的页面,并对该页面做标记以方便页面写监控模块进行写监控,记录所管理的各个页面被索引的次数,以及处理来自页面读监控模块或页面写监控模块的通知,并根据该通知向页面拷贝模块或内存分配回收模块发出通知,页面拷贝模块用于根据来自于共享管理模块的请求通知内存分配回收模块获取内存,并拷贝共享管理模块指定的页面,内存分配回收模块用于管理由于共享管理模块实现的页面共享而节省下来的内存和系统中闲置的内存,即管理类气球驱动模块占据的内存与系统中未被分配给虚拟域的闲置内存,运行过程中处理共享管理模块、页面拷贝模块的请求,适时地通知类气球驱动模块膨胀或压缩,以及完成本来Xen虚拟化平台上系统内存分配回收的相关任务,类气球驱动模块用于控制虚拟机内存的整体大小,完成来自内存分配回收模块的要求。
多增量虚拟机管理系统构建在开源的Xen虚拟化平台之上,Xen虚拟化平台包括特权域、非特权域以及Xen,页面读监控模块设置于特权域中,类气球驱动模块设置于非特权域中,页面写监控模块、共享管理模块、页面拷贝模块以及内存分配回收模块设置于Xen中。
具体而言,页面写监控模块访问共享管理模块维护的基础镜像文件的位图,负责监控虚拟机对页面的修改,当有虚拟机需要对页面做写操作时就在共享管理模块维护的基础镜像文件的位图中查找,若找到即写操作作用在来自基础镜像文件的页面上则通知共享管理模块。
具体而言,共享管理模块统一管理该物理机上各个虚拟机中来自基础镜像文件的页面,并且为每个基础镜像文件采用一个位图来标明其中有哪些页面被缓存在虚拟机的内存或闲置物理内存中哪些没有被缓存,此外还记录各个页面被虚拟机索引的次数和在物理内存中的地址,当共享管理模块接收到来自于页面读监控模块的通知时,该通知包括有读操作的虚拟机对应的基础镜像文件和具体的页面等相关信息,共享管理模块会在对应基础镜像文件的位图中进行查找,如果需要被读取的页面已经被缓存在某个其他的虚拟机中或物理机上闲置的内存中,就让发出读请求的虚拟机与之共享,并修改对应页面被索引的次数,否则就继续虚拟机正常的读虚拟硬盘的操作并将此页面在对应基础镜像文件的位图中登记且记录页面在内存中的位置,在虚拟机请求读操作后共享管理模块执行了共享的情况下,由于共享的页面没有占虚拟机的内存,此时会通知内存分配回收模块压缩虚拟机的内存,以保证运行的过程中虚拟机的内存大小能够维持在创建时的配置大小,当共享管理模块接收到来自于页面写监控模块的通知时,共享管理模块首先检查被写页面被索引的次数,如果被索引次数为则说明该页面没有被其他虚拟机共享,执行写操作,但为了将此页面继续缓存在闲置的物理内存中,而将此页面传送给页面拷贝模块,最后记录拷贝页面的物理地址,如果被索引次数大于,则说明还有其他虚拟机共享此页面,此时如果该页面位于该虚拟机的内存中则通知页面拷贝模块为其他需要共享的虚拟机拷贝一份供其继续共享,如果该页面是共享的其它虚拟机的,则通知页面拷贝模块为其拷贝一份供其独占的页面。
当虚拟机要读取的基础镜像文件中的页面已经存在于内存中时,在共享管理模块通知下,内存分配回收模块会通知对应虚拟机中的类气球驱动模块膨胀占据与共享页面大小相同的内存,当虚拟机写操作作用在来自基础镜像文件的页面上而该页面又没有被共享时,在页面拷贝模块的申请下,内存分配回收模块会在闲置内存中分配页面来缓存来自基础镜像文件的页面,当虚拟机写操作作用在来自基础镜像文件的页面上而该页面属于自己并且又被其他的虚拟机共享时,内存分配回收模块也会在页面拷贝模块的申请下在闲置内存中分配内存来缓存该页面并供其他虚拟机共享,当虚拟机写操作作用在来自基础镜像文件的页面上而该页面不属于自己又是共享而来的时候,内存分配回收模块也会在页面拷贝模块的申请下分配内存提供给该页面拷贝模块来拷贝一份供该虚拟机独占的页面,同时由于分配了内存给虚拟机,内存分配回收模块会通知该虚拟机中类气球驱动模块释放同样大小的内存,在物理机闲置内存被用完的情况下,内存分配回收模块会淘汰没有被共享的页面。
通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:
(1)减少I/O操作,加速增量虚拟机运行效率:由于采用了页面读监控模块和共享管理模块,虚拟机原本对硬盘中增量镜像文件的读操作被截获进行分析,如果需要执行读操作的页面数据在基础镜像文件中且已经缓存在了物理机上其他虚拟机的内存中或物理机上的闲置内存中,则使得发出读操作请求的虚拟机共享这个页面,这样就避免了一次读硬盘的操作,转而在内存中获取数据,由于硬盘的读速度远远比内存的读速度慢,所以增量虚拟机的读操作在此被改进了,减少了读操作的同时加速了增量虚拟机的整体效率。
(2)节省内存:由于采用了共享管理模块、内存分配回收模块,虚拟机中的页面被共享使用,使得虚拟机实际占用的物理内存变少,余下的内存转入内存分配回收模块,因而节省了内存。
(3)充分利用内存:由于采用了共享管理模块、内存分配回收模块、类气球驱动模块,系统中未被分配给任何虚拟域的空闲内存也被内存分配回收模块管理起来,既能够在需要时分配给新创建的虚拟机和迁移来的虚拟机,也能够在没有被分配时存储来自基础镜像文件的页面。在内存分配回收模块的管理下,各个虚拟机中气球驱动占据的内存与系统中未被分配的空闲内存也可一并被分配给新的虚拟机,因此内存得以充分利用、甚至实现分时复用。
(4)保证了虚拟化平台的用户透明性:所有模块的采用虽然对Xen虚拟化平台的工作流程进行了一番修改,但Xen原有的管理工具例如迁移虚拟机、创建虚拟机等功能仍不受影响,因此本方法对Xen虚拟机管理工具透明、对Xen虚拟化平台用户透明。
本发明的另一目的在于提供一种多增量虚拟机内存管理方法,该方法能够优化这种情况中多个虚拟机的整体效率,并通过利用基于同一基础镜像文件创建的多台增量虚拟机之间的相似因子,使得来自基础镜像文件的页面可以被物理机上运行的多台增量虚拟机共享,避免了基于同一基础镜像文件的多个增量虚拟机针对磁盘上基础镜像文件中相同的数据内容所进行的重复的读操作。
为实现上述目的,本发明提供了一种多增量虚拟机内存管理方法,其应用于上述权利要求1-5中任意一项所述的多增量虚拟机内存管理系统中,包括以下步骤:
(1)特权域判断虚拟机执行的操作,是对虚拟硬盘的读操作还是对内存页面的写操作,如果是读操作则转入步骤(2),如果是写操作则转入步骤(7);
(2)页面读监控模块判断是否读取的是基础镜像文件,如果是则转入步骤(3),如果不是则转入步骤(4);
(3)Xen虚拟化平台执行正常的读操作;
(4)共享管理模块查询该虚拟机对应的基础镜像文件位图,以判断要读取的页面是否已经缓存在其他虚拟机或闲置内存中,如果不是则转入步骤(5),如果是则转入步骤(6);
(5)Xen虚拟化平台执行正常的I/O访问,并且在共享管理模块内的位图上登记读取的页面以及记录该页面在物理内存中的地址以便于以后被其他虚拟机共享;
(6)共享管理模块使得该虚拟机共享其他虚拟机或闲置内存中已有的页面并修改该页面被索引的次数,并且共享管理模块通知内存分配回收模块去通知类气球驱动模块压缩该虚拟机内存以弥补共享页面的额外大小;
(7)虚拟机发出的写操作将被页面写监控模块截获而分析出需要对其进行写操作的具体是哪一个页面,并在共享管理模块维护的基础镜像文件的位图中查找这个页面,如果没有找到则说明该被写页面不是来自基础镜像文件的页面就继续执行Xen虚拟化平台原有的写操作;否则说明该被写页面是来自基础镜像文件的页面,共享管理模块判断该页面是否被共享,如果没有被共享则转入步骤(8),否则转入步骤(9);
(8)内存分配回收模块在闲置内存中分配内存给页面拷贝模块,页面拷贝模块将该页面拷贝以供之后被其他虚拟机共享,记录拷贝的页面的具体物理地址,并在该虚拟机内的页面上执行写操作;
(9)判断该页面是否位于该虚拟机自己的原内存中,如果是则转入步骤(10),否则转入步骤(11);
(10)内存分配回收模块在闲置内存中拷贝一份该页面供其他虚拟机共享,且共享管理模块记录对应新拷贝页面的物理地址,登记相关修改,并在该页面上执行写操作;
(11)共享管理模块通知内存分配回收模块命令该虚拟机中的类气球驱动模块释放内存,将重新获得的内存交给页面拷贝模块,通知页面拷贝模块拷贝该页面一份,供该虚拟机独占使用,共享管理模块修改原页面被索引的次数,并在新分配拷贝的页面上执行写操作。
通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:
(1)减少I/O操作,加速增量虚拟机运行效率
由于采用了步骤(4)和步骤(6)来自基础镜像文件的页面被共享管理模块统一管理,能够直接供虚拟机共享,因此本方法具有能够部分避免虚拟机到物理磁盘中的基础镜像文件上去读取页面的I/O操作、提高虚拟机运行效率的优点;
(2)节省内存
由于步骤(4)、步骤(5)和步骤(6),有部分来自基础镜像文件的页面被2个或2个以上的虚拟机共享,大量虚拟机页面被节省下来,合并到内存分配回收模块被统一管理而得到充分利用,因此本方法具有节省内存的优点。
(3)充分利用内存
由于步骤(6)、步骤(8)和步骤(11),系统中未被分配给任何虚拟域的空闲内存也被内存分配回收模块管理起来,既能够在需要时分配给新创建的虚拟机和迁移来的虚拟机,也能够在没有被分配时存储来自基础镜像文件的页面。在内存分配回收模块的管理下,各个虚拟机中气球驱动占据的内存与系统中未被分配的空闲内存也可一并被分配给新的虚拟机,因此本方法具有充分利用内存、使得内存能够分时复用的优点。
(4)保证了虚拟化平台的用户透明性
尽管在内存管理上本系统进行了一定的修改,但在所有的步骤的修改作用下,Xen原有的管理工具例如迁移等功能仍不受影响,因此本方法具有对Xen虚拟机管理工具透明、对Xen虚拟化平台用户透明的优点。
附图说明
图1是本发明多增量虚拟机内存管理系统的结构示意图。
图2是本发明多增量虚拟机内存管理方法的流程示意图。
图3是本发明多增量虚拟机内存管理系统的内存参考实例示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明专门针对的是单台物理机搭建的Xen虚拟化平台上多个虚拟机由基于同一个基础镜像的多个增量镜像而创建的情况,也就是单台物理机的硬盘中有多个基础镜像文件,基于每个基础镜像文件都有对应的若干个增量镜像文件,而每个增量镜像文件都被用于创建一个虚拟机。
如图1所示,本发明多增量虚拟机管理系统构建在开源的Xen虚拟化平台之上,该Xen虚拟化平台包括特权域(即Domain0)、多台虚拟机(即非特权域DomU)以及多虚拟机管理系统(Xen),多增量虚拟机管理系统包括设置于Domain0中的页面读监控模块1、设置于Xen中的页面写监控模块2、共享管理模块3、页面拷贝模块4、内存分配回收模块5以及设置于虚拟机中的类气球驱动模块6。
Xen虚拟化平台上Domain0对虚拟机的读写操作分别处理,在特权域处理读操作的流程中设置了页面读监控模块1,在特权域处理写操作的流程中设置了页面写监控模块2。
页面读监控模块1用于监控虚拟机对虚拟硬盘(即镜像文件)的读操作,并在虚拟机读取过程中需要访问基础镜像文件时通知共享管理模块3;具体而言,页面读监控模块1用于在镜像文件的读过程中截获相应的读请求进行分析,只有在监控到增量虚拟机要读取基础镜像文件的时候通知共享管理模块3来处理。
页面读监控模块1在这里具有能够在读操作上需要处理的情形发生时及时发出通知的优点。
页面写监控模块2用于监控虚拟机对内存页面的写操作,并在写操作作用在共享管理模块3管理的页面上时通知共享管理模块3;具体而言,页面写监控模块2可以访问共享管理模块3维护的基础镜像文件的位图,负责监控虚拟机对页面的修改,当有虚拟机需要对页面做写操作时就在共享管理模块3维护的基础镜像文件的位图中查找,若找到即写操作作用在来自基础镜像文件的页面上则通知共享管理模块3。
页面写监控模块2在这里能够利用共享管理模块3中的位图快速判断需要进行写操作的页面是否来自基础镜像文件的优点。
共享管理模块3用于管理来自基础镜像文件的页面,并对该页面做标记以方便页面写监控模块进行写监控,记录所管理的各个页面被索引的次数,以及处理来自页面读监控模块或页面写监控模块的通知,并根据该通知向页面拷贝模块4或内存分配回收模块5发出通知;具体而言,共享管理模块3统一管理该物理机上各个虚拟机中来自基础镜像文件的页面,并且为每个基础镜像文件采用一个位图来标明其中有哪些页面被缓存在虚拟机的内存或闲置物理内存中哪些没有被缓存,此外还记录各个页面被虚拟机索引的次数和在物理内存中的地址。当共享管理模块3接收到来自于页面读监控模块1的通知时,该通知包括有读操作的虚拟机对应的基础镜像文件和具体的页面等相关信息,共享管理模块3会在对应基础镜像文件的位图中进行查找,如果需要被读取的页面已经被缓存在某个其他的虚拟机中或物理机上闲置的内存中,就让发出读请求的虚拟机与之共享,并修改对应页面被索引的次数,否则就继续虚拟机正常的读虚拟硬盘的操作并将此页面在对应基础镜像文件的位图中登记且记录页面在内存中的位置。在虚拟机请求读操作后共享管理模块3执行了共享的情况下,由于共享的页面没有占虚拟机的内存,此时会通知内存分配回收模块5压缩虚拟机的内存,以保证运行的过程中虚拟机的内存大小能够维持在创建时的配置大小。当共享管理模块3接收到来自于页面写监控模块2的通知时,共享管理模块3首先检查被写页面被索引的次数,如果被索引次数为1则说明该页面没有被其他虚拟机共享,执行写操作,但为了将此页面继续缓存在闲置的物理内存中,而将此页面传送给页面拷贝模块4,最后记录拷贝页面的物理地址。如果被索引次数大于1,则说明还有其他虚拟机共享此页面,此时如果该页面位于该虚拟机的内存中则通知页面拷贝模块4为其他需要共享的虚拟机拷贝一份供其继续共享,如果该页面是共享的其它虚拟机的,则通知页面拷贝模块4为其拷贝一份供其独占的页面。
共享管理模块3在这里具有使得整个系统节省内存、充分利用内存、减少了对磁盘的读操作的优点。
页面拷贝模块4用于根据来自于共享管理模块3的请求通知内存分配回收模块5获取内存,并拷贝共享管理模块3指定的页面。具体而言,页面拷贝模块4向内存分配回收模块5申请获取内存,复制共享管理模块3通知的的页面交给共享管理模块3,使得发出请求的虚拟机对相关页面有一份属于自己独占的拷贝或使得某页面继续缓存在闲置内存中。
页面拷贝模块4在这里具有能及时处理满足共享模块3写时拷贝的需求优点。
内存分配回收模块5用于管理由于共享管理模块3实现的页面共享而节省下来的内存和系统中闲置的内存,即管理类气球驱动模块6占据的内存与系统中未被分配给虚拟域的闲置内存,运行过程中处理共享管理模块3、页面拷贝模块4的请求,适时地通知类气球驱动模块6膨胀或压缩,以及完成本来Xen虚拟化平台上系统内存分配回收的相关任务;具体而言,当虚拟机要读取的基础镜像文件中的页面已经存在于内存中时,在共享管理模块3通知下,内存分配回收模块5会通知对应虚拟机中的类气球驱动模块6膨胀占据与共享页面大小相同的内存。当虚拟机写操作作用在来自基础镜像文件的页面上而该页面又没有被共享时,在页面拷贝模块4的申请下,内存分配回收模块5会在闲置内存中分配页面来缓存来自基础镜像文件的页面。当虚拟机写操作作用在来自基础镜像文件的页面上而该页面属于自己并且又被其他的虚拟机共享时,内存分配回收模块5也会在页面拷贝模块4的申请下在闲置内存中分配内存来缓存该页面并供其他虚拟机共享。当虚拟机写操作作用在来自基础镜像文件的页面上而该页面不属于自己又是共享而来的时候,内存分配回收模块5也会在页面拷贝模块4的申请下分配内存提供给该页面拷贝模块4来拷贝一份供该虚拟机独占的页面,同时由于分配了内存给虚拟机,内存分配回收模块5会通知该虚拟机中类气球驱动模块6释放同样大小的内存。在物理机闲置内存被用完的情况下,内存分配回收模块5会淘汰没有被共享的页面。此外,虚拟机创建关闭过程中内存的分配回收都由内存分配回收模块5负责。
类气球驱动模块6存在于各个虚拟机中,用于控制虚拟机内存的整体大小,完成来自内存分配回收模块5的要求。具体而言,当内存分配回收模块5发来通知要求缩小虚拟机内存时,类气球驱动模块6就膨胀占据所在虚拟机的通知中要求的内存。当内存分配回收模块5发来通知要求增加虚拟机内存时,类气球驱动模块6就释放所在虚拟机的通知中要求内存大小。
如图2所示,本发明的多增量虚拟机内存管理方法是应用于上述多增量虚拟机内存管理系统中,由于虚拟机的创建和关闭属于Xen自身存在的功能,所以在此图中不考虑内存分配回收模块负责的虚拟机创建分配内存和虚拟机关闭回收内存。
本发明的多增量虚拟机内存管理方法包括以下步骤:
(1)特权域判断虚拟机执行的操作,是对虚拟硬盘的读操作还是对内存页面的写操作,如果是读操作则转入步骤(2),如果是写操作则转入步骤(7);
(2)页面读监控模块判断是否读取的是基础镜像文件,如果是则转入步骤(3),如果不是则转入步骤(4);
(3)Xen虚拟化平台执行正常的读操作;
(4)共享管理模块查询该虚拟机对应的基础镜像文件位图,以判断要读取的页面是否已经缓存在其他虚拟机或闲置内存中,如果不是则转入步骤(5),如果是则转入步骤(6);
(5)Xen虚拟化平台执行正常的I/O访问,并且在共享管理模块内的位图上登记读取的页面以及记录该页面在物理内存中的地址以便于以后被其他虚拟机共享;
(6)共享管理模块使得该虚拟机共享其他虚拟机或闲置内存中已有的页面并修改该页面被索引的次数,并且共享管理模块通知内存分配回收模块去通知类气球驱动模块压缩该虚拟机内存以弥补共享页面的额外大小;
(7)虚拟机发出的写操作将被页面写监控模块截获而分析出需要对其进行写操作的具体是哪一个页面,并在共享管理模块维护的基础镜像文件的位图中查找这个页面,如果没有找到则说明该被写页面不是是来自基础镜像文件的页面就继续执行Xen虚拟化平台原有的写操作;否则说明该被写页面是来自基础镜像文件的页面,共享管理模块判断该页面是否被共享。具体地,共享管理模块是会查看该页面被索引的次数,如果次数为1就说明该页面没有被共享,否则如果大于1就说明该页面有被共享。如果没有被共享则转入步骤(8),否则转入步骤(9);
(8)内存分配回收模块在闲置内存中分配内存给页面拷贝模块,页面拷贝模块将该页面拷贝以供之后被其他虚拟机共享,记录拷贝的页面的具体物理地址,并在该虚拟机内的页面上执行写操作;
(9)判断该页面是否位于该虚拟机自己的原内存中,如果是则转入步骤(10),否则转入步骤(11);
(10)内存分配回收模块在闲置内存中拷贝一份该页面供其他虚拟机共享,且共享管理模块记录对应新拷贝页面的物理地址,登记相关修改,并在该页面上执行写操作;
(11)共享管理模块通知内存分配回收模块命令该虚拟机中的类气球驱动模块释放内存,将重新获得的内存交给页面拷贝模块,通知页面拷贝模块拷贝该页面一份,供该虚拟机独占使用,共享管理模块修改原页面被索引的次数,并在新分配拷贝的页面上执行写操作。
实例
为了验证本发明系统的可行性和有效性,在真实环境下配置本发明系统,对三个基于同一基础镜像文件的增量虚拟机进行实验。物理计算机装载Xen虚拟机平台,创建了三台增量虚拟机,三个虚拟机分别安装Fedora17操作系统,详细实验环境配置如表1所示。
表1服务器基本硬件和软件配置
类气球驱动模块6部署在非特权虚拟域中,页面读监控模块1部署在特权域中,其他的页面写监控模块2、共享管理模块3、页面拷贝模块4、内存分配回收模块5都部署在Xen虚拟机管理层中。
首先启动基于同一基础镜像文件的3个增量虚拟机中的两个,页面读监控模块1会截获虚拟机每一次对基础镜像文件的读操作并通知共享管理模块3将来自基础镜像文件的页面统一记录管理起来。当共享的页面发生写时拷贝时,基于基础镜像文件的页面会被转入闲置内存中,在内存分配回收模块5、共享管理模块3以及类气球驱动模块6的共同管理控制下,虚拟机实际拥有的内存大小会被平衡在原始配置大小的水平,保证了虚拟机管理系统中资源定额分配性能隔离的初衷。
在以上的相关说明之后,图3对物理机上部署运行了本多增量虚拟机内存管理系统后物理内存的实际使用分配状态做了一个结构上的呈现。如图3所示,整个矩形表示物理机上的物理内存。物理内存被分配给Xen、Domain0、虚拟机A、虚拟机B、虚拟机C,除此以外还有留下闲置内存。各个虚拟机和闲置内存中的深灰色和浅灰色矩形都表示来自基础镜像文件的页面。虚拟机中的浅灰色矩形表示被其他虚拟机共享的来自基础镜像文件的页面,深灰色矩形表示来自基础镜像文件的页面但没有被其他虚拟机共享。闲置内存中的浅灰色矩形表示被虚拟机共享索引的来自基础镜像文件的页面,深灰色矩形表示暂时没有被虚拟机索引使用的来自基础镜像文件的页面,他们被缓存在物理内存中没有影响其他虚拟机的运行但在今后的某个时刻可以为某个虚拟机所用以避免虚拟机去读硬盘。
当再启动一台虚拟机时由于一些需要在磁盘上基础镜像文件中读取的数据已经缓存在物理内存中,本系统的共享机制将使得其启动速度大大提高。除此以外,在运行的过程中,当某个虚拟机需要的数据页面已经缓存在物理内存中其他虚拟机的内存空间中或闲置内存中时,相应的针对磁盘的读操作也可以被避免。由于包括闲置内存在内的物理机上所有的物理内存在本系统的管理下都被利用了起来,所以Xen虚拟化平台上的内存利用率得到了提高,达到了内存分时复用的效果。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种多增量虚拟机管理系统,包括页面读监控模块、页面写监控模块、共享管理模块、页面拷贝模块、内存分配回收模块以及类气球驱动模块,其特征在于,
页面读监控模块用于监控虚拟机对镜像文件的读操作,并在虚拟机读取过程中需要访问基础镜像文件时通知共享管理模块;
页面写监控模块用于监控虚拟机对内存页面的写操作,并在写操作作用在共享管理模块管理的页面上时通知共享管理模块;
共享管理模块用于管理来自基础镜像文件的页面,并对该页面做标记以方便页面写监控模块进行写监控,记录所管理的各个页面被索引的次数,以及处理来自页面读监控模块或页面写监控模块的通知,并根据该通知向页面拷贝模块或内存分配回收模块发出通知,具体而言,共享管理模块统一管理物理机上各个虚拟机中来自基础镜像文件的页面,并且为每个基础镜像文件采用一个位图来标明其中有哪些页面被缓存在虚拟机的内存或闲置物理内存中哪些没有被缓存,此外还记录各个页面被虚拟机索引的次数和在物理内存中的地址,当共享管理模块接收到来自于页面读监控模块的通知时,该通知包括有读操作的虚拟机对应的基础镜像文件和具体的页面,共享管理模块会在对应基础镜像文件的位图中进行查找,如果需要被读取的页面已经被缓存在某个其他的虚拟机中或物理机上闲置的内存中,就让发出读请求的虚拟机与之共享,并修改对应页面被索引的次数,否则就继续虚拟机正常的读虚拟硬盘的操作并将此页面在对应基础镜像文件的位图中登记且记录页面在内存中的位置,在虚拟机请求读操作后共享管理模块执行了共享的情况下,由于共享的页面没有占虚拟机的内存,此时会通知内存分配回收模块压缩虚拟机的内存,以保证运行的过程中虚拟机的内存大小能够维持在创建时的配置大小,当共享管理模块接收到来自于页面写监控模块的通知时,共享管理模块首先检查被写页面被索引的次数,如果被索引次数为1则说明该被写页面没有被其他虚拟机共享,执行写操作,但为了将此被写页面继续缓存在闲置的物理内存中,而将此被写页面传送给页面拷贝模块,最后记录拷贝页面的物理地址,如果被索引次数大于1,则说明还有其他虚拟机共享此被写页面,此时如果该被写页面位于该虚拟机的内存中则通知页面拷贝模块为其他需要共享的虚拟机拷贝一份供其继续共享,如果该被写页面是共享的其他虚拟机的,则通知页面拷贝模块为其拷贝一份供其独占的被写页面;
页面拷贝模块用于根据来自于共享管理模块的请求通知内存分配回收模块获取内存,并拷贝共享管理模块指定的页面;
内存分配回收模块用于管理由于共享管理模块实现的页面共享而节省下来的内存和系统中闲置的内存,即管理类气球驱动模块占据的内存与系统中未被分配给虚拟域的闲置内存,运行过程中处理共享管理模块、页面拷贝模块的请求,适时地通知类气球驱动模块膨胀或压缩,以及完成本来Xen虚拟化平台上系统内存分配回收的相关任务;具体而言,当虚拟机要读取的基础镜像文件中的页面已经存在于内存中时,在共享管理模块通知下,内存分配回收模块会通知对应虚拟机中的类气球驱动模块膨胀占据与共享页面大小相同的内存,当虚拟机写操作作用在来自基础镜像文件的页面上而该页面又没有被共享时,在页面拷贝模块的申请下,内存分配回收模块会在闲置内存中分配页面来缓存来自基础镜像文件的页面,当虚拟机写操作作用在来自基础镜像文件的页面上而该页面属于自己并且又被其他的虚拟机共享时,内存分配回收模块也会在页面拷贝模块的申请下在闲置内存中分配内存来缓存该页面并供其他虚拟机共享,当虚拟机写操作作用在来自基础镜像文件的页面上而该页面不属于自己又是共享而来的时候,内存分配回收模块也会在页面拷贝模块的申请下分配内存提供给该页面拷贝模块来拷贝一份供该虚拟机独占的页面,同时由于分配了内存给虚拟机,内存分配回收模块会通知该虚拟机中类气球驱动模块释放同样大小的内存,在物理机闲置内存被用完的情况下,内存分配回收模块会淘汰没有被共享的页面;
类气球驱动模块用于控制虚拟机内存的整体大小,完成来自内存分配回收模块的要求。
2.根据权利要求1所述的多增量虚拟机管理系统,其特征在于,多增量虚拟机管理系统构建在开源的Xen虚拟化平台之上,Xen虚拟化平台包括特权域、非特权域以及Xen,页面读监控模块设置于特权域中,类气球驱动模块设置于非特权域中,页面写监控模块、共享管理模块、页面拷贝模块以及内存分配回收模块设置于Xen中。
3.根据权利要求1所述的多增量虚拟机管理系统,其特征在于,具体而言,页面写监控模块访问共享管理模块维护的基础镜像文件的位图,负责监控虚拟机对页面的修改,当有虚拟机需要对页面做写操作时就在共享管理模块维护的基础镜像文件的位图中查找,若找到即写操作作用在来自基础镜像文件的页面上则通知共享管理模块。
4.一种多增量虚拟机内存管理方法,其应用于上述权利要求1-3中任意一项所述的多增量虚拟机内存管理系统中,其特征在于,包括以下步骤:
(1)特权域判断虚拟机执行的操作,是对虚拟硬盘的读操作还是对内存页面的写操作,如果是读操作则转入步骤(2),如果是写操作则转入步骤(7);
(2)页面读监控模块判断是否读取的是基础镜像文件,如果是则转入步骤(3),如果不是则转入步骤(4);
(3)Xen虚拟化平台执行正常的读操作;
(4)共享管理模块查询该虚拟机对应的基础镜像文件位图,以判断要读取的页面是否已经缓存在其他虚拟机或闲置内存中,如果不是则转入步骤(5),如果是则转入步骤(6);
(5)Xen虚拟化平台执行正常的I/O访问,并且在共享管理模块内的位图上登记读取的页面以及记录该页面在物理内存中的地址以便于以后被其他虚拟机共享;
(6)共享管理模块使得该虚拟机共享其他虚拟机或闲置内存中已有的页面并修改该页面被索引的次数,并且共享管理模块通知内存分配回收模块去通知类气球驱动模块压缩该虚拟机内存以弥补共享页面的额外大小;
(7)虚拟机发出的写操作将被页面写监控模块截获而分析出需要对其进行写操作的具体是哪一个页面,并在共享管理模块维护的基础镜像文件的位图中查找这个页面,如果没有找到则说明该页面不是来自基础镜像文件的页面就继续执行Xen虚拟化平台原有的写操作;否则说明该页面是来自基础镜像文件的页面,共享管理模块判断该页面是否被共享,如果没有被共享则转入步骤(8),否则转入步骤(9);
(8)内存分配回收模块在闲置内存中分配内存给页面拷贝模块,页面拷贝模块将该页面拷贝以供之后被其他虚拟机共享,记录拷贝的页面的具体物理地址,并在该虚拟机内的页面上执行写操作;
(9)判断该页面是否位于该虚拟机自己的原内存中,如果是则转入步骤(10),否则转入步骤(11);
(10)内存分配回收模块在闲置内存中拷贝一份该页面供其他虚拟机共享,且共享管理模块记录对应新拷贝页面的物理地址,登记相关修改,并在该页面上执行写操作;
(11)共享管理模块通知内存分配回收模块命令该虚拟机中的类气球驱动模块释放内存,将重新获得的内存交给页面拷贝模块,通知页面拷贝模块拷贝该页面一份,供该虚拟机独占使用,共享管理模块修改原页面被索引的次数,并在新分配拷贝的页面上执行写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310022422.4A CN103092678B (zh) | 2013-01-22 | 2013-01-22 | 一种多增量虚拟机内存管理系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310022422.4A CN103092678B (zh) | 2013-01-22 | 2013-01-22 | 一种多增量虚拟机内存管理系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103092678A CN103092678A (zh) | 2013-05-08 |
CN103092678B true CN103092678B (zh) | 2016-01-13 |
Family
ID=48205288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310022422.4A Expired - Fee Related CN103092678B (zh) | 2013-01-22 | 2013-01-22 | 一种多增量虚拟机内存管理系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103092678B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015000106A1 (en) * | 2013-07-01 | 2015-01-08 | Intel Corporation | Efficient graphics virtualization with address ballooning |
CN103425550B (zh) * | 2013-07-11 | 2016-11-23 | 济南万联信息科技有限公司 | 一种系统克隆方法和装置 |
CN103399783A (zh) * | 2013-08-07 | 2013-11-20 | 曙光信息产业(北京)有限公司 | 虚拟机的镜像文件的存储方法和装置 |
CN104572656B (zh) * | 2013-10-12 | 2019-02-19 | 华为技术有限公司 | 一种磁盘镜像空间回收的方法及装置 |
WO2015065429A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Copy-on-write update-triggered consistency |
CN106663051A (zh) * | 2014-09-15 | 2017-05-10 | 英特尔公司 | 虚拟化计算中的存储器管理 |
CN104281486B (zh) * | 2014-09-26 | 2018-04-20 | 华为技术有限公司 | 一种虚拟机处理方法和装置 |
CN106469117B (zh) * | 2015-08-14 | 2020-07-31 | 中国电信股份有限公司 | 一种用于虚拟机存储迁移的存储资源管理方法及装置 |
CN107153566B (zh) * | 2016-03-04 | 2020-12-08 | 中移(苏州)软件技术有限公司 | 虚拟机i/o性能优化方法及装置 |
CN105808319B (zh) * | 2016-03-07 | 2020-01-10 | 华为技术有限公司 | 一种控制内存气球的方法、装置和系统 |
CN107479942A (zh) * | 2016-06-08 | 2017-12-15 | 深圳市深信服电子科技有限公司 | 虚拟机的客户操作系统启动方法及装置 |
CN108062239B (zh) | 2016-11-09 | 2020-06-16 | 华为技术有限公司 | 一种加速器加载方法、系统和加速器加载装置 |
CN108073423B (zh) | 2016-11-09 | 2020-01-17 | 华为技术有限公司 | 一种加速器加载方法、系统和加速器加载装置 |
CN106790713B (zh) * | 2017-03-08 | 2019-09-20 | 中国人民解放军国防科学技术大学 | 云计算环境下的跨数据中心虚拟机迁移方法 |
CN108363552B (zh) * | 2018-01-31 | 2020-06-02 | 华为技术有限公司 | 虚拟机磁盘空间回收方法和系统 |
CN110096333B (zh) * | 2019-04-18 | 2021-06-29 | 华中科技大学 | 一种基于非易失内存的容器性能加速方法 |
CN110471764A (zh) * | 2019-08-01 | 2019-11-19 | 郑州阿帕斯科技有限公司 | 一种内存清理的处理方法及装置 |
CN110737506A (zh) * | 2019-09-10 | 2020-01-31 | 江苏中云科技有限公司 | 一种虚拟机镜像版本管理的方法 |
CN111078355B (zh) * | 2019-11-22 | 2023-06-30 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于安全态势感知的计算环境重构动态防御方法及系统 |
CN112286630A (zh) * | 2020-10-22 | 2021-01-29 | 烽火通信科技股份有限公司 | 一种虚拟机内存热迁移的优化方法与装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050204357A1 (en) * | 2004-03-15 | 2005-09-15 | Ajay Garg | Mechanism to protect extensible firmware interface runtime services utilizing virtualization technology |
US9740517B2 (en) * | 2008-12-29 | 2017-08-22 | Microsoft Technology Licensing, Llc | Dynamic virtual machine memory management |
-
2013
- 2013-01-22 CN CN201310022422.4A patent/CN103092678B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理系统 |
Non-Patent Citations (2)
Title |
---|
A Cloud Service Cache System Based on Memory Template of Virtual Machine;石宣化等;《IEEE》;20110823;第168-173页 * |
嵌入式Java虚拟机的内存管理策略研究;付波等;《中国民航飞行学院学报》;20050630;第16卷(第4期);第28-31页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103092678A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103092678B (zh) | 一种多增量虚拟机内存管理系统和方法 | |
AU2007248886B2 (en) | Converting machines to virtual machines | |
US7797507B2 (en) | Virtual machine system and operating method thereof | |
JP6050262B2 (ja) | 仮想ディスクストレージ技術 | |
CN101149688B (zh) | 虚拟化系统及其内存管理方法 | |
US9110806B2 (en) | Opportunistic page caching for virtualized servers | |
EP3885903A1 (en) | Cloud desktop upgrade method, device, cloud server, and storage medium | |
US20080028402A1 (en) | Method of setting operation environment and computer system | |
WO2018176911A1 (zh) | 一种虚拟磁盘文件格式转换方法和装置 | |
DE112011103026T5 (de) | Bedarfsgesteuertes Streaming von Abbildern virtueller Maschinen | |
CN110806911B (zh) | 一种云桌面管控方法、装置及系统 | |
JPWO2010055937A1 (ja) | 計算機システム、データ保存方法およびプログラム | |
US8566541B2 (en) | Storage system storing electronic modules applied to electronic objects common to several computers, and storage control method for the same | |
US20140082275A1 (en) | Server, host and method for reading base image through storage area network | |
CN111045802B (zh) | Redis集群组件调度系统及方法、平台设备 | |
CN108475201A (zh) | 一种虚拟机启动过程中的数据获取方法和云计算系统 | |
US20130247039A1 (en) | Computer system, method for allocating volume to virtual server, and computer-readable storage medium | |
CN109101323A (zh) | 虚拟机运行状态下基于qcow2格式的快照实现方法 | |
US20220405236A1 (en) | Apparatus and method for managing in-memory container storage | |
CN116775513A (zh) | 支持设备直通虚拟机的物理内存动态分配系统及方法 | |
KR20230062126A (ko) | 고성능 가상 데스크탑 서비스를 위한 vm 이미지 관리 시스템 및 방법 | |
CN115981795A (zh) | 一种在安卓设备上通过容器实现系统隔离的方法 | |
JP2013037589A (ja) | 画像形成装置および画像形成プログラム |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160113 |