虚拟机备份方法、装置、系统、电子设备及存储介质与流程

未命名 08-17 阅读:107 评论:0


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.图1为本发明实施例提供的虚拟机备份方法的流程示意图;图2为应用本发明实施例提供的虚拟机备份方法的流程示意图;图3为本发明提供的虚拟机落盘流程示意图;图4为应用本发明实施例提供的虚拟机备份方法的装置结构示意图;图5为本发明实施例提供的虚拟机备份装置的结构示意图;图6为本发明实施例提供的电子设备的结构示意图。
具体实施方式
29.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.云计算可以为企业提供按需分配的计算资源,现代企业的基础架构正逐步的由传统架构向云上迁移。云计算通过虚拟化技术可以充分利用昂贵的硬件资源并且还可以隔离硬件体系结构和软件系统之间的依赖关系,改进系统的安全性能,进行数据备份,避免损失,提高计算资源的利用率。随着云计算发展,云数据中心的规模不断增大,对于数据的安全性的要求也越来越高,容灾系统应运而生。
31.备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它存储介质的过程。相关方法的数据备份主要是采用内置或外置的磁带机进行冷备份。但是这种方式只能防止操作失误等人为故障,而且其恢复时间也很长。随着技术的不断发展,数据的海量增加,不少的企业开始采用网络备份。网络备份一般通过专业的数据存储管理软件结合相应的硬件和存储设备来实现。
32.相关方法中,为了保证容灾的需求,需要对虚拟机中的数据进行实时备份处理。但是在实际使用过程,由于虚拟机运行过程中存在虚拟机和物理机频繁的数据交互,因此若直接对数据进行实时备份,会导致虚拟机性能出现明显下降,影响用户体验,若不能进行实时备份,不能保持业务的连续性,不能满足容灾的需求。
33.针对相关方法的缺陷,本发明提出一种虚拟机备份方法,图1为本发明实施例提供的虚拟机备份方法的流程示意图,参照图1,本发明实施例提供的虚拟机备份方法包括以下步骤:步骤110,获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存,所述虚拟机运行在所述物理机中,所述变更数据为在所述虚拟机中落盘后且未在所述虚拟机的内存中释放的数据;步骤120,将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘;步骤130,基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据,所述全量数据为所述物理机中存储的所述虚拟机在生成所述变更数据之前进行全量备份的数据。
34.本发明提供的虚拟机备份方法的执行主体可以是电子设备、电子设备中的部件、集成电路、或芯片。该电子设备可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等,非移动电子设备可以为服务器、网络附属存储器(network attached storage,nas)或个人计算机(personal computer,pc)等,本发明不作具体限定。
35.下面以计算机执行本发明提供的虚拟机备份方法为例,详细说明本发明的技术方案。
36.在步骤110中,虚拟机在运行过程中产生变更数据,在虚拟机的内存中的变更数据存入虚拟机的磁盘且未在虚拟机的内存中进行释放之前,获取变更数据,并将变更数据存储至物理机的共享内存中。
37.物理机是指实际的硬件服务器或计算机系统,它是由物理组件如处理器、内存、存储设备、电源等组成的实体设备。物理机是作为传统计算和云计算环境中提供计算能力和资源管理的基础设备。
38.虚拟机是一种软件仿真的计算环境,在物理机上模拟出一个完整的、独立的计算机系统。它可以在同一台物理服务器上同时运行多个虚拟机,每个虚拟机都具有自己的操作系统、应用程序和资源配置。
39.共享内存是一种用于进程间通信的技术,它允许多个并发的进程在同一块内存区域中进行数据的读写操作。这个内存区域被称为共享内存区。在使用共享内存进行进程间通信时,首先需要创建一个共享内存区,并将其映射到各个进程的地址空间中。这样,不同的进程就可以通过读写共享内存来实现数据的交换与共享。
40.在将变更数据存储至物理机之前,需要提前创建共享内存。在物理机的内存空间创建共享内存,物理机和虚拟机均可以访问。
41.虚拟机的变更数据为虚拟机中落盘后且还未在内存中进行释放的数据,即变更数据还在虚拟机的内存中。获取虚拟机内存中的变更数据,并将该变更数据存储至物理机的共享内存中。
42.可以理解的是,将变更数据由虚拟机的内存拷贝至物理机的共享内存中,是为了实现变更数据在内存之间的传输。变更数据在内存之间传输,传输效率较高。
43.变更数据为虚拟机中落盘后且未在虚拟机的内存中释放的数据。虚拟机中落盘是
指将虚拟机内存中的数据存储至虚拟机的磁盘。在将变更数据存储至虚拟机的磁盘后,并在虚拟机的内存还未释放该变更数据之前,从虚拟机的内存中获取该变更数据。在从虚拟机的内存中获取变更数据之后,将变更数据存储至物理机的共享内存中。
44.在步骤120中,在虚拟机中创建虚拟磁盘。将共享内存中存储的变更数据存储至虚拟磁盘中。
45.虚拟磁盘是一种使用软件模拟的、存在于计算机内存或硬盘上的逻辑磁盘。它并不是一个实际的物理设备,而是在物理机中创建并被操作系统识别和管理的一种存储空间。虚拟磁盘通常由一个或多个文件来表示,这些文件在实际的物理磁盘上存储。当操作系统和应用程序需要进行读写操作时,它们会将数据传输到虚拟磁盘,而不直接与物理磁盘进行交互。
46.在步骤130中,在虚拟机生成变更数据之前,对虚拟机进行全量备份,得到虚拟机的全量数据。基于虚拟磁盘中的变更数据以及虚拟机的全量数据,确定虚拟机的备份数据。
47.相关方法中的备份技术分为完全备份,差异备份以及增量备份。完全备份是指拷贝给定计算机或文件系统的所有文件,而不管它是否改变。差异备份是只备份在上一次完全备份后有变化的部分数据。增量备份是备份上一次备份后增加、改动的部分数据。
48.完全备份的优点:非常简单直观,让人容易理解。同时如果数据丢失,就可以直接恢复,但是缺点也十分明显,对磁盘的所有数据进行备份,完全备份往往所需时间也会比较长,这样运作成本较高;增量备份的优点:没有重复的备份数据,既可节省磁盘空间,又可以缩短备份时间,工作效率高,运作成本相对较低,但是其缺点为发生数据灾难,恢复数据会比较麻烦;差异备份在避免了另外两种备份策略缺陷的同时,又具备了它们各自的优点。首先,它具有了增量备份需要时间短、节省磁盘空间的优势;其次,它又具有了全备份恢复所需磁带少、恢复时间短的特点。
49.本发明采用差异备份方式。在对虚拟机进行备份之前,对虚拟机的各个磁盘进行备份,实现对虚拟机的全量备份,得到虚拟机的全量数据。在得到虚拟机的全量数据后,只需要定期获取变更数据即可以差异备份的方式对虚拟机进行备份。
50.物理机的虚拟磁盘中存储虚拟机在进行备份后的变更数据。而物理机中还存储有虚拟机在备份之前的全量数据。所以可以基于虚拟机在备份之前的全量数据,以及虚拟机在进行差异备份后的变更数据,对虚拟机各个时间段的备份数据进行确定。
51.可以理解的是,获取虚拟机中落盘后且未在虚拟机的内存中释放的变更数据,并将其存储至物理机的共享内存中。基于共享内存的方式,可以基于在内存中获取变更数据,共享内存的使用是一种在进程之间交换数据的快速方法,在创建共享内存之后传递数据,不会涉及内核,对虚拟机的性能影响小。避免了变更数据在虚拟机中落盘后,从虚拟机的磁盘中读取变更数据,再将读取的变更数据存储至虚拟磁盘中。基于共享内存进行变更数据交换的方式,避免了对硬盘数据的读写操作,进一步降低了对虚拟机性能的影响。
52.在虚拟机产生异常需要对虚拟机进行备份恢复的情况下,在只需要确定需要进行恢复的时间节点,根据虚拟磁盘中的变更数据以及虚拟机的全量数据,即可实现对虚拟机备份数据的确定。
53.本发明实施例提供的虚拟机备份方法,通过获取虚拟机中落盘后且未在虚拟机的内存中释放的变更数据,并将获取的变更数据存储至物理机中的共享内存,并进一步存储
至物理机中的虚拟磁盘中,实现共享内存在不同进程间传递用于虚拟机备份的变更数据,仅基于内存中的数据实现对虚拟机的备份,避免了对虚拟机硬盘数据的读写操作,降低了对虚拟机性能的影响,提升了在虚拟机备份时虚拟机运行的稳定性。与此同时,基于虚拟机的全量数据以及各时间段存储的变更数据,实现了对虚拟机的增量备份的方式,提升了虚拟机的备份效率。
54.在一个实施例中,将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘,包括:在所述变更数据为获取的预设时间段内虚拟机的变更数据的情况下,将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘,所述虚拟磁盘链表是间隔预设时间段在所述物理机中创建的多个虚拟磁盘构建的。
55.预设时间段是可以根据需要设置的固定时间段,基于预设时间段,可以实现虚拟机中变更数据的循环获取。
56.其中,变更数据可以是每隔预设时间段,周期性的获取的预设时间段内虚拟机的变更数据。
57.每间隔预设时间段,在物理机中创建一个虚拟磁盘。在一段时间之后,就得到了多个虚拟磁盘。在得到多个虚拟磁盘后,将多个虚拟磁盘进行链接,得到虚拟磁盘链表。虚拟磁盘链表中每个虚拟磁盘都对应一个时间段,在获取预设时间段中的变更数据后,可以将共享内存中的变更数据存储至对应时间段的虚拟磁盘中。
58.本发明实施例提供的虚拟机备份方法,通过间隔预设时间段获取变更数据,实现了变更数据的周期性获取。将获取的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘,实现了各个时间段的变更数据的分别存储。
59.在一个实施例中,将所述变更数据存储至物理机的共享内存,包括:在所述物理机的内存空间中创建多个共享内存,确定各共享内存与所述虚拟机的各磁盘对应;确定所述变更数据中落盘在所述各磁盘的存储数据,并将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存。
60.在进行虚拟机的备份之前,在物理机的内存空间中创建多个共享内存。共享内存是一种用于进程间通信的技术,它允许多个并发的进程在同一块内存区域中进行数据的读写操作。这个内存区域被称为共享内存区。在使用共享内存进行进程间通信时,首先需要创建一个共享内存区,并将其映射到各个进程的地址空间中。这样,不同的进程就可以通过读写共享内存区来实现数据的交换与共享。
61.扫描虚拟机的存储空间,确定虚拟机的存储空间中的多个磁盘。将多个共享内存分别与虚拟机的各磁盘对应。确定变更数据中落盘在虚拟机的各磁盘的存储数据,将各磁盘的存储数据存储至各磁盘对应的共享内存中。
62.虚拟机的各个磁盘与物理机中的多个共享内存存在一个对应关系,即虚拟机的每个磁盘均在物理机中存在一个唯一对应的共享内存。在进行虚拟机的变更数据存储至共享内存中时,可以将虚拟机中各磁盘的存储数据存储至各磁盘对应的共享内存中,实现了对各磁盘数据的单独存储。
63.可以理解的是,将各磁盘的存储数据存储至各磁盘对应的共享内存中,可以实现各磁盘的存储数据只存储至对应共享内存中,虚拟机的多个磁盘在均有对应的共享内存,多个磁盘之间的数据互不影响。
64.在后续有需要对虚拟机的单个磁盘进行备份还原时,可以单独获取该磁盘需要进行备份还原的数据,实现只对该磁盘进行备份还原。
65.本发明实施例提供的虚拟机备份方法,通过在物理机的内存空间中创建多个共享内存,确定各共享内存与虚拟机的各磁盘对应,可以将虚拟机中各磁盘的存储数据存储至各磁盘对应的共享内存中,实现了对各磁盘数据的单独存储。
66.在一个实施例中,将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存,包括:确定所述各磁盘的存储数据落盘至所述虚拟机的各磁盘的落盘顺序;基于所述落盘顺序,将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存。
67.各磁盘的存储数据构成变更数据。可以理解的是,各磁盘的存储数据为预设时间段内产生的数据。所以,在预设时间段内,虚拟机中多个磁盘并非同时落盘至一个磁盘,而是存在先后的落盘顺序。
68.确定预设时间段内各磁盘的存储数据落盘至虚拟机的各磁盘的落盘顺序,并基于确定的落盘顺序,在数据落盘后且未在内存中释放时,将各磁盘的存储数据存储至各磁盘对应的共享内存。
69.本发明实施例提供的虚拟机备份方法,通过确定预设时间段内各磁盘的存储数据落盘至虚拟机的各磁盘的落盘顺序,并基于确定的落盘顺序,在数据落盘后且未在内存中释放时,将各磁盘的存储数据存储至各磁盘对应的共享内存,实现了各存储数据的存储过程。
70.在一个实施例中,在所述物理机的内存空间中创建多个共享内存之前,还包括:扫描所述虚拟机的存储空间,确定所述虚拟机的多个磁盘。
71.在物理机的内存空间中创建多个共享内存之前,扫描虚拟机的存储空间,确定虚拟机的多个磁盘。其中,虚拟机的磁盘是虚拟机中用于存储数据的存储空间。
72.可以理解的是,在构建多个共享内存时,由于构建的共享内存需要与虚拟机的多个磁盘一一对应。所以,在物理机的内存空间中构建多个共享内存时,需要提前确定虚拟机中的各个磁盘。
73.本发明实施例提供的虚拟机备份方法,通过在物理机的内存空间中创建多个共享内存之前,扫描虚拟机的存储空间,确定虚拟机的多个磁盘,为物理机的多个共享内存的构建提供了基础。
74.在一个实施例中,确定各共享内存与所述虚拟机的各磁盘对应,包括:将所述各磁盘的磁盘标识符与对应共享内存的内存标识符进行关联,确定各共享内存与所述虚拟机的各磁盘对应。
75.在确定虚拟机中多个磁盘以及在物理机的内存空间中创建多个共享内存之后,将虚拟机中各磁盘的磁盘标识符与对应共享内存的内存标识符进行关联。
76.磁盘的磁盘标识符是用于识别该磁盘的唯一标识符。共享内存的内存标识符是用于识别该共享内存的唯一标识符。将虚拟机中各磁盘的磁盘标识符与对应共享内存的内存标识符进行关联之后,可以实现虚拟机中各磁盘与物理机中各共享内存一一对应。后续存储数据时,基于关联关系,可以快速定位至该数据将要存储的共享内存中。
77.本发明实施例提供的虚拟机备份方法,通过将虚拟机中各磁盘的磁盘标识符与对应共享内存的内存标识符进行关联之后,可以实现虚拟机中各磁盘与物理机中各共享内存
一一对应。后续存储数据时,基于关联关系,可以快速定位至该数据将要存储的共享内存中。
78.在一个实施例中,将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘,包括:在所述物理机的存储空间中创建虚拟磁盘,所述虚拟磁盘包括多个虚拟子磁盘,各虚拟子磁盘与所述各共享内存对应;间隔预设时间段,分别构建各虚拟子磁盘的多个虚拟子磁盘链表;将各共享内存中的存储数据存储至对应虚拟子磁盘链表中对应时间段的虚拟子磁盘中。
79.在物理机的存储空间中创建虚拟磁盘,虚拟磁盘中用于存储共享内存中的数据。虚拟磁盘包括多个虚拟子磁盘,各虚拟子磁盘与各共享内存对应。
80.可选的,在物理机的存储空间中创建的虚拟磁盘可以是qcow2(qemu copy-on-write version 2)格式的虚拟磁盘。其中,qcow2磁盘是一种虚拟磁盘格式,它被广泛用于虚拟化平台和虚拟机管理器中。qcow2虚拟磁盘是基于虚拟机监控器软件(quick emulator,qemu)的一种磁盘镜像格式。
81.可以理解的是,由于虚拟机中各磁盘与物理机中各共享内存一一对应,而多个虚拟子磁盘与各共享内存一一对应。所以,各虚拟子磁盘基于多个共享内存,实现与虚拟机中各磁盘一一对应。
82.间隔预设时间段,分别构建各虚拟自磁盘的多个虚拟子磁盘链表。例如,对于物理机中多个虚拟子磁盘中的虚拟子磁盘a,每隔预设时间段新建一个虚拟子磁盘a,一段时间后,即可得到多个虚拟子磁盘a。基于得到的多个虚拟子磁盘a,构建虚拟子磁盘a的虚拟子磁盘链表。
83.本发明实施例提供的虚拟机备份方法,通过在物理机的存储空间中创建虚拟磁盘,虚拟磁盘中用于存储共享内存中的数据。虚拟磁盘包括多个虚拟子磁盘,各虚拟子磁盘与各共享内存对应,实现了多个共享内存中数据在磁盘中的对应存储。
84.在一个实施例中,还包括:接收所述虚拟机中目标磁盘的磁盘备份恢复消息,从各虚拟子磁盘链表中获取所述磁盘备份恢复消息对应时间段之前的目标变更数据;基于目标变更数据以及所述目标磁盘的全量数据,对所述目标磁盘执行备份恢复操作,所述目标磁盘的全量数据为所述物理机中存储的所述目标磁盘在生成所述目标变更数据之前进行全量备份的数据。
85.在对虚拟机进行备份后,在虚拟机出现异常、故障或者业务需要,需要对虚拟机进行备份还原。在需要对虚拟机中目标磁盘进行磁盘备份恢复时,接收虚拟机中目标磁盘的磁盘备份恢复消息。其中,目标磁盘是虚拟机的存储空间中的任意磁盘。磁盘备份恢复消息中包含将该目标磁盘恢复的至具体某个时刻或者某个时间段的状态。
86.从各虚拟子磁盘链表中,获取磁盘备份恢复消息对应时间段之前的目标变更数据。可以理解的是,虚拟机为差异备份的备份方式。而物理机中还存储有虚拟机的目标磁盘在备份之前的全量数据。所以,在基于磁盘备份恢复消息,确定目标磁盘恢复至具体某个时刻或者某个时间段的状态。
87.可以基于虚拟机的目标磁盘在备份之前的全量数据,以及磁盘备份恢复消息对应时间段之前的目标磁盘的目标变更数据,目标磁盘的备份数据进行确定,从而实现对目标磁盘的备份恢复操作。
88.由于虚拟机的各个磁盘的变更数据是单独存储至各虚拟子磁盘链表中,虚拟机各个磁盘中变更数据的存储过程互不影响。后续有需要对虚拟机的单个磁盘进行备份还原时,可以单独获取该磁盘需要进行备份还原的数据,实现只对该磁盘进行备份还原。
89.本发明实施例提供的虚拟机备份方法,通过基于虚拟机的目标磁盘在备份之前的全量数据,以及磁盘备份恢复消息对应时间段之前的目标磁盘的目标变更数据,目标磁盘的备份数据进行确定,从而实现对目标磁盘的备份恢复操作。
90.在一个实施例中,还包括:接收所述虚拟机的备份恢复消息,从所述虚拟磁盘链表中获取所述备份恢复消息对应时间段之前的变更数据;基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机执行备份恢复操作。
91.在对虚拟机进行备份后,在虚拟机出现异常、故障或者业务需要,需要对虚拟机进行备份还原。
92.接收虚拟机的备份恢复消息,备份恢复消息中包含将该虚拟机恢复至具体某个时刻或者某个时间段的状态。
93.从虚拟磁盘链表中,获取备份恢复消息对应时间段之前的变更数据。可以理解的是,虚拟机为差异备份的备份方式。而物理机中还存储有虚拟机的在备份之前的全量数据。所以,在基于备份恢复消息,可以确定目标磁盘恢复的至具体某个时刻或者某个时间段的状态。基于备份恢复消息对应时间段之前的变更数据以及虚拟机的全量数据,对虚拟机执行备份恢复操作。
94.本发明实施例提供的虚拟机备份方法,通过接收备份恢复消息,确定目标磁盘恢复的至具体某个时刻或者某个时间段的状态。基于备份恢复消息对应时间段之前的变更数据以及虚拟机的全量数据,对虚拟机执行备份恢复操作,实现了对虚拟机的备份还原过程。
95.在一个实施例中,基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机执行备份恢复操作,包括:将所述备份恢复消息对应时间段之前的变更数据以及所述全量数据拷贝至所述虚拟机,并控制所述虚拟机基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据执行备份恢复操作。
96.在获取备份恢复消息对应时间段之前的变更数据之后,将获取的变更数据以及虚拟机的全量数据从物理机拷贝至虚拟机中,用于后续虚拟机基于虚拟机中存储的全量数据进行备份恢复操作。
97.控制虚拟机基于备份恢复消息对应时间段之前的变更数据以及全量数据执行备份恢复操作,以实现对虚拟机的备份还原过程。
98.本发明实施例提供的虚拟机备份方法,通过将获取的备份恢复消息对应时间段之前的变更数据以及虚拟机的全量数据从物理机拷贝至虚拟机中,并控制虚拟机基于备份恢复消息对应时间段之前的变更数据以及全量数据执行备份恢复操作,以实现对虚拟机的备份还原过程。
99.在一个实施例中,控制所述虚拟机基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据执行备份恢复操作,包括:基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机的各个磁盘进行数据恢复;控制数据恢复后的虚拟机执行重启操作,以使对所述虚拟机执行备份恢复操作。
100.在对虚拟机进行备份恢复时,由于虚拟机的存储空间包含多个磁盘。将虚拟机的
存储空间进行数据恢复,即可实现对虚拟机的备份恢复。
101.基于虚拟机的备份恢复消息对应时间段之前的变更数据以及全量数据,对虚拟机的各个磁盘进行数据恢复,使得对虚拟机的存储空间恢复至备份恢复消息对应的时间段之前的状态。
102.在虚拟机的各个磁盘的数据恢复完成后,控制数据恢复后的虚拟机执行重启操作,以完成对虚拟机的备份还原过程。
103.本发明实施例提供的虚拟机备份方法,通过虚拟机的备份恢复消息对应时间段之前的变更数据以及全量数据,对虚拟机的各个磁盘进行数据恢复,控制数据恢复后的虚拟机执行重启操作,以完成对虚拟机的备份还原过程。
104.在一个实施例中,获取虚拟机的变更数据,包括:循环检测所述虚拟机中各磁盘的数据变更状态;在所述虚拟机中各磁盘中存在数据待落盘的情况下,触发获取虚拟机的变更数据。
105.循环检测虚拟机中各磁盘的数据变更状态,在虚拟机中各磁盘中存在数据待落盘的情况下,才触发获取变更数据。可以实现对虚拟机的数据变更状态进行检测,在变更时才触发对虚拟机的备份操作,节约了虚拟机的资源,进一步降低了对虚拟机性能的影响。
106.本发明实施例提供的虚拟机备份方法,通过在虚拟机中各磁盘中存在数据待落盘的情况下,才触发获取变更数据,节约了虚拟机的资源,进一步降低了对虚拟机性能的影响。
107.在一个实施例中,构建所述虚拟磁盘链表,具体包括:间隔预设时间段在所述物理机中创建的多个虚拟磁盘;基于所述多个虚拟磁盘中各虚拟磁盘创建的先后顺序,对所述多个虚拟磁盘进行链接,得到所述虚拟磁盘链表。
108.每间隔预设时间段在物理机的存储空间中创建一个虚拟磁盘,一段时间后,得到多个虚拟磁盘。多个虚拟磁盘中,各虚拟磁盘对应一个时间段。
109.基于多个虚拟磁盘中各虚拟磁盘创建的先后顺序,对多个虚拟磁盘进行链接,得到虚拟磁盘链表。
110.本发明实施例提供的虚拟机备份方法,通过间隔预设时间段在物理机中创建的多个虚拟磁盘,基于多个虚拟磁盘中各虚拟磁盘创建的先后顺序,对多个虚拟磁盘进行链接,得到虚拟磁盘链表,实现了虚拟磁盘链表的构建。
111.在一个实施例中,将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘之前,还包括:在所述共享内存的内存空间的起始位置划分一个目标内存空间,以传输所述物理机与所述虚拟机之间的消息。
112.可以理解的是,将虚拟机中的未释放的变更数据存储至物理机的共享内存中,再将物理机的共享内存中的变更数据存储至物理机的虚拟磁盘中,存在物理机与虚拟机之间数据的交互,也存在物理机与虚拟机之间传输数据过程中的消息交互。
113.将共享内存中的变更数据存储至虚拟磁盘之前,在物理机的共享内存中创建一个目标内存空间,用于传输物理机与虚拟机之间的消息,为实现物理机与虚拟机之间的数据传输过程提供了基础。
114.本发明实施例提供的虚拟机备份方法,通过将共享内存中的变更数据存储至虚拟磁盘之前,在物理机的共享内存中创建一个目标内存空间,用于传输物理机与虚拟机之间
的消息,为实现物理机与虚拟机之间的数据传输过程提供了基础。
115.在一个实施例中,将所述变更数据存储至物理机的共享内存之前,还包括:在所述物理机的共享内存中检测,确定所述共享内存中不包含所述变更数据。
116.在将变更数据存储至物理机的共享内存之前,在物理机的共享内存中检测,查看共享内存中是否包含待存储的变更数据。
117.在物理机的共享内存中检测,确定共享内存中不包含变更数据后,才在共享内存中存入变更数据,可以避免变更数据的重复存储。
118.本发明实施例提供的虚拟机备份方法,通过在将变更数据存储至物理机的共享内存之前,在物理机的共享内存中检测,确定共享内存中不包含变更数据后,才在共享内存中存入变更数据,可以避免变更数据的重复存储,确保了变更数据存储的准确性。
119.在一个实施例中,将所述共享内存中的变更数据存储至所述虚拟磁盘链表中对应时间段的虚拟磁盘之前,还包括:在所述虚拟磁盘链表中对应时间段的虚拟磁盘中检测,确定所述虚拟磁盘链表中对应时间段的虚拟磁盘中不包含所述变更数据。
120.在将共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘之前,在虚拟磁盘链表中对应时间段的虚拟磁盘中检测,查看该虚拟磁盘中是否包含待存储的变更数据。
121.在物理机的虚拟磁盘中检测,确虚拟磁盘中不包含变更数据后,才在虚拟磁盘中存入变更数据,可以避免变更数据的重复存储。
122.本发明实施例提供的虚拟机备份方法,通过在虚拟磁盘链表中对应时间段的虚拟磁盘中检测,在物理机的虚拟磁盘中检测,确虚拟磁盘中不包含变更数据后,才在虚拟磁盘中存入变更数据,可以避免变更数据的重复存储,确保了变更数据存储的准确性。
123.在一个实施例中,基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据之前,还包括:在虚拟机在生成所述变更数据之前,获取所述虚拟机各个磁盘的磁盘数据;将所述各个磁盘的磁盘数据作为所述虚拟机的全量数据,并将所述全量数据存储至所述物理机的存储空间。
124.差异备份是一种备份策略,它基于先前的完整备份或增量备份,只备份源数据与之前备份状态之间发生变化的部分。在差异备份中,首先进行一次完整备份,将源数据的所有内容复制到备份介质上。接下来的每一次备份都只会备份原始数据中自上次备份以来发生变化的部分。这些变化的部分被称为差异数据。
125.为了实现对虚拟机的差异备份,需要在虚拟机生成变更数据之前,确定虚拟机进行全量备份的备份数据。
126.在虚拟机在生成变更数据之前,获取虚拟机各个磁盘的磁盘数据。将各个磁盘的磁盘数据作为虚拟机的全量数据,实现虚拟机在进行备份前的全量数据的确定。在确定虚拟机的全量数据后,将全量数据存储至物理机的存储空间。
127.本发明实施例提供的虚拟机备份方法,通过在虚拟机在生成变更数据之前,获取虚拟机各个磁盘的磁盘数据。将各个磁盘的磁盘数据作为虚拟机的全量数据,实现了虚拟机的全量数据的确定过程,为后续对虚拟机进行差异备份提供了基础。
128.下面以一应用本发明实施例提供的虚拟机备份方法的流程示意图图2为例,说明本发明实施例提供的技术方案:
步骤210,获取虚拟机中的变更数据。虚拟机落盘的过程会通过建立协程,并在协程内调用异步io的方式进行变更数据的存储。在变更数据在虚拟机中落盘成功,返回协程后续任务后,加入io重定向函数。其中,io重定向函数是用于后续实现将虚拟机中获取的变更数据拷贝到物理机的共享内存中,因此对于虚拟机性能影响小。
129.具体的,虚拟机中数据的落盘过程如图3本发明提供的虚拟机落盘流程示意图所示。虚拟机有变更数据需要进行落盘时,虚拟机将数据发送到qemu端,基于qemu端进行变更数据的处理。qemu端识别提供给虚拟机的磁盘接口类型,qemu通过识别判断虚拟机下发的为写操作指令,则新建对应的写操作的协程任务,在协程内,找到对应的驱动,调用内核异步io执行写操作,当内核写完成后,会通知qemu建立的协程(即写操作完成),然后qemu通知虚拟机本次io处理完成。
130.步骤220,通过运用共享内存能够在不同进程中进行数据通讯的技术,建立对应的备份,建立共享内存。共享内存是一种在相同机器中两个正在运行的进程之间共享和传递数据的有效方式,不同进程之间共享的内存通常安排为同一段物理内存;共享内存允许两个不相关的进程访问同一个逻辑内存。一个进程可创建一个可供其他进程访问的内存段,只要它分配了正确的权限。每个内存段拥有一个唯一的标识符id,这个id指向一个物理内存区域,其他进程可在该区域操作它。创建并提供了合适的权限之后。共享内存的使用是一种在进程之间交换数据的快速方法,主要因为在创建内存段之后传递数据,不会涉及内核。
131.其相关函数如下:1、创建共享内存函数:int shmget( key_t key, size_t size, int flag);其中,第一个参数key是一个用来标识共享内存块的键值,第二个参数size指定了所申请的内存块的大小,第三个参数flag是一组标志,通过特定常量的按位或操作来shmget。
132.2、连接共享内存函数,将该共享内存映射到当下进程中:void *shmat( int shm_id, const void *addr, int flag );数中参数shm_id指定要引入的共享内存,参数addr与flag组合说明要引入的地址值,通常只有2种用法,addr为0,表明让内核来决定第1个可以引入的位置。addr非零,并且flag中指定shm_rnd,则此段引入到addr所指向的位置,在flag参数中指定读写方式。
133.3、脱离共享内存函数,将共享内存与当下进程脱离:int shmdt( void *addr);参数addr是调用shmat函数的返回值,函数执行成功返回0。
134.4、操作控制函数:int shmctl( int shm_id, int cmd, struct shmid_ds *buf );函数中参数shm_id为所要操作的共享内存段的标识符,struct shmid_ds型指针参数buf的作用与参数cmd的值相关,参数cmd指明了所要进行的操作。
135.步骤230,基于共享内存,完成变更数据的重定向。其中,变更数据的重定向是指将变更数据存储至物理机的共享内存,再将共享内存中的变更数据存储至物理机中的虚拟磁盘中。完成变更数据的重定向后,再通知备份任务,进行数据的备份。其中备份任务采用事件循环机制,大致分为周期事件创建qcow2虚拟磁盘,线程监控共享内存信息发送事件,变
更数据落盘,事件发送磁盘文件。
136.在虚拟机运行过程中,虚拟机和物理机进行输入输出(input output,io)数据的交互是频繁且快速的。其中io数据为虚拟机中的变更数据,在对虚拟机中的文件进行删除或者修改,本质上是以io数据流下发至虚拟机的磁盘中。为了能够兼顾虚拟机性能和备份的功能,基于使用共享内存,将变更数据的重定向和备份任务进行代码分割,减少对qemu运行的影响,保证其虚拟机性能。通过周期创建qcow2的磁盘,将数据落到对应时间创建的磁盘内,qcow2为精简置备格式,占用空间小,支持动态增长,更为关键的是,将创建的一系列磁盘按照类似链表的方式进行链接,符合差异备份特点。
137.下面以一应用本发明实施例提供的虚拟机备份方法的装置结构示意图图4为例,说明本发明实施例提供的技术方案:虚拟机管理工具410启动虚拟机时,对当前虚拟机进行一次全量备份。其中,虚拟机管理工具410可以是libvirt工具,libvirt是用于管理虚拟化平台的开源的应用程序编程接口(application programming interface,api),后台程序和管理工具。然后启动数据处理平台430,创建对应的共享内存和qcow2虚拟磁盘。其中,数据处理平台430可以是cloundera大数据平台(cloundera data platform,cdp)。数据处理平台430用于基于预设时间段,创建虚拟子磁盘,并将共享内存中的变更数据存储至对应虚拟子磁盘中。其中,第一个qcow2的虚拟子磁盘为虚拟机全量备份数据对应的磁盘。虚拟操作系统模拟器420用于对数据处理平台430信息的确定,并实现将变更数据存储至物理机中的共享内存。
138.具体实现过程可以为:启动对应虚拟机,通过qemu的交互接口(qemu monitor protocol,qmp)指令将对应信息发送给虚拟机,在虚拟操作系统模拟器420运行过程中仅存在内存的拷贝的操作,不存在对应的磁盘读写操作,因此对虚拟机性能影响较小;虚拟机的输入输出数据即虚拟机的变更数据的获取按照实际虚拟机落盘的顺序进行拷贝,将其内存存放在共享内存中。
139.当启用虚拟机的备份功能时,先对应建立执行虚拟机备份的进程,该进程中明确备份磁盘及其相关信息(大小,路径等),在物理机中建立对应的共享内存,在物理机中建立首个qcow2磁盘作为虚拟磁盘。
140.通过qmp接口将共享内存信息和变更数据加入到qemu的io重定向信息链表内,qemu对相应信息进行检测,如是否存在对应的共享内存,需要监控对应的磁盘是否存在,变更数据是否已在共享内存中存在等。
141.在变更数据落盘前执行io重定向函数,比对找到监控磁盘下的需要落盘的变更数据,将对应变更数据拷贝到相应共享内存下。其中,共享内存中存放多条变更数据,变更数据中包含验证信息、生成时间信息、落盘的位置信息以及变更数据的长度等信息。具体的,共享内存存放信息如表1所示:表1 共享内存存放信息表
142.在共享内存的起始部分中划分一块固定大小的内存,用于存放共享内存信息,该信息用于两个进程的信息通知使用,后续内存将按照环形队列的方式进行变更数据的存储。
143.备份任务采用事件循环机制,大致分为周期事件创建qcow2磁盘,线程监控共享内存信息发送事件,事件变更数据落盘,事件发送磁盘文件。
144.当产生异常时,可以从备份服务器获取想要恢复的时间点对应的磁盘,将对应磁盘前的所有磁盘拷贝到主服务器上,以该时间点的磁盘为启动磁盘,进行系统恢复,并再次重新建立对应备份任务,进行下一轮的备份任务。
145.可以理解的是,基于该策略备份无需暂停虚拟机,且在qemu中仅存在变更数据的拷贝工作,对于整个虚拟机的运行性能并不产生影响,并且在运行过程中可以实时获取或监控io重定向区域状态,能够及时分配和更新io重定向功能状态,并不需要建立对应的驱动和设备,通过设备获取对应设备路径,减少用户额外操作。在io重定向过程中,在qemu端仅仅只做变更数据的打包再分发,不进行任何业务代码的处理,对应于变更数据的处理建立于创建共享内存端,便于后续功能的新增,且功能的新增变化不会对qemu产生影响,有利于虚拟机的健壮性。
146.图5为本发明实施例提供的虚拟机备份装置的结构示意图。参照图5,本发明实施例提供的虚拟机备份装置包括:数据获取模块510,用于获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存,所述虚拟机运行在所述物理机中,所述变更数据为在所述虚拟机中落盘后且未在所述虚拟机的内存中释放的数据;存储模块520,用于将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘;备份模块530,用于基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据,所述全量数据为所述物理机中存储的所述虚拟机在生成所述变更数据之前进行全量备份的数据。
147.本发明实施例提供的虚拟机备份装置,通过获取虚拟机中落盘后且未在虚拟机的内存中释放的变更数据,并将获取的变更数据存储至物理机中的共享内存,并进一步存储
至物理机中的虚拟磁盘中,实现共享内存在不同进程间传递用于虚拟机备份的变更数据,仅基于内存中的数据实现对虚拟机的备份,避免了对虚拟机硬盘数据的读写操作,降低了对虚拟机性能的影响,提升了在虚拟机备份时虚拟机运行的稳定性。与此同时,基于虚拟机的全量数据以及各时间段存储的变更数据,实现了对虚拟机的增量备份的方式,提升了虚拟机的备份效率。
148.在一个实施例中,存储模块520:将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘,包括:在所述变更数据为获取的预设时间段内虚拟机的变更数据的情况下,将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘,所述虚拟磁盘链表是间隔预设时间段在所述物理机中创建的多个虚拟磁盘构建的。
149.在一个实施例中,数据获取模块510具体用于:将所述变更数据存储至物理机的共享内存,包括:在所述物理机的内存空间中创建多个共享内存,确定各共享内存与所述虚拟机的各磁盘对应;确定所述变更数据中落盘在所述各磁盘的存储数据,并将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存。
150.在一个实施例中,数据获取模块510还具体用于:将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存,包括:确定所述各磁盘的存储数据落盘至所述虚拟机的各磁盘的落盘顺序;基于所述落盘顺序,将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存。
151.在一个实施例中,数据获取模块510还具体用于:在所述物理机的内存空间中创建多个共享内存之前,还包括:扫描所述虚拟机的存储空间,确定所述虚拟机的多个磁盘。
152.在一个实施例中,数据获取模块510还具体用于:确定各共享内存与所述虚拟机的各磁盘对应,包括:将所述各磁盘的磁盘标识符与对应共享内存的内存标识符进行关联,确定各共享内存与所述虚拟机的各磁盘对应。
153.在一个实施例中,数据获取模块510还具体用于:将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘,包括:在所述物理机的存储空间中创建虚拟磁盘,所述虚拟磁盘包括多个虚拟子磁盘,各虚拟子磁盘与所述各共享内存对应;间隔预设时间段,分别构建各虚拟子磁盘的多个虚拟子磁盘链表;将各共享内存中的存储数据存储至对应虚拟子磁盘链表中对应时间段的虚拟子磁盘中。
154.在一个实施例中,数据获取模块510还具体用于:接收所述虚拟机中目标磁盘的磁盘备份恢复消息,从各虚拟子磁盘链表中获取所述磁盘备份恢复消息对应时间段之前的目标变更数据;
基于目标变更数据以及所述目标磁盘的全量数据,对所述目标磁盘执行备份恢复操作,所述目标磁盘的全量数据为所述物理机中存储的所述目标磁盘在生成所述目标变更数据之前进行全量备份的数据。
155.在一个实施例中,备份模块530具体用于:接收所述虚拟机的备份恢复消息,从所述虚拟磁盘链表中获取所述备份恢复消息对应时间段之前的变更数据;基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机执行备份恢复操作。
156.在一个实施例中,备份模块530还具体用于:基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机执行备份恢复操作,包括:将所述备份恢复消息对应时间段之前的变更数据以及所述全量数据拷贝至所述虚拟机,并控制所述虚拟机基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据执行备份恢复操作。
157.在一个实施例中,备份模块530还具体用于:控制所述虚拟机基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据执行备份恢复操作,包括:基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机的各个磁盘进行数据恢复;控制数据恢复后的虚拟机执行重启操作,以使对所述虚拟机执行备份恢复操作。
158.在一个实施例中,数据获取模块510还具体用于:获取虚拟机的变更数据,包括:循环检测所述虚拟机中各磁盘的数据变更状态;在所述虚拟机中各磁盘中存在数据待落盘的情况下,触发获取虚拟机的变更数据。
159.在一个实施例中,存储模块520还具体用于:构建所述虚拟磁盘链表,具体包括:间隔预设时间段在物理机的存储空间中创建的多个虚拟磁盘;基于所述多个虚拟磁盘中各虚拟磁盘创建的先后顺序,对所述多个虚拟磁盘进行链接,得到所述虚拟磁盘链表。
160.在一个实施例中,存储模块520还具体用于:将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘之前,还包括:在所述共享内存的内存空间的起始位置划分一个目标内存空间,以传输所述物理机与所述虚拟机之间的消息。
161.在一个实施例中,数据获取模块510还具体用于:将所述变更数据存储至物理机的共享内存之前,还包括:在所述物理机的共享内存中检测,确定所述共享内存中不包含所述变更数据。
162.在一个实施例中,存储模块520还具体用于:将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘之
前,还包括:在所述虚拟磁盘链表中对应时间段的虚拟磁盘中检测,确定所述虚拟磁盘链表中对应时间段的虚拟磁盘中不包含所述变更数据。
163.在一个实施例中,备份模块530还具体用于:基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据之前,还包括:在虚拟机在生成所述变更数据之前,获取所述虚拟机各个磁盘的磁盘数据;将所述各个磁盘的磁盘数据作为所述虚拟机的全量数据,并将所述全量数据存储至所述物理机的存储空间。
164.本发明还提供一种虚拟机备份系统,虚拟机备份系统中包含物理机、虚拟机以及上述虚拟备份装置。其中,虚拟备份装置用于获取虚拟机中落盘后且未在虚拟机的内存中释放的变更数据,并将获取的变更数据存储至物理机中的共享内存,并进一步存储至物理机中的虚拟磁盘中,实现共享内存在不同进程间传递用于虚拟机备份的变更数据,仅基于内存中的数据实现对虚拟机的备份,避免了对虚拟机硬盘数据的读写操作,降低了对虚拟机性能的影响,提升了在虚拟机备份时虚拟机运行的稳定性。与此同时,基于虚拟机的全量数据以及各时间段存储的变更数据,实现了对虚拟机的增量备份的方式,提升了虚拟机的备份效率。
165.本发明还提供一种电子设备,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(communication interface)620、存储器(memory)630和通信总线(bus)640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行虚拟机备份方法,例如包括:获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存,所述虚拟机运行在所述物理机中,所述变更数据为在所述虚拟机中落盘后且未在所述虚拟机的内存中释放的数据;将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘;基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据,所述全量数据为所述物理机中存储的所述虚拟机在生成所述变更数据之前进行全量备份的数据。
166.此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
167.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的虚拟机备份方法,例如
包括:获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存,所述虚拟机运行在所述物理机中,所述变更数据为在所述虚拟机中落盘后且未在所述虚拟机的内存中释放的数据;将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘;基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据,所述全量数据为所述物理机中存储的所述虚拟机在生成所述变更数据之前进行全量备份的数据。
168.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的虚拟机备份方法,例如包括:获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存,所述虚拟机运行在所述物理机中,所述变更数据为在所述虚拟机中落盘后且未在所述虚拟机的内存中释放的数据;将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘;基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据,所述全量数据为所述物理机中存储的所述虚拟机在生成所述变更数据之前进行全量备份的数据。
169.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
170.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
171.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

技术特征:
1.一种虚拟机备份方法,其特征在于,所述方法包括:获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存,所述虚拟机运行在所述物理机中,所述变更数据为在所述虚拟机中落盘后且未在所述虚拟机的内存中释放的数据;将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘;基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据,所述全量数据为所述物理机中存储的所述虚拟机在生成所述变更数据之前进行全量备份的数据。2.根据权利要求1所述的虚拟机备份方法,其特征在于,所述将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘,包括:在所述变更数据为获取的预设时间段内虚拟机的变更数据的情况下,将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘,所述虚拟磁盘链表是间隔预设时间段在所述物理机中创建的多个虚拟磁盘构建的。3.根据权利要求2所述的虚拟机备份方法,其特征在于,所述将所述变更数据存储至物理机的共享内存,包括:在所述物理机的内存空间中创建多个共享内存,确定各共享内存与所述虚拟机的各磁盘对应;确定所述变更数据中落盘在所述各磁盘的存储数据,并将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存。4.根据权利要求3所述的虚拟机备份方法,其特征在于,所述将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存,包括:确定所述各磁盘的存储数据落盘至所述虚拟机的各磁盘的落盘顺序;基于所述落盘顺序,将所述各磁盘的存储数据存储至所述各磁盘对应的共享内存。5.根据权利要求3所述的虚拟机备份方法,其特征在于,所述在所述物理机的内存空间中创建多个共享内存之前,还包括:扫描所述虚拟机的存储空间,确定所述虚拟机的多个磁盘。6.根据权利要求3所述的虚拟机备份方法,其特征在于,所述确定各共享内存与所述虚拟机的各磁盘对应,包括:将所述各磁盘的磁盘标识符与对应共享内存的内存标识符进行关联,确定各共享内存与所述虚拟机的各磁盘对应。7.根据权利要求3所述的虚拟机备份方法,其特征在于,所述将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘,包括:在所述物理机的存储空间中创建虚拟磁盘,所述虚拟磁盘包括多个虚拟子磁盘,各虚拟子磁盘与所述各共享内存对应;间隔预设时间段,分别构建各虚拟子磁盘的多个虚拟子磁盘链表;将各共享内存中的存储数据存储至对应虚拟子磁盘链表中对应时间段的虚拟子磁盘中。8.根据权利要求7所述的虚拟机备份方法,其特征在于,还包括:接收所述虚拟机中目标磁盘的磁盘备份恢复消息,从各虚拟子磁盘链表中获取所述磁
盘备份恢复消息对应时间段之前的目标变更数据;基于目标变更数据以及所述目标磁盘的全量数据,对所述目标磁盘执行备份恢复操作,所述目标磁盘的全量数据为所述物理机中存储的所述目标磁盘在生成所述目标变更数据之前进行全量备份的数据。9.根据权利要求2所述的虚拟机备份方法,其特征在于,还包括:接收所述虚拟机的备份恢复消息,从所述虚拟磁盘链表中获取所述备份恢复消息对应时间段之前的变更数据;基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机执行备份恢复操作。10.根据权利要求9所述的虚拟机备份方法,其特征在于,所述基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机执行备份恢复操作,包括:将所述备份恢复消息对应时间段之前的变更数据以及所述全量数据拷贝至所述虚拟机,并控制所述虚拟机基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据执行备份恢复操作。11.根据权利要求10所述的虚拟机备份方法,其特征在于,所述控制所述虚拟机基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据执行备份恢复操作,包括:基于所述备份恢复消息对应时间段之前的变更数据以及所述全量数据,对所述虚拟机的各个磁盘进行数据恢复;控制数据恢复后的虚拟机执行重启操作,以使对所述虚拟机执行备份恢复操作。12.根据权利要求1所述的虚拟机备份方法,其特征在于,所述获取虚拟机的变更数据,包括:循环检测所述虚拟机中各磁盘的数据变更状态;在所述虚拟机中各磁盘中存在数据待落盘的情况下,触发获取所述虚拟机的变更数据。13.根据权利要求2所述的虚拟机备份方法,其特征在于,构建所述虚拟磁盘链表,具体包括:间隔预设时间段在所述物理机的存储空间中创建的多个虚拟磁盘;基于所述多个虚拟磁盘中各虚拟磁盘创建的先后顺序,对所述多个虚拟磁盘进行链接,得到所述虚拟磁盘链表。14.根据权利要求1所述的虚拟机备份方法,其特征在于,所述将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘之前,还包括:在所述共享内存的内存空间的起始位置划分一个目标内存空间,以传输所述物理机与所述虚拟机之间的消息。15.根据权利要求1所述的虚拟机备份方法,其特征在于,所述将所述变更数据存储至物理机的共享内存之前,还包括:在所述物理机的共享内存中检测,确定所述共享内存中不包含所述变更数据。16.根据权利要求2所述的虚拟机备份方法,其特征在于,所述将所述共享内存中的变更数据存储至虚拟磁盘链表中对应时间段的虚拟磁盘之前,还包括:在所述虚拟磁盘链表中对应时间段的虚拟磁盘中检测,确定所述虚拟磁盘链表中对应
时间段的虚拟磁盘中不包含所述变更数据。17.根据权利要求1所述的虚拟机备份方法,其特征在于,所述基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据之前,还包括:在虚拟机在生成所述变更数据之前,获取所述虚拟机各个磁盘的磁盘数据;将所述各个磁盘的磁盘数据作为所述虚拟机的全量数据,并将所述全量数据存储至所述物理机的存储空间。18.一种虚拟机备份装置,其特征在于,包括:数据获取模块,用于获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存,所述虚拟机运行在所述物理机中,所述变更数据为在所述虚拟机中落盘后且未在所述虚拟机的内存中释放的数据;存储模块,用于将所述共享内存中的变更数据存储至所述物理机的虚拟磁盘;备份模块,用于基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据,所述全量数据为所述物理机中存储的所述虚拟机在生成所述变更数据之前进行全量备份的数据。19.一种虚拟机备份系统,其特征在于,包括物理机、虚拟机以及应用于权利要求18所述的虚拟机备份装置。20.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至17任一项所述的虚拟机备份方法。21.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至17任一项所述的虚拟机备份方法。

技术总结
本发明涉及服务器技术领域,提供一种虚拟机备份方法、装置、系统、电子设备及存储介质。所述方法包括:获取虚拟机的变更数据,将所述变更数据存储至物理机的共享内存;将共享内存中的变更数据存储至物理机的虚拟磁盘;基于所述虚拟磁盘中的变更数据以及所述虚拟机的全量数据,确定所述虚拟机的备份数据。本发明提供的虚拟机备份方法、装置、系统、电子设备及存储介质,通过共享内存在不同进程间传递用于虚拟机备份的变更数据,仅基于内存中的数据实现对虚拟机的备份,避免了对虚拟机硬盘数据的读写操作,降低了对虚拟机性能的影响,提升了在虚拟机备份时虚拟机运行的稳定性。虚拟机备份时虚拟机运行的稳定性。虚拟机备份时虚拟机运行的稳定性。


技术研发人员:张高阳
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.07.10
技术公布日:2023/8/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