1、10申请公布号CN102331949A43申请公布日20120125CN102331949ACN102331949A21申请号201110307790422申请日20111012G06F9/455200601G06F11/1420060171申请人华为技术有限公司地址518129广东省深圳市龙岗区坂田华为总部办公楼72发明人叶川54发明名称一种虚拟机内存快照生成和恢复方法、装置及系统57摘要本发明实施例公开一种虚拟机内存快照生成和恢复的方法、装置及系统,其中,该内存快照生成方法包括获取所述虚拟机的当前第S内存页;识别所述当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页;当所述当前
2、第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据;从而通过本发明实施例仅保存有效数据,减少无效数据的备份,大大缩短了内存快照的生成时间,并减小了内存快照文件的大小,节约了存储资源。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书4页说明书15页附图6页CN102331962A1/4页21一种虚拟机内存快照生成方法,其特征在于,所述方法包括获取所述虚拟机的当前第S内存页;识别所述当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页;当所述当前第S
3、内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据。2根据权利要求1所述的方法,其特征在于,所述识别所述当前第S内存页的页类型,具体包括根据VMM内存空间中保存的页类型信息,确定所述当前第S内存页的页类型,所述页类型包括气球页、需时分配页、共享页、交换页和普通页;其中,气球页和需时分配页为非有效数据页,共享页、交换页和普通页为有效数据页。3根据权利要求2所述的方法,其特征在于,所述当所述当前第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述当前第S内存
4、页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据,具体包括当所述当前第S内存页为气球页时,在所述内存快照文件中记录当前第S内存页的页类型为气球页;当所述当前第S内存页为需时分配页时,在所述内存快照文件中记录当前第S内存页的页类型为需时分配页;当所述当前第S内存页为交换页时,在所述内存快照文件中记录当前第S内存页的页类型为交换页,并从内存交换文件中拷贝所述交换页的页数据到所述内存快照文件中;当所述当前第S内存页为共享页时,在所述内存快照文件中记录当前第S内存页的页类型为共享页,拷贝所述共享页的页数据到所述内存快照文件中,并记录与所述当前第S内存页共享内存数据的其它内存页的
5、页号;当所述当前第S内存页为普通页时,在所述内存快照文件中记录当前第S内存页的页类型为普通页,拷贝所述普通页的页数据到所述内存快照文件中。4根据权利要求1所述的方法,其特征在于,所述识别所述当前第S内存页的页类型,具体包括根据VMM内存空间中保存的页类型信息,确定所述当前第S内存页的页类型,所述页类型包括气球页、需时分配页、共享页、交换页和普通页;当所述当前第S内存页的页类型为普通页时,遍历所述当前第S内存页的内容,根据遍历结果确定所述当前第S内存页的页类型为零页或非零页;其中,气球页、需时分配页和零页为非有效数据页,非零页、共享页和交换页为有效数据页。5根据权利要求4所述的方法,其特征在于,
6、所述当所述当前第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和数据,具体包括当所述当前第S内存页为气球页时,在所述内存快照文件中记录当前第S内存页的页类型为气球页;当所述当前第S内存页为需时分配页时,在所述内存快照文件中记录当前第S内存页的页类型为需时分配页;权利要求书CN102331949ACN102331962A2/4页3当所述当前第S内存页为零页时,在所述内存快照文件记录当前第S内存页的页类型为零页;当所述当前第S内存页为非零页时,在所述内存快照文件中记录当前第S内存页的页类型
7、为非零页,拷贝所述当前第S内存页的页数据到所述内存快照文件中;当所述当前第S内存页为交换页时,在所述内存快照文件中记录当前第S内存页的页类型为交换页,从内存交换文件中拷贝所述交换页的页数据到所述内存快照文件中;当所述当前第S内存页为共享页时,在所述内存快照文件中记录当前第S内存页的页类型为共享页,拷贝所述共享页的页数据到所述内存快照文件中,并记录与所述第S内存页共享内存数据的其它内存页的页号。6一种虚拟机内存快照恢复方法,其特征在于,所述方法包括获取并解析所述虚拟机的内存快照文件;当所述内存快照文件中记录的当前第S内存页的页类型为非有效数据页时,在VMM内存空间中记录所述当前第S内存页的页类型
8、为非有效数据页;当所述内存快照文件中记录的当前第S内存页的页类型为有效数据页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为有效数据页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中。7根据权利要求6所述的方法,其特征在于,在获取并解析所述虚拟机的的内存快照文件之后,所述方法还包括判断所述内存快照文件是否完整,若所述内存快照文件不完整,停止内存恢复操作;若所述内存快照文件完整,执行所述当所述内存快照文件中记录的当前第S内存页的页类型为非有效数据页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为非有效数据页;当所述内存快照文件中记录
9、的当前第S内存页的页类型为有效数据页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为有效数据页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中的步骤。8根据权利要求6或7所述的方法,其特征在于,所述非有效数据页包括气球页和需时分配页;所述有效数据页包括共享页、交换页和普通页。9根据权利要求8所述的方法,其特征在于,所述当所述内存快照文件中记录的当前第S内存页的页类型为非有效数据页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为非有效数据页;当所述内存快照文件中记录的当前第S内存页的页类型为有效数据页时,在所述VMM内存空间中记录所
10、述当前第S内存页的页类型为有效数据页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中,具体包括当所述内存快照文件中记录的当前第S内存页的页类型为气球页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为气球页;当所述内存快照文件中记录的当前第S内存页的页类型为需时分配页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为需时分配页;当所述内存快照文件中记录的当前第S内存页的页类型为共享页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为共享页,将所述内存快照文件中记录的当前第S内存页的页数据拷贝到所述虚拟机的第S内存页中,或者,拷
11、贝到任一与所述当前第S内权利要求书CN102331949ACN102331962A3/4页4存页共享数据的内存页中,并基于所述内存快照文件中记录的页号,在所述VMM内存空间中建立所述当前第S内存页与所述页号对应的内存页之间的共享关系;当所述内存快照文件中记录的当前第S内存页的页类型为交换页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为交换页,并将所述内存快照文件中记录的当前第S内存页的页数据拷贝到新的内存交换文件中;或者,在所述VMM内存空间中记录所述当前第S内存页的页类型为普通页,并将所述内存快照文件中记录的当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中;当所述内存快
12、照文件中记录的当前第S内存页的页类型为普通页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为普通页,并将所述内存快照文件中记录的当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中。10根据权利要求6或7所述的方法,其特征在于,所述非有效数据页包括气球页、需时分配页和零页;所述有效数据页包括非零页、共享页和交换页。11根据权利要求11所述的方法,其特征在于,所述当所述内存快照文件中记录的当前第S内存页的页类型为非有效数据页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为非有效数据页;当所述内存快照文件中记录的当前第S内存页的页类型为有效数据页时,在所述VMM内存空间中
13、记录所述当前第S内存页的页类型为有效数据页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中,具体包括当所述内存快照文件中记录的当前第S内存页的页类型为气球页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为气球页;当所述内存快照文件中记录的当前第S内存页的页类型为需时分配页时,在VMM内存空间中记录所述当前第S内存页的页类型为需时分配页;当所述内存快照文件中记录的当前第S内存页的页类型为零页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为零页,并将所述虚拟机的第S内存页内容置为0;当所述内存快照文件中记录的当前第S内存页的页类型为非
14、零页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为非零页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中;当所述内存快照文件中记录的当前第S内存页的页类型为共享页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为共享页,将所述内存快照文件中记录的当前第S内存页的页数据拷贝到所述虚拟机的第S内存页中,或者,拷贝到任一与所述当前第S内存页共享数据的内存页中,并基于所述内存快照文件中记录的页号,在所述VMM内存空间中建立所述当前第S内存页与所述页号对应的内存页之间的共享关系;当所述内存快照文件中记录的当前第S内存页的页类型为交换页时,在
15、所述VMM内存空间中记录所述当前第S内存页的页类型为交换页,并将所述内存快照文件中记录的当前第S内存页的页数据拷贝到内存交换文件中;或者,在所述VMM内存空间中记录所述当前第S内存页的页类型为零页或非零页,并将所述内存快照文件中记录的当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中。12一种物理主机,其特征在于,所述物理主机包括硬件层,运行在所述硬件层之上的虚拟机监视器VMM,以及运行在所述虚拟机监视器VMM上的虚拟机,所述虚拟机监视器权利要求书CN102331949ACN102331962A4/4页5VMM包括内存快照生成模块和内存页识别模块,其中所述内存快照生成模块用于获取所述虚
16、拟机的当前第S内存页;当所述内存页识别模块识别所述当前第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述内存页识别模块识别所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据;所述内存页识别模块用于识别所述内存快照生成模块获取的所述当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页。13根据权利要求12所述的物理主机,其特征在于,所述硬件层包括存储设备,所述存储设备用于存储所述内存快照文件。14根据权利要求12所述的物理主机,其特征在于,所述内存页识别模块具体用于根据VMM内存空间中保存的页类型信息,确定所述当前第
17、S内存页的页类型,所述页类型包括气球页、需时分配页、共享页、交换页和普通页;其中,气球页和需时分配页为非有效数据页,共享页、交换页和普通页为有效数据页。15根据权利要求12所述的物理主机,其特征在于,所述内存页识别模块具体用于根据VMM内存空间中保存的页类型信息,确定所述当前第S内存页的页类型,所述页类型包括气球页、需时分配页、共享页、交换页和普通页;当所述当前第S内存页的页类型为普通页时,遍历所述当前第S内存页的内容,根据遍历结果确定所述当前第S内存页的页类型为零页或非零页;其中,气球页、需时分配页和零页为非有效数据页,非零页、共享页和交换页为有效数据页。16根据权利要求12至15任一项所述
18、的物理主机,其特征在于,所述虚拟机监视器VMM中还包括内存快照恢复模块,其中所述内存快照恢复模块用于从所述硬件层中的存储设备中获取并解析所述虚拟机的内存快照文件;当所述内存快照文件中记录的当前第S内存页的页类型为非有效数据页时,在所述VMM内存空间中中记录所述当前第S内存页的页类型为非有效数据页;当所述内存快照文件中记录的当前第S内存页的页类型为有效数据页时,在所述VMM内存空间中中记录所述当前第S内存页的页类型为有效数据页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中。17一种计算机系统,其特征在于,所述系统包括物理主机和网络存储设备,其中所述物
19、理主机为权利要求12至16任一项所述的物理主机;所述网络存储设备用于存储所述物理主机上所宿主的虚拟机的内存快照文件。权利要求书CN102331949ACN102331962A1/15页6一种虚拟机内存快照生成和恢复方法、装置及系统技术领域0001本发明涉及一种内存快照技术,尤其涉及一种虚拟机内存快照生成和恢复的方法、装置及系统。背景技术0002通过虚拟化技术,用户可以在一台物理计算机上模拟出一台或多台虚拟机VIRTUALMACHINE,VM,这些虚拟机可以像真正的计算机那样进行工作,例如用户可以安装操作系统、安装应用程序、访问网络资源等等。0003虚拟机快照技术随着虚拟化技术同时产生,由于虚拟
20、机的计算、存储资源都是通过虚拟机监视器VIRTUALMACHINEMONITOR,VMM进行虚拟化,我们可以通过快照技术方便地保留虚拟机某个时间点的CPU状态、内存状态以及存储数据,从而轻松实现物理机上繁琐的全状态备份,用户可以方便地备份和恢复虚拟机。0004目前常见的快照应用主要有两种一是简单的存储快照,仅备份存储数据,虚拟机用户在使用虚拟机过程中可能由于各种原因病毒、木马的破坏,误删除系统文件,误格式化等导致虚拟机镜像损坏或是无法正常启动,如果通过存储快照在虚拟机正常时备份相关数据,可以方便地恢复备份点的页数据;二是存储快照和内存快照相结合,由于在某些场景下,用户需要快速创建或恢复虚拟机相
21、关业务部署加载繁琐冗长、业务恢复中断时间要求高、批量快速部署虚拟机等,或者为了某些调试需求需要保留当前业务状态问题定位,测试分支选择等,此时仅仅使用存储快照无法满足需求,因此内存快照的引入弥补了这方面的不足,通过VMM的能力把虚拟机的内存数据保存成外部存储介质上的内存快照文件,方便保存和随时恢复,同时,这也是虚拟化条件下带来的便利。0005VMWAREVIRTUALMACHINEWARE是虚拟化解决方案的领导厂商,目前已经能提供虚拟机快照总体方案,包括存储快照和内存快照,其内存快照是对内存数据的黑盒的全量拷贝,生成的快照文件大小与虚拟机内存规格保持一致,即拥有1G内存的虚拟机最终生成的内存快照
22、文件大小为1G,与存储快照一起存放在其分布式存储上;快照恢复时,也是顺序读取快照文件进行11内存还原。因此,快照生成过程和快照恢复过程时间都比较长,同时,生成的内存快照文件与虚拟机内存大小一致,对存储资源也是一种浪费。发明内容0006本发明实施例提供一种虚拟机内存快照生成和恢复的方法、装置及系统,以缩短虚拟机内存快照的处理时间且节约存储资源。0007本发明实施例提供如下技术方案0008一方面,本发明实施例提供一种虚拟机内存快照生成方法,所述方法包括0009获取所述虚拟机的当前第S内存页;0010识别所述当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页;说明书CN102331949
23、ACN102331962A2/15页70011当所述当前第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据。0012另一方面,本发明实施例提供一种虚拟机内存快照恢复方法,所述方法包括0013获取并解析所述虚拟机的内存快照文件;0014当所述内存快照文件中记录的当前第S内存页的页类型为非有效数据页时,在VMM内存空间中中记录所述当前第S内存页的页类型为非有效数据页;当所述内存快照文件中记录的当前第S内存页的页类型为有效数据页时,在所述VMM内存空间中中记录所述当前第S内存页的页类型
24、为有效数据页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中。0015另一方面,本发明实施例提供一种物理主机,所述物理主机包括硬件层,运行在所述硬件层之上的虚拟机监视器VMM,以及运行在所述虚拟机监视器VMM上的虚拟机,所述虚拟机监视器VMM中包括内存快照生成模块和内存页识别模块,其中0016所述内存快照生成模块用于获取所述虚拟机的当前第S内存页;当所述内存页识别模块识别所述当前第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述内存页识别模块识别所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的
25、页类型和页数据;0017所述内存页识别模块用于识别所述内存快照生成模块获取的所述当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页;0018所述硬件层包括存储设备,所述存储设备用于存储所述内存快照文件。0019另一方面,本发明实施例提供一种计算机系统,该系统包括物理主机和网络存储设备,其中所述物理主机为本发明实施例提供的物理主机,用来执行虚拟机内存快照文件的生成和恢复;所述网络存储设备用于存储所述物理主机的虚拟机内存快照文件。0020可见,本发明实施例提供的虚拟机内存快照生成和恢复的方法、装置及系统中,通过识别不同的内存页类型,在内存快照生成过程中,根据不同的内存页类型执行不同的快
26、照生成处理,包括在当前第S内存页为非有效数据页时,在内存快照文件中仅记录所述当前第S内存页的页类型;在当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据;以及,在内存快照恢复过程中,根据不同的内存页类型执行不同的快照恢复处理,包括当所述内存快照文件中记录的当前第S内存页的页类型为非有效数据页时,在VMM内存空间中记录所述当前第S内存页的页类型为非有效数据页;当所述内存快照文件中记录的当前第S内存页的页类型为有效数据页时,在所述VMM内存空间中记录所述当前第S内存页的页类型为有效数据页,并将所述内存快照文件中记录的所述当前第S内存页的页数据对应地拷贝到所述虚拟机
27、的第S内存页中,从而通过本发明实施例仅保存有效数据,减少无效数据的备份和恢复,大大缩短了内存快照的生成和恢复时间,减小了内存快照对存储资源的占用。附图说明0021为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书CN102331949ACN102331962A3/15页8发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。0022图1为本发明实施例的一种虚拟机内存快照生成方法的流程示意图;0023图2为本发明实施例的另一种虚拟机内存快
28、照生成方法的流程示意图;0024图3为本发明实施例的再一种虚拟机内存快照生成方法的流程示意图;0025图4为本发明实施例的一种内存快照文件的逻辑结构示意图;0026图5为本发明实施例的另一种内存快照文件的逻辑结构示意图;0027图6为本发明实施例的一种虚拟机内存快照恢复方法的流程示意图;0028图7为本发明实施例的另一种虚拟机内存快照恢复方法的流程示意图;0029图8为本发明实施例的再一种虚拟机内存快照恢复方法的流程示意图;0030图9为本发明实施例的一种物理主机的逻辑结构示意图;0031图10为本发明实施例的一种计算机系统的逻辑结构示意图;0032图11为本发明实施例的一种计算机系统的物理部
29、署示意图。具体实施方式0033下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。0034本发明实施例一提供一种虚拟机内存快照生成方法,如图1所示,该方法可以包括0035步骤S101、获取该虚拟机的当前第S内存页。0036需要说明的是,本发明实施例中引入“第S内存页”只是为了便于描述,并非限定具体哪一个内存页,应当理解的是,这里的S可以是1,2,NN该虚拟机实际的页数量,当S为1时,表示本
30、步骤中获取的当前内存页是所述虚拟机的第一个内存页;0037本步骤可以是顺序获取内存页,也可以倒序获取内存页,不做限定。0038步骤S102、识别所述当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页。0039步骤S102可以是,至少根据VMM内存空间中保存的页类型信息,识别该当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页。0040具体的,在一种实现方式下,步骤S102具体为根据虚拟机监视器VMM内存空间中保存的页类型信息,确定这个当前第S内存页的页类型,所述页类型包括气球页BALLOON、需时分配页POPULATEONDEMAND,POD、共享页SHARE、交换页S
31、WAP和普通页;其中,气球页和需时分配页为非有效数据页,共享页、交换页和普通页为有效数据页。在一种具体实现方式下,在VMM内存空间中维护了内存页类型的结构体变量,其中普通页是默认值,出现其它类型页时会改变其类型并进行标记。在开源虚拟机XEN中,可以通过调用系统接口从VMM内存中获取虚拟机内存页的结构体变量P2M_TYPE_T来判断其类型,其中P2M_INVALID0为气球页,P2M_POPULATE_ON_DEMAND6为需时分配页,P2M_RAM_PAGED10为交换页,P2M_RAM_共享D13为共享页,P2M_RAM_RW1为普通页。说明书CN102331949ACN102331962A
32、4/15页90041在另一种实现方式下,详见图2,步骤S102可以包括步骤S201和步骤S202,其中0042步骤S201、根据所述VMM内存空间中保存的页类型信息,确定所述当前第S内存页的页类型,所述页类型包括气球页、需时分配页、共享页、交换页和普通页;0043步骤S202、当所述当前第S内存页的页类型为普通页时,遍历所述当前第S内存页的内容,确定所述当前第S内存页的页类型为零页或非零页;其中,气球页、需时分配页和零页为非有效数据页,非零页、共享页和交换页为有效数据页。0044需要说明的是,本发明实施例所列举的内存页类型是目前虚拟机中可能出现的一些内存页类型,有的应用比较多,例如气球页、零页
33、和非零页;有的应用比较少;例如共享页和交换页;需时分配页目前通用性不高,但在XEN开源虚拟机中也有应用。本发明实施例以这些页类型为例,无意局限于这些页类型的识别。无论目前应用的其它内存页类型,还是以后可能出现的内存页类型,只要应用本发明实施例公开的内存快照生成和恢复方法都应在本发明保护范围之内。0045步骤S103、当所述当前第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据。0046相应的,在一种实现方式下,其中,气球页和需时分配页为非有效数据页,共享页、交换页和普通页为有效数
34、据页;步骤S103具体可以包括0047在当前第S内存页为气球页时,在内存快照文件中记录当前第S内存页的页类型为气球页;0048在当前第S内存页为需时分配页时,在内存快照文件中记录当前第S内存页的页类型为需时分配页;0049在当前第S内存页为交换页时,在内存快照文件中记录当前第S内存页的页类型为交换页,从内存交换文件中拷贝该交换页的页数据到该内存快照文件中;0050在当前第S内存页为共享页时,在内存快照文件中记录当前第S内存页的页类型为共享页,拷贝该共享页的页数据到该内存快照文件中,并记录与当前第S内存页共享内存数据的其它内存页的页号;0051在当前第S内存页为普通页时,在内存快照文件中记录当前
35、第S内存页的页类型为普通页,拷贝该普通页的页数据到所述内存快照文件中。0052相应的,在另一种实现方式下,其中,气球页、需时分配页和零页为非有效数据页,非零页、共享页和交换页为有效数据页;步骤S103具体可以包括0053在当前第S内存页为气球页时,在内存快照文件中记录当前第S内存页的页类型为气球页;0054在当前第S内存页为需时分配页时,在内存快照文件中记录当前第S内存页的页类型为需时分配页;0055在当前第S内存页为零页时,在内存快照文件记录当前第S内存页的页类型为零页;0056在当前第S内存页为非零页时,在内存快照文件中记录当前第S内存页的页类型为非零页,拷贝当前第S内存页的页数据到该内存
36、快照文件中;0057在当前第S内存页为交换页时,在内存快照文件中记录当前第S内存页的页类型说明书CN102331949ACN102331962A5/15页10为交换页,从内存交换文件中拷贝该交换页的页数据到前述内存快照文件中;0058在当前第S内存页为共享页时,在内存快照文件中记录当前第S内存页的页类型为共享页,拷贝该共享页的页数据到前述内存快照文件中,并记录与当前第S内存页共享内存数据的其它内存页的页号。0059综上所述,本发明实施例提供的虚拟机内存快照生成方法,通过识别不同的内存页类型,在内存快照生成过程中,根据不同的内存页类型执行不同的快照生成处理,包括在当前第S内存页为非有效数据页时,
37、在内存快照文件中仅记录该当前第S内存页的页类型;在当前第S内存页为有效数据页时,在内存快照文件中记录该当前第S内存页的页类型和页数据,从而通过本发明实施例仅保存有效数据,减少无效数据的备份,大大缩短了内存快照的生成时间,并减小了内存快照文件的大小,节约了存储资源。0060本发明实施例二提供一种虚拟机内存快照的生成方法,下面结合图3来详细介绍该虚拟机内存快照生成方法的流程,包括如下步骤0061步骤300、流程开始;0062该流程的开始可以是由用户触发内存快照操作,物理主机提供用户接口给最终用户,以便于触发内存快照操作;也可以是虚拟机自动触发的,可以是定时触发,也可以根据虚拟机的运行状况等自动触发
38、。0063步骤301、确定虚拟机实际内存大小、内存页大小亦可称为页大小,一般为4KB或2MB等信息,这些信息用来初始化内存快照文件,且在虚拟机内存快照恢复时用来判断内存快照文件的完整性;0064需要说明的是,这里的虚拟机可以是用户通过用户接口所指定的虚拟机,也可以是定时触发的虚拟机。0065步骤302、初始化内存快照文件,包括预申请内存快照文件的存储空间和初始化内存快照文件的结构及初始信息。所述初始信息指虚拟机内存大小、内存页大小、内存页数量具体的,根据虚拟机实际内存大小、内存页大小可以计算出虚拟机实际的内存页数量、以及有效数据起始地址等信息;0066优选地,本发明实施例中提供的内存快照文件结
39、构如图4所示,包括信息段41和数据段42,其中信息段41包括全局信息411和内存页的位图结构体BITMAP,所述位图结构体BITMAP是一种通用的顺序数据存储结构,在本发明实施例中利用该结构体存储内存页的页号4121、页类型4122以及数据偏移量4123。数据段42顺序存储有效数据页中的有效数据,并与信息段41中的数据偏移量4123一一对应。全局信息411可以用来记录虚拟机内存大小、内存页数量、内存页大小以及有效数据起始地址等全局类的信息,这些信息可以在初始化内存快照文件302时写入内存快照,也可以在内存页处理完成之后再写入内存快照;页号4121记录每个内存页的页号;页类型4122记录对应页号
40、的内存页的页类型标识;数据偏移量4123记录其对应的内存页的有效数据在数据段42中的偏移量,即数据段42中记录的有效数据按照信息段41中的数据偏移量4123来索引,通过把数据偏移量与所述有效数据起始地址相加后可以在数据段42中找到对应的内存数据。0067需要说明的是,图4提供的内存快照文件结构并无限定仅为此种结构的意思,只是举例说明。在另一种实现方式下,内存快照文件也可以如图5所示包含页类型51和有效数据52两个字段。其中页类型51存储识别出的内存页的类型标识,所述类型标识唯一标说明书CN102331949ACN102331962A6/15页11识一种页类型,可以自主定义,例如000代表零页、
41、001代表气球页等。有效数据52存储有效数据页的页数据,所述有效数据页包括非零页、共享页和交换页。0068值得一提的是,共享页的共享页号可以根据内存快照文件各个部分存储的信息、各个部分的容量或其它因素决定其存储位置,例如如图5中有效数据52或页类型51中留出部分空间存储所述共享页号,当然也可以在内存快照中单独划分一个部分存储共享页号。0069需要说明的是,根据以上提到的内存快照文件结构,本领域技术人员可以很容易想到其它等同替代方式或明显变型方式。例如图4中全局信息精简,仅保存页数量和页大小;页号信息也可以不保存等;或者改变内存快照的存储顺序等,这些等同替代方式或明显变型方式也应视为本发明的保护
42、范围。0070步骤303、顺序选取一个内存页;0071可以是,从第一个内存页开始一一执行内存页识别。0072步骤304、根据VMM内存空间中保存的内存页类型信息判断当前内存页是否为普通页,当判断出选取的内存页不是普通页,则执行步骤305;当判断出选取的内存页是普通页,则执行步骤306;0073在一种实现方式下,所述内存页类型信息保存在一个页类型结构体中,该页类型结构体存储在物理主机的硬件层的内存MEMORY中,具体的,该页类型结构体存储在VMM内存空间中,可以通过系统调用获得。所述VMM内存空间是VMM为完成正常工作而在物理内存上划分一块特定区域,存放了VMM在完成虚拟设备模拟、内存管理以及内
43、存快照生成和恢复等各项功能所用到的数据结构等相关关键信息,例如虚拟机内存页类型的结构体变量,内存共享哈希表以及虚拟机内存与物理内存的一一映射关系等。当VMM管理的虚拟机VM是多个时,这个VMM内存空间分别划分出独立的部分来存储不同虚拟机VM的信息。VMM可以通过调用系统接口访问所述VMM内存空间。0074步骤305、在内存快照文件中,根据该内存页具体的页类型执行相应的内存快照生成处理。这里的页类型包括气球页、需时分配页、共享页和交换页。0075具体的,当内存页为气球页时,在前述内存快照文件参照图4的页类型4122字段中记录该内存页的页类型为气球页;当内存页为需时分配页时,在前述内存快照文件的页
44、类型4122字段中记录该内存页的页类型为需时分配页;当内存页为交换页时,在前述内存快照文件的页类型4122字段中记录该内存页的页类型为交换页,从内存交换文件中拷贝该交换页的有效数据到前述内存快照文件的数据段42中,并在数据偏移量4123字段中记录下这些有效数据在数据段42中的偏移量;当内存页为共享页时,在前述内存快照文件的页类型4122字段中记录该内存页的页类型为共享页,拷贝该共享页的共享数据到前述内存快照文件的数据段42中,并在数据偏移量4123字段中记录下这些共享数据在数据段42中的偏移量和与该共享页共享内存数据的其它内存页的页号,这里的共享页号可以通过调用系统接口查询VMM内存中保存的内
45、存共享哈希表获得。0076步骤306、通过遍历内存页内容判断内存页内容是否全为0。如果为零,该页即为零页,转步骤307;如果不为零,该页即为非零页,转步骤308;0077步骤307、在内存快照文件中执行零页的相应处理,即在所述内存快照文件的页类型4122中记录当前第S内存页的页类型为零页,不拷贝内存数据;说明书CN102331949ACN102331962A7/15页120078步骤308、在内存快照文件中执行非零页的相应处理,即在所述内存快照文件的页类型4122中记录当前第S内存页的页类型为非零页,并拷贝所述当前第S内存页的页数据到所述内存快照文件的数据段42中,并在数据偏移量4123中记录
46、下数据在数据段42中的偏移量。0079步骤309、判断是否所有内存页都已处理完;若步骤309判断结果为是,则执行步骤310;若步骤309若判断结构为否,则返回到步骤303选取下一个内存页继续该内存快照生成流程。0080可以是,每执行完一个内存页的内存快照处理都要执行步骤309的判断,可以通过页号来判断;当内存快照文件中未保存页号等信息时,可以通过标记内存页为已读或已处理来判断。0081步骤310、输出内存快照文件;输出的内存快照文件可以存储在硬盘DISK中0082步骤311、停止内存快照生成操作。0083可选的,在本发明实施例中,当识别内存页为共享页时,记录所有共享数据的内存页号,并拷贝它们共
47、享的内存数据到内存快照文件中,此时为了提高内存页识别效率,可以标记所有共享数据的内存页为已读,进行内存页识别的时候可以跳过这些标记为已读的共享页面。0084综上所述,本发明实施例提供的虚拟机内存快照生成方法,通过初始化一个内存快照文件,内存快照文件里具体包括信息段全局信息、页号、页类型、数据偏移量和数据段;然后顺序获取并识别虚拟机的内存页的页类型,针对不同的页类型在这个内存快照文件中执行不同的内存快照生成处理,具体包括当获取的内存页识别为气球页时,在这个内存快照文件的页类型字段中记录该内存页的页类型为气球页;当获取的内存页识别为需时分配页时,在这个内存快照文件的页类型字段中记录该内存页的页类型
48、为需时分配页;当获取的内存页识别为交换页时,在这个内存快照文件的页类型字段中记录该内存页的页类型为交换页,并从内存交换文件中拷贝交换页的有效数据到该内存快照文件的数据段中,并在数据偏移量字段中记录下数据在数据段中的偏移量;当获取的内存页识别为共享页时,在该内存快照文件的页类型字段中记录该内存页的页类型为共享页,拷贝这个共享页的共享数据到该内存快照文件的数据段中,并在数据偏移量字段中记录下数据在数据段中的偏移量和与之共享内存数据的其它内存页的页号,从而通过本发明实施例仅保存有效数据,减少无效数据的备份,大大缩短了内存快照的生成时间,并减小了内存快照文件的大小,节约了存储资源。0085本发明实施例
49、三提供一种虚拟机内存快照恢复方法,如图6所示,该方法可以包括0086步骤S401、获取并解析虚拟机的内存快照文件。0087在一种实现方式下,本发明实施例提供的内存快照文件结构如图4所示,S401可以是,从该内存快照文件中读取并解析如图4所示的结构中存储的信息。0088在另一种实现方式下,本发明实施例提供的内存快照文件也可以如图5所示包含页类型51和有效数据52两个字段,S401可以是,从该内存快照文件中读取并解析如图5所示的结构中存储的信息。0089步骤S402、当这个内存快照文件中记录的当前第S内存页的页类型为非有效数据说明书CN102331949ACN102331962A8/15页13页时,在VMM内存空间中记录当前第S内存页的页类型为非有效数据页;当内存快照文件中记录的当前第S内存页的页类型为有效数据页时,在VMM内存空间中记录当前第S内存页的页类型为有效数据页,并将内存快照文件中记录的当前第S内存页的页数据对应地拷贝到所述虚拟机的第S内存页中。0090具体的,在一种实现方式下,非有效数据页包括气球页和需时分配页,所述有效数据页包括共享页、交换页和普通页;0091相应的,步骤S402具体可以包括0092当内存快照文件中记录的当前第S内存页的页类型为气球页时,在VMM内存空间中记录当前第S内存页的页类型为气球页;0093当内存快照文件中记录的当前第S内存页的页类型
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1