一种虚拟机内存快照生成和恢复方法、装置及系统.pdf

上传人:1** 文档编号:1036378 上传时间:2018-03-27 格式:PDF 页数:26 大小:674.71KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110307790.4

申请日:

2011.10.12

公开号:

CN102331949A

公开日:

2012.01.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20111012|||公开

IPC分类号:

G06F9/455; G06F11/14

主分类号:

G06F9/455

申请人:

华为技术有限公司

发明人:

叶川

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明实施例公开一种虚拟机内存快照生成和恢复的方法、装置及系统,其中,该内存快照生成方法包括:获取所述虚拟机的当前第S内存页;识别所述当前第S内存页的页类型,所述页类型包括非有效数据页和有效数据页;当所述当前第S内存页为非有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型;当所述当前第S内存页为有效数据页时,在内存快照文件中记录所述当前第S内存页的页类型和页数据;从而通过本发明实施例仅保存有效数据,减少无效数据的备份,大大缩短了内存快照的生成时间,并减小了内存快照文件的大小,节约了存储资源。

权利要求书

1: 一种虚拟机内存快照生成方法, 其特征在于, 所述方法包括 : 获取所述虚拟机的当前第 S 内存页 ; 识别所述当前第 S 内存页的页类型, 所述页类型包括非有效数据页和有效数据页 ; 当所述当前第 S 内存页为非有效数据页时, 在内存快照文件中记录所述当前第 S 内存 页的页类型 ; 当所述当前第 S 内存页为有效数据页时, 在内存快照文件中记录所述当前第 S 内存页的页类型和页数据。
2: 根据权利要求 1 所述的方法, 其特征在于, 所述识别所述当前第 S 内存页的页类型, 具体包括 : 根据 VMM 内存空间中保存的页类型信息, 确定所述当前第 S 内存页的页类型, 所述页类 型包括气球页、 需时分配页、 共享页、 交换页和普通页 ; 其中, 气球页和需时分配页为非有效 数据页, 共享页、 交换页和普通页为有效数据页。
3: 根据权利要求 2 所述的方法, 其特征在于, 所述当所述当前第 S 内存页为非有效数据 页时, 在内存快照文件中记录所述当前第 S 内存页的页类型 ; 当所述当前第 S 内存页为有效 数据页时, 在内存快照文件中记录所述当前第 S 内存页的页类型和页数据, 具体包括 : 当所述当前第 S 内存页为气球页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为气球页 ; 当所述当前第 S 内存页为需时分配页时, 在所述内存快照文件中记录当前第 S 内存页 的页类型为需时分配页 ; 当所述当前第 S 内存页为交换页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为交换页, 并从内存交换文件中拷贝所述交换页的页数据到所述内存快照文件中 ; 当所述当前第 S 内存页为共享页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为共享页, 拷贝所述共享页的页数据到所述内存快照文件中, 并记录与所述当前第 S 内存页共享内存数据的其它内存页的页号 ; 当所述当前第 S 内存页为普通页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为普通页, 拷贝所述普通页的页数据到所述内存快照文件中。
4: 根据权利要求 1 所述的方法, 其特征在于, 所述识别所述当前第 S 内存页的页类型, 具体包括 : 根据 VMM 内存空间中保存的页类型信息, 确定所述当前第 S 内存页的页类型, 所述页类 型包括气球页、 需时分配页、 共享页、 交换页和普通页 ; 当所述当前第 S 内存页的页类型为普通页时, 遍历所述当前第 S 内存页的内容, 根据遍 历结果确定所述当前第 S 内存页的页类型为零页或非零页 ; 其中, 气球页、 需时分配页和零 页为非有效数据页, 非零页、 共享页和交换页为有效数据页。
5: 根据权利要求 4 所述的方法, 其特征在于, 所述当所述当前第 S 内存页为非有效数据 页时, 在内存快照文件中记录所述当前第 S 内存页的页类型 ; 当所述当前第 S 内存页为有效 数据页时, 在内存快照文件中记录所述当前第 S 内存页的页类型和数据, 具体包括 : 当所述当前第 S 内存页为气球页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为气球页 ; 当所述当前第 S 内存页为需时分配页时, 在所述内存快照文件中记录当前第 S 内存页 的页类型为需时分配页 ; 2 当所述当前第 S 内存页为零页时, 在所述内存快照文件记录当前第 S 内存页的页类型 为零页 ; 当所述当前第 S 内存页为非零页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为非零页, 拷贝所述当前第 S 内存页的页数据到所述内存快照文件中 ; 当所述当前第 S 内存页为交换页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为交换页, 从内存交换文件中拷贝所述交换页的页数据到所述内存快照文件中 ; 当所述当前第 S 内存页为共享页时, 在所述内存快照文件中记录当前第 S 内存页的页 类型为共享页, 拷贝所述共享页的页数据到所述内存快照文件中, 并记录与所述第 S 内存 页共享内存数据的其它内存页的页号。
6: 一种虚拟机内存快照恢复方法, 其特征在于, 所述方法包括 : 获取并解析所述虚拟机的内存快照文件 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为非有效数据页时, 在 VMM 内 存空间中记录所述当前第 S 内存页的页类型为非有效数据页 ; 当所述内存快照文件中记录 的当前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内 存页的页类型为有效数据页, 并将所述内存快照文件中记录的所述当前第 S 内存页的页数 据对应地拷贝到所述虚拟机的第 S 内存页中。
7: 根据权利要求 6 所述的方法, 其特征在于, 在获取并解析所述虚拟机的的内存快照 文件之后, 所述方法还包括 : 判断所述内存快照文件是否完整, 若所述内存快照文件不完整, 停止内存恢复操作 ; 若 所述内存快照文件完整, 执行所述当所述内存快照文件中记录的当前第 S 内存页的页类型 为非有效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内存页的页类型为非有效数 据页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内存页的页类型为有效数据页, 并将所述内存快照文件中记 录的所述当前第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中的步骤。
8: 根据权利要求 6 或 7 所述的方法, 其特征在于, 所述非有效数据页包括气球页和需时 分配页 ; 所述有效数据页包括共享页、 交换页和普通页。
9: 根据权利要求 8 所述的方法, 其特征在于, 所述当所述内存快照文件中记录的当前 第 S 内存页的页类型为非有效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内存页 的页类型为非有效数据页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为有效 数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内存页的页类型为有效数据页, 并将所 述内存快照文件中记录的所述当前第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内 存页中, 具体包括 : 当所述内存快照文件中记录的当前第 S 内存页的页类型为气球页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为气球页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为需时分配页时, 在所述 VMM 内存空间中记录所述当前第 S 内存页的页类型为需时分配页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为共享页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为共享页, 将所述内存快照文件中记录的当前第 S 内存页的页数据拷贝到所述虚拟机的第 S 内存页中, 或者, 拷贝到任一与所述当前第 S 内 3 存页共享数据的内存页中, 并基于所述内存快照文件中记录的页号, 在所述 VMM 内存空间 中建立所述当前第 S 内存页与所述页号对应的内存页之间的共享关系 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为交换页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为交换页, 并将所述内存快照文件中记录的当前 第 S 内存页的页数据拷贝到新的内存交换文件中 ; 或者, 在所述 VMM 内存空间中记录所述当 前第 S 内存页的页类型为普通页, 并将所述内存快照文件中记录的当前第 S 内存页的页数 据对应地拷贝到所述虚拟机的第 S 内存页中 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为普通页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为普通页, 并将所述内存快照文件中记录的当前 第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中。
10: 根据权利要求 6 或 7 所述的方法, 其特征在于, 所述非有效数据页包括气球页、 需时 分配页和零页 ; 所述有效数据页包括非零页、 共享页和交换页。
11: 根据权利要求 11 所述的方法, 其特征在于, 所述当所述内存快照文件中记录的当 前第 S 内存页的页类型为非有效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内存 页的页类型为非有效数据页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为有 效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内存页的页类型为有效数据页, 并将 所述内存快照文件中记录的所述当前第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中, 具体包括 : 当所述内存快照文件中记录的当前第 S 内存页的页类型为气球页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为气球页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为需时分配页时, 在 VMM 内存 空间中记录所述当前第 S 内存页的页类型为需时分配页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为零页时, 在所述 VMM 内存空 间中记录所述当前第 S 内存页的页类型为零页, 并将所述虚拟机的第 S 内存页内容置为 0 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为非零页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为非零页, 并将所述内存快照文件中记录的所述 当前第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为共享页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为共享页, 将所述内存快照文件中记录的当前第 S 内存页的页数据拷贝到所述虚拟机的第 S 内存页中, 或者, 拷贝到任一与所述当前第 S 内 存页共享数据的内存页中, 并基于所述内存快照文件中记录的页号, 在所述 VMM 内存空间 中建立所述当前第 S 内存页与所述页号对应的内存页之间的共享关系 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为交换页时, 在所述 VMM 内存 空间中记录所述当前第 S 内存页的页类型为交换页, 并将所述内存快照文件中记录的当前 第 S 内存页的页数据拷贝到内存交换文件中 ; 或者, 在所述 VMM 内存空间中记录所述当前第 S 内存页的页类型为零页或非零页, 并将所述内存快照文件中记录的当前第 S 内存页的页 数据对应地拷贝到所述虚拟机的第 S 内存页中。
12: 一种物理主机, 其特征在于, 所述物理主机包括 : 硬件层, 运行在所述硬件层之上 的虚拟机监视器 VMM, 以及运行在所述虚拟机监视器 VMM 上的虚拟机, 所述虚拟机监视器 4 VMM 包括内存快照生成模块和内存页识别模块, 其中 : 所述内存快照生成模块用于 : 获取所述虚拟机的当前第 S 内存页 ; 当所述内存页识别 模块识别所述当前第 S 内存页为非有效数据页时, 在内存快照文件中记录所述当前第 S 内 存页的页类型 ; 当所述内存页识别模块识别所述当前第 S 内存页为有效数据页时, 在内存 快照文件中记录所述当前第 S 内存页的页类型和页数据 ; 所述内存页识别模块用于 : 识别所述内存快照生成模块获取的所述当前第 S 内存页的 页类型, 所述页类型包括非有效数据页和有效数据页。
13: 根据权利要求 12 所述的物理主机, 其特征在于, 所述硬件层包括存储设备, 所述存 储设备用于 : 存储所述内存快照文件。
14: 根据权利要求 12 所述的物理主机, 其特征在于, 所述内存页识别模块具体用于 : 根 据 VMM 内存空间中保存的页类型信息, 确定所述当前第 S 内存页的页类型, 所述页类型包 括气球页、 需时分配页、 共享页、 交换页和普通页 ; 其中, 气球页和需时分配页为非有效数据 页, 共享页、 交换页和普通页为有效数据页。
15: 根据权利要求 12 所述的物理主机, 其特征在于, 所述内存页识别模块具体用于 : 根 据 VMM 内存空间中保存的页类型信息, 确定所述当前第 S 内存页的页类型, 所述页类型包括 气球页、 需时分配页、 共享页、 交换页和普通页 ; 当所述当前第 S 内存页的页类型为普通页 时, 遍历所述当前第 S 内存页的内容, 根据遍历结果确定所述当前第 S 内存页的页类型为零 页或非零页 ; 其中, 气球页、 需时分配页和零页为非有效数据页, 非零页、 共享页和交换页为 有效数据页。
16: 根据权利要求 12 至 15 任一项所述的物理主机, 其特征在于, 所述虚拟机监视器 VMM 中还包括内存快照恢复模块, 其中 : 所述内存快照恢复模块用于 : 从所述硬件层中的存储设备中获取并解析所述虚拟机 的内存快照文件 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为非有效数据页 时, 在所述 VMM 内存空间中中记录所述当前第 S 内存页的页类型为非有效数据页 ; 当所述内 存快照文件中记录的当前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空间中中 记录所述当前第 S 内存页的页类型为有效数据页, 并将所述内存快照文件中记录的所述当 前第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中。
17: 一种计算机系统, 其特征在于, 所述系统包括 : 物理主机和网络存储设备, 其中 : 所述物理主机为权利要求 12 至 16 任一项所述的物理主机 ; 所述网络存储设备用于存储所述物理主机上所宿主的虚拟机的内存快照文件。

