CN114138424A - 一种虚拟机内存快照生成方法、装置及电子设备 - Google Patents
一种虚拟机内存快照生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN114138424A CN114138424A CN202210115374.2A CN202210115374A CN114138424A CN 114138424 A CN114138424 A CN 114138424A CN 202210115374 A CN202210115374 A CN 202210115374A CN 114138424 A CN114138424 A CN 114138424A
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual machine
- data
- page
- memory page
- 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 57
- 230000010354 integration Effects 0.000 claims abstract description 19
- 230000008859 change Effects 0.000 claims abstract description 10
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 6
- 230000005012 migration Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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/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/45562—Creating, deleting, cloning virtual machine instances
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种虚拟机内存快照生成方法、装置及电子设备,该方法包括:获取当前虚拟机的内存数据;分析内存数据,以确定虚拟机中每个内存页对应的内存数据;针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;当虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为最新内存数据;对所有存储单元最终存储的内存数据进行数据整合,以得到当前虚拟机的内存快照。通过按照内存页的地址信息,将不同内存页的内存数据存储到固定的存储单元,且可以在指定存储单元中实现内存数据的更新,以避免内存快照文件出现文件过大问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种虚拟机内存快照生成方法、装置及电子设备。
背景技术
内存快照是虚拟机运行时刻的内存副本,如果虚拟机系统发生异常甚至崩溃时,用户可以通过使用内存快照将系统恢复到快照时的状态,以恢复虚拟机的运行状态。
在现有技术中,通常是实时采集虚拟机的内存信息,然后再不断地将这些内存信息写入内存快照文件。当已经导出的内存页在虚拟机内发生了状态变化时,重新导出变化后的内存页,并其写入文件的末尾,这样就导致同一个地址的内存页的内存数据在内存快照中可能存在多份,导致内存快照文件出现文件过大问题。
发明内容
本申请提供一种虚拟机内存快照生成方法、装置及电子设备,以解决现有技术导致内存快照文件出现文件过大问题等缺陷。
本申请第一个方面提供一种虚拟机内存快照生成方法,包括:
获取当前虚拟机的内存数据;
分析所述内存数据,以确定所述虚拟机中各内存页对应的内存数据;
针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;
当所述虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为所述最新内存数据;
对所有存储单元最终存储的内存数据进行数据整合,以得到所述当前虚拟机的内存快照。
可选的,在获取所述当前虚拟机的内存数据之前,所述方法还包括:
获取所述当前虚拟机的配置信息;
根据所述当前虚拟机的配置信息,在内存快照存储区中划分出用于存储所述当前虚拟机的内存快照的目标存储空间;其中,所述目标存储空间包括多个存储单元。
可选的,所述根据所述当前虚拟机的配置信息,在内存快照存储区中划分出用于存储所述当前虚拟机内存快照的目标存储空间,包括:
根据当前虚拟机的配置信息所表征的内存页数量,确定所述当前虚拟机的内存快照的最大空间占用量;
按照所述内存快照的最大空间占用量,在内存快照存储区中划分出用于存储所述当前虚拟机的内存快照的目标存储空间。
可选的,所述针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元,包括:
针对每个内存页,根据该内存页的地址信息,在所述当前虚拟机的内存快照的目标存储空间中定位该内存页的目标存储单元;
将该内存页的内存数据存储到所述目标存储单元。
可选的,在对所有存储单元最终存储的内存数据进行数据整合之前,所述方法还包括:
判断所述当前虚拟机的内存快照的目标存储空间当前是否存在空的存储单元;
若所述当前虚拟机的内存快照的目标存储空间当前不存在空的存储单元,则执行所述对所有存储单元最终存储的内存数据进行数据整合的步骤;
否则返回到所述获取当前虚拟机的内存数据的步骤。
可选的,所述分析所述内存数据,以确定所述虚拟机中每个内存页对应的内存数据,包括:
从所述内存数据中提取内存页标识信息;
根据所述内存页标识信息,确定各所述内存数据所对应的内存页。
可选的,所述内存数据包括:内存页的地址信息和该内存页的状态信息。
本申请第二个方面提供一种虚拟机内存快照生成装置,包括:
获取模块,用于获取当前虚拟机的内存数据;
分析模块,用于分析所述内存数据,以确定所述虚拟机中各内存页对应的内存数据;
存储模块,用于针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;
更新模块,用于当所述虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为所述最新内存数据;
生成模块,用于对所有存储单元最终存储的内存数据进行数据整合,以得到所述当前虚拟机的内存快照。
可选的,所述装置还包括:
空间管理模块,用于获取所述当前虚拟机的配置信息;根据所述当前虚拟机的配置信息,在内存快照存储区中划分出用于存储所述当前虚拟机的内存快照的目标存储空间;其中,所述目标存储空间包括多个存储单元。
可选的,所述空间管理模块,具体用于:
根据当前虚拟机的配置信息所表征的内存页数量,确定所述当前虚拟机的内存快照的最大空间占用量;
按照所述内存快照的最大空间占用量,在内存快照存储区中划分出用于存储所述当前虚拟机的内存快照的目标存储空间。
可选的,所述存储模块,具体用于:
针对每个内存页,根据该内存页的地址信息,在所述当前虚拟机的内存快照的目标存储空间中定位该内存页的目标存储单元;
将该内存页的内存数据存储到所述目标存储单元。
可选的,所述生成模块,还用于:
判断所述当前虚拟机的内存快照的目标存储空间当前是否存在空的存储单元;
若所述当前虚拟机的内存快照的目标存储空间当前不存在空的存储单元,则执行所述对所有存储单元最终存储的内存数据进行数据整合的步骤;
否则返回到所述获取当前虚拟机的内存数据的步骤。
可选的,所述分析模块,具体用于:
从所述内存数据中提取内存页标识信息;
根据所述内存页标识信息,确定各所述内存数据所对应的内存页。
可选的,所述内存数据包括:内存页的地址信息和该内存页的状态信息。
本申请第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请技术方案,具有如下优点:
本申请提供一种虚拟机内存快照生成方法、装置及电子设备,该方法包括:获取当前虚拟机的内存数据;分析内存数据,以确定虚拟机中每个内存页对应的内存数据;针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;当虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为最新内存数据;对所有存储单元最终存储的内存数据进行数据整合,以得到当前虚拟机的内存快照。上述方案提供的方法,通过按照内存页的地址信息,将不同内存页的内存数据存储到固定的存储单元,且可以在指定存储单元中实现内存数据的更新,以避免内存快照文件出现文件过大问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例基于的虚拟机内存快照生成系统的结构示意图;
图2为本申请实施例提供的虚拟机内存快照生成方法的流程示意图;
图3为本申请实施例提供的示例性的虚拟机内存快照生成方法的流程示意图;
图4为本申请实施例提供的示例性的内存数据结构图;
图5为本申请实施例提供的虚拟机内存快照生成装置的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
云计算可以为企业提供按需分配的计算资源,现代企业IT基础架构正逐步的由传统架构向云上迁移,云计算通过虚拟化技术可以充分利用昂贵的硬件资源并且还可以隔离硬件体系结构和软件系统之间的依赖关系,改进系统的安全性能,提高计算资源的利用率。虚拟服务器易于扩展和创建,其根据客户需求按需分配所需的硬件基础设施,达到客户业务快速部署、减少客户业务上线的时间及节约客户成本的目的。libvirt提供了一套管理虚拟机的API,其中包括对虚拟机创建内存快照的接口,QEMU中提供了对虚拟机创建内存快照的方法,通过创建内存快照可以保存虚拟机当前的运行状态。创建内存快照时,QEMU将虚拟机的内存数据导出到文件中。由于创建快照时虚拟机的内存中不断的有脏数据产生,而产生的脏数据又需要重新的导出,所以导致创建虚拟机时导出的内存快照文件大小会大于虚拟机实际的内存大小,如果要导出速度慢那么脏数据就越多,虚拟机的内存快照文件大小可能远大于虚拟机的内存规格。
虚拟机的内存快照文件包含虚拟机各硬件的状态,虚拟机内存的状态,QEMU通过迁移功能将设备状态内存状态通过写文件的方式发送到外部,libvirt接收到QEMU发送的数据通过iohelper写入外部文件中。iohelper使用顺序写的方式将QEMU发出的虚拟机状态数据写入快照文件。由于快照过程中虚拟机是运行的状态,所以会有内存的脏数据产生,同一个地址的内存可能会反复的导出,这样就导致了内存快照文件大小的不可控。其中,虚拟机在迁移时顺序遍历将内存数据迁移到外部,迁移完成的内存空间又由于虚拟机内部的运行发生改变,需要重新迁移发生改变的内存数据,这些内存数据被称之为脏数据。
针对上述问题,本申请实施例提供的虚拟机内存快照生成方法、装置及电子设备,通过获取当前虚拟机的内存数据;分析内存数据,以确定虚拟机中每个内存页对应的内存数据;针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;当虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为最新内存数据;对所有存储单元最终存储的内存数据进行数据整合,以得到当前虚拟机的内存快照。即通过按照内存页的地址信息,将不同内存页的内存数据存储到固定的存储单元,且可以在指定存储单元中实现内存数据的更新,以避免内存快照文件出现文件过大问题。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
首先,对本申请所基于的虚拟机内存快照生成系统的结构进行说明:
本申请实施例提供的虚拟机内存快照生成方法、装置及电子设备,适用于管理虚拟机的内存数据,并生成对应的内存快照文件。如图1所示,为本申请实施例基于的虚拟机内存快照生成系统的结构示意图,主要包括数据采集装置和虚拟机内存快照生成装置。具体地,基于数据采集装置采集当前虚拟机的内存数据,并将采集到的内存数据发送到虚拟机内存快照生成装置,以基于该装置根据得到的内存数据,生成该虚拟机的内存快照。
本申请实施例提供了一种虚拟机内存快照生成方法,用于管理虚拟机的内存数据,并生成对应的内存快照文件。本申请实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于为虚拟机生成内存快照的电子设备。
如图2所示,为本申请实施例提供的虚拟机内存快照生成方法的流程示意图,该方法包括:
步骤201,获取当前虚拟机的内存数据。
具体地,可以基于虚拟机管理工具libvirt,采集当前虚拟机的内存数据。
其中,内存数据包括内存页的地址信息和该内存页的状态信息。
步骤202,分析内存数据,以确定虚拟机中各内存页对应的内存数据。
需要说明的是,虚拟机内存由多个内存页组成,内存数据具体可以指某个内存页的内存数据。
具体地,在一实施例中,可以从内存数据中提取内存页标识信息;根据内存页标识信息,确定各内存数据所对应的内存页。
其中,内存页标识信息可以是内存页的地址信息,也可以是内存页的序号标记等。
具体地,通过对得到的若干条内存数据进行数据分析,以确定每条内存数据属于哪个内存页,即确定虚拟机中各内存页对应的内存数据,以使得到的内存数据能够按照内存页进行区分。
步骤203,针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元。
具体地,可以预先为该虚拟机设定各个内存页与存储单元之间的对应关系。当得到某个内存页的内存数据时,可以根据该内存页的地址信息及各个内存页与存储单元之间的对应关系,在多个存储单元中定位目标存储单元,进而将该内存页的内存数据存储到目标存储单元。
步骤204,当虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为最新内存数据。
需要说明的是,由于虚拟机是开机状态,虚拟机内存中的数据会持续的变化,在基于虚拟机管理工具迁出一部分内存后,这部分内存依然可能发生变化,导致需要对变化的内存页重新进行迁移,以得到更新后的内存数据。
具体地,在得到状态发生变化的内存页的最新内存数据后,再次根据该内存页的地址信息,定位目标存储单元,然后对该目标存储单元当前存储的内存数据进行数据剔除,并将最新内存数据存储到该目标存储单元,以覆盖原有的内存数据。
步骤205,对所有存储单元最终存储的内存数据进行数据整合,以得到当前虚拟机的内存快照。
具体地,可以按照预设的内存快照生成规则,对所有存储单元最终存储的内存数据进行数据整合,以得到当前虚拟机的内存快照。
在上述实施例的基础上,作为一种可实施的方式,在一实施例中,在获取当前虚拟机的内存数据之前,该方法还包括:
步骤301,获取当前虚拟机的配置信息;
步骤302,根据当前虚拟机的配置信息,在内存快照存储区中划分出用于存储当前虚拟机的内存快照的目标存储空间。
其中,目标存储空间包括多个存储单元。
需要说明的是,当前虚拟机的配置信息至少包括内存规格,也可以包括其他可以影响内存快照文件大小的虚拟机配置参数,如硬件配置等。
具体地,可以根据当前虚拟机的配置信息,对虚拟机内存快照文件大小进行限定,根据内存快照文件大小的限定结果,在内存快照存储区中划分出用于存储当前虚拟机的内存快照的目标存储空间。其中,内存快照存储区可以是用于生成虚拟机内存快照的电子设备的存储空间。
进一步地,在一实施例中,可以根据当前虚拟机的配置信息所表征的内存页数量,确定当前虚拟机的内存快照的最大空间占用量;按照内存快照的最大空间占用量,在内存快照存储区中划分出用于存储当前虚拟机的内存快照的目标存储空间。
具体地,可以根据当前虚拟机的配置信息中的内存规格,确定当前虚拟机的内存页数量,然后根据每条内存数据的标准大小和内存页数量,确定当前虚拟机的内存快照的最大空间占用量,然后再将内存快照的最大空间占用量作为目标存储空间需求量,最后按照目标存储空间需求量,在内存快照存储区中划分出对应规格的目标存储空间。
相应地,在一实施例中,针对每个内存页,可以根据该内存页的地址信息,在当前虚拟机的内存快照的目标存储空间中定位该内存页的目标存储单元;将该内存页的内存数据存储到目标存储单元。
具体地,在得到每一条内存数据时,首先确定该内存数据所对应的内存页的地址信息,然后再根据内存页的地址信息,从上述目标存储空间中定位用于存储该内存数据的目标存储单元,然后将该内存数据存储到目标存储单元。
在上述实施例的基础上,为了确保最终生成的内存快照的准确性,作为一种可实施的方式,在一实施例中,在对所有存储单元最终存储的内存数据进行数据整合之前,可以判断当前虚拟机的内存快照的目标存储空间当前是否存在空的存储单元;若当前虚拟机的内存快照的目标存储空间当前不存在空的存储单元,则执行对所有存储单元最终存储的内存数据进行数据整合的步骤;否则返回到获取当前虚拟机的内存数据的步骤。
具体地,若当前虚拟机的内存快照的目标存储空间当前存在空的存储单元,则表征当前得到的内存数据不完整,还缺少部分内存页的内存数据,因此可以返回到获取当前虚拟机的内存数据的步骤,以保证内存数据的完整性,进而确保生成的内存快照的准确性。
示例性的,如图3所示,为本申请实施例提供的示例性的虚拟机内存快照生成方法的流程示意图。其中,QEMU虚拟机为虚拟机在宿主机上的进程,iohelper为libvirt中的一个可执行程序。在创建快照时,libvirt创建一对管道(pipe),并将管道的写端发送给虚拟机进程,并以上述管道的读端文件描述符和快照文件的文件描述符作为参数执行iohelper命令。向QEMU虚拟机进程发送迁移指令使虚拟机迁移到上述libvirt发送给自己的管道的写端,这样虚拟机内存快照的任务就开始执行了。虚拟机进程将虚拟机的内存写入管道,iohelper从管道读取数据,然后写入内存快照文件。
其中,内存快照文件包含两部分,头部为libvirt的元数据,里面包括虚拟机的配置信息,是libvirt在创建内存快照最开始写入的libvirt元数据之后的为虚拟机的内存数据。
需要说明的是,QEMU+libvirt创建内存快照使用的是QEMU的内存迁移功能,QEMU负责将内存迁出,libvirt拦截到QEMU迁出的内存数据后,将内存数据写入到内存快照文件中。
其中,如图4所示,为本申请实施例提供的示例性的内存数据结构图,QEMU在导出内存状态时,按照一定的数据格式导出内存页的内存数据,数据段的开始为type和section;结尾为footer和section;中间为内存数据中的内存页的状态信息,page header和page表示一个内存页,pageheader中包含了内存页的地址信息,page为内存页的状态信息。QEMU一次向外部发送一个这样的数据段,即包括多个内存页的内存数据。
具体地,在划分用于存储虚拟机的内存快照的目标存储空间时,可以将内存快照文件内type+sectionid+pageheader+page+footer+sectionid的总大小为划分单位,规划虚拟机内存页数量个存储单元,以得到对应的目标存储空间。在得到QEMU在导出的内存数据后,如图4所示,按照内存页的不同进行数据拆分,以拆分出各个内存页对应的内存数据。
本申请实施例提供的虚拟机内存快照生成方法,通过获取当前虚拟机的内存数据;分析内存数据,以确定虚拟机中每个内存页对应的内存数据;针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;当虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为最新内存数据;对所有存储单元最终存储的内存数据进行数据整合,以得到当前虚拟机的内存快照。上述方案提供的方法,通过按照内存页的地址信息,将不同内存页的内存数据存储到固定的存储单元,且可以在指定存储单元中实现内存数据的更新,以避免内存快照文件出现文件过大问题,节省了存储的使用空间,使得在不浪费空间的情况下将内存快照保存到块设备成为可能。并且,通过规划内存快照的目标存储空间,在写入内存数据前就先确定每一个内存页的内存数据应该保存的位置,有利于提高最终生成的内存快照的数据规范性。
本申请实施例提供了一种虚拟机内存快照生成装置,用于执行上述实施例提供的虚拟机内存快照生成方法。
如图5所示,为本申请实施例提供的虚拟机内存快照生成装置的结构示意图。该虚拟机内存快照生成装置50包括:获取模块501、分析模块502、存储模块503、更新模块504和生成模块505。
其中,获取模块,用于获取当前虚拟机的内存数据;分析模块,用于分析内存数据,以确定虚拟机中各内存页对应的内存数据;存储模块,用于针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;更新模块,用于当虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为最新内存数据;生成模块,用于对所有存储单元最终存储的内存数据进行数据整合,以得到当前虚拟机的内存快照。
具体地,在一实施例中,该装置还包括:
空间管理模块,用于获取当前虚拟机的配置信息;根据当前虚拟机的配置信息,在内存快照存储区中划分出用于存储当前虚拟机的内存快照的目标存储空间;其中,目标存储空间包括多个存储单元。
具体地,在一实施例中,空间管理模块,具体用于:
根据当前虚拟机的配置信息所表征的内存页数量,确定当前虚拟机的内存快照的最大空间占用量;
按照内存快照的最大空间占用量,在内存快照存储区中划分出用于存储当前虚拟机的内存快照的目标存储空间。
具体地,在一实施例中,存储模块,具体用于:
针对每个内存页,根据该内存页的地址信息,在当前虚拟机的内存快照的目标存储空间中定位该内存页的目标存储单元;
将该内存页的内存数据存储到目标存储单元。
具体地,在一实施例中,生成模块,还用于:
判断当前虚拟机的内存快照的目标存储空间当前是否存在空的存储单元;
若当前虚拟机的内存快照的目标存储空间当前不存在空的存储单元,则执行对所有存储单元最终存储的内存数据进行数据整合的步骤;
否则返回到获取当前虚拟机的内存数据的步骤。
具体地,在一实施例中,分析模块,具体用于:
从内存数据中提取内存页标识信息;
根据内存页标识信息,确定各内存数据所对应的内存页。
具体地,在一实施例中,内存数据包括:内存页的地址信息和该内存页的状态信息。
关于本实施例中的虚拟机内存快照生成装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的虚拟机内存快照生成装置,用于执行上述实施例提供的虚拟机内存快照生成方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种电子设备,用于执行上述实施例提供的虚拟机内存快照生成方法。
如图6所示,为本申请实施例提供的电子设备的结构示意图。该电子设备60包括:至少一个处理器61和存储器62。
存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的虚拟机内存快照生成方法。
本申请实施例提供的一种电子设备,用于执行上述实施例提供的虚拟机内存快照生成方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的虚拟机内存快照生成方法。
本申请实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的虚拟机内存快照生成方法的计算机执行指令,其实现方式与原理相同,不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种虚拟机内存快照生成方法,其特征在于,包括:
获取当前虚拟机的内存数据;
分析所述内存数据,以确定所述虚拟机中各内存页对应的内存数据;
针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;
当所述虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为所述最新内存数据;
对所有存储单元最终存储的内存数据进行数据整合,以得到所述当前虚拟机的内存快照。
2.根据权利要求1所述的方法,其特征在于,在获取所述当前虚拟机的内存数据之前,所述方法还包括:
获取所述当前虚拟机的配置信息;
根据所述当前虚拟机的配置信息,在内存快照存储区中划分出用于存储所述当前虚拟机的内存快照的目标存储空间;其中,所述目标存储空间包括多个存储单元。
3.根据权利要求2所述的方法,其特征在于,所述根据所述当前虚拟机的配置信息,在内存快照存储区中划分出用于存储所述当前虚拟机内存快照的目标存储空间,包括:
根据当前虚拟机的配置信息所表征的内存页数量,确定所述当前虚拟机的内存快照的最大空间占用量;
按照所述内存快照的最大空间占用量,在内存快照存储区中划分出用于存储所述当前虚拟机的内存快照的目标存储空间。
4.根据权利要求3所述的方法,其特征在于,所述针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元,包括:
针对每个内存页,根据该内存页的地址信息,在所述当前虚拟机的内存快照的目标存储空间中定位该内存页的目标存储单元;
将该内存页的内存数据存储到所述目标存储单元。
5.根据权利要求2所述的方法,其特征在于,在对所有存储单元最终存储的内存数据进行数据整合之前,所述方法还包括:
判断所述当前虚拟机的内存快照的目标存储空间当前是否存在空的存储单元;
若所述当前虚拟机的内存快照的目标存储空间当前不存在空的存储单元,则执行所述对所有存储单元最终存储的内存数据进行数据整合的步骤;
否则返回到所述获取当前虚拟机的内存数据的步骤。
6.根据权利要求1所述的方法,其特征在于,所述分析所述内存数据,以确定所述虚拟机中每个内存页对应的内存数据,包括:
从所述内存数据中提取内存页标识信息;
根据所述内存页标识信息,确定各所述内存数据所对应的内存页。
7.根据权利要求1所述的方法,其特征在于,所述内存数据包括:内存页的地址信息和该内存页的状态信息。
8.一种虚拟机内存快照生成装置,其特征在于,包括:
获取模块,用于获取当前虚拟机的内存数据;
分析模块,用于分析所述内存数据,以确定所述虚拟机中各内存页对应的内存数据;
存储模块,用于针对每个内存页,根据该内存页的地址信息,将该内存页的内存数据存储到该内存页对应的目标存储单元;
更新模块,用于当所述虚拟机中的任一内存页发生状态变化时,重新获取该内存页的最新内存数据,并将该内存页的目标存储单元当前存储的内存数据替换为所述最新内存数据;
生成模块,用于对所有存储单元最终存储的内存数据进行数据整合,以得到所述当前虚拟机的内存快照。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210115374.2A CN114138424B (zh) | 2022-02-07 | 2022-02-07 | 一种虚拟机内存快照生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210115374.2A CN114138424B (zh) | 2022-02-07 | 2022-02-07 | 一种虚拟机内存快照生成方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114138424A true CN114138424A (zh) | 2022-03-04 |
CN114138424B CN114138424B (zh) | 2022-05-20 |
Family
ID=80381850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210115374.2A Active CN114138424B (zh) | 2022-02-07 | 2022-02-07 | 一种虚拟机内存快照生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138424B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116700904A (zh) * | 2023-08-08 | 2023-09-05 | 苏州浪潮智能科技有限公司 | 内存快照生成方法、装置、计算机设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040221134A1 (en) * | 2003-04-30 | 2004-11-04 | Tianlong Chen | Invariant memory page pool and implementation thereof |
CN102331949A (zh) * | 2011-10-12 | 2012-01-25 | 华为技术有限公司 | 一种虚拟机内存快照生成和恢复方法、装置及系统 |
CN103019884A (zh) * | 2012-11-21 | 2013-04-03 | 北京航空航天大学 | 基于虚拟机快照的内存页去重方法及装置 |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN109358947A (zh) * | 2018-10-08 | 2019-02-19 | 郑州云海信息技术有限公司 | 一种虚拟机快照的实现方法及系统 |
CN111857966A (zh) * | 2020-07-28 | 2020-10-30 | 山东海量信息技术研究院 | 虚拟机快照创建方法、装置及计算机可读存储介质 |
CN113641446A (zh) * | 2021-07-13 | 2021-11-12 | 烽火通信科技股份有限公司 | 内存快照创建方法、装置、设备及可读存储介质 |
-
2022
- 2022-02-07 CN CN202210115374.2A patent/CN114138424B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040221134A1 (en) * | 2003-04-30 | 2004-11-04 | Tianlong Chen | Invariant memory page pool and implementation thereof |
CN102331949A (zh) * | 2011-10-12 | 2012-01-25 | 华为技术有限公司 | 一种虚拟机内存快照生成和恢复方法、装置及系统 |
CN103019884A (zh) * | 2012-11-21 | 2013-04-03 | 北京航空航天大学 | 基于虚拟机快照的内存页去重方法及装置 |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN109358947A (zh) * | 2018-10-08 | 2019-02-19 | 郑州云海信息技术有限公司 | 一种虚拟机快照的实现方法及系统 |
CN111857966A (zh) * | 2020-07-28 | 2020-10-30 | 山东海量信息技术研究院 | 虚拟机快照创建方法、装置及计算机可读存储介质 |
CN113641446A (zh) * | 2021-07-13 | 2021-11-12 | 烽火通信科技股份有限公司 | 内存快照创建方法、装置、设备及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
XUANHUA SHI等: "A Cloud Service Cache System Based on Memory Template of Virtual Machine", 《2011 SIXTH ANNUAL CHINAGRID CONFERENCE》 * |
刘超: "基于虚拟机内存模板的云计算服务系统", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116700904A (zh) * | 2023-08-08 | 2023-09-05 | 苏州浪潮智能科技有限公司 | 内存快照生成方法、装置、计算机设备及存储介质 |
CN116700904B (zh) * | 2023-08-08 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 内存快照生成方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114138424B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230138736A1 (en) | Cluster file system-based data backup method and apparatus, and readable storage medium | |
CN103970585B (zh) | 创建虚拟机的方法及装置 | |
WO2018099299A1 (zh) | 一种图数据处理的方法、装置及系统 | |
CN102331949B (zh) | 一种虚拟机内存快照生成和恢复方法、装置及系统 | |
CN108460045B (zh) | 一种快照的处理方法及分布式块存储系统 | |
CN109144416B (zh) | 查询数据的方法和装置 | |
CN111813713B (zh) | 数据加速运算处理方法、装置及计算机可读存储介质 | |
WO2016010570A1 (en) | Partial snapshot creation | |
CN104077380A (zh) | 一种重复数据删除方法、装置及系统 | |
US8732427B2 (en) | Systems and methods for collapsing a derivative version of a primary storage volume | |
CN109558213A (zh) | 管理OpenStack平台的虚拟机快照的方法和装置 | |
CN114138424B (zh) | 一种虚拟机内存快照生成方法、装置及电子设备 | |
CN109101323A (zh) | 虚拟机运行状态下基于qcow2格式的快照实现方法 | |
CN104035822A (zh) | 一种低开销的高效内存去冗余方法及系统 | |
CN115631273A (zh) | 一种大数据的去重方法、装置、设备及介质 | |
US20200371827A1 (en) | Method, Apparatus, Device and Medium for Processing Data | |
CN109347899B (zh) | 在分布式存储系统中写入日志数据的方法 | |
CN113687779B (zh) | 数据迁移方法、装置、电子设备及可读存储介质 | |
CN110019063A (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
CN103729166A (zh) | 程序的线程关系确定方法、设备及系统 | |
EP3264254B1 (en) | System and method for a simulation of a block storage system on an object storage system | |
CN117112522A (zh) | 并发进程日志管理方法、装置、设备和存储介质 | |
CN114328007B (zh) | 一种容器备份还原方法、装置及其介质 | |
CN115712397A (zh) | 缓存验证装置、方法及系统 | |
CN111399774B (zh) | 分布式存储系统下基于快照的数据处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |