一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种内存快照管理方法、装置、设备及介质与流程

2022-03-09 05:34:59 来源:中国专利 TAG:


1.本发明涉及云计算环境下数据保护技术领域,特别涉及一种内存快照管理方法、装置、设备及介质。


背景技术:

2.当前,在常用的虚拟机(virtual machine)内存快照方案中,虚拟机监控器需要先暂停虚拟机,然后将虚拟机当前的内存数据导出到磁盘中;由于需要将内存数据写入到磁盘中,对虚拟机执行内存快照的操作很慢,影响了内存快照在现实场景中的使用。
3.综上可见,如何避免将内存数据写入磁盘给实际操作带来的影响,并提高内存快照的创建速度是目前有待解决的问题。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种内存快照管理方法、装置、设备及介质,能够避免将内存数据写入磁盘给实际操作带来的影响,并提高内存快照的创建速度。其具体方案如下:第一方面,本技术公开了一种内存快照管理方法,包括:当获取到内存快照生成命令,则暂停虚拟机;复制所述虚拟机的二级页表以得到第一快照页表,并为所述二级页表的页表项设置只读标识;通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。
5.可选的,所述将所述虚拟机由暂停状态恢复至运行状态之后,还包括:在所述虚拟机的运行过程中,若检测到所述虚拟机内存页中的内存数据发生更改,则执行内存写入操作。
6.可选的,所述执行内存写入操作的过程中,还包括:将所述虚拟机退出虚拟态,并通过虚拟机监控程序查询所述二级页表的页表项以得到查询结果;若所述查询结果为所述页表项携带有所述只读标识,则将所述当前内存页进行复制以得到复制内存页,并减少所述内存数据未更改前的所述内存页的引用计数;将所述二级页表中的页表项的指针指向所述复制内存页,并清除所述二级页表项中所述页表项的所述只读标识,以及将所述虚拟机重新进入虚拟态。
7.可选的,所述内存快照管理方法,还包括:当获取到内存快照恢复命令,则对所述第一快照页表进行复制以得到第二快照页表;删除所述虚拟机的当前二级页表,并将所述第二快照页表作为所述虚拟机当前新的二级页表,以及清除相应的页面缓存。
8.可选的,所述删除所述虚拟机的当前二级页表之前,还包括:通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数;通过所述当前二级页表的页表项获取相应的内存页,并减少所述内存页的引用计数;其中,所述第一快照页表的页表项对应的内存页与所述当前二级页表的页表项对应的内存页相同。
9.可选的,所述内存快照管理方法,还包括:当获取到内存快照删除命令,则通过所述第一快照页表的页表项获取相应的内存页,并减少所述内存页的引用计数;删除所述第一快照页表。
10.第二方面,本技术公开了一种内存快照管理装置,包括:命令获取模块,用于当获取到内存快照生成命令,则暂停虚拟机;页表复制模块,用于复制所述虚拟机的二级页表以得到第一快照页表,并为所述二级页表的页表项设置只读标识;引用计数调整模块,用于通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。
11.可选的,所述内存快照管理装置,还包括:页表复制单元,用于当获取到内存快照恢复命令,则对所述第一快照页表进行复制以得到第二快照页表;页表删除单元,用于删除所述虚拟机的当前二级页表,并将所述第二快照页表作为所述虚拟机当前新的二级页表,以及清除相应的页面缓存。
12.第三方面,本技术公开了一种电子设备,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现前述公开的内存快照管理方法的步骤。
13.第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的内存快照管理方法的步骤。
14.可见,本技术当获取到内存快照生成命令,则暂停虚拟机;然后复制所述虚拟机的二级页表以得到第一快照页表,并为所述二级页表的页表项设置只读标识;再通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。由此可见,本技术当获取到内存快照生成命令后,需要暂停虚拟机,并通过复制虚拟机二级页表的方式得到第一快照页表以创建虚拟机的内存快照,以及为二级页表的页表项设置只读标识,并在创建步骤完成之后将虚拟机由暂停状态恢复至运行状态。其中,通过上述步骤创建的内存快照仍保存于内存中,无需再写入至磁盘,因而避免了将内存数据写入磁盘给实际操作带来的影响,并提高了内存快照的创建速度。此外,通过为虚拟机二级页表设置只读标识,实现了内存快照和虚拟机内存的相互区分。
附图说明
15.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
16.图1为本技术公开的一种内存快照管理方法流程图;图2为本技术公开的一种内存快照管理方法子流程图;图3为本技术公开的一种内存快照管理方法子流程图;图4为本技术公开的一种内存快照管理装置结构示意图;图5为本技术公开的一种电子设备结构图。
具体实施方式
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.当前,在常用的虚拟机内存快照方案中,虚拟机监控器需要先暂停虚拟机,然后将虚拟机当前的内存数据导出到磁盘中;由于需要将内存数据写入到磁盘中,对虚拟机执行内存快照的操作很慢,影响了内存快照在现实场景中的使用。为此本技术实施例公开了一种内存快照管理方法、装置、设备及介质,能够避免将内存数据写入磁盘给实际操作带来的影响,并提高内存快照的创建速度。
19.参见图1所示,本技术实施例公开了一种内存快照管理方法,该方法包括:步骤s11:当获取到内存快照生成命令,则暂停虚拟机。
20.本实施例中,当获取到系统管理员发送的内存快照生成命令,则需要暂停当前正处于运行状态的虚拟机。
21.步骤s12:复制所述虚拟机的二级页表以得到第一快照页表,并为所述二级页表的页表项设置只读标识。
22.本实施例中,通过在kvm(即kernel-based virtual machine)层面复制虚拟机的二级页表以得到第一快照页表,从而完成虚拟机的内存快照的创建。可以理解的是,本实施例在暂停虚拟机后,不再复制所有内存数据,而是只复制虚拟机的二级页表,以完成内存快照的创建。本实施例中将第一快照页表记为pt1,并将pt1作为快照索引使用。此外,还需要在kvm层面为虚拟机原有二级页表中的页表项设置只读标识,也即将原有二级页表中的所有页表项设置为快照只读模式,通过只读标识的设置能够与一般的只读区分开,实现内存快照和虚拟机内存的相互区分和隔离,并将该二级页表记为pt0。需要指出的是,上述创建的页表仍然保存于内存中,避免了将内存快照写入磁盘的io(input/output,即输入输出)操作,而复制页表的过程非常迅速,因此通过这种方式提高了内存快照的创建速度,且保证创建内存快照的时间限制在毫秒级别。
23.步骤s13:通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。
24.本实施例中,通过第一快照页表的页表项,也即pt1的页表项找到其指向的所有内存页,并增加这些内存页的引用计数。需要指出的是,通过调整引用计数可以防止内存泄露,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次,每删除一
次引用,引用计数就会减少一次,当一个对象的引用计数减为零时,就自动删除指向的堆内存。本实施例在增加引用计数之后,需要清除相应的页面缓存,再将虚拟机由暂停状态恢复至运行状态。
25.本实施中,上述将所述虚拟机由暂停状态恢复至运行状态之后,还包括:在所述虚拟机的运行过程中,若检测到所述虚拟机内存页中的内存数据发生更改,则执行内存写入操作。可以理解的是,在虚拟机的运行过程中,若虚拟机内存页中的内存数据没有发生更改,则无需执行内存写入操作。
26.其中,执行内存写入操作的过程中,还包括:将所述虚拟机退出虚拟态,并通过虚拟机监控程序查询所述二级页表的页表项以得到查询结果;若所述查询结果为所述页表项携带有所述只读标识,则将所述当前内存页进行复制以得到复制内存页,并减少所述内存数据未更改前的所述内存页的引用计数;将所述二级页表中的页表项的指针指向所述复制内存页,并清除所述二级页表项中所述页表项的所述只读标识,以及将所述虚拟机重新进入虚拟态。需要指出的是,由于之前为二级页表的页表项设置了只读标识,也即当前的页表项为快照只读模式,则意味着当前对虚拟机内存进行了写保护,那么当虚拟机执行内存写入操作时,会产生ept misconfig,也即造成了内存配置异常。此时虚拟机则需要退出虚拟态到虚拟机监控程序中,并通过虚拟机监控器(virtual machine monitor)进入内存配置异常处理流程,首先查询二级页表(即pt0)中内存配置异常的页表项,如果该页表项携带有只读标识,则执行页面复制得到复制内存页,并减小原内存页面的引用计数,然后将pt0页表项中的指针指向复制内存页,最后清除pt0页表项中的快照只读模式,并通过虚拟机监控程序恢复虚拟机的正常运行,即将虚拟机重新进入虚拟态。通过上述方式,可以实现第一快照页表(即pt1)所指向的内存页的内存数据不会发生改变,因此依靠pt1就可以找到快照时刻的所有内存数据。
27.可见,本技术实施例当获取到内存快照生成命令,则暂停虚拟机;然后复制所述虚拟机的二级页表以得到第一快照页表,并为所述二级页表的页表项设置只读标识;再通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。由此可见,本技术当获取到内存快照生成命令后,需要暂停虚拟机,并通过复制虚拟机二级页表的方式得到第一快照页表以创建虚拟机的内存快照,以及为二级页表的页表项设置只读标识,并在创建步骤完成之后将虚拟机由暂停状态恢复至运行状态。其中,通过上述步骤创建的内存快照仍保存于内存中,无需再写入至磁盘,因而避免了将内存数据写入磁盘给实际操作带来的影响,并提高了内存快照的创建速度。此外,通过为虚拟机二级页表设置只读标识,实现了内存快照和虚拟机内存的相互区分。
28.在虚拟机的运行过程中,如果收到系统管理员发送的内存快照恢复命令,也即需要恢复第一快照页表pt1,则需要执行相应的恢复页表的操作。具体的参见图2所示,本技术实施例还可以进一步包括:步骤s21:当获取到内存快照恢复命令,则对所述第一快照页表进行复制以得到第二快照页表。
29.本实施例中,在获取到系统管理员发送的内存快照恢复命令后,通过在kvm层面对第一快照页表pt1进行复制以得到第二快照页表。
30.步骤s22:通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数。通过所述虚拟机当前二级页表的页表项获取相应的内存页,并减少所述内存页的引用计数;其中,所述第一快照页表的页表项对应的内存页与所述当前二级页表的页表项对应的内存页相同。
31.本实施例中,将虚拟机的当前二级页表记为pt_temp,通过pt1的页表项找到其相应的所有内存页,并增加这些内存页的引用计数,以及通过pt_temp的页表项找到其相应的所有内存页,并减小这些内存页的引用计数。其中,pt1的页表项对应的内存页与pt_temp的页表项对应的内存页相同。
32.步骤s23:删除所述虚拟机的所述当前二级页表,并将所述第二快照页表作为所述虚拟机当前新的二级页表,以及清除相应的页面缓存。
33.本实施例中,删除虚拟机的pt_temp页表,将第二快照页表作为虚拟机当前新的二级页表,以及清除相应的页表缓存(translate look side buffers)。
34.可见,本技术实施例中,当获取到内存快照恢复命令,也即需要进行内存快照恢复时,通过虚拟机当前二级页表减小内存页的引用计数,并将第一快照页表复制得到的第二快照页表作为虚拟机当前新的二级页表,然后增加内存页的引用计数,再删除原有的当前二级页表,最后清除相应的页表缓存,以实现内存快照的恢复。通过复制页表的方式创建快照页表,使得恢复内存快照时的速度也得到了提高,其中,恢复内存快照的时间和创建内存快照的时间级别相同,都限制在毫秒级别。此外,通过上述技术方案提高了内存快照的可用性。
35.在虚拟机的运行过程中,如果收到系统管理员发送的内存快照删除命令,也即需要删除第一快照页表pt1,则需要执行相应的删除页表的操作。具体的参见图3所示,本技术实施例还可以进一步包括:步骤s31:当获取到内存快照删除命令,则通过所述第一快照页表的页表项获取相应的内存页,并减少所述内存页的引用计数。
36.本实施例中,在获取到系统管理员发送的内存快照删除命令后,首先通过第一快照页表的页表项找到其相应的内存页,并减小内存页的引用计数。
37.步骤s32:删除所述第一快照页表。
38.本实施例中,当减小引用计数后,直接删除第一快照页表。
39.可见,本技术实施例中,当获取到内存快照删除命令,也即需要对第一快照页表进行删除时,首先通过第一快照页表的页表项找到其相应的内存页,并减小内存页的引用计数,再直接删除调第一快照页表。通过复制页表的方式创建快照页表,使得删除内存快照时的速度也得到了提高。
40.参见图4所示,本技术实施例公开了一种内存快照管理装置,包括:命令获取模块11,用于当获取到内存快照生成命令,则暂停虚拟机;页表复制模块12,用于复制所述虚拟机的二级页表以得到第一快照页表,并为所述二级页表的页表项设置只读标识;引用计数调整模块13,用于通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。
41.可见,本技术实施例当获取到内存快照生成命令,则暂停虚拟机;然后复制所述虚
拟机的二级页表以得到第一快照页表,并为所述二级页表的页表项设置只读标识;再通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。由此可见,本技术当获取到内存快照生成命令后,需要暂停虚拟机,并通过复制虚拟机二级页表的方式得到第一快照页表以创建虚拟机的内存快照,以及为二级页表的页表项设置只读标识,并在创建步骤完成之后将虚拟机由暂停状态恢复至运行状态。其中,通过上述步骤创建的内存快照仍保存于内存中,无需再写入至磁盘,因而避免了将内存数据写入磁盘给实际操作带来的影响,并提高了内存快照的创建速度。此外,通过为虚拟机二级页表设置只读标识,实现了内存快照和虚拟机内存的相互区分。
42.在一些具体实施例中,所述引用计数调整模块13之后,还包括:内存写入单元,用于在所述虚拟机的运行过程中,若检测到所述虚拟机内存页中的内存数据发生更改,则执行内存写入操作。
43.在一些具体实施例中,所述内存写入单元,还可以包括:页表查询单元,用于将所述虚拟机退出虚拟态,并通过虚拟机监控程序查询所述二级页表的页表项以得到查询结果;第一复制单元,用于若所述查询结果为所述页表项携带有所述只读标识,则将所述当前内存页进行复制以得到复制内存页,并减少所述内存数据未更改前的所述内存页的引用计数;标识清除单元,用于将所述二级页表中的页表项的指针指向所述复制内存页,并清除所述二级页表项中所述页表项的所述只读标识,以及将所述虚拟机重新进入虚拟态。
44.在一些具体实施例中,所述内存快照管理装置,还可以包括:第二复制单元,用于当获取到内存快照恢复命令,则对所述第一快照页表进行复制以得到第二快照页表;第一页表删除单元,用于删除所述虚拟机的当前二级页表,并将所述第二快照页表作为所述虚拟机当前新的二级页表,以及清除相应的页面缓存。
45.在一些具体实施例中,所述页表删除单元之前,还包括:引用计数增加单元,用于通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数;第一引用计数减少单元,用于通过所述当前二级页表的页表项获取相应的内存页,并减少所述内存页的引用计数;其中,所述第一快照页表的页表项对应的内存页与所述当前二级页表的页表项对应的内存页相同。
46.在一些具体实施例中,所述内存快照管理装置,还可以包括:第二引用计数减少单元,用于当获取到内存快照删除命令,则通过所述第一快照页表的页表项获取相应的内存页,并减少所述内存页的引用计数;第二页表删除单元,用于删除所述第一快照页表。
47.图5为本技术实施例提供的一种电子设备的结构示意图。具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由计算机设备执行的内存快照管理方法中的相关步骤。
48.本实施例中,电源23用于为计算机设备20上的各硬件设备提供工作电压;通信接口24能够为计算机设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
49.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
50.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
51.其中,操作系统221用于管理与控制计算机设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是windows、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由计算机设备20执行的内存快照管理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括计算机设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
52.进一步的,本技术实施例还公开了一种存储介质 ,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的由内存快照管理过程中执行的方法步骤。
53.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
54.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
55.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存
储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
56.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些 要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
57.以上对本发明所提供的一种内存快照管理方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献