说明书


一种虚拟机内存快照生成和恢复方法、 装置及系统

    【技术领域】
     本发明涉及一种内存快照技术, 尤其涉及一种虚拟机内存快照生成和恢复的方 法、 装置及系统。背景技术
     通 过 虚 拟 化 技 术, 用户可以在一台物理计算机上模拟出一台或多台虚拟机 (Virtual Machine, VM), 这些虚拟机可以像真正的计算机那样进行工作, 例如用户可以安 装操作系统、 安装应用程序、 访问网络资源等等。
     虚拟机快照技术随着虚拟化技术同时产生, 由于虚拟机的计算、 存储资源都是通 过虚拟机监视器 (Virtual Machine Monitor, VMM) 进行虚拟化, 我们可以通过快照技术方 便地保留虚拟机某个时间点的 CPU 状态、 内存状态以及存储数据, 从而轻松实现物理机上 繁琐的全状态备份, 用户可以方便地备份和恢复虚拟机。 目前常见的快照应用主要有两种 : 一是简单的存储快照, 仅备份存储数据, 虚拟机 用户在使用虚拟机过程中可能由于各种原因 ( 病毒、 木马的破坏, 误删除系统文件, 误格式 化等 ) 导致虚拟机镜像损坏或是无法正常启动, 如果通过存储快照在虚拟机正常时备份相 关数据, 可以方便地恢复备份点的页数据 ; 二是存储快照和内存快照相结合, 由于在某些场 景下, 用户需要快速创建或恢复虚拟机 ( 相关业务部署加载繁琐冗长、 业务恢复中断时间 要求高、 批量快速部署虚拟机等 ), 或者为了某些调试需求需要保留当前业务状态 ( 问题定 位, 测试分支选择等 ), 此时仅仅使用存储快照无法满足需求, 因此内存快照的引入弥补了 这方面的不足, 通过 VMM 的能力把虚拟机的内存数据保存成外部存储介质上的内存快照文 件, 方便保存和随时恢复, 同时, 这也是虚拟化条件下带来的便利。
     VMWare(Virtual Machine ware) 是虚拟化解决方案的领导厂商, 目前已经能提供 虚拟机快照总体方案, 包括存储快照和内存快照, 其内存快照是对内存数据的黑盒的全量 拷贝, 生成的快照文件大小与虚拟机内存规格保持一致, 即拥有 1G 内存的虚拟机最终生成 的内存快照文件大小为 1G, 与存储快照一起存放在其分布式存储上 ; 快照恢复时, 也是顺 序读取快照文件进行 1 ∶ 1 内存还原。因此, 快照生成过程和快照恢复过程时间都比较长, 同时, 生成的内存快照文件与虚拟机内存大小一致, 对存储资源也是一种浪费。
     发明内容
     本发明实施例提供一种虚拟机内存快照生成和恢复的方法、 装置及系统, 以缩短 虚拟机内存快照的处理时间且节约存储资源。
     本发明实施例提供如下技术方案 :
     一方面, 本发明实施例提供一种虚拟机内存快照生成方法, 所述方法包括 :
     获取所述虚拟机的当前第 S 内存页 ;
     识别所述当前第 S 内存页的页类型, 所述页类型包括非有效数据页和有效数据 页;当所述当前第 S 内存页为非有效数据页时, 在内存快照文件中记录所述当前第 S 内存页的页类型 ; 当所述当前第 S 内存页为有效数据页时, 在内存快照文件中记录所述当 前第 S 内存页的页类型和页数据。
     另一方面, 本发明实施例提供一种虚拟机内存快照恢复方法, 所述方法包括 :
     获取并解析所述虚拟机的内存快照文件 ;
     当所述内存快照文件中记录的当前第 S 内存页的页类型为非有效数据页时, 在 VMM 内存空间中中记录所述当前第 S 内存页的页类型为非有效数据页 ; 当所述内存快照文 件中记录的当前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空间中中记录所述 当前第 S 内存页的页类型为有效数据页, 并将所述内存快照文件中记录的所述当前第 S 内 存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中。
     另一方面, 本发明实施例提供一种物理主机, 所述物理主机包括 : 硬件层, 运行在 所述硬件层之上的虚拟机监视器 VMM, 以及运行在所述虚拟机监视器 VMM 上的虚拟机, 所述 虚拟机监视器 VMM 中包括内存快照生成模块和内存页识别模块, 其中 :
     所述内存快照生成模块用于 : 获取所述虚拟机的当前第 S 内存页 ; 当所述内存页 识别模块识别所述当前第 S 内存页为非有效数据页时, 在内存快照文件中记录所述当前第 S 内存页的页类型 ; 当所述内存页识别模块识别所述当前第 S 内存页为有效数据页时, 在内 存快照文件中记录所述当前第 S 内存页的页类型和页数据 ; 所述内存页识别模块用于 : 识别所述内存快照生成模块获取的所述当前第 S 内存 页的页类型, 所述页类型包括非有效数据页和有效数据页 ;
     所述硬件层包括存储设备, 所述存储设备用于 : 存储所述内存快照文件。
     另一方面, 本发明实施例提供一种计算机系统, 该系统包括物理主机和网络存储 设备, 其中所述物理主机为本发明实施例提供的物理主机, 用来执行虚拟机内存快照文件 的生成和恢复 ; 所述网络存储设备用于存储所述物理主机的虚拟机内存快照文件。
     可见, 本发明实施例提供的虚拟机内存快照生成和恢复的方法、 装置及系统中, 通 过识别不同的内存页类型, 在内存快照生成过程中, 根据不同的内存页类型执行不同的快 照生成处理, 包括 : 在当前第 S 内存页为非有效数据页时, 在内存快照文件中仅记录所述当 前第 S 内存页的页类型 ; 在当前第 S 内存页为有效数据页时, 在内存快照文件中记录所述当 前第 S 内存页的页类型和页数据 ; 以及, 在内存快照恢复过程中, 根据不同的内存页类型执 行不同的快照恢复处理, 包括 : 当所述内存快照文件中记录的当前第 S 内存页的页类型为 非有效数据页时, 在 VMM 内存空间中记录所述当前第 S 内存页的页类型为非有效数据页 ; 当 所述内存快照文件中记录的当前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空 间中记录所述当前第 S 内存页的页类型为有效数据页, 并将所述内存快照文件中记录的所 述当前第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中, 从而通过本发明实 施例仅保存有效数据, 减少无效数据的备份和恢复, 大大缩短了内存快照的生成和恢复时 间, 减小了内存快照对存储资源的占用。
     附图说明
     为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还可 以根据这些附图获得其他的附图。
     图 1 为本发明实施例的一种虚拟机内存快照生成方法的流程示意图 ;
     图 2 为本发明实施例的另一种虚拟机内存快照生成方法的流程示意图 ;
     图 3 为本发明实施例的再一种虚拟机内存快照生成方法的流程示意图 ;
     图 4 为本发明实施例的一种内存快照文件的逻辑结构示意图 ;
     图 5 为本发明实施例的另一种内存快照文件的逻辑结构示意图 ;
     图 6 为本发明实施例的一种虚拟机内存快照恢复方法的流程示意图 ;
     图 7 为本发明实施例的另一种虚拟机内存快照恢复方法的流程示意图 ;
     图 8 为本发明实施例的再一种虚拟机内存快照恢复方法的流程示意图 ;
     图 9 为本发明实施例的一种物理主机的逻辑结构示意图 ;
     图 10 为本发明实施例的一种计算机系统的逻辑结构示意图 ;
     图 11 为本发明实施例的一种计算机系统的物理部署示意图。 具体实施方式 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。
     本发明实施例一提供一种虚拟机内存快照生成方法, 如图 1 所示, 该方法可以包 括:
     步骤 S101、 获取该虚拟机的当前第 S 内存页。
     需要说明的是, 本发明实施例中引入 “第 S 内存页” 只是为了便于描述, 并非限定 具体哪一个内存页, 应当理解的是, 这里的 S 可以是 1, 2, ...N(N =该虚拟机实际的页数 量 ), 当 S 为 1 时, 表示本步骤中获取的当前内存页是所述虚拟机的第一个内存页 ;
     本步骤可以是顺序获取内存页, 也可以倒序获取内存页, 不做限定。
     步骤 S102、 识别所述当前第 S 内存页的页类型, 所述页类型包括非有效数据页和 有效数据页。
     步骤 S102 可以是, 至少根据 VMM 内存空间中保存的页类型信息, 识别该当前第 S 内存页的页类型, 所述页类型包括非有效数据页和有效数据页。
     具 体 的, 在 一 种 实 现 方 式 下, 步 骤 S102 具 体 为 : 根 据 虚 拟 机 监 视 器 VMM 内 存 空间中保存的页类型信息, 确定这个当前第 S 内存页的页类型, 所述页类型包括气球页 (Balloon)、 需时分配页 (populate on demand, Pod)、 共享页 (share)、 交换页 (swap) 和普 通页 ; 其中, 气球页和需时分配页为非有效数据页, 共享页、 交换页和普通页为有效数据页。 在一种具体实现方式下, 在 VMM 内存空间中维护了内存页类型的结构体变量, 其中普通页 是默认值, 出现其它类型页时会改变其类型并进行标记。在开源虚拟机 Xen 中, 可以通过调 用系统接口从 VMM 内存中获取虚拟机内存页的结构体变量 p2m_type_t 来判断其类型, 其中 p2m_invalid = 0 为气球页, p2m_populate_on_demand = 6 为需时分配页, p2m_ram_paged = 10 为交换页, p2m_ram_ 共享 d = 13 为共享页, p2m_ram_rw = 1 为普通页。
     在另一种实现方式下, 详见图 2, 步骤 S102 可以包括步骤 S201 和步骤 S202, 其中 :
     步骤 S201、 根据所述 VMM 内存空间中保存的页类型信息, 确定所述当前第 S 内存页 的页类型, 所述页类型包括气球页、 需时分配页、 共享页、 交换页和普通页 ;
     步骤 S202、 当所述当前第 S 内存页的页类型为普通页时, 遍历所述当前第 S 内存页 的内容, 确定所述当前第 S 内存页的页类型为零页或非零页 ; 其中, 气球页、 需时分配页和 零页为非有效数据页, 非零页、 共享页和交换页为有效数据页。
     需要说明的是, 本发明实施例所列举的内存页类型是目前虚拟机中可能出现的一 些内存页类型, 有的应用比较多, 例如气球页、 零页和非零页 ; 有的应用比较少 ; 例如共享 页和交换页 ; 需时分配页目前通用性不高, 但在 Xen 开源虚拟机中也有应用。 本发明实施例 以这些页类型为例, 无意局限于这些页类型的识别。 无论目前应用的其它内存页类型, 还是 以后可能出现的内存页类型, 只要应用本发明实施例公开的内存快照生成和恢复方法都应 在本发明保护范围之内。
     步骤 S103、 当所述当前第 S 内存页为非有效数据页时, 在内存快照文件中记录所 述当前第 S 内存页的页类型 ; 当所述当前第 S 内存页为有效数据页时, 在内存快照文件中记 录所述当前第 S 内存页的页类型和页数据。
     相应的, 在一种实现方式下, 其中, 气球页和需时分配页为非有效数据页, 共享页、 交换页和普通页为有效数据页 ; 步骤 S103 具体可以包括 :
     在当前第 S 内存页为气球页时, 在内存快照文件中记录当前第 S 内存页的页类型 为气球页 ;
     在当前第 S 内存页为需时分配页时, 在内存快照文件中记录当前第 S 内存页的页 类型为需时分配页 ;
     在当前第 S 内存页为交换页时, 在内存快照文件中记录当前第 S 内存页的页类型 为交换页, 从内存交换文件中拷贝该交换页的页数据到该内存快照文件中 ;
     在当前第 S 内存页为共享页时, 在内存快照文件中记录当前第 S 内存页的页类型 为共享页, 拷贝该共享页的页数据到该内存快照文件中, 并记录与当前第 S 内存页共享内 存数据的其它内存页的页号 ;
     在当前第 S 内存页为普通页时, 在内存快照文件中记录当前第 S 内存页的页类型 为普通页, 拷贝该普通页的页数据到所述内存快照文件中。
     相应的, 在另一种实现方式下, 其中, 气球页、 需时分配页和零页为非有效数据页, 非零页、 共享页和交换页为有效数据页 ; 步骤 S103 具体可以包括 :
     在当前第 S 内存页为气球页时, 在内存快照文件中记录当前第 S 内存页的页类型 为气球页 ;
     在当前第 S 内存页为需时分配页时, 在内存快照文件中记录当前第 S 内存页的页 类型为需时分配页 ;
     在当前第 S 内存页为零页时, 在内存快照文件记录当前第 S 内存页的页类型为零 页;
     在当前第 S 内存页为非零页时, 在内存快照文件中记录当前第 S 内存页的页类型 为非零页, 拷贝当前第 S 内存页的页数据到该内存快照文件中 ;
     在当前第 S 内存页为交换页时, 在内存快照文件中记录当前第 S 内存页的页类型为交换页, 从内存交换文件中拷贝该交换页的页数据到前述内存快照文件中 ;
     在当前第 S 内存页为共享页时, 在内存快照文件中记录当前第 S 内存页的页类型 为共享页, 拷贝该共享页的页数据到前述内存快照文件中, 并记录与当前第 S 内存页共享 内存数据的其它内存页的页号。
     综上所述, 本发明实施例提供的虚拟机内存快照生成方法, 通过识别不同的内存 页类型, 在内存快照生成过程中, 根据不同的内存页类型执行不同的快照生成处理, 包括 : 在当前第 S 内存页为非有效数据页时, 在内存快照文件中仅记录该当前第 S 内存页的页类 型; 在当前第 S 内存页为有效数据页时, 在内存快照文件中记录该当前第 S 内存页的页类型 和页数据, 从而通过本发明实施例仅保存有效数据, 减少无效数据的备份, 大大缩短了内存 快照的生成时间, 并减小了内存快照文件的大小, 节约了存储资源。
     本发明实施例二提供一种虚拟机内存快照的生成方法, 下面结合图 3 来详细介绍 该虚拟机内存快照生成方法的流程, 包括如下步骤 :
     步骤 300、 流程开始 ;
     该流程的开始可以是由用户触发内存快照操作, 物理主机提供用户接口给最终用 户, 以便于触发内存快照操作 ; 也可以是虚拟机自动触发的, 可以是定时触发, 也可以根据 虚拟机的运行状况等自动触发。 步骤 301、 确定虚拟机实际内存大小、 内存页大小 ( 亦可称为页大小, 一般为 4KB 或 2MB) 等信息, 这些信息用来初始化内存快照文件, 且在虚拟机内存快照恢复时用来判断内 存快照文件的完整性 ;
     需要说明的是, 这里的虚拟机可以是用户通过用户接口所指定的虚拟机, 也可以 是定时触发的虚拟机。
     步骤 302、 初始化内存快照文件, 包括预申请内存快照文件的存储空间和初始化内 存快照文件的结构及初始信息。 所述初始信息指虚拟机内存大小、 内存页大小、 内存页数量 ( 具体的, 根据虚拟机实际内存大小、 内存页大小可以计算出虚拟机实际的内存页数量 )、 以及有效数据起始地址等信息 ;
     优选地, 本发明实施例中提供的内存快照文件结构如图 4 所示, 包括信息段 41 和 数据段 42, 其中信息段 41 包括 : 全局信息 411 和内存页的位图结构体 BITMAP, 所述位图结 构体 BITMAP 是一种通用的顺序数据存储结构, 在本发明实施例中利用该结构体存储内存 页的页号 4121、 页类型 4122 以及数据偏移量 4123。数据段 42 顺序存储有效数据页中的有 效数据, 并与信息段 41 中的数据偏移量 4123 一一对应。 全局信息 411 可以用来记录虚拟机 内存大小、 内存页数量、 内存页大小以及有效数据起始地址等全局类的信息, 这些信息可以 在初始化内存快照文件 302 时写入内存快照, 也可以在内存页处理完成之后再写入内存快 照; 页号 4121 记录每个内存页的页号 ; 页类型 4122 记录对应页号的内存页的页类型标识 ; 数据偏移量 4123 记录其对应的内存页的有效数据在数据段 42 中的偏移量, 即数据段 42 中 记录的有效数据按照信息段 41 中的数据偏移量 4123 来索引, 通过把数据偏移量与所述有 效数据起始地址相加后可以在数据段 42 中找到对应的内存数据。
     需要说明的是, 图 4 提供的内存快照文件结构并无限定仅为此种结构的意思, 只 是举例说明。在另一种实现方式下, 内存快照文件也可以如图 5 所示包含页类型 51 和有效 数据 52 两个字段。其中页类型 51 存储识别出的内存页的类型标识, 所述类型标识唯一标
     识一种页类型, 可以自主定义, 例如 000 代表零页、 001 代表气球页等。有效数据 52 存储有 效数据页的页数据, 所述有效数据页包括非零页、 共享页和交换页。
     值得一提的是, 共享页的共享页号可以根据内存快照文件各个部分存储的信息、 各个部分的容量或其它因素决定其存储位置, 例如如图 5 中有效数据 52 或页类型 51 中 留出部分空间存储所述共享页号, 当然也可以在内存快照中单独划分一个部分存储共享页 号。
     需要说明的是, 根据以上提到的内存快照文件结构, 本领域技术人员可以很容易 想到其它等同替代方式或明显变型方式。例如图 4 中全局信息精简, 仅保存页数量和页大 小; 页号信息也可以不保存等 ; 或者改变内存快照的存储顺序等, 这些等同替代方式或明 显变型方式也应视为本发明的保护范围。
     步骤 303、 顺序选取一个内存页 ;
     可以是, 从第一个内存页开始一一执行内存页识别。
     步骤 304、 根据 VMM 内存空间中保存的内存页类型信息判断当前内存页是否为普 通页, 当判断出选取的内存页不是普通页, 则执行步骤 305 ; 当判断出选取的内存页是普通 页, 则执行步骤 306 ; 在一种实现方式下, 所述内存页类型信息保存在一个页类型结构体中, 该页类型 结构体存储在物理主机的硬件层的内存 memory 中, 具体的, 该页类型结构体存储在 VMM 内 存空间中, 可以通过系统调用获得。 所述 VMM 内存空间是 VMM 为完成正常工作而在物理内存 上划分一块特定区域, 存放了 VMM 在完成虚拟设备模拟、 内存管理以及内存快照生成和恢 复等各项功能所用到的数据结构等相关关键信息, 例如虚拟机内存页类型的结构体变量, 内存共享哈希表以及虚拟机内存与物理内存的一一映射关系等。当 VMM 管理的虚拟机 VM 是多个时, 这个 VMM 内存空间分别划分出独立的部分来存储不同虚拟机 VM 的信息。VMM 可 以通过调用系统接口访问所述 VMM 内存空间。
     步骤 305、 在内存快照文件中, 根据该内存页具体的页类型执行相应的内存快照生 成处理。这里的页类型包括 : 气球页、 需时分配页、 共享页和交换页。
     具体的, 当内存页为气球页时, 在前述内存快照文件 ( 参照图 4) 的页类型 4122 字 段中记录该内存页的页类型为气球页 ; 当内存页为需时分配页时, 在前述内存快照文件的 页类型 4122 字段中记录该内存页的页类型为需时分配页 ; 当内存页为交换页时, 在前述内 存快照文件的页类型 4122 字段中记录该内存页的页类型为交换页, 从内存交换文件中拷 贝该交换页的有效数据到前述内存快照文件的数据段 42 中, 并在数据偏移量 4123 字段中 记录下这些有效数据在数据段 42 中的偏移量 ; 当内存页为共享页时, 在前述内存快照文件 的页类型 4122 字段中记录该内存页的页类型为共享页, 拷贝该共享页的共享数据到前述 内存快照文件的数据段 42 中, 并在数据偏移量 4123 字段中记录下这些共享数据在数据段 42 中的偏移量和与该共享页共享内存数据的其它内存页的页号, 这里的共享页号可以通过 调用系统接口查询 VMM 内存中保存的内存共享哈希表获得。
     步骤 306、 通过遍历内存页内容判断内存页内容是否全为 0。如果为零, 该页即为 零页, 转步骤 307 ; 如果不为零, 该页即为非零页, 转步骤 308 ;
     步骤 307、 在内存快照文件中执行零页的相应处理, 即在所述内存快照文件的页类 型 4122 中记录当前第 S 内存页的页类型为零页, 不拷贝内存数据 ;
     步骤 308、 在内存快照文件中执行非零页的相应处理, 即在所述内存快照文件的页 类型 4122 中记录当前第 S 内存页的页类型为非零页, 并拷贝所述当前第 S 内存页的页数据 到所述内存快照文件的数据段 42 中, 并在数据偏移量 4123 中记录下数据在数据段 42 中的 偏移量。
     步骤 309、 判断是否所有内存页都已处理完 ; 若步骤 309 判断结果为是, 则执行步 骤 310 ; 若步骤 309 若判断结构为否, 则返回到步骤 303 选取下一个内存页继续该内存快照 生成流程。
     可以是, 每执行完一个内存页的内存快照处理都要执行步骤 309 的判断, 可以通 过页号来判断 ; 当内存快照文件中未保存页号等信息时, 可以通过标记内存页为已读或已 处理来判断。
     步骤 310、 输出内存快照文件 ; 输出的内存快照文件可以存储在硬盘 (Disk) 中
     步骤 311、 停止内存快照生成操作。
     可选的, 在本发明实施例中, 当识别内存页为共享页时, 记录所有共享数据的内存 页号, 并拷贝它们共享的内存数据到内存快照文件中, 此时为了提高内存页识别效率, 可以 标记所有共享数据的内存页为已读, 进行内存页识别的时候可以跳过这些标记为已读的共 享页面。 综上所述, 本发明实施例提供的虚拟机内存快照生成方法, 通过初始化一个内存 快照文件, 内存快照文件里具体包括信息段 ( 全局信息、 页号、 页类型、 数据偏移量 ) 和数 据段 ; 然后顺序获取并识别虚拟机的内存页的页类型, 针对不同的页类型在这个内存快照 文件中执行不同的内存快照生成处理, 具体包括 : 当获取的内存页识别为气球页时, 在这个 内存快照文件的页类型字段中记录该内存页的页类型为气球页 ; 当获取的内存页识别为需 时分配页时, 在这个内存快照文件的页类型字段中记录该内存页的页类型为需时分配页 ; 当获取的内存页识别为交换页时, 在这个内存快照文件的页类型字段中记录该内存页的页 类型为交换页, 并从内存交换文件中拷贝交换页的有效数据到该内存快照文件的数据段 中, 并在数据偏移量字段中记录下数据在数据段中的偏移量 ; 当获取的内存页识别为共享 页时, 在该内存快照文件的页类型字段中记录该内存页的页类型为共享页, 拷贝这个共享 页的共享数据到该内存快照文件的数据段中, 并在数据偏移量字段中记录下数据在数据段 中的偏移量和与之共享内存数据的其它内存页的页号, 从而通过本发明实施例仅保存有效 数据, 减少无效数据的备份, 大大缩短了内存快照的生成时间, 并减小了内存快照文件的大 小, 节约了存储资源。
     本发明实施例三提供一种虚拟机内存快照恢复方法, 如图 6 所示, 该方法可以包 括:
     步骤 S401、 获取并解析虚拟机的内存快照文件。
     在一种实现方式下, 本发明实施例提供的内存快照文件结构如图 4 所示, S401 可 以是, 从该内存快照文件中读取并解析如图 4 所示的结构中存储的信息。
     在另一种实现方式下, 本发明实施例提供的内存快照文件也可以如图 5 所示包含 页类型 51 和有效数据 52 两个字段, S401 可以是, 从该内存快照文件中读取并解析如图 5 所 示的结构中存储的信息。
     步骤 S402、 当这个内存快照文件中记录的当前第 S 内存页的页类型为非有效数据
     页时, 在 VMM 内存空间中记录当前第 S 内存页的页类型为非有效数据页 ; 当内存快照文件中 记录的当前第 S 内存页的页类型为有效数据页时, 在 VMM 内存空间中记录当前第 S 内存页 的页类型为有效数据页, 并将内存快照文件中记录的当前第 S 内存页的页数据对应地拷贝 到所述虚拟机的第 S 内存页中。
     具体的, 在一种实现方式下, 非有效数据页包括气球页和需时分配页, 所述有效数 据页包括共享页、 交换页和普通页 ;
     相应的, 步骤 S402 具体可以包括 :
     当内存快照文件中记录的当前第 S 内存页的页类型为气球页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为气球页 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为需时分配页时, 在 VMM 内存 空间中记录当前第 S 内存页的页类型为需时分配页 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为共享页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为共享页, 将该内存快照文件中记录的当前第 S 内存页的 页数据拷贝到虚拟机的第 S 内存页中, 或者, 拷贝到任一与当前第 S 内存页共享数据的内存 页中, 并基于该内存快照文件中记录的页号, 在 VMM 内存空间中建立当前第 S 内存页与前述 页号对应的内存页之间的共享关系 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为交换页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为交换页, 并将该内存快照文件中记录的当前第 S 内存页 的页数据拷贝到新的内存交换文件中 ; 或者, 在 VMM 内存空间中记录当前第 S 内存页的页类 型为普通页, 并将该内存快照文件中记录的当前第 S 内存页的页数据对应地拷贝到虚拟机 的第 S 内存页中 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为普通页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为普通页, 并将该内存快照文件中记录的当前第 S 内存页 的页数据对应地拷贝到虚拟机的第 S 内存页中。
     或者, 在另一种实现方式下, 所述非有效数据页包括气球页、 需时分配页和零页 ; 所述有效数据页包括非零页、 共享页和交换页, 还有以下两种情况 ( 与上述相同的内容, 这 里不再赘述 ) :
     当内存快照文件中记录的当前第 S 内存页的页类型为零页时, 在 VMM 内存空间中 记录当前第 S 内存页的页类型为零页, 并将虚拟机的第 S 内存页内容置为 0 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为非零页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为非零页, 并将该内存快照文件中记录的当前第 S 内存页 的页数据对应地拷贝到虚拟机的第 S 内存页中 ;
     综上所述, 本发明实施例提供的虚拟机内存快照恢复的方法, 通过获取并解析虚 拟机的内存文件, 然后根据内存快照文件中记录的内存页的不同页类型执行不同的快照恢 复处理, 包括 : 当内存快照文件中记录的当前第 S 内存页的页类型为非有效数据页时, 在 VMM 内存空间中记录当前第 S 内存页的页类型为非有效数据页 ; 当内存快照文件中记录的 当前第 S 内存页的页类型为有效数据页时, 在 VMM 内存空间中记录当前第 S 内存页的页类 型为有效数据页, 并将该内存快照文件中记录的当前第 S 内存页的页数据对应地拷贝到虚 拟机的第 S 内存页中, 从而通过本发明实施例仅恢复有效数据, 避免了无效数据的恢复过程, 大大缩短了内存快照的恢复时间。
     图 7 为本发明实施例四提供的一种虚拟机内存快照恢复方法, 该方法步骤 S501 和 步骤 S503 分别与实施例三和四中步骤 S401 和步骤 S402 相同, 只是在步骤 S501 之后加入了 步骤 S502 判断内存快照文件是否完整 : 若否, 停止内存恢复操作 ; 若是, 执行步骤 S503, 即 当所述内存快照文件中记录的当前第 S 内存页的页类型为非有效数据页时, 在所述 VMM 内 存空间中记录所述当前第 S 内存页的页类型为非有效数据页 ; 当所述内存快照文件中记录 的当前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内 存页的页类型为有效数据页, 并将所述内存快照文件中记录的所述当前第 S 内存页的页数 据对应地拷贝到所述虚拟机的第 S 内存页中。
     具体的, 步骤 S502 判断内存快照文件是否完整的方法主要有 :
     方法一 : 如果内存快照中保存了虚拟机内存的全局信息, 包括虚拟机内存大小、 内 存页数量, 内存页大小等, 例如本发明实施例二图 4 所示内存快照文件结构, 在这种情况下 为判断内存快照完整性, 可以判断内存快照中的内存页数量与全局信息的保存的内存页数 量是否一致 ; 或通过内存页数量与内存页大小推算出内存大小 ( 内存页数量与内存页大小 相乘即可得内存大小 ), 再判断推算出的内存大小与全局信息中保存的内存大小是否一致 ; 或数据偏移量指向的有效数据段内容是否存在, 即保存的有效数据是否丢失。如果存在不 一致或不存在的情况, 说明内存快照不完整, 停止内存快照恢复。
     方法二 : 如果内存快照中没有保存虚拟机内存的全局信息, 例如本发明实施例二 中图 5 所示内存快照文件结构, 在这种情况下为判断内存快照完整性, 可以在推算出内存 大小后判断推算的内存大小与虚拟机配置文件中的保存的内存大小是否一致, 如果存在不 一致, 说明内存快照不完整, 停止内存快照恢复。
     需要说明的是, 前述两种判断内存快照完整性的方法是举例说明, 没有限制方法 仅为这两种的意思。内存快照完整性判断依据的是虚拟机内存信息在快照中是否保存完 整, 所有的内存信息都可以进行判断, 只要一种信息不完整, 就停止内存恢复 ; 也可以根据 实际情况只判断重要信息的完整性, 例如可能造成内存恢复后虚拟机异常的信息。本领域 技术人员根据本发明实施例容易推断出其它信息的等同判断方式或组合等同判断方式, 本 发明实施例在此不再赘述。
     如果不进行内存快照完整性判断, 在目前的虚拟机内存快照恢复机制下内存快照 是可能恢复的, 但由于数据的丢失可能会在内存恢复后出现虚拟机异常。
     综上所述, 本发明实施例提供的虚拟机内存快照恢复的方法, 通过获取并解析虚 拟机的内存文件 ; 然后根据内存快照文件中记录的内存页的不同页类型执行不同的快照恢 复处理, 包括 : 当内存快照文件中记录的当前第 S 内存页的页类型为非有效数据页时, 在 VMM 内存空间中记录当前第 S 内存页的页类型为非有效数据页 ; 当内存快照文件中记录的 当前第 S 内存页的页类型为有效数据页时, 在 VMM 内存空间中记录当前第 S 内存页的页类 型为有效数据页, 并将该内存快照文件中记录的当前第 S 内存页的页数据对应地拷贝到虚 拟机的第 S 内存页中, 从而通过本发明实施例仅恢复有效数据, 避免了无效数据的恢复过 程, 大大缩短了内存快照的恢复时间。
     进一步的, 在内存快照恢复之前进行内存快照文件完整性的判断, 避免了无谓的 内存恢复操作, 提高了内存快照恢复操作的可靠性。图 8 为本发明实施例五提供的虚拟机内存快照恢复方法的具体流程图。该方法包括: 步骤 600、 流程开始 ;
     步骤 601、 读取并解析内存快照文件 ;
     步骤 602、 判断该内存快照文件是否完整, 若该内存快照文件不完整, 则转步骤 607 ; 若该内存快照文件完整, 则转步骤 603。
     步骤 603、 顺序选取内存快照文件中存储的一条内存页信息, 所述内存页信息包括 内存页类型、 有效数据或有效数据偏移量等 ( 参照图 4 或图 5 所示的内存快照文件结构 ) ;
     步骤 604、 根据该内存页信息中的页类型识别当前内存页的页类型 ;
     步骤 605、 根据所述页类型执行相应的内存快照恢复处理, 具体可以包括 :
     如果页类型为气球页时, 在 VMM 内存空间中记录该内存页的页类型为气球页 ;
     如果页类型为需时分配页时, 在 VMM 内存空间中记录该内存页的页类型为需时分 配页 ;
     如果页类型为零页时, 在 VMM 内存空间中记录该内存页的页类型为零页, 并将虚 拟机的对应内存页内容置为 0 ;
     如果页类型为非零页时, 在 VMM 内存空间中记录该内存页的页类型为非零页, 并 根据内存快照文件中直接存储的有效数据, 或者根据数据偏移量计算而获得的有效数据地 址, 将该内存的有效数据拷贝到对应的虚拟机内存页中 ;
     如果页类型为共享页时, 在 VMM 内存空间中记录该内存页的页类型为共享页, 根 据内存快照文件中直接存储的有效数据, 或者根据数据偏移量计算而获得的有效数据地 址, 将该内存的有效数据拷贝到对应的虚拟机内存页中, 并在 VMM 内存空间记录的内存共 享哈希表中建立各个共享数据的内存页之间的共享关系 ;
     如果页类型为交换页时, 在 VMM 内存空间中记录该内存页的页类型为交换页, 根 据内存快照文件中直接存储的有效数据, 或者根据数据偏移量计算而获得的有效数据地 址, 将该内存的有效数据拷贝到一个新的交换文件中 ; 或者, 在 VMM 保存的页类型结构体中 记录该内存页的页类型为零页或非零页, 并将有效数据拷贝到对应的虚拟机内存页中。
     可选的, 步骤 605 在 VMM 内存空间中记录内存页的类型, 可以是在内存快照生成时 从中获取内存页类型的那个页类型结构体中恢复内存页的页类型标识 ; 也可以在 VMM 内存 空间中重新建立一个页类型结构体, 在其中记录内存页的类型, 此时原先的页类型结构体 不再使用。
     步骤 606、 每执行完一条内存快照恢复操作判断是否所有页都处理完, 若是, 则执 行步骤 607 ; 若否返回到步骤 603 继续该流程。
     步骤 607、 停止内存恢复操作。
     值得一提的是, 与本发明实施例提供的内存快照生成方法类似, 内存快照恢复过 程可以是由用户触发的, 物理主机提供内存恢复接口给最终用户, 以便于触发内存快照恢 复操作 ; 也可以是虚拟机自动触发的, 可以是定时触发, 也可以根据虚拟机的运行状况等自 动触发。
     需要说明的是, 当内存页的页类型为交换页时, 根据交换页的特点, 既可以将交换 页的页数据拷贝到内存交换文件中, 所述内存交换文件可以是新的内存交换文件, 而不是
     内存快照生成时从中拷贝数据的那个内存交换文件, 这样交换页仍然是交换页 ; 或者, 也可 以将交换页的页数据拷贝到对应的内存页中, 此时交换页就成了一个普通页面, 依据交换 页中数据是否为零可以将其页类型设置为零页或非零页, 当然也可以根据本发明实施例三 设置为普通页。
     另外, 需要说明的是, 本发明实施例三、 四和五中所述内存快照文件可以是本发明 实施例二中图 4、 图 5 或其它等同替代或明显变形的内存快照文件结构。
     综上所述, 本发明实施例提供的虚拟机内存快照恢复的方法, 通过获取并解析虚 拟机的内存文件 ; 然后判断内存快照文件的完整性 ; 对于完整的内存快照文件根据该内存 快照文件中记录的内存页的不同页类型执行不同的快照恢复处理, 包括 : 当该内存页的页 类型为气球页时, 在 VMM 内存空间中记录该内存页的页类型为气球页 ; 当该内存页的页类 型为需时分配页时, 在 VMM 内存空间中记录该内存页的页类型为需时分配页 ; 当该内存页 的页类型为零页时, 在 VMM 内存空间中记录该内存页的页类型为零页, 并将虚拟机的对应 内存页内容置为 0 ; 当该内存页的页类型为非零页时, 在 VMM 内存空间中记录该内存页的页 类型为非零页, 并根据内存快照文件中直接存储的有效数据, 或者根据数据偏移量计算而 获得的有效数据地址, 将该内存的有效数据拷贝到对应的虚拟机内存页中 ; 当该内存页的 页类型为共享页时, 在 VMM 内存空间中记录该内存页的页类型为共享页, 根据内存快照文 件中直接存储的有效数据, 或者根据数据偏移量计算而获得的有效数据地址, 将该内存的 有效数据拷贝到对应的虚拟机内存页中, 并在 VMM 内存空间记录的内存共享哈希表中建立 各个共享数据的内存页之间的共享关系 ; 当该内存页的页类型为交换页时, 在 VMM 内存空 间中记录该内存页的页类型为交换页, 根据内存快照文件中直接存储的有效数据, 或者根 据数据偏移量计算而获得的有效数据地址, 将该内存的有效数据拷贝到一个新的交换文件 中; 或者, 在 VMM 保存的页类型结构体中记录该内存页的页类型为零页或非零页, 并将有效 数据拷贝到对应的虚拟机内存页中, 从而通过本发明实施例仅恢复有效数据, 避免了无效 数据的恢复过程, 大大缩短了内存快照的恢复时间, 并且在内存快照恢复之前进行内存快 照文件完整性的判断, 避免了无谓的内存恢复操作, 提高了内存快照恢复操作的可靠性。
     本发明实施例六还提供一种物理主机, 参照图 9, 所述物理主机包括 : 硬件层 100, 运行在硬件层 100 之上的虚拟机监视器 VMM200, 以及运行在虚拟机监视器 VMM200 上的虚拟 机 300, 虚拟机监视器 VMM200 中包括内存快照生成模块 210 和内存页识别模块 220, 其中 :
     内存快照生成模块 210 用于 : 获取虚拟机的当前第 S 内存页 ; 当内存页识别模块 220 识别当前第 S 内存页为非有效数据页时, 在内存快照文件中记录当前第 S 内存页的页类 型; 当内存页识别模块 220 识别当前第 S 内存页为有效数据页时, 在内存快照文件中记录当 前第 S 内存页的页类型和页数据 ;
     需要说明的是, 这里的内存快照文件可以是存储在本发明实施例的物理主机的硬 件层 100 所包括的存储设备上, 但在本发明实施例六中, 并没有限定内存快照文件必须存 储在所述物理主机的硬件层 100 上的意思。内存快照文件可以存储在硬件层 100 的存储设 备, 如硬盘 Disk 130 中, 也可以存储在移动存储设备上, 如 U 盘或移动硬盘, 也可以是存储 在与本发明实施例的物理主机具有通信连接的外部网络存储设备上。
     内存页识别模块 210 用于 : 识别内存快照生成模块 210 获取的当前第 S 内存页的 页类型, 所述页类型包括非有效数据页和有效数据页 ;具体的, 在一种实现方式下, 内存页识别模块 210 具体用于 : 根据 VMM 内存空间中 保存的页类型信息, 识别当前第 S 内存页的页类型, 所述页类型包括气球页、 需时分配页、 共享页、 交换页和普通页 ; 其中, 气球页和需时分配页为非有效数据页, 共享页、 交换页和普 通页为有效数据页 ;
     或者, 在另一种实现方式下, 内存页识别模块 210 具体用于 : 根据 VMM 内存空间中 保存的页类型信息, 识别当前第 S 内存页的页类型, 所述页类型包括气球页、 需时分配页、 共享页、 交换页和普通页 ; 当当前第 S 内存页的页类型为普通页时, 遍历所述当前第 S 内存 页的内容, 根据遍历的结果 ( 内存页内容全为 0 或不全为 0) 确定所述当前第 S 内存页的页 类型为零页或非零页 ; 其中, 气球页、 需时分配页和零页为非有效数据页, 非零页、 共享页和 交换页为有效数据页。
     进一步的, 本发明实施例提供的物理主机中, 硬件层 100 包括存储设备, 如硬盘 130, 所述存储设备用于 : 存储所述内存快照文件。
     此外, 本发明实施例也不对硬件层 100 的组成作任何限定, 硬件层 100 可以包括 存储设备, 如硬盘 130, 也可以不包括硬盘 130, 在一种较优实现方式下, 该物理主机硬件层 100 可以包括处理器 110、 物理内存 120、 硬盘 130 以及网络接口设备 140, 其中处理器 110 可以是一个, 也可以是多个 ; 网络接口设备 140 可以是网络适配器或网卡, 用于跟任何可连 接的网络做连接, 例如互联网 (Internet)、 企业网等。在另一种实现方式下, 硬件层可以不 包括硬盘 130( 参见系统实施例 )。虚拟机 VM300 可以包括虚拟处理器 310、 虚拟内存 320、 虚拟硬盘 330 以及客户操作系统 340, 其中虚拟内存 320 的逻辑内存页与物理内存 120 的物 理内存页之间存在一一映射关系, 本发明实施例要生成的内存快照即是针对与该虚拟内存 对应的物理内存 ; 客户操作系统 (Guest Operation System, Guest OS)340 是运行在虚拟处 理器 310、 虚拟内存 320、 虚拟硬盘 330 等虚拟设备之上的操作系统。
     需要说明的是, 图 9 所示虚拟机监视器 VMM200 运行在硬件层 100 之上, 并无限定 的意思, 实际上虚拟机监视器 VMM 可以直接运行在硬件层之上 ; 虚拟机监视器 VMM 也可以直 接运行在宿主操作系统 (Host Operation System, Host OS) 之上, 相应的, 宿主操作系统可 以运行在硬件层之上, 换言之, 虚拟机监视器 VMM 可以间接地运行在硬件层之上。
     需要说明的是, 本发明实施例提供的物理主机可以是物理计算机, 具体可以是个 人计算机 PC、 笔记本电脑 laptop、 工作站 Workstation、 服务器 Server、 大型机 Mainframe 或者超级计算机 Supercomputer 等等。
     另外, 本发明实施例七还提供一种物理主机, 参照图 9, 该物理主机除前述组成设 备之外, 在虚拟机监视器 VMM200 中还可以包括内存快照恢复模块 230。
     该内存快照恢复模块 230 用于 : 获取并解析该虚拟机的内存快照文件 ; 当该内存 快照文件中记录的当前第 S 内存页的页类型为非有效数据页时, 在 VMM 内存空间中记录当 前第 S 内存页的页类型为非有效数据页 ; 当该内存快照文件中记录的当前第 S 内存页的页 类型为有效数据页时, 在 VMM 内存空间中记录当前第 S 内存页的页类型为有效数据页, 并将 该内存快照文件中记录的所述当前第 S 内存页的页数据对应地拷贝到虚拟机的第 S 内存页 中。
     具体的, 在一种实现方式下, 所述非有效数据包括气球页和需时分配页, 所述有效 数据页包括共享页、 交换页和普通页 ;相应的, 该内存快照恢复模块 230 具体用于 :
     当内存快照文件中记录的当前第 S 内存页的页类型为气球页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为气球页 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为需时分配页时, 在 VMM 内存 空间中记录当前第 S 内存页的页类型为需时分配页 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为共享页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为共享页, 将该内存快照文件中记录的当前第 S 内存页的 页数据拷贝到虚拟机的第 S 内存页中, 或者, 拷贝到任一与当前第 S 内存页共享数据的内存 页中, 并基于该内存快照文件中记录的页号, 在 VMM 内存空间中建立当前第 S 内存页与前述 页号对应的内存页之间的共享关系 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为交换页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为交换页, 并将该内存快照文件中记录的当前第 S 内存页 的页数据拷贝到新的内存交换文件中 ; 或者, 在 VMM 内存空间中记录当前第 S 内存页的页类 型为普通页, 并将该内存快照文件中记录的当前第 S 内存页的页数据对应地拷贝到虚拟机 的第 S 内存页中 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为普通页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为普通页, 并将该内存快照文件中记录的当前第 S 内存页 的页数据对应地拷贝到虚拟机的第 S 内存页中。
     或者, 在另一种实现方式下, 所述非有效数据页包括气球页、 需时分配页和零页 ; 所述有效数据页包括非零页、 共享页和交换页 :
     相应的, 该内存快照恢复模块 230 具体用于 :
     当内存快照文件中记录的当前第 S 内存页的页类型为气球页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为气球页 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为需时分配页时, 在 VMM 内存 空间中记录当前第 S 内存页的页类型为需时分配页 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为共享页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为共享页, 将该内存快照文件中记录的当前第 S 内存页的 页数据拷贝到虚拟机的第 S 内存页中, 或者, 拷贝到任一与当前第 S 内存页共享数据的内存 页中, 并基于该内存快照文件中记录的页号, 在 VMM 内存空间中建立当前第 S 内存页与前述 页号对应的内存页之间的共享关系 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为交换页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为交换页, 并将该内存快照文件中记录的当前第 S 内存页 的页数据拷贝到新的内存交换文件中 ; 或者, 在 VMM 内存空间中记录当前第 S 内存页的页类 型为普通页, 并将该内存快照文件中记录的当前第 S 内存页的页数据对应地拷贝到虚拟机 的第 S 内存页中 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为零页时, 在 VMM 内存空间中 记录当前第 S 内存页的页类型为零页, 并将虚拟机的第 S 内存页内容置为 0 ;
     当内存快照文件中记录的当前第 S 内存页的页类型为非零页时, 在 VMM 内存空间 中记录当前第 S 内存页的页类型为非零页, 并将该内存快照文件中记录的当前第 S 内存页的页数据对应地拷贝到虚拟机的第 S 内存页中。
     综上所述, 以上发明实施例提供的物理主机, 通过内存快照生成模块获取所述虚 拟机的当前第 S 内存页, 然后通过内存页识别模块进行当前第 S 内存页的页类型识别, 当识 别出当前第 S 内存页为非有效数据页时, 在内存快照文件中记录该当前第 S 内存页的页类 型; 当识别出当前第 S 内存页为有效数据页时, 在内存快照文件中记录该当前第 S 内存页的 页类型和页数据, 从而通过以上发明实施例仅保存有效数据, 避免了无效数据的备份, 大大 缩短了内存快照的生成时间, 减小了内存快照对存储资源的占用。
     进一步的, 通过内存快照恢复模块获取并解析所述虚拟机的内存快照文件 ; 当所 述内存快照文件中记录的当前第 S 内存页的页类型为非有效数据页时, 在所述 VMM 内存空 间中记录所述当前第 S 内存页的页类型为非有效数据页 ; 当所述内存快照文件中记录的当 前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空间中记录所述当前第 S 内存页 的页类型为有效数据页, 并将所述内存快照文件中记录的所述当前第 S 内存页的页数据对 应地拷贝到所述虚拟机的第 S 内存页中, 从而通过以上发明实施例仅恢复有效数据, 避免 了无效数据的恢复过程, 大大缩短了内存快照的恢复时间。
     图 10 为本发明实施例八提供的一种计算机系统的逻辑结构图, 该系统包括 : 物理 主机 1、 物理主机 2、 以及一个网络存储设备 500, 其中 : 物理主机 1 和物理主机 2 为本发明 实施例六或七中所述的物理主机, 包括硬件层、 VMM 和 VM1 到 VMn, 其中 n 大于或等于 1, 换 言之, VMM 上可以宿主一个或多个 VM ; 网络存储设备 500 用于存储物理主机 1 或物理主机 2 上所宿主的虚拟机的内存快照文件。
     物理主机 1 和物理主机 2 通过各自的网络接口设备 1 和网络接口设备 2 分别与互 联网 400 相连, 然后可以通过互联网 400 将虚拟机的内存快照文件存储到网络存储设备 500 上。
     需要说明的是, 本发明实施例中提供的系统其中的内存快照文件可以只存储在网 络存储设备上, 也可以同时存储在网络存储设备和物理主机硬件层的存储设备中, 不做限 定。
     图 11 为本发明实施九提供的计算机系统的网络拓扑图, 其中物理主机 1 和物理主 机 2 通过互联网 400 与网络存储设备 500 相连。
     可选的, 所述网络存储设备可以采用中心化存储模式, 也可以采用分布式存储模 式。网络存储设备可以是一个, 采用中心化存储模式 ; 也可以是多个, 采用单个存储模式或 分布式存储模式。所述中心化存储模式指一个内存快照文件存储在一台网络存储设备里 ; 所述分布式存储模式指一个内存快照文件存储在多台网络存储设里。 后者更适用于物理主 机比较多、 内存快照文件产生比较多的情况下。
     综上所述, 本发明实施例提供的虚拟机内存快照生成和恢复的系统中, 通过识别 不同的内存页类型, 在内存快照生成过程中, 根据不同的内存页类型执行不同的快照生成 处理, 包括 : 在当前第 S 内存页为非有效数据页时, 在内存快照文件中仅记录所述当前第 S 内存页的页类型 ; 在当前第 S 内存页为有效数据页时, 在内存快照文件中记录所述当前第 S 内存页的页类型和页数据 ; 以及, 在内存快照恢复过程中, 根据不同的内存页类型执行不同 的快照恢复处理, 包括 : 当所述内存快照文件中记录的当前第 S 内存页的页类型为非有效 数据页时, 在 VMM 内存空间中记录所述当前第 S 内存页的页类型为非有效数据页 ; 当所述内存快照文件中记录的当前第 S 内存页的页类型为有效数据页时, 在所述 VMM 内存空间中记 录所述当前第 S 内存页的页类型为有效数据页, 并将所述内存快照文件中记录的所述当前 第 S 内存页的页数据对应地拷贝到所述虚拟机的第 S 内存页中, 从而通过本发明实施例仅 保存有效数据, 减少无效数据的备份和恢复, 大大缩短了内存快照的生成和恢复时间, 减小 了内存快照对存储资源的占用。
     举个具体例子, 桌面云环境下的典型 Windows 虚拟机, 虚拟机全部内存为 4G, 在一 般业务场景下零页在虚拟机全部内存中平均占比达到 50%左右, 同时气泡页也占虚拟机全 部内存的 10%左右, 此时若运用本发明实施例提供的内存快照生成和恢复技术, 内存快照 的生成和恢复时间能缩短为现有技术实现方式的 40%左右, 同时, 内存快照文件的大小由 原来的 4G 减小为 1.61G( 内存快照文件中的除内存页数据之外的其它数据大约为 10M)。
     进一步的, 通过本发明实施例提供的网络存储设备存储内存快照文件, 避免了存 在大量内存快照文件时, 本地存取空间不足的问题 ; 如果同时采用分布式网络存储模式也 可以解决中心化存储模式的存取瓶颈的问题。
     本领域普通技术人员可以理解实现前述实施例方法中的全部或部分流程, 是可以 通过计算机程序来指令相关的硬件 ( 如处理器 ) 来完成, 所述的程序可存储于一计算机可 读取存储介质中, 该程序在执行时, 可包括如前述各方法的实施例的流程。其中, 所述的 存储介质可为磁碟、 光盘、 只读存储记忆体 (Read-Only Memory, ROM) 或随机存储记忆体 (Random Access Memory, RAM) 等。
     以上所述仅是本发明的具体实施方式, 应当指出, 对于本技术领域的普通技术人 员来说, 在不脱离本发明原理的前提下, 还可以做出若干改进和润饰, 这些改进和润饰也应 视为本发明的保护范围。

一种虚拟机内存快照生成和恢复方法、装置及系统.pdf_第1页
第1页 / 共26页
一种虚拟机内存快照生成和恢复方法、装置及系统.pdf_第2页
第2页 / 共26页
一种虚拟机内存快照生成和恢复方法、装置及系统.pdf_第3页
第3页 / 共26页
点击查看更多>>
资源描述

《一种虚拟机内存快照生成和恢复方法、装置及系统.pdf》由会员分享,可在线阅读,更多相关《一种虚拟机内存快照生成和恢复方法、装置及系统.pdf(26页珍藏版)》请在专利查询网上搜索。

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