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

内存快照创建方法、装置、设备及可读存储介质与流程

2021-11-15 17:15:00 来源:中国专利 TAG:


1.本发明涉及虚拟机技术领域,尤其涉及一种内存快照创建方法、装置、设备及可读存储介质。


背景技术:

2.随着虚拟化技术的普遍运用,越来越多的传统应用都逐步迁移到云平台上,虚拟机的使用领域越来越丰富,随之而来的对虚拟化的性能、可靠性等要求也不断提高,相应的虚拟化技术也就日趋丰富、完善。为了适应多样化的使用场景,满足不同场景下的需求,虚拟化在对标物理机的同时,也借助虚拟机带外管理的特性不断超越物理机。如:虚拟化快照技术就是源于物理机的备份而不断优化的虚拟机备份技术,利用快照自动恢复故障虚拟机的技术就是物理机无法实现的。
3.目前虚拟机快照主要有两种实现形式,一种是只备份存储数据的存储快照,一种是存储和内存快照相结合的整机快照。存储快照用于只需要备份数据的场景,而存储 内存快照可保留快照时刻的业务状态。快照的基本实现流程为:挂起虚拟机

创建快照

恢复虚拟机。虚拟机被挂起后,虚拟机内部业务中断运行,虚拟机恢复后业务恢复。由于创建快照期间虚拟机不能正常提供业务,所以各虚拟化平台都想方设法缩短虚拟机挂起时间。存储快照目前耗时已经很短提升空间太小,因此如何优化内存快照创建耗时从而减少虚拟机挂起时间是目前亟待解决的技术问题。


技术实现要素:

4.本发明的主要目的在于提供一种内存快照创建方法、装置、设备及可读存储介质,旨在解决现有技术中创建内存快照耗时长的技术问题。
5.第一方面,本发明提供一种内存快照创建方法,所述内存快照创建方法包括:
6.在创建周期中的每个预设时刻获取对应子周期内记录的脏数据页地址;
7.将每次获取的脏数据页地址对应的内存内容写入持久化内存;
8.在所述创建周期的结束时刻时,根据所述创建周期内写入持久化内存中的所有内存内容创建所述创建周期对应的内存快照。
9.可选的,当创建周期为第一个创建周期,在所述在创建周期中的每个预设时刻获取对应子周期内记录的脏数据页地址的步骤之前,还包括:
10.在持久化内存中申请第一持久化内存空间,所述第一持久化内存空间的大小与虚拟机内存大小一致;
11.申请第一持久化内存空间成功后,记录虚拟机内存地址与第一持久化内存空间地址的对应关系。
12.可选的,当创建周期为第一个创建周期,所述将每次获取的脏数据页地址对应的内存内容写入持久化内存的步骤包括:
13.基于所述对应关系,将每次获取的脏数据页地址对应的内存内容覆盖写入所述第
一持久化内存空间中每次获取的脏数据页地址对应的存储区域。
14.可选的,当创建周期不为第一个创建周期,且内存快照链深度值为1,所述将每次获取的脏数据页地址对应的内存内容写入持久化内存的步骤包括:
15.基于所述对应关系,将每次获取的脏数据页地址对应的内存内容覆盖写入所述第一持久化内存空间中每次获取的脏数据页地址对应的存储区域。
16.可选的,当创建周期不为第一个创建周期,且内存快照链深度值为n,n为大于1的正整数,所述将每次获取的脏数据页地址对应的内存内容写入持久化内存的步骤包括:
17.当已创建的内存快照的数量小于n时,根据每次获取的脏数据页地址对应的内存内容的大小在持久化内存中申请新的持久化内存空间,所述新的持久化内存空间的大小大于或等于每次获取的脏数据页地址对应的内存内容的大小;
18.申请新的持久化内存空间成功后,将所述每次获取的脏数据页地址对应的内存内容写入所述新的持久化内存空间。
19.可选的,所述将每次获取的脏数据页地址对应的内存内容写入持久化内存的步骤还包括:
20.当已创建的内存快照的数量等于n时,将最早创建的内存快照与次早创建的内存快照合并,释放第二个创建周期内申请的所有持久化内存空间;
21.根据每次获取的脏数据页地址对应的内存内容的大小在持久化内存中申请新的持久化内存空间,所述新的持久化内存空间的大小大于或等于每次获取的脏数据页地址对应的内存内容的大小;
22.申请新的持久化内存空间成功后,将所述每次获取的脏数据页地址对应的内存内容写入所述新的持久化内存空间。
23.可选的,所述内存快照创建方法还包括:
24.当虚拟机系统崩溃时,按照创建顺序从后到前的顺序,依次使用各个已创建的内存快照对虚拟机进行恢复,直至恢复成功。
25.第二方面,本发明还提供一种内存快照创建装置,所述内存快照创建装置包括:
26.获取模块,用于在创建周期中的每个预设时刻获取对应子周期内记录的脏数据页地址;
27.写入模块,用于将每次获取的脏数据页地址对应的内存内容写入持久化内存;
28.创建模块,用于在所述创建周期的结束时刻时,根据所述创建周期内写入持久化内存中的所有内存内容创建所述创建周期对应的内存快照。
29.第三方面,本发明还提供一种内存快照创建设备,所述内存快照创建设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的内存快照创建程序,其中所述内存快照创建程序被所述处理器执行时,实现如上所述的内存快照创建方法的步骤。
30.第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有内存快照创建程序,其中所述内存快照创建程序被处理器执行时,实现如上所述的内存快照创建方法的步骤。
31.本发明中,在创建周期中的每个预设时刻获取对应子周期内记录的脏数据页地址;将每次获取的脏数据页地址对应的内存内容写入持久化内存;在所述创建周期的最后时刻时,根据所述创建周期内写入持久化内存中的所有内存内容创建创建周期对应的内存
快照。通过本发明,减少了创建内存快照所需的耗时,从而缩短了创建整机快照时虚拟机的挂起时长,避免了虚拟机上的业务中断。
附图说明
32.图1为本发明实施例方案中涉及的内存快照创建设备的硬件结构示意图;
33.图2为本发明内存快照创建方法一实施例的流程示意图;
34.图3为本发明内存快照创建方法一实施例中向持久化内存写入数据的示意图;
35.图4为本发明内存快照创建方法一实施例中申请持久化内存空间的示意图;
36.图5为本发明内存快照创建方法另一实施例中申请持久化内存空间的示意图;
37.图6为本发明内存快照创建装置一实施例的功能模块示意图。
38.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
39.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
40.第一方面,本发明实施例提供一种内存快照创建设备,该内存快照创建设备可以是个人计算机(personal computer,pc)、笔记本电脑、服务器等具有数据处理功能的设备。
41.参照图1,图1为本发明实施例方案中涉及的内存快照创建设备的硬件结构示意图。本发明实施例中,内存快照创建设备可以包括处理器1001(例如中央处理器central processing unit,cpu),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真wireless

