本发明涉及虚拟机领域,特别涉及一种虚拟机快照方法、装置、电子设备及存储介质。
背景技术:
1、虚拟机快照是一种常见的容灾手段,其通常可为虚拟机磁盘文件(vmdk,virtualmachine disk)创建某个时刻对应的快照副本,这样当虚拟机磁盘文件发生故障时,可基于快照副本对虚拟机磁盘文件进行恢复。
2、相关技术中,虚拟机快照的创建流程一般为:为当前虚拟机磁盘文件创建快照副本,并将当前虚拟机磁盘文件作为历史虚拟机磁盘文件并设置为只读状态,以及将快照副本作为新的虚拟机磁盘文件。在完成快照创建后,后续发生所有数据更新均只在新的虚拟机磁盘文件中进行。然而,这种做法容易将虚拟机磁盘文件割裂为若干个文件,进而容易将针对虚拟机磁盘文件的顺序读操作转变为随机读操作,并显著降低从虚拟机中读取数据的性能。
技术实现思路
1、本发明的目的是提供一种虚拟机快照方法、装置、电子设备及存储介质,可对虚拟机磁盘文件的快照方式进行改进,以避免快照所导致的虚拟机磁盘文件读取性能下降问题。
2、为解决上述技术问题,本发明提供一种虚拟机快照方法,包括:
3、当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;
4、当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;
5、将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
6、可选地,所述确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,包括:
7、确定所述数据更新操作在所述虚拟机磁盘文件中对应的实际地址范围,并确定所述实际地址范围的实际起始地址和实际结束地址;
8、确定与实际起始地址相邻且小于所述实际起始地址的第一地址以及与所述实际结束地址相邻且大于所述实际结束地址的第二地址;所述第一地址和所述第二地址均为预设值的整数倍;
9、以所述第一地址为起始地址、以所述第二地址为结束地址确定所述更新地址范围。
10、可选地,在利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围之后,还包括:
11、若确定所述首次更新地址范围不存在,则在所述虚拟机磁盘文件中执行所述数据更新操作。
12、可选地,在为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻之后,还包括:
13、依照所述创建时刻将所述原数据保留文件顺序添加至链表;所述链表记录有每次执行所述快照创建操作时所述虚拟机磁盘文件对应的原数据保留文件。
14、可选地,所述将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,包括:
15、将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围;
16、将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表。
17、可选地,所述利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围,包括:
18、在所述修改数据块记录表的各条目所保存的已变更地址范围中,判断是否有与所述更新地址范围重叠的目标已变更地址范围;
19、当确定存在与所述更新地址范围重叠的目标已变更地址范围时,去除所述更新地址范围中与所述目标已变更地址范围重叠的部分,得到所述首次更新地址范围;
20、所述将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围,包括:
21、当确定存在与所述更新地址范围重叠的目标已变更地址范围时,利用包含所述目标已变更地址范围的条目从所述原数据保留文件中提取对应的已保存原数据;
22、将所述首次更新地址范围中存在的原数据与所述已保存原数据合并得到合并原数据,将所述合并原数据写回所述原数据保留文件,并确定所述合并原数据在所述原数据保留文件中的存放地址范围;
23、所述将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表,包括:
24、当确定存在与所述更新地址范围重叠的目标已变更地址范围时,将所述首次更新地址范围与所述目标已变更地址范围合并得到合并已变更地址范围,并利用所述合并已变更地址范围和所述合并原数据对应的存放地址范围更新包含所述目标已变更地址范围的条目。
25、可选地,在判断是否有与所述更新地址范围重叠的目标已变更地址范围之后,还包括:
26、当确定不存在与所述更新地址范围重叠的目标已变更地址范围时,将所述更新地址范围设置为所述首次更新地址范围;
27、所述将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围,包括:
28、当确定不存在与所述更新地址范围重叠的目标已变更地址范围时,判断所述首次更新地址范围中是否存在原数据;
29、若是,则将所述原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围;
30、所述将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表,包括:
31、当确定不存在与所述更新地址范围重叠的目标已变更地址范围且所述首次更新地址范围中存在原数据时,将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表;
32、当确定不存在与所述更新地址范围重叠的目标已变更地址范围且所述首次更新地址范围中不存在原数据时,将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型及所述已变更地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表。
33、可选地,在将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件之后,还包括:
34、在接收到快照恢复操作时,将所述修改数据块记录表中的首个条目设置为待处理条目;
35、根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围或所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复;
36、当确定所述修改数据块记录表中存在未处理的条目时,将所述待处理条目更新为所述待处理条目的下一条目,并进入所述根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围或所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复的步骤。
37、可选地,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围对所述虚拟机磁盘文件进行恢复,包括:
38、当确定所述待处理条目中的数据更新操作类型为数据新增时,将所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的数据进行删除。
39、可选地,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复,包括:
40、当确定所述待处理条目中的数据更新操作类型为数据修改时,利用所述待处理条目中的存放地址范围对应的已保存原数据对所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的数据进行替换。
41、可选地,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复,包括:
42、当确定所述待处理条目中的数据更新操作类型为数据删除时,将所述待处理条目中的存放地址范围对应的已保存原数据写回所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的位置。
43、可选地,在将所述条目保存至所述原数据保留文件中的修改数据块记录表之前,还包括:
44、在所述条目中添加接收所述数据更新操作的接收时刻,并进入所述将所述条目保存至所述原数据保留文件中的修改数据块记录表的步骤;
45、在将所述修改数据块记录表中的首个条目设置为待处理条目之前,还包括:
46、根据所述修改数据块记录表中各条目包含的接收时刻对各所述条目进行排序,并进入所述将所述修改数据块记录表中的首个条目设置为待处理条目的步骤。
47、本发明还提供一种虚拟机快照装置,包括:
48、创建模块,用于当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;
49、首次更新地址范围确定模块,用于当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;
50、原数据记录模块,用于将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
51、本发明还提供一种电子设备,包括:
52、存储器,用于存储计算机程序;
53、处理器,用于执行所述计算机程序时实现如上所述的虚拟机快照方法。
54、本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上所述的虚拟机快照方法。
55、本发明提供一种虚拟机快照方法,包括:当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
56、可见,本发明在接收到快照创建操作时,可为虚拟机磁盘文件创建空的原数据保留文件,并记录原数据保留文件对应的创建时刻,即并不会为虚拟机磁盘文件创建快照副本;随后,当接收到数据更新操作时,本发明可确定数据更新操作在虚拟机磁盘文件中对应的更新地址范围,并利用原数据保留文件确定更新地址范围中在创建时刻之后首次发生数据更新的首次更新地址范围,进而将数据更新操作类型、首次更新地址范围及首次更新地址范围中存在的原数据保存至原数据保留文件,并在虚拟机磁盘文件中执行数据更新操作。换句话说,本发明可利用原数据保留文件保存虚拟机磁盘文件中的原数据,且在进行数据更新时,原数据保留文件并不会替代虚拟机磁盘文件,所有的数据更新操作均仅会作用于虚拟机磁盘文件;更重要的是,本发明仅在确定数据更新操作在虚拟机磁盘文件中所针对的地址是在原数据保留文件的创建时刻之后首次发生数据更新时,才将该地址中的原数据保存至原数据保留文件,进而能够有效确保原数据保留文件保持较小体积,从而能够提升快照性能。本发明还提供一种虚拟机快照装置、电子设备及计算机可读存储介质,具有上述有益效果。