CN117311911A - 一种虚拟机快照方法、装置、电子设备及存储介质 - Google Patents

一种虚拟机快照方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117311911A
CN117311911A CN202311610135.5A CN202311610135A CN117311911A CN 117311911 A CN117311911 A CN 117311911A CN 202311610135 A CN202311610135 A CN 202311610135A CN 117311911 A CN117311911 A CN 117311911A
Authority
CN
China
Prior art keywords
address range
data
original data
file
virtual machine
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
Application number
CN202311610135.5A
Other languages
English (en)
Other versions
CN117311911B (zh
Inventor
马国良
陈彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311610135.5A priority Critical patent/CN117311911B/zh
Publication of CN117311911A publication Critical patent/CN117311911A/zh
Application granted granted Critical
Publication of CN117311911B publication Critical patent/CN117311911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种虚拟机快照方法、装置、电子设备及存储介质,涉及虚拟机领域,可在接收到快照创建操作时为虚拟机磁盘文件创建对应的原数据保留文件,并利用该原数据保留文件保存虚拟机磁盘文件中的原数据,以确保仅存在一个虚拟机磁盘文件,且后续数据更新操作均仅会作用于虚拟机磁盘文件,避免快照所导致的虚拟机磁盘文件读取性能下降问题;并且,本发明仅在确定数据更新操作在虚拟机磁盘文件中所针对的地址在原数据保留文件的创建时刻之后首次发生数据更新时,才将该地址中的原数据保存至原数据保留文件,从而能够有效确保原数据保留文件保持较小体积,进而能够提升快照性能。

Description

一种虚拟机快照方法、装置、电子设备及存储介质
技术领域
本发明涉及虚拟机领域,特别涉及一种虚拟机快照方法、装置、电子设备及存储介质。
背景技术
虚拟机快照是一种常见的容灾手段,其通常可为虚拟机磁盘文件(VMDK,VirtualMachine Disk)创建某个时刻对应的快照副本,这样当虚拟机磁盘文件发生故障时,可基于快照副本对虚拟机磁盘文件进行恢复。
相关技术中,虚拟机快照的创建流程一般为:为当前虚拟机磁盘文件创建快照副本,并将当前虚拟机磁盘文件作为历史虚拟机磁盘文件并设置为只读状态,以及将快照副本作为新的虚拟机磁盘文件。在完成快照创建后,后续发生所有数据更新均只在新的虚拟机磁盘文件中进行。然而,这种做法容易将虚拟机磁盘文件割裂为若干个文件,进而容易将针对虚拟机磁盘文件的顺序读操作转变为随机读操作,并显著降低从虚拟机中读取数据的性能。
发明内容
本发明的目的是提供一种虚拟机快照方法、装置、电子设备及存储介质,可对虚拟机磁盘文件的快照方式进行改进,以避免快照所导致的虚拟机磁盘文件读取性能下降问题。
为解决上述技术问题,本发明提供一种虚拟机快照方法,包括:
当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;
当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;
将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
可选地,所述确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,包括:
确定所述数据更新操作在所述虚拟机磁盘文件中对应的实际地址范围,并确定所述实际地址范围的实际起始地址和实际结束地址;
确定与实际起始地址相邻且小于所述实际起始地址的第一地址以及与所述实际结束地址相邻且大于所述实际结束地址的第二地址;所述第一地址和所述第二地址均为预设值的整数倍;
以所述第一地址为起始地址、以所述第二地址为结束地址确定所述更新地址范围。
可选地,在利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围之后,还包括:
若确定所述首次更新地址范围不存在,则在所述虚拟机磁盘文件中执行所述数据更新操作。
可选地,在为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻之后,还包括:
依照所述创建时刻将所述原数据保留文件顺序添加至链表;所述链表记录有每次执行所述快照创建操作时所述虚拟机磁盘文件对应的原数据保留文件。
可选地,所述将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,包括:
将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围;
将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表。
可选地,所述利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围,包括:
在所述修改数据块记录表的各条目所保存的已变更地址范围中,判断是否有与所述更新地址范围重叠的目标已变更地址范围;
当确定存在与所述更新地址范围重叠的目标已变更地址范围时,去除所述更新地址范围中与所述目标已变更地址范围重叠的部分,得到所述首次更新地址范围;
所述将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围,包括:
当确定存在与所述更新地址范围重叠的目标已变更地址范围时,利用包含所述目标已变更地址范围的条目从所述原数据保留文件中提取对应的已保存原数据;
将所述首次更新地址范围中存在的原数据与所述已保存原数据合并得到合并原数据,将所述合并原数据写回所述原数据保留文件,并确定所述合并原数据在所述原数据保留文件中的存放地址范围;
所述将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表,包括:
当确定存在与所述更新地址范围重叠的目标已变更地址范围时,将所述首次更新地址范围与所述目标已变更地址范围合并得到合并已变更地址范围,并利用所述合并已变更地址范围和所述合并原数据对应的存放地址范围更新包含所述目标已变更地址范围的条目。
可选地,在判断是否有与所述更新地址范围重叠的目标已变更地址范围之后,还包括:
当确定不存在与所述更新地址范围重叠的目标已变更地址范围时,将所述更新地址范围设置为所述首次更新地址范围;
所述将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围,包括:
当确定不存在与所述更新地址范围重叠的目标已变更地址范围时,判断所述首次更新地址范围中是否存在原数据;
若是,则将所述原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围;
所述将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表,包括:
当确定不存在与所述更新地址范围重叠的目标已变更地址范围且所述首次更新地址范围中存在原数据时,将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表;
当确定不存在与所述更新地址范围重叠的目标已变更地址范围且所述首次更新地址范围中不存在原数据时,将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型及所述已变更地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表。
可选地,在将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件之后,还包括:
在接收到快照恢复操作时,将所述修改数据块记录表中的首个条目设置为待处理条目;
根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围或所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复;
当确定所述修改数据块记录表中存在未处理的条目时,将所述待处理条目更新为所述待处理条目的下一条目,并进入所述根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围或所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复的步骤。
可选地,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围对所述虚拟机磁盘文件进行恢复,包括:
当确定所述待处理条目中的数据更新操作类型为数据新增时,将所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的数据进行删除。
可选地,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复,包括:
当确定所述待处理条目中的数据更新操作类型为数据修改时,利用所述待处理条目中的存放地址范围对应的已保存原数据对所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的数据进行替换。
可选地,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复,包括:
当确定所述待处理条目中的数据更新操作类型为数据删除时,将所述待处理条目中的存放地址范围对应的已保存原数据写回所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的位置。
可选地,在将所述条目保存至所述原数据保留文件中的修改数据块记录表之前,还包括:
在所述条目中添加接收所述数据更新操作的接收时刻,并进入所述将所述条目保存至所述原数据保留文件中的修改数据块记录表的步骤;
在将所述修改数据块记录表中的首个条目设置为待处理条目之前,还包括:
根据所述修改数据块记录表中各条目包含的接收时刻对各所述条目进行排序,并进入所述将所述修改数据块记录表中的首个条目设置为待处理条目的步骤。
本发明还提供一种虚拟机快照装置,包括:
创建模块,用于当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;
首次更新地址范围确定模块,用于当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;
原数据记录模块,用于将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
本发明还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的虚拟机快照方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上所述的虚拟机快照方法。
本发明提供一种虚拟机快照方法,包括:当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
可见,本发明在接收到快照创建操作时,可为虚拟机磁盘文件创建空的原数据保留文件,并记录原数据保留文件对应的创建时刻,即并不会为虚拟机磁盘文件创建快照副本;随后,当接收到数据更新操作时,本发明可确定数据更新操作在虚拟机磁盘文件中对应的更新地址范围,并利用原数据保留文件确定更新地址范围中在创建时刻之后首次发生数据更新的首次更新地址范围,进而将数据更新操作类型、首次更新地址范围及首次更新地址范围中存在的原数据保存至原数据保留文件,并在虚拟机磁盘文件中执行数据更新操作。换句话说,本发明可利用原数据保留文件保存虚拟机磁盘文件中的原数据,且在进行数据更新时,原数据保留文件并不会替代虚拟机磁盘文件,所有的数据更新操作均仅会作用于虚拟机磁盘文件;更重要的是,本发明仅在确定数据更新操作在虚拟机磁盘文件中所针对的地址是在原数据保留文件的创建时刻之后首次发生数据更新时,才将该地址中的原数据保存至原数据保留文件,进而能够有效确保原数据保留文件保持较小体积,从而能够提升快照性能。本发明还提供一种虚拟机快照装置、电子设备及计算机可读存储介质,具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种虚拟机快照方法的流程图;
图2为本发明实施例所提供的一种数据修改的示意图;
图3为本发明实施例所提供的一种数据修改的流程图;
图4为本发明实施例所提供的一种数据删除的流程图;
图5为本发明实施例所提供的一种数据新增的流程图;
图6为本发明实施例所提供的一种虚拟机快照装置的结构框图;
图7为本发明实施例所提供的一种电子设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,虚拟机快照的创建流程一般为:为当前虚拟机磁盘文件创建快照副本,并将当前虚拟机磁盘文件作为历史虚拟机磁盘文件并设置为只读状态,以及将快照副本作为新的虚拟机磁盘文件。在完成快照创建后,后续发生所有数据更新均只在新的虚拟机磁盘文件中进行。然而,这种做法容易将虚拟机磁盘文件割裂为若干个文件,进而容易将针对虚拟机磁盘文件的顺序读操作转变为随机读操作,并显著降低从虚拟机中读取数据的性能。有鉴于此,本发明可提供一种虚拟机快照方法,可对虚拟机磁盘文件的快照方式进行改进,以避免快照所导致的虚拟机磁盘文件读取性能下降问题。
需要说明的是,本发明实施例并不限定执行本方法的硬件设备,其可以为任意能够部署虚拟机的硬件设备,例如可以为个人电脑、服务器等,可根据实际应用需求进行设定。
请参考图1,图1为本发明实施例所提供的一种虚拟机快照方法的流程图,该方法可以包括:
S100、当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件。
可以理解的是,快照创建操作为虚拟机磁盘文件创建快照的操作。与相关技术不同的是,本发明实施例在接收到快照创建操作时,并不会为虚拟机磁盘文件创建快照副本,而是可为虚拟机磁盘文件创建一个空的原数据保留文件,并将记录原数据保留文件对应的创建时刻。本发明实施例可将虚拟机磁盘文件在创建时刻所对应的所有已有数据作为原数据,并利用这一原数据保留文件对原数据进行保存,以利用该原数据保留文件实现快照的效果。当然,对原数据的记录并不发生在执行快照创建操作之时,而是将发生在后续执行数据更新操作之时,本发明将在后续的实施例中进行介绍。
进一步,为提升原数据保留文件的管理效果,以便后续对虚拟机磁盘文件进行恢复,可依照创建时刻将原数据保留文件顺序添加至链表,其中该链表记录有每次执行快照创建操作时虚拟机磁盘文件对应的原数据保留文件。
基于此,在为虚拟机磁盘文件创建原数据保留文件,并记录原数据保留文件对应的创建时刻之后,还可以包括:
S101:依照创建时刻将原数据保留文件顺序添加至链表;链表记录有每次执行快照创建操作时虚拟机磁盘文件对应的原数据保留文件。
S200、当接收到数据更新操作时,确定数据更新操作在虚拟机磁盘文件中对应的更新地址范围,并利用原数据保留文件确定更新地址范围中在创建时刻之后首次发生数据更新的首次更新地址范围。
在本发明实施例中,数据更新操作为对虚拟机磁盘文件进行数据更新的操作,例如可以为数据写入操作、数据删除操作。为进一步区分是否对原数据造成修改,在本发明实施例中,数据写入操作可进一步划分为数据新增操作和数据修改操作,其中数据新增操作为在虚拟机磁盘文件中不包含数据的位置写入新数据,而数据修改操作为在在虚拟机磁盘文件包含数据的位置写入新数据,即数据修改操作对虚拟机磁盘文件中的数据造成了修改。
应当指出的是,与相关技术不同的是,本发明实施例中有且仅存在一个虚拟机磁盘文件,且数据更新操作将直接作用于虚拟机磁盘文件之上。可以理解的是,这样设置将导致虚拟机磁盘文件在上述创建时刻所确定下的原数据被修改,因此在数据更新操作执行前,需要将数据更新操作所要修改的原数据迁移至原数据保留文件。为此,本发明实施例需确定数据更新操作在虚拟机磁盘文件中对应的更新地址范围,并确定该更新地址范围中是否包含在创建时刻之后首次发生数据更新的地址,若包含在上述创建时刻之后首次发生数据更新的地址,则可将这些地址形成首次更新地址范围,以将首次更新地址范围中的原数据迁移至原数据保留文件。而对于更新地址范围中不是在创建时刻之后首次发生数据更新的地址,由于其对应的原数据已记录至原数据保留文件中,因此无需进行记录处理。另外,若更新地址范围中的所有地址均不是在创建时刻之后首次发生数据更新的地址,则也可无需对更新地址范围中的数据进行任何记录处理。
需要说明的是,本发明实施例并不限定如何确定数据更新操作所对应的更新地址范围,该更新地址范围既可以仅由数据更新操作所针对的地址构成,也可在数据更新操作所针对的地址的基础上进一步扩展得到。考虑到数据更新操作通常仅对较少数据进行修改,即数据更新操作所针对的地址范围通常较小,进而在频繁接收到数据更新操作时,可能会对原数据保留文件进行频繁的数据写入,不利于原数据记录,因此在本发明实施例中,数据更新操作所针对应的更新地址范围可在数据更新操作所针对的地址的基础上进一步外扩得到。例如,若当前的数据更新操作仅针对地址B,则可将与地址B相邻的地址A和地址C进一步囊括至更新地址范围中,并在当前的数据更新操作执行之前,将地址A、地址B和地址C中的原数据均迁移至原数据保留文件中。这样,若下次再接收到针对地址A或地址C的数据更新操作,则可不需要向原数据保留文件中写入地址A或地址C的原数据。需要说明的是,本发明实施例并不限定扩展范围,可根据实际应用需求进行设定。例如,可将数据更新操作所针对的实际地址范围扩展为更新地址范围,使得更新地址范围的大小为预设值的整数倍,其中预设值可依照实际应用需求进行设定,如可以依照扇区大小进行设定,如预设值可以为扇区大小的两倍值(即1KB)。进一步的,为确保能够整齐分割更新地址范围,还可获取数据更新操作所针对的实际地址范围的实际起始地址和实际结束地址,并确定与实际起始地址相邻且小于实际起始地址的第一地址以及与实际结束地址相邻且大于实际结束地址的第二地址,进而以第一地址为起始地址、以第二地址为结束地址确定更新地址范围,其中第一地址和第二地址均为预设值的整数倍。
基于此,确定数据更新操作在虚拟机磁盘文件中对应的更新地址范围,可以包括:
S201:确定数据更新操作在虚拟机磁盘文件中对应的实际地址范围,并确定实际地址范围的实际起始地址和实际结束地址;
S202:确定与实际起始地址相邻且小于实际起始地址的第一地址以及与实际结束地址相邻且大于实际结束地址的第二地址;第一地址和第二地址均为预设值的整数倍;
S203:以第一地址为起始地址、以第二地址为结束地址确定更新地址范围。
S300、将数据更新操作类型、首次更新地址范围及首次更新地址范围中存在的原数据保存至原数据保留文件,并在虚拟机磁盘文件中执行数据更新操作。
此处值得指出的是,为方便数据更新,可将更新地址范围在虚拟机磁盘文件中对应的数据块提取至内存,在内存中将首次更新地址范围对应的原数据分离出来写入原数据保留文件,再在内存中对原数据执行数据更新操作,并将内存中的数据块重新写回至虚拟机磁盘文件,以完成数据更新。
进一步,还需要指出的是,本发明实施例指出需要将首次更新地址范围中存在的原数据保存至原数据保留文件,但首次更新地址范围中地址不仅不一定包含有原数据,甚至也可能不包含任何数据。对于首次更新的、不包含任何数据的地址,假若仅需对该地址进行记录,则可不将该地址对应的空数据记录至原数据保留文件,其中空数据表示该地址无数据;反之,若需要同时记录地址及其数据,则可也将首次更新的、不包含任何数据的地址及其对应的空数据均记录至原数据保留文件,可根据实际应用需求进行设定。换句话说,空数据也可以属于原数据。
进一步,本发明实施例除了需要将首次更新地址范围及首次更新地址范围中存在的原数据记录至原数据保留文件之外,可以理解的是,不同数据更新操作类型对应的数据恢复方式不同,因此还需将数据更新操作类型也保存至原数据保留文件中。为方便数据管理,本发明实施例可将原数据保留文件分为两个部分,其中第一部分用于存放原数据,其形式可依照虚拟机磁盘文件进行设置;第二部分设置有一个修改数据块记录表,该表至少用于记录数据更新操作类型、首次更新地址范围及对应的原数据在原数据保留文件中的存放地址范围。修改数据块记录表可设置在原数据保留文件的头部,以便数据读取。
基于此,将数据更新操作类型、首次更新地址范围及首次更新地址范围中存在的原数据保存至原数据保留文件,可以包括:
S310:将首次更新地址范围中存在的原数据保存至原数据保留文件,并确定原数据在原数据保留文件中对应的存放地址范围;
S320:将首次更新地址范围设置为已变更地址范围,并将数据更新操作类型、已变更地址范围及存放地址范围添加至条目,并将条目保存至原数据保留文件中的修改数据块记录表。
已变更地址范围即为已记录至修改数据块记录表中的首次更新地址范围。换句话说,修改数据块记录表中的每条目记录有数据更新操作类型及已变更地址范围和存放地址范围间的映射关系,以便数据获取及恢复。需要说明的是,本发明实施例并不限定如何地址范围在修改数据块记录表中的记录方式,如可以范围的形式进行记录,也可以起始地址、结束地址及数据块大小的形式进行记录。请参考下表,下表展示了修改数据块记录表中一种可能的条目所包含的内容:
表1 修改数据块记录表格式
进一步,在将原数据记录至原数据保留文件之后,便可在虚拟机磁盘文件中执行数据更新操作。当然,若更新地址范围不存在首次发生数据更新的地址时,则也可直接在虚拟机磁盘文件中执行数据更新操作。
基于此,在利用原数据保留文件确定更新地址范围中在创建时刻之后首次发生数据更新的首次更新地址范围之后,还可以包括:
S400、若确定首次更新地址范围不存在,则在虚拟机磁盘文件中执行数据更新操作。
基于上述实施例,本发明在接收到快照创建操作时,可为虚拟机磁盘文件创建空的原数据保留文件,并记录原数据保留文件对应的创建时刻,即并不会为虚拟机磁盘文件创建快照副本;随后,当接收到数据更新操作时,本发明可确定数据更新操作在虚拟机磁盘文件中对应的更新地址范围,并利用原数据保留文件确定更新地址范围中在创建时刻之后首次发生数据更新的首次更新地址范围,进而将数据更新操作类型、首次更新地址范围及首次更新地址范围中存在的原数据保存至原数据保留文件,并在虚拟机磁盘文件中执行数据更新操作。换句话说,本发明可利用原数据保留文件保存虚拟机磁盘文件中的原数据,且在进行数据更新时,原数据保留文件并不会替代虚拟机磁盘文件,所有的数据更新操作均仅会作用于虚拟机磁盘文件;更重要的是,本发明仅在确定数据更新操作在虚拟机磁盘文件中所针对的地址是在原数据保留文件的创建时刻之后首次发生数据更新时,才将该地址中的原数据保存至原数据保留文件,进而能够有效确保原数据保留文件保持较小体积,从而能够提升快照性能。
基于上述实施例,为确保原数据保留文件能够依照原数据在虚拟机磁盘文件中的地址对该原数据进行连续存放,本发明实施例在确定当前的更新地址范围与原数据保留文件中的目标已变更地址范围重叠且当前的更新地址范围存在首次发生数据更新的地址时,可将本次迁移的原数据与目标已变更地址范围在原数据保留文件中对应的已记录原数据进行合并,以及将当前的更新地址范围合并至目标已变更地址范围对应的条目中。这样,不仅能够确保原数据在原数据保留文件中连续存放,且能够减少原数据保留文件中的条目数量。为实现上述效果,在一种可能的情况中,利用原数据保留文件确定更新地址范围中在创建时刻之后首次发生数据更新的首次更新地址范围,可以包括:
S211、在修改数据块记录表的各条目所保存的已变更地址范围中,判断是否有与更新地址范围重叠的目标已变更地址范围。
可以理解的是,重叠包含三种情况:1、更新地址范围包含目标已变更地址范围;2、更新地址范围与目标已变更地址范围存在交集;3、目标已变更地址范围包含更新地址范围。前两种情况中,更新地址范围中包含首次更新地址范围,具体为更新地址范围除与目标已变更地址存在交集的部分;而在第三种情况中,更新地址范围中不包含首次更新地址范围。
S212、当确定存在与更新地址范围重叠的目标已变更地址范围时,去除更新地址范围中与目标已变更地址范围重叠的部分,得到首次更新地址范围。
可以理解的是,当存在与更新地址范围重叠的目标已变更地址范围时,仅在目标已变更地址范围不包含更新地址范围时可获得首次更新地址范围。若标已变更地址范围已完整包含更新地址范围时,则说明更新地址范围没有首次发生数据更新的地址,则可无需执行后续记录操作,并可直接在虚拟机磁盘文件中进行数据更新操作。
S213、当确定不存在与更新地址范围重叠的目标已变更地址范围时,将更新地址范围设置为首次更新地址范围。
可以理解的是,当不存在与更新地址范围重叠的目标已变更地址范围时,此时更新地址范围中仅包含首次更新地址范围。
相应的,将首次更新地址范围中存在的原数据保存至原数据保留文件,并确定原数据在原数据保留文件中对应的存放地址范围,可以包括:
S3111、当确定存在与更新地址范围重叠的目标已变更地址范围时,利用包含目标已变更地址范围的条目从原数据保留文件中提取对应的已保存原数据;
S3112、将首次更新地址范围中存在的原数据与已保存原数据合并得到合并原数据,将合并原数据写回原数据保留文件,并确定合并原数据在原数据保留文件中的存放地址范围。
应当指出的是,当确定存在与更新地址范围重叠的目标已变更地址范围时则执行步骤S3111和S3112。此时,由于原数据保留文件中具有与当前待写入的原数据存在地址范围连续的已保存原数据,为确保待写入的原数据和已保存原数据能够连续存放,因此可将该已保存原数据取出,并将其与待写入的原数据进行合并得到合并原数据,并将合并原数据重新写回原数据保留文件,从而能够将地址范围连续的原数据保存在一起。当然,由于合并原数据的数据块长度及存放地址范围相较于已保存原数据均已发生了变更,因此本发明实施例需要重新获取合并原数据在原数据保留文件中的存放地址范围,以对已保存原数据的条目进行更新。
S3121、当确定不存在与更新地址范围重叠的目标已变更地址范围时,判断首次更新地址范围中是否存在原数据;若是,则进入步骤S3122;若否,则进入步骤S3222;
S3122、将原数据保存至原数据保留文件,并确定原数据在原数据保留文件中对应的存放地址范围;
应当指出的是,当确定不存在与更新地址范围重叠的目标已变更地址范围时则执行步骤S3121和S3122。此时,在确定首次更新地址范围中存在原数据(均不为空)时,由于原数据保留文件中不具有与该原数据存在地址范围连续的已保存原数据,因此需单独记录该原数据。当然,若确定首次更新地址范围中不存在原数据(或所有原数据均为空数据),为避免空间浪费,也可不对首次更新地址范围中任何数据进行保存。
相应的,将首次更新地址范围设置为已变更地址范围,并将数据更新操作类型、已变更地址范围及存放地址范围添加至条目,并将条目保存至原数据保留文件中的修改数据块记录表,包括:
S3211、当确定存在与更新地址范围重叠的目标已变更地址范围时,将首次更新地址范围与目标已变更地址范围合并得到合并已变更地址范围,并利用合并已变更地址范围和合并原数据对应的存放地址范围更新包含目标已变更地址范围的条目。
当确定存在与更新地址范围重叠的目标已变更地址范围时执行步骤S3211。如上所述,此时可进行原数据合并,并可将首次更新地址范围与目标已变更地址范围合并得到合并已变更地址范围,以及利用合并已变更地址范围和合并原数据对应的存放地址范围更新包含目标已变更地址范围的条目。
S3221、当确定不存在与更新地址范围重叠的目标已变更地址范围且首次更新地址范围中存在原数据时,将首次更新地址范围设置为已变更地址范围,并将数据更新操作类型、已变更地址范围及存放地址范围添加至条目,并将条目保存至原数据保留文件中的修改数据块记录表;
S3222、当确定不存在与更新地址范围重叠的目标已变更地址范围且首次更新地址范围中不存在原数据时,将首次更新地址范围设置为已变更地址范围,并将数据更新操作类型及已变更地址范围添加至条目,并将条目保存至原数据保留文件中的修改数据块记录表。
当确定不存在与更新地址范围重叠的目标已变更地址范围时执行步骤S3221或S3222。若确定首次更新地址范围中存在原数据时,可正常将数据更新操作类型、已变更地址范围及存放地址范围添加至条目,并将条目保存至修改数据块记录表;若确定首次更新地址范围中不存在原数据时,则仅需将数据更新操作类型及已变更地址范围添加至条目,并将条目保存至修改数据块记录表即可。
进一步,值得指出的是,修改数据块记录表可依照创建次序顺序记录各个条目,以便后续根据条目顺序进行数据恢复。需要注意的是,对于存在合并的条目,由于该条目中的内容已变更,因此需要作为新创建的条目重新写入修改数据块记录表。另外,为方便管理,各条目中还可包含数据更新操作的接收时刻,以根据该接收时刻对各条目进行排序。对于存在合并的条目,其记录的接收时刻将被更新为与其对应的最近的数据更新操作的接收时刻。
基于上述实施例,下面对基于原数据保留文件进行数据恢复的具体方式进行介绍。在一种可能的情况中,在将数据更新操作类型、首次更新地址范围及首次更新地址范围中存在的原数据保存至原数据保留文件之后,还可以包括:
S500、在接收到快照恢复操作时,将修改数据块记录表中的首个条目设置为待处理条目。
如上所述,本发明实施例中的修改数据块记录表可顺序记录条目,以根据条目顺序进行数据恢复。可以理解的是,数据恢复时使用的条目顺序为条目创建顺序的倒序。为方便条目排序,条目在写入修改数据块记录表之前,还可添加接收对应数据更新操作的接收时刻。这样,在进行数据恢复时,可根据修改数据块记录表中各条目包含的接收时刻对各条目进行排序(如倒序),以依照时间顺序进行数据恢复。
基于此,在将条目保存至原数据保留文件中的修改数据块记录表之前,还可以包括:
步骤11:在条目中添加接收数据更新操作的接收时刻,并进入将条目保存至原数据保留文件中的修改数据块记录表的步骤;
在将修改数据块记录表中的首个条目设置为待处理条目之前,还可以包括:
步骤12:根据修改数据块记录表中各条目包含的接收时刻对各条目进行排序,并进入将修改数据块记录表中的首个条目设置为待处理条目的步骤。
S600、根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围或待处理条目中的已变更地址范围与待处理条目中的存放地址范围对应的已保存原数据的组合对虚拟机磁盘文件进行恢复。
如上所述,不同的数据更新操作类型对应的数据恢复方式不同,因此本发明实施例需根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围或待处理条目中的已变更地址范围与待处理条目中的存放地址范围对应的已保存原数据的组合对虚拟机磁盘文件进行恢复,具体包含以下三种情况:
在一种可能的情况中,根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围对虚拟机磁盘文件进行恢复,包括:
S611:当确定待处理条目中的数据更新操作类型为数据新增时,将待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的数据进行删除。
若待处理条目中的数据更新操作类型为数据新增,则意味着该待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的位置原先并不存在任何数据。因此,仅需将待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的数据进行删除即可。
在一种可能的情况中,根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围与待处理条目中的存放地址范围对应的已保存原数据的组合对虚拟机磁盘文件进行恢复,包括:
S621:当确定待处理条目中的数据更新操作类型为数据修改时,利用待处理条目中的存放地址范围对应的已保存原数据对待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的数据进行替换。
若待处理条目中的数据更新操作类型为数据修改,则意味着该待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的位置原先存在原数据。因此,需利用待处理条目中的存放地址范围对应的已保存原数据对待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的数据进行替换,以完成恢复。
在一种可能的情况中,根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围与待处理条目中的存放地址范围对应的已保存原数据的组合对虚拟机磁盘文件进行恢复,包括:
S631:当确定待处理条目中的数据更新操作类型为数据删除时,将待处理条目中的存放地址范围对应的已保存原数据写回待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的位置。
若待处理条目中的数据更新操作类型为数据删除,则意味着该待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的位置原先存在的原数据已被删除。因此,与数据修改类似的,需将待处理条目中的存放地址范围对应的已保存原数据写回待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的位置,以完成数据恢复。
S700、当确定修改数据块记录表中存在未处理的条目时,将待处理条目更新为待处理条目的下一条目,并进入根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围或待处理条目中的已变更地址范围与待处理条目中的存放地址范围对应的已保存原数据的组合对虚拟机磁盘文件进行恢复的步骤。
下面基于具体的流程图对上述虚拟机快照方法进行详细介绍。本方案主要分为三个部分,即虚拟机快照数据的存储逻辑、原数据保留文件结构及使用快照恢复虚拟机部分。下面将基于各部分对本方案进行介绍。
1、虚拟机快照数据的存储逻辑:
对虚拟机执行快照后,自动生成一个原数据保留文件,刚创建的时候该文件大小为0,即它是一个空文件。如果该虚拟机执行快照后没有数据的增删改变化,该原数据保留文件将不会记录任何数据。
原数据保留文件包含修改数据块记录表,修改数据块记录表记录的是被修改过需要保留原数据的数据块,里面存储被修改数据在原VMDK文件(虚拟机磁盘文件)中的起始和结束存储位置、被保存的数据块大小、在原数据保留文件中的起始和结束存储位置等。当虚拟机某数据需要被修改时,会拿着该数据在原VMDK文件中的起始位置(假如为A)和结束位置(假如为B)与“修改数据块记录表”中记录的起始(假设为C)和结束位置(假设为D)进行比较。如果被修改的数据在原VMDK文件中的起始和结束位置与修改数据块记录表中的记录没有交集,则说明该数据没有被修改过,本次修改是该数据的首次修改,则将数据前后完整包含该数据至少1K整数倍的数据存储到原数据保留文件,并且修改修改数据块记录表增加该数据的记录,最后再将修改后的数据写回原VMDK文件。请参考图2,图2为本发明实施例所提供的一种数据修改的示意图。
请参考图3,图3为本发明实施例所提供的一种数据修改的流程图。如果要被修改的数据在原VMDK文件存储的起始和结束位置包含了修改数据块记录表中数据更新操作类型值为数据修改的记录起始和结束位置(例如,A小于C,C小于D,D小于B),说明此次修改数据其中部分数据之前被修改过,且本次修改的数据更多,则需要将此次被修改的数据在原VMDK文件的起始和结束位置内没有被保存的数据保存到“原数据保存文件”(例如,将原VMDK文件中A到C之间数据以及D到B之间数据,与C到D之间数据拼成一个连续数据块,保存到原数据保存文件)。如果被修改的数据在原VMDK的起始和结束位置与被修改数据块记录表中数据更新操作类型值为修改的记录包含或者交叉(例如,A小于C,C小于B,B小于D,或者是A大于C,A小于D,B大于D),说明此次修改数据中有部分数据被修改,这部分被修改的数据只是之前被修改数据的一部分,则需要将此次被修改的数据除去交叉部分然后将剩余部分与C到D之间数据组成大数据块保存到“原数据保存文件”(例如:A小于C,C小于B,B小于D情况,将A到B原数据中去掉C到B的部分,然后A到C与C到D形成大数据块)。
请参考图4,图4为本发明实施例所提供的一种数据删除的流程图。对于需要删除的数据,有可能删除的只是很少的数据(这时它可能只是某个数据块中的一部分数据),也有可能大量删除数据(这时删除可能包含很多数据块)。对于删除数据块的情况,数据块的保留策略参考上面数据块的修改保留策略,只是对VMDK的数据更新操作变更为删除。
请参考图5,图5为本发明实施例所提供的一种数据新增的流程图。对于快照后新增加的数据,新增数据需要存放到数据块中,如果是VMDK中新开辟新增数据块用于存放数据,这个数据块在VMDK中的位置需要记录到修改数据块记录表中,而且该记录在修改数据块记录表中的动作类型为新增,因为不需要将它记录到数据块保留文件中,所以该记录在数据块保留文件中的起始位置和结束位置设置为空。对于在已有数据块中新增数据,这和前面修改数据的逻辑相同。
2、原数据保留文件:
该原数据保留文件为二进制文件,用于保留虚拟机磁盘VMDK文件中被修改数据块的修改前内容,即保留这些数据块快照前的原有内容,以便在利用快照进行恢复的时候使用这些数据块快照前的原内容将虚拟机恢复到快照时的状态。通常虚拟机VMDK磁盘文件按1M块大小的块存放数据,为了减小原数据保留文件的大小,在保留原数据时使用可变大小块(最小1K大小)存放被修改数据的原数据内容,即只保留被修改数据所占用的空间大小(至少1K)。假如虚拟机需要修改某个文件内容,这个文件可能3M大小,虚拟机需要从VMDK中读取3M大小的数据到内存(假设这3M数据正好占用三个数据块,每个数据块1M),但被修改的内容可能就很少的内容,甚至就几个字符,这种情况下如果把修改数据所在的1M数据块全部保留到原数据保留文件,会使数据块保留文件比较大,比较浪费虚拟化系统存储空间。如果修改的数据未超过1K大小,那保留被修改数据前后1K大小的数据块,如果修改的数据超过1K,那么我们保留被修改数据前后1K整数倍的数据块,能包含住所有被修改数据块,这些被修改数据块在原VMDK中的位置会被记录到“原数据保留文件”的头部“修改数据块记录表”中。
3、使用快照恢复虚拟机:
使用本专利方法做完快照后,虚拟机VMDK文件是始终变化的,为了保留磁盘VMDK文件快照前的数据状态,本专利设计了原数据保留文件用于保留磁盘VMDK文件中快照前的数据状态。如下是使用原数据保留文件对磁盘VMDK文件进行恢复以恢复虚拟机快照时的VMDK文件内容。
首先遍历原数据保留文件,将其中active动作(即数据操作类型)为新增的记录全部取出,这些为新增的记录它们的在数据块保留文件中的起始位置和结束位置为空,所以只需要逐条根据在原VMDK文件中的起始位置和在原VMDK文件中的结束位置在原VMDK中找到相应数据块,然后将这些数据块在原VMDK中删除。
再次遍历原数据保留文件,将其中active动作为删除的记录全部取出,根据每条记录的在数据块保留文件中的起始位置和在数据块保留文件中的结束位置在原数据保留文件中将数据块内容取出,然后再根据在原VMDK文件中的起始位置和在原VMDK文件中的结束位置找到其在VMDK中的存储位置,使用从原数据保留文件中取出的数据块将其覆盖。
最后再遍历一次原数据保留文件,将其中active动作为修改的记录全部取出,根据每条记录的在数据块保留文件中的起始位置和在数据块保留文件中的结束位置在原数据保留文件中将数据块内容取出,然后再根据在原VMDK文件中的起始位置和在原VMDK文件中的结束位置找到其在VMDK中的存储位置,使用从原数据保留文件中取出的数据块将其覆盖。
通过以上的恢复步骤后,虚拟机VMDK硬盘文件恢复到快照前状态。
下面对本发明实施例提供的虚拟机快照装置、电子设备及计算机可读存储介质进行介绍,下文描述的虚拟机快照装置、电子设备及计算机可读存储介质与上文描述的虚拟机快照方法可相互对应参照。
请参考图6,图6为本发明实施例所提供的一种虚拟机快照装置的结构框图,该装置可以包括:
创建模块601,用于当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;
首次更新地址范围确定模块602,用于当接收到数据更新操作时,确定数据更新操作在虚拟机磁盘文件中对应的更新地址范围,并利用原数据保留文件确定更新地址范围中在创建时刻之后首次发生数据更新的首次更新地址范围;
原数据记录模块603,用于将数据更新操作类型、首次更新地址范围及首次更新地址范围中存在的原数据保存至原数据保留文件,并在虚拟机磁盘文件中执行数据更新操作。
可选地,首次更新地址范围确定模块602,可以包括:
实际地址范围确定子模块,用于确定数据更新操作在虚拟机磁盘文件中对应的实际地址范围,并确定实际地址范围的实际起始地址和实际结束地址;
地址确定子模块,用于确定与实际起始地址相邻且小于实际起始地址的第一地址以及与实际结束地址相邻且大于实际结束地址的第二地址;第一地址和第二地址均为预设值的整数倍;
更新地址范围确定子模块,用于以第一地址为起始地址、以第二地址为结束地址确定更新地址范围。
可选地,该装置还可以包括:
数据更新操作执行模块,用于若确定首次更新地址范围不存在,则在虚拟机磁盘文件中执行数据更新操作。
可选地,该装置还可以包括:
文件保存模块,用于依照创建时刻将原数据保留文件顺序添加至链表;链表记录有每次执行快照创建操作时虚拟机磁盘文件对应的原数据保留文件。
可选地,原数据记录模块603,可以包括:
原数据保存子模块,用于将首次更新地址范围中存在的原数据保存至原数据保留文件,并确定原数据在原数据保留文件中对应的存放地址范围;
修改数据块记录表更新子模块,用于将首次更新地址范围设置为已变更地址范围,并将数据更新操作类型、已变更地址范围及存放地址范围添加至条目,并将条目保存至原数据保留文件中的修改数据块记录表。
可选地,首次更新地址范围确定模块602,可以包括:
查找子模块,用于在修改数据块记录表的各条目所保存的已变更地址范围中,判断是否有与更新地址范围重叠的目标已变更地址范围;
第一处理子模块,用于当确定存在与更新地址范围重叠的目标已变更地址范围时,去除更新地址范围中与目标已变更地址范围重叠的部分,得到首次更新地址范围;
原数据保存子模块,可以包括:
提取单元,用于当确定存在与更新地址范围重叠的目标已变更地址范围时,利用包含目标已变更地址范围的条目从原数据保留文件中提取对应的已保存原数据;
写回单元,用于将首次更新地址范围中存在的原数据与已保存原数据合并得到合并原数据,将合并原数据写回原数据保留文件,并确定合并原数据在原数据保留文件中的存放地址范围;
修改数据块记录表更新子模块,可以包括:
第一更新单元,用于当确定存在与更新地址范围重叠的目标已变更地址范围时,将首次更新地址范围与目标已变更地址范围合并得到合并已变更地址范围,并利用合并已变更地址范围和合并原数据对应的存放地址范围更新包含目标已变更地址范围的条目。
可选地,首次更新地址范围确定模块602,还可以包括:
第二处理子模块,用于当确定不存在与更新地址范围重叠的目标已变更地址范围时,将更新地址范围设置为首次更新地址范围;
原数据保存子模块,可以包括:
写入单元,用于当确定不存在与更新地址范围重叠的目标已变更地址范围时,判断首次更新地址范围中是否存在原数据;若是,则将原数据保存至原数据保留文件,并确定原数据在原数据保留文件中对应的存放地址范围;
修改数据块记录表更新子模块,可以包括:
第二更新单元,用于当确定不存在与更新地址范围重叠的目标已变更地址范围且首次更新地址范围中存在原数据时,将首次更新地址范围设置为已变更地址范围,并将数据更新操作类型、已变更地址范围及存放地址范围添加至条目,并将条目保存至原数据保留文件中的修改数据块记录表;
第三更新单元,用于当确定不存在与更新地址范围重叠的目标已变更地址范围且首次更新地址范围中不存在原数据时,将首次更新地址范围设置为已变更地址范围,并将数据更新操作类型及已变更地址范围添加至条目,并将条目保存至原数据保留文件中的修改数据块记录表。
可选地,该装置还可以包括:
设置模块,用于在接收到快照恢复操作时,将修改数据块记录表中的首个条目设置为待处理条目;
恢复模块,用于根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围或待处理条目中的已变更地址范围与待处理条目中的存放地址范围对应的已保存原数据的组合对虚拟机磁盘文件进行恢复;
循环控制模块,用于当确定修改数据块记录表中存在未处理的条目时,将待处理条目更新为待处理条目的下一条目,并进入根据待处理条目中的数据更新操作类型,利用待处理条目中的已变更地址范围或待处理条目中的已变更地址范围与待处理条目中的存放地址范围对应的已保存原数据的组合对虚拟机磁盘文件进行恢复的步骤。
可选地,恢复模块,可以包括:
第一恢复子模块,用于当确定待处理条目中的数据更新操作类型为数据新增时,将待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的数据进行删除。
可选地,恢复模块,可以包括:
第二恢复子模块,用于当确定待处理条目中的数据更新操作类型为数据修改时,利用待处理条目中的存放地址范围对应的已保存原数据对待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的数据进行替换。
可选地,恢复模块,可以包括:
第三恢复子模块,用于当确定待处理条目中的数据更新操作类型为数据删除时,将待处理条目中的存放地址范围对应的已保存原数据写回待处理条目中的已变更地址范围在虚拟机磁盘文件中对应的位置。
修改数据块记录表更新子模块,还可以包括:
接收时刻添加单元,用于在条目中添加接收数据更新操作的接收时刻,并进入将条目保存至原数据保留文件中的修改数据块记录表的步骤;
设置模块,还可以包括:
排序子模块,用于根据修改数据块记录表中各条目包含的接收时刻对各条目进行排序,并进入将修改数据块记录表中的首个条目设置为待处理条目的步骤。
请参考图7,图7为本发明实施例所提供的一种电子设备的结构框图,本发明实施例提供了一种电子设备70,包括处理器71和存储器72;其中,所述存储器72,用于保存计算机程序;所述处理器71,用于在执行所述计算机程序时执行前述实施例提供的虚拟机快照方法。
关于上述虚拟机快照方法的具体过程可以参考前述实施例中提供的相应内容,在此不再进行赘述。
并且,所述存储器72作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
另外,所述电子设备70还包括电源73、通信接口74、输入输出接口75和通信总线76;其中,所述电源73用于为所述电子设备70上的各硬件设备提供工作电压;所述通信接口74能够为所述电子设备70创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本发明技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口75,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的虚拟机快照方法的步骤。
由于计算机可读存储介质部分的实施例与虚拟机快照方法部分的实施例相互对应,因此存储介质部分的实施例请参见虚拟机快照方法部分的实施例的描述,这里不再赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种虚拟机快照方法、装置、电子设备及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (15)

1.一种虚拟机快照方法,其特征在于,包括:
当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;
当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;
将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
2.根据权利要求1所述的虚拟机快照方法,其特征在于,所述确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,包括:
确定所述数据更新操作在所述虚拟机磁盘文件中对应的实际地址范围,并确定所述实际地址范围的实际起始地址和实际结束地址;
确定与实际起始地址相邻且小于所述实际起始地址的第一地址以及与所述实际结束地址相邻且大于所述实际结束地址的第二地址;所述第一地址和所述第二地址均为预设值的整数倍;
以所述第一地址为起始地址、以所述第二地址为结束地址确定所述更新地址范围。
3.根据权利要求1所述的虚拟机快照方法,其特征在于,在利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围之后,还包括:
若确定所述首次更新地址范围不存在,则在所述虚拟机磁盘文件中执行所述数据更新操作。
4.根据权利要求1所述的虚拟机快照方法,其特征在于,在为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻之后,还包括:
依照所述创建时刻将所述原数据保留文件顺序添加至链表;所述链表记录有每次执行所述快照创建操作时所述虚拟机磁盘文件对应的原数据保留文件。
5.根据权利要求1至4任一项所述的虚拟机快照方法,其特征在于,所述将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,包括:
将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围;
将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表。
6.根据权利要求5所述的虚拟机快照方法,其特征在于,所述利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围,包括:
在所述修改数据块记录表的各条目所保存的已变更地址范围中,判断是否有与所述更新地址范围重叠的目标已变更地址范围;
当确定存在与所述更新地址范围重叠的目标已变更地址范围时,去除所述更新地址范围中与所述目标已变更地址范围重叠的部分,得到所述首次更新地址范围;
所述将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围,包括:
当确定存在与所述更新地址范围重叠的目标已变更地址范围时,利用包含所述目标已变更地址范围的条目从所述原数据保留文件中提取对应的已保存原数据;
将所述首次更新地址范围中存在的原数据与所述已保存原数据合并得到合并原数据,将所述合并原数据写回所述原数据保留文件,并确定所述合并原数据在所述原数据保留文件中的存放地址范围;
所述将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表,包括:
当确定存在与所述更新地址范围重叠的目标已变更地址范围时,将所述首次更新地址范围与所述目标已变更地址范围合并得到合并已变更地址范围,并利用所述合并已变更地址范围和所述合并原数据对应的存放地址范围更新包含所述目标已变更地址范围的条目。
7.根据权利要求6所述的虚拟机快照方法,其特征在于,在判断是否有与所述更新地址范围重叠的目标已变更地址范围之后,还包括:
当确定不存在与所述更新地址范围重叠的目标已变更地址范围时,将所述更新地址范围设置为所述首次更新地址范围;
所述将所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围,包括:
当确定不存在与所述更新地址范围重叠的目标已变更地址范围时,判断所述首次更新地址范围中是否存在原数据;
若是,则将所述原数据保存至所述原数据保留文件,并确定所述原数据在所述原数据保留文件中对应的存放地址范围;
所述将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表,包括:
当确定不存在与所述更新地址范围重叠的目标已变更地址范围且所述首次更新地址范围中存在原数据时,将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型、所述已变更地址范围及所述存放地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表;
当确定不存在与所述更新地址范围重叠的目标已变更地址范围且所述首次更新地址范围中不存在原数据时,将所述首次更新地址范围设置为已变更地址范围,并将所述数据更新操作类型及所述已变更地址范围添加至条目,并将所述条目保存至所述原数据保留文件中的修改数据块记录表。
8.根据权利要求5所述的虚拟机快照方法,其特征在于,在将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件之后,还包括:
在接收到快照恢复操作时,将所述修改数据块记录表中的首个条目设置为待处理条目;
根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围或所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复;
当确定所述修改数据块记录表中存在未处理的条目时,将所述待处理条目更新为所述待处理条目的下一条目,并进入所述根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围或所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复的步骤。
9.根据权利要求8所述的虚拟机快照方法,其特征在于,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围对所述虚拟机磁盘文件进行恢复,包括:
当确定所述待处理条目中的数据更新操作类型为数据新增时,将所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的数据进行删除。
10.根据权利要求8所述的虚拟机快照方法,其特征在于,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复,包括:
当确定所述待处理条目中的数据更新操作类型为数据修改时,利用所述待处理条目中的存放地址范围对应的已保存原数据对所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的数据进行替换。
11.根据权利要求8所述的虚拟机快照方法,其特征在于,根据所述待处理条目中的数据更新操作类型,利用所述待处理条目中的已变更地址范围与所述待处理条目中的存放地址范围对应的已保存原数据的组合对所述虚拟机磁盘文件进行恢复,包括:
当确定所述待处理条目中的数据更新操作类型为数据删除时,将所述待处理条目中的存放地址范围对应的已保存原数据写回所述待处理条目中的已变更地址范围在所述虚拟机磁盘文件中对应的位置。
12.根据权利要求8所述的虚拟机快照方法,其特征在于,在将所述条目保存至所述原数据保留文件中的修改数据块记录表之前,还包括:
在所述条目中添加接收所述数据更新操作的接收时刻,并进入所述将所述条目保存至所述原数据保留文件中的修改数据块记录表的步骤;
在将所述修改数据块记录表中的首个条目设置为待处理条目之前,还包括:
根据所述修改数据块记录表中各条目包含的接收时刻对各所述条目进行排序,并进入所述将所述修改数据块记录表中的首个条目设置为待处理条目的步骤。
13.一种虚拟机快照装置,其特征在于,包括:
创建模块,用于当接收到快照创建操作时,为虚拟机磁盘文件创建原数据保留文件,并记录所述原数据保留文件对应的创建时刻;初始的原数据保留文件为空文件;
首次更新地址范围确定模块,用于当接收到数据更新操作时,确定所述数据更新操作在所述虚拟机磁盘文件中对应的更新地址范围,并利用所述原数据保留文件确定所述更新地址范围中在所述创建时刻之后首次发生数据更新的首次更新地址范围;
原数据记录模块,用于将数据更新操作类型、所述首次更新地址范围及所述首次更新地址范围中存在的原数据保存至所述原数据保留文件,并在所述虚拟机磁盘文件中执行所述数据更新操作。
14.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至12任一项所述的虚拟机快照方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至12任一项所述的虚拟机快照方法。
CN202311610135.5A 2023-11-29 2023-11-29 一种虚拟机快照方法、装置、电子设备及存储介质 Active CN117311911B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311610135.5A CN117311911B (zh) 2023-11-29 2023-11-29 一种虚拟机快照方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311610135.5A CN117311911B (zh) 2023-11-29 2023-11-29 一种虚拟机快照方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117311911A true CN117311911A (zh) 2023-12-29
CN117311911B CN117311911B (zh) 2024-02-23

Family

ID=89297648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311610135.5A Active CN117311911B (zh) 2023-11-29 2023-11-29 一种虚拟机快照方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117311911B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101140536A (zh) * 2007-05-21 2008-03-12 中兴通讯股份有限公司 一种支持级联快照的快照系统及其快照处理方法
CN101364163A (zh) * 2007-08-07 2009-02-11 英业达股份有限公司 一种逻辑卷创建系统及其方法
CN102033793A (zh) * 2010-12-14 2011-04-27 成都市华为赛门铁克科技有限公司 快照方法和固态硬盘
CN103412798A (zh) * 2013-07-18 2013-11-27 记忆科技(深圳)有限公司 混合存储快照的实现方法及系统
US20150066859A1 (en) * 2013-08-27 2015-03-05 Red Hat. Inc. Memory first live snapshot
CN105988723A (zh) * 2015-02-12 2016-10-05 中兴通讯股份有限公司 一种快照处理方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101140536A (zh) * 2007-05-21 2008-03-12 中兴通讯股份有限公司 一种支持级联快照的快照系统及其快照处理方法
CN101364163A (zh) * 2007-08-07 2009-02-11 英业达股份有限公司 一种逻辑卷创建系统及其方法
CN102033793A (zh) * 2010-12-14 2011-04-27 成都市华为赛门铁克科技有限公司 快照方法和固态硬盘
CN103412798A (zh) * 2013-07-18 2013-11-27 记忆科技(深圳)有限公司 混合存储快照的实现方法及系统
US20150066859A1 (en) * 2013-08-27 2015-03-05 Red Hat. Inc. Memory first live snapshot
CN105988723A (zh) * 2015-02-12 2016-10-05 中兴通讯股份有限公司 一种快照处理方法及装置

Also Published As

Publication number Publication date
CN117311911B (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
CN107038206B (zh) Lsm树的建立方法、lsm树的数据读取方法和服务器
US11182083B2 (en) Bloom filters in a flash memory
US20110072207A1 (en) Apparatus and method for logging optimization using non-volatile memory
US20180307602A1 (en) Access request processing method and apparatus, and computer device
US10592354B2 (en) Configurable recovery states
US11106373B2 (en) Flash interface for processing dataset
CN109213450B (zh) 一种基于闪存阵列的关联元数据删除方法、装置及设备
CN115525221A (zh) 一种数据更新方法、装置、设备及介质
CN111158858A (zh) 一种虚拟机的克隆方法和装置,及计算机可读存储介质
CN113836116A (zh) 数据迁移方法、装置、电子设备及可读存储介质
CN117311911B (zh) 一种虚拟机快照方法、装置、电子设备及存储介质
CN113608695A (zh) 一种数据处理方法、系统、设备以及介质
JP4159506B2 (ja) 階層記憶装置、その復旧方法、及び復旧プログラム
CN111722800A (zh) 一种分布式存储系统row快照实现方法及相关组件
CN110716696A (zh) 对象处理方法及相关装置
CN105739918A (zh) 虚拟机的存储在线迁移方法及装置
US11269739B2 (en) Method and system for managing backup data
CN109284237B (zh) 一种全闪存储阵列中的垃圾回收方法及系统
CN111090396A (zh) 一种文件的处理方法、装置及电子设备
US20200364058A1 (en) Space snapshots
CN114020415B (zh) 基于Bitmap实现hyper-v虚拟机备份的方法及应用
CN117369731B (zh) 一种数据的缩减处理方法、装置、设备及介质
WO2024001643A1 (zh) 后备存储设备、元数据管理方法、装置、存储介质
CN108804671B (zh) 物理文件重组的方法和装置
CN115454935A (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