fidelity,wi

fi接口);存储器1005可以是高速随机存取存储器(random access memory,ram),也可以是稳定的存储器(non

volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
42.继续参照图1,图1中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及内存快照创建程序。其中,处理器1001可以调用存储器1005中存储的内存快照创建程序,并执行本发明实施例提供的内存快照创建方法。
43.第二方面,本发明实施例提供了一种内存快照创建方法。
44.一实施例中,参照图2,图2为本发明内存快照创建方法一实施例的流程示意图。如图2所示,内存快照创建方法包括:
45.步骤s10,在创建周期中的每个预设时刻获取对应子周期内记录的脏数据页地址;
46.本实施例中,预先根据虚拟机的具体使用场景,例如计算节点内存规格,cpu性能,虚拟机密度,虚拟机内部业务特点等规划创建周期的长度以及创建周期内子周期的长度,创建周期中的每个预设时刻即每个子周期的结束时刻。例如,创建周期的长度为t,子周期的长度为则一创建周期内存在3个子周期,每个子周期的结束时刻即为每个预设时刻,共计3个预设时刻,则在一个创建周期内,在第一个预设时刻时获取第一个子周期内记录的
脏数据页地址,在第二个预设时刻获取第二个子周期内记录的脏数据页地址,在第三个预设时刻获取第三个子周期内记录的脏数据页地址。需要说明的是,此处仅为示意性说明,子周期的长度与创建周期的长度间的比例根据实际需要进行设置,在此不作限制。其中,脏数据页地址即虚拟机内存中内容发生变化的内存的地址。
47.步骤s20,将每次获取的脏数据页地址对应的内存内容写入持久化内存;
48.本实施例中,以创建周期的长度为t,子周期的长度为为例,则在一个周期内在第一个预设时刻时获取第一个子周期内记录的脏数据页地址后,将该脏数据页地址对应的内存内容写入持久化内存,以此类推,将每个预设时刻获取的脏数据页地址对应的内存内容写入持久化内存。其中,持久化内存即pmem(persistent memory),pmem具有读写耗时短的性能优势。参照图3,图3为本发明内存快照创建方法一实施例中向持久化内存写入数据的示意图。如图3所示,给虚拟机分配物理内存时,申请同规格的pmem内存,虚拟机运行过程中写虚拟机对应的物理内存,并按子周期周期性的将脏数据页地址写到bitmap中,周期性读取bitmap中的脏数据页地址,并将脏数据页地址对应的内存内容写入pmem内存,子周期结束时清除bitmap中的记录。
49.步骤s30,在所述创建周期的结束时刻时,根据所述创建周期内写入持久化内存中的所有内存内容创建所述创建周期对应的内存快照。
50.本实施例中,在创建周期的结束时刻时,即可根据该创建周期内写入持久化内存中的所有内存内容创建创建周期对应的内存快照。
51.本实施例中,内存快照主要是将虚拟机内存中发生变化的内容保存起来,通常的保存方法是保存到计算节点硬盘或虚拟机内部磁盘上文件中,基于对vmm(virtual machine monitor,虚拟机监视器)对虚拟机内存管理的原理的探索发现中间耗时主要是源于读取需保存的内存并写入磁盘,基于这一发现,本实施例提出结合持久化内存对写入过程进行优化,从而减少读取需保存的内存并写入磁盘的耗时,从而减少创建内存快照所需的耗时。
52.本实施例中,在创建周期中的每个预设时刻获取对应子周期内记录的脏数据页地址;将每次获取的脏数据页地址对应的内存内容写入持久化内存;在所述创建周期的最后时刻时,根据所述创建周期内写入持久化内存中的所有内存内容创建创建周期对应的内存快照。通过本实施例,减少了创建内存快照所需的耗时,从而缩短了创建整机快照时虚拟机的挂起时长,避免了虚拟机上的业务中断。
53.进一步地,一实施例中,当创建周期为第一个创建周期,在步骤s10之前,还包括:
54.步骤s01,在持久化内存中申请第一持久化内存空间,所述第一持久化内存空间的大小与虚拟机内存大小一致;
55.本实施例中,可在创建或启动虚拟机后,vmm给虚拟机分配hpa(host physicaladdress,主机物理地址)内存时,在持久化内存中申请第一持久化内存空间,其中,第一持久化内存空间的大小与虚拟机内存大小一致。例如,虚拟机内存大小为2g,vmm会给虚拟机分配2g物理内存hpa,用于直接保存虚拟机内存的内容,在此阶段,在持久化内存中申请大小为2g的存储空间即申请第一持久化内存空间。
56.步骤s02,申请第一持久化内存空间成功后,记录虚拟机内存地址与第一持久化内
存空间地址的对应关系。
57.本实施例中,申请第一持久化内存空间成功后,记录虚拟机内存地址与第一持久化内存空间地址的对应关系。例如,虚拟机内存地址记为x1、x2、x3......xm,第一持久化内存空间地址记为c1、c2、c3......cm,记录的对应关系为x1对应c1,x2对应c2,x3对应c3......xm对应cm。后续,在第一创建周期内,若脏数据页地址为x3、x7,则可将x3、x7对应的内存内容分别写入第一持久化内存空间中的c3、c7。
58.进一步地,一实施例中,基于上一实施例,当创建周期为第一个创建周期,步骤s20包括:
59.基于所述对应关系,将每次获取的脏数据页地址对应的内存内容覆盖写入所述第一持久化内存空间中每次获取的脏数据页地址对应的存储区域。
60.本实施例中,以创建周期的长度为t,子周期的长度为为例。在第一个创建周期内,若第一次获取的脏数据页地址为x2,则将x2中的内容写入第一持久化内存空间中的c2;若第二次获取的脏数据页地址为x1和x3,则将x1和x3中的内容分别写入第一持久化内存空间中的c1和c3;若第三次获取的脏数据页地址为x2,则将此时x2中的内容写入第一持久化内存空间中的c2,即覆盖第一次写入c2的x2中的内容。即每次将获取的脏数据页地址对应的内存内容写入第一持久化内存空间中对应的存储区域时,若存储区域无数据则直接写入,若存储区域有数据,则在写入数据的同时将原先的数据覆盖。
61.进一步地,一实施例中,基于上一实施例,当创建周期不为第一个创建周期,且内存快照链深度值为1,步骤s20包括:
62.基于所述对应关系,将每次获取的脏数据页地址对应的内存内容覆盖写入所述第一持久化内存空间中每次获取的脏数据页地址对应的存储区域。
63.本实施例中,内存快照链深度值预先根据虚拟机的具体使用场景,例如计算节点内存规格,cpu性能,虚拟机密度,虚拟机内部业务特点确定。
64.当创建周期不为第一个创建周期,且内存快照链深度值为1,例如在第2个创建周期内,每次将获取的脏数据页地址对应的内存内容写入第一持久化内存空间中对应的存储区域时,若存储区域无数据则直接写入,若存储区域有数据,则在写入数据的同时将原先的数据覆盖。
65.进一步地,一实施例中,当创建周期不为第一个创建周期,且内存快照链深度值为n,n为大于1的正整数,步骤s20包括:
66.步骤s201,当已创建的内存快照的数量小于n时,根据每次获取的脏数据页地址对应的内存内容的大小在持久化内存中申请新的持久化内存空间,所述新的持久化内存空间的大小大于或等于每次获取的脏数据页地址对应的内存内容的大小;
67.本实施例中,当创建周期不为第一个创建周期,且内存快照链深度值为n,n为大于1的正整数,例如n设置为5。参照图4,图4为本发明内存快照创建方法一实施例中申请持久化内存空间的示意图。如图4所示,当在第3个创建周期内,在第一个预设时刻获取对应子周期内记录的脏数据页地址后,检测到当前已创建的内存快照的数量为2(第一个创建周期对应的内存快照以及第二个创建周期对应的内存快照),则根据在第一个预设时刻获取对应子周期内记录的脏数据页地址对应的内存内容的大小在持久化内存中申请新的持久化内
存空间,例如第一个预设时刻获取对应子周期内记录的脏数据页地址对应的内存内容的大小为300m,则在持久化内存中申请3*128m大小的新的持久化内存空间;同理,若第二个预设时刻获取对应子周期内记录的脏数据页地址对应的内存内容的大小为500m,则在持久化内存中申请4*128m大小的新的持久化内存空间,以此类推,即每次申请的新的持久化内存空间的大小为128m的倍数,且大于需写入的内存内容的大小。
68.步骤s202,申请新的持久化内存空间成功后,将所述每次获取的脏数据页地址对应的内存内容写入所述新的持久化内存空间。
69.本实施例中,若第一个预设时刻获取对应子周期内记录的脏数据页地址对应的内存内容的大小为300m,在持久化内存中申请3*128m大小的新的持久化内存空间,申请成功后,则将300m的内存内容写入大小为3*128m的新的持久化内存空间;同理,若第二个预设时刻获取对应子周期内记录的脏数据页地址对应的内存内容的大小为500m,在持久化内存中申请4*128m大小的新的持久化内存空间,申请成功后,则将500m的内存内容写入大小为4*128m的新的持久化内存空间,以此类推。
70.进一步地,一实施例中,基于上一实施例,步骤s20还包括:
71.步骤s203,当已创建的内存快照的数量等于n时,将最早创建的内存快照与次早创建的内存快照合并,释放第二个创建周期内申请的所有持久化内存空间;
72.本实施例中,当创建周期不为第一个创建周期,且内存快照链深度值为n,n为大于1的正整数,例如n设置为5。参照图5,图5为本发明内存快照创建方法另一实施例中申请持久化内存空间的示意图。如图5所示,当在第6个创建周期内,在第一个预设时刻获取对应子周期内记录的脏数据页地址后,检测到当前已创建的内存快照的数量为5(第一个创建周期对应的内存快照、第二个创建周期对应的内存快照、第三个创建周期对应的内存快照、第四个创建周期对应的内存快照、第五个创建周期对应的内存快照),此时将最早创建的内存快照与次早创建的内存快照合并,合并的具体方式为将第二个创建周期内申请的所有持久化内存空间(即第二持久化内存空间)中的数据写入第一持久化内存空间,并释放第二个创建周期内申请的所有持久化内存空间。
73.步骤s204,根据每次获取的脏数据页地址对应的内存内容的大小在持久化内存中申请新的持久化内存空间,所述新的持久化内存空间的大小大于或等于每次获取的脏数据页地址对应的内存内容的大小;
74.步骤s205,申请新的持久化内存空间成功后,将所述每次获取的脏数据页地址对应的内存内容写入所述新的持久化内存空间。
75.本实施例中,步骤s204至步骤s205的具体实施例与上述步骤s201和步骤s202类似,在此不做赘述。
76.通过本实施例,实现了按需控制内存快照的数量。
77.进一步地,一实施例中,内存快照创建方法还包括:
78.当虚拟机系统崩溃时,按照创建顺序从后到前的顺序,依次使用各个已创建的内存快照对虚拟机进行恢复,直至恢复成功。
79.本实施例中,当虚拟机系统崩溃时,则首先通过最后一个创建的内存快照对虚拟机进行恢复,若恢复不成功,则通过倒数第二个创建的内存快照对虚拟机进行恢复,若恢复不成功,再通过倒数第三个创建的内存快照对虚拟机进行恢复,以此类推,直至虚拟机恢复
成功。
80.现有技术中,由于创建内容快照所需的耗时加长,由于其耗时长中断虚拟机业务长的特点使得实际操作中不能频繁创建内存快照,这将使得通过内存快照恢复的虚拟机业务状态离虚拟机系统崩溃前业务状态差距大,而本实施例中缩短了创建内容快照所需的耗时,因此,创建周期相对现有技术中创建内存快照的周期可以短一些,即相对现有技术本实施例可以更高的频率创建内存快照,从而可利用较晚时间生成的内存快照将虚拟机恢复至临近系统崩溃时的状态,最大限度的减少虚拟机业务中断时间。
81.第三方面,本发明实施例还提供一种内存快照创建装置。
82.参照图6,图6为本发明内存快照创建装置一实施例的功能模块示意图。
83.一实施例中,内存快照创建装置包括:
84.获取模块10,用于在创建周期中的每个预设时刻获取对应子周期内记录的脏数据页地址;
85.写入模块20,用于将每次获取的脏数据页地址对应的内存内容写入持久化内存;
86.创建模块30,用于在所述创建周期的结束时刻时,根据所述创建周期内写入持久化内存中的所有内存内容创建所述创建周期对应的内存快照。
87.进一步地,一实施例中,当创建周期为第一个创建周期,内存快照创建装置还包括申请模块,用于:
88.在持久化内存中申请第一持久化内存空间,所述第一持久化内存空间的大小与虚拟机内存大小一致;
89.申请第一持久化内存空间成功后,记录虚拟机内存地址与第一持久化内存空间地址的对应关系。
90.进一步地,一实施例中,当创建周期为第一个创建周期,写入模块20,用于:
91.基于所述对应关系,将每次获取的脏数据页地址对应的内存内容覆盖写入所述第一持久化内存空间中每次获取的脏数据页地址对应的存储区域。
92.进一步地,一实施例中,当创建周期不为第一个创建周期,且内存快照链深度值为1,写入模块20,用于:
93.基于所述对应关系,将每次获取的脏数据页地址对应的内存内容覆盖写入所述第一持久化内存空间中每次获取的脏数据页地址对应的存储区域。
94.进一步地,一实施例中,当创建周期不为第一个创建周期,且内存快照链深度值为n,n为大于1的正整数,写入模块20,用于:
95.当已创建的内存快照的数量小于n时,根据每次获取的脏数据页地址对应的内存内容的大小在持久化内存中申请新的持久化内存空间,所述新的持久化内存空间的大小大于或等于每次获取的脏数据页地址对应的内存内容的大小;
96.申请新的持久化内存空间成功后,将所述每次获取的脏数据页地址对应的内存内容写入所述新的持久化内存空间。
97.进一步地,一实施例中,写入模块20,用于:
98.当已创建的内存快照的数量等于n时,将最早创建的内存快照与次早创建的内存快照合并,释放第二个创建周期内申请的所有持久化内存空间;
99.根据每次获取的脏数据页地址对应的内存内容的大小在持久化内存中申请新的
持久化内存空间,所述新的持久化内存空间的大小大于或等于每次获取的脏数据页地址对应的内存内容的大小;
100.申请新的持久化内存空间成功后,将所述每次获取的脏数据页地址对应的内存内容写入所述新的持久化内存空间。
101.进一步地,一实施例中,内存快照创建装置还包括恢复模块,用于:
102.当虚拟机系统崩溃时,按照创建顺序从后到前的顺序,依次使用各个已创建的内存快照对虚拟机进行恢复,直至恢复成功。
103.其中,上述内存快照创建装置中各个模块的功能实现与上述内存快照创建方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
104.第四方面,本发明实施例还提供一种可读存储介质。
105.本发明可读存储介质上存储有内存快照创建程序,其中所述内存快照创建程序被处理器执行时,实现如上述的内存快照创建方法的步骤。
106.其中,内存快照创建程序被执行时所实现的方法可参照本发明内存快照创建方法的各个实施例,此处不再赘述。
107.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
108.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
109.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
110.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

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

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

相关文献