本申请涉及服务器容灾领域,特别是涉及一种备份方法、装置、设备及存储介质。
背景技术:
随着虚拟化技术的不断发展,为了更加灵活的实现对业务服务器的部署,企业往往将物理设备中运行的虚拟机作为逻辑上的业务服务器以向外界提供的业务服务,因此对虚拟机的容灾也成为当前业界所关注的重点。
当前对于虚拟机的一种容灾方式是对虚拟机的磁盘数据做定期的本地备份,也就是将磁盘数据冗余的保存在虚拟机所处的物理设备磁盘,进而当磁盘数据发生损坏或丢失时,仍能够通过其对应的备份数据继续确保虚拟机的正常工作,但是当运行虚拟机的物理设备遭遇到全面损坏,如机房长时间停电或遭遇自然灾害等情况时,仅通过对虚拟机进行本地的数据备份则无法立即恢复该虚拟机的业务服务,因此当前的另一种容灾方式是将虚拟机的磁盘数据备份至异地的备份设备中,进而当虚拟机所处的原设备损坏时,仍能够基于备份设备中的磁盘数据确保虚拟机正常启动并提供相应的业务服务,但是对于虚拟机的异地容灾,就不可避免的会涉及到对虚拟机的磁盘数据进行传输备份时的效率问题。
由此可见,提供一种备份方法,以相对提高对虚拟机进行备份过程的整体效率,是本领域技术人员需要解决的问题。
技术实现要素:
本申请的目的是提供一种备份方法、装置、设备及存储介质,以相对提高对虚拟机进行备份过程的整体效率。
为解决上述技术问题,本申请提供一种备份方法,包括:
通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区;
判断缓存区中是否记录有磁盘数据;
如果判断缓存区中记录有磁盘数据,则通过第二线程将磁盘数据写入至本地磁盘。
优选地,将磁盘数据记录至缓存区,包括:
控制写指针将磁盘数据记录至缓存区;
相应的,通过第二线程将磁盘数据写入至本地磁盘,包括:
通过第二线程控制读指针在缓存区中读取磁盘数据,并写入至本地磁盘;写指针与读指针在存储区的初始位置以及移动方向均相同。
优选地,在通过第二线程控制读指针在缓存区中读取磁盘数据之前,方法还包括:
判断写指针与读指针在缓存区中的位置是否未重合;
如果写指针与读指针在缓存区中的位置未重合,执行通过第二线程控制读指针在缓存区中读取磁盘数据的步骤;
否则,等待预设时长,并再次执行判断写指针与读指针在缓存区中的位置是否未重合的步骤。
优选地,控制写指针将磁盘数据记录至缓存区,包括:
控制写指针将磁盘数据记录至循环缓存区。
优选地,方法还包括:
判断原设备是否故障;
如果原设备故障,则将目标虚拟机的差异数据关联为备份数据链;差异数据为各次备份的磁盘数据相较于已备份数据的增量数据;
利用备份数据链启动目标虚拟机。
优选地,在利用备份数据链作为镜像启动目标虚拟机之后,方法还包括:
将备份数据链中的差异数据合并为基础镜像,并将目标虚拟机的数据读取途径切换为基础镜像。
优选地,方法还包括:
判断原设备的故障是否排除;
如果原设备的故障排除,则将目标虚拟机的当前镜像迁移至原设备,并对目标虚拟机产生的新磁盘数据进行备份;
判断新磁盘数据的增量是否小于预设数据量;
如果新磁盘数据的增量小于预设数据量,则将新磁盘数据迁移至原设备,并关闭目标虚拟机。
此外,本申请还提供一种备份装置,包括:
第一线程模块,用于通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区;
判断模块,用于判断缓存区中是否记录有磁盘数据,如果缓存区中记录有磁盘数据,则调用第二线程模块;
第二线程模块,用于通过第二线程将磁盘数据写入至本地磁盘。
此外,本申请还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述的备份方法的步骤。
此外,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的备份方法的步骤。
本申请所提供的备份方法,通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区,进而当判断缓存区中记录有磁盘数据时,通过第二线程将磁盘数据写入至本地磁盘以完成对目标虚拟机的备份。由于本方法获取目标虚拟机的磁盘数据的操作以及将磁盘数据写入至本地磁盘的操作分别通过相互独立的第一线程以及第二线程完成,第一线程仅用于接收原设备传入的磁盘数据并记录至缓存区,第二线程仅用于将缓存区中的磁盘数据写入至本地磁盘,因此对于磁盘数据的远程获取以及对于将磁盘数据写入至本地磁盘的操作可以由第一线程以及第二线程同时执行,即在第一线程将磁盘数据记录至缓存区的过程中,第二线程能够将缓存区中已有的磁盘数据写入至本地磁盘,进而相对提高了对虚拟机进行备份过程的整体效率。此外,本申请还提供一种备份装置、设备及存储介质,有益效果同上所述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请公开的一种备份方法的流程图;
图2为本申请公开的一种具体的备份方法的流程图;
图3为本申请公开的一种具体场景下基于循环缓存区的指针读写示意图;
图4为本申请公开的一种具体的备份方法的流程图;
图5为本申请公开的一种具体的备份方法的流程图;
图6为本申请公开的一种备份装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
当前对于虚拟机的一种容灾方式是对虚拟机的磁盘数据做定期的本地备份,也就是将磁盘数据冗余的保存在虚拟机所处的物理设备磁盘,进而当磁盘数据发生损坏或丢失时,仍能够通过其对应的备份数据继续确保虚拟机的正常工作,但是当运行虚拟机的物理设备遭遇到全面损坏,如机房长时间停电或遭遇自然灾害等情况时,仅通过对虚拟机进行本地的数据备份则无法立即恢复该虚拟机的业务服务,因此当前的另一种容灾方式是将虚拟机的磁盘数据备份至异地的备份设备中,进而当虚拟机所处的原设备损坏时,仍能够基于备份设备中的磁盘数据确保虚拟机正常启动并提供相应的业务服务,但是对于虚拟机的异地容灾,就不可避免的会涉及到对虚拟机的磁盘数据进行传输备份时的效率问题。
为此,本申请的核心是提供一种备份方法,以相对提高对虚拟机进行备份过程的整体效率。
请参见图1所示,本申请实施例公开了一种备份方法,包括:
步骤s10:通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区。
步骤s11:判断缓存区中是否记录有磁盘数据,如果缓存区中记录有磁盘数据,则执行步骤s12。
步骤s12:通过第二线程将磁盘数据写入至本地磁盘。
需要说明的是,本方法中的第一线程与第二线程是相互独立的两个线程,第一线程的作用是获取原设备中目标虚拟机的磁盘数据并记录至缓存区,第二线程的作用是将缓存区中已经记录的磁盘数据写入至本地磁盘。
本方法中的原设备指的是待备份的目标虚拟机所处的物理设备,而目标虚拟机指的是原设备中待备份的虚拟机,磁盘数据指的是在原设备的磁盘中存储并用于支持目标虚拟机正常工作的数据。本方法的执行主体为对原设备中的目标虚拟机进行异地备份的云端设备,通过与原设备进行通信交互的方式,获取原设备传入的目标虚拟机工作的磁盘数据,并通过云存储的方式对磁盘数据进行保存,以此达到对于目标虚拟机的容灾备份,进而当原设备发生故障导致目标虚拟机的磁盘数据完全丢失或损坏时,也能够通过云端设备找回目标虚拟机的磁盘数据,并恢复目标虚拟机的正常运行。
此外,由于考虑到在原设备的磁盘中获取虚拟机的磁盘数据时是以扇区为单位进行的,而对缓存区中数据的读写是以数据单元为单位进行的,因此本方法中缓存区的每个数据单元的数据容量可以根据原设备中磁盘的扇区大小而定,例如当原设备中磁盘的每个扇区为512字节,则缓存区的每个数据单元的数据容量也为512字节,以此确保从原设备的中每次读取的磁盘数据均能够完整的记录至缓存区的数据单元中,保证了磁盘数据的完整性,并且避免了写放大的情况的产生。
本申请所提供的备份方法,通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区,进而当判断缓存区中记录有磁盘数据时,通过第二线程将磁盘数据写入至本地磁盘以完成对目标虚拟机的备份。由于本方法获取目标虚拟机的磁盘数据的操作以及将磁盘数据写入至本地磁盘的操作分别通过相互独立的第一线程以及第二线程完成,第一线程仅用于接收原设备传入的磁盘数据并记录至缓存区,第二线程仅用于将缓存区中的磁盘数据写入至本地磁盘,因此对于磁盘数据的远程获取以及对于将磁盘数据写入至本地磁盘的操作可以由第一线程以及第二线程同时执行,即在第一线程将磁盘数据记录至缓存区的过程中,第二线程能够将缓存区中已有的磁盘数据写入至本地磁盘,进而相对提高了对虚拟机进行备份过程的整体效率。
参见图2所示,本申请实施例公开了一种备份方法,包括:
步骤s20:通过第一线程获取原设备中目标虚拟机的磁盘数据,并控制写指针将磁盘数据记录至缓存区。
步骤s21:判断缓存区中是否记录有磁盘数据,如果缓存区中记录有磁盘数据,则执行步骤s22。
步骤s22:通过第二线程控制读指针在缓存区中读取磁盘数据,并写入至本地磁盘。
写指针与读指针在存储区的初始位置以及移动方向均相同。
需要说明的是,本方法的重点在于通过写指针与读指针分别向缓存区写入磁盘数据以及将缓存区中的磁盘数据存储至本地磁盘。指针(pointer)是编程语言中的一个对象,指针的值是根据地址直接指向(pointsto)存储器中的某一个数据单元。本方法中的写指针由第一线程控制,读指针由第二线程控制,写指针与读指针均指向缓存区中的数据单元,并且写指针与读指针在存储区指向的数据单元的初始位置相同,写指针的目的是将原设备传入的磁盘数据写入至缓存区中的数据单元,读指针的目的是将缓存区中数据单元的磁盘数据读出并进一步存储至本地磁盘。由于将磁盘数据写入缓存区,以及从缓存区中读取磁盘数据均是以数据单元作为单位依次进行的,因此向缓存区中记录磁盘数据以及在缓存区中读取磁盘数据的过程中读指针与写指针指向的数据单元不断移动,并且移动方向相同。本方法通过指针的方式直接指向缓存区的数据单元的地址,因此在缓存区中读写磁盘数据的整体效果更高,进而进一步提高了备份过程的整体效率。
在上述实施例的基础上,作为一种优选的实施方式,在通过第二线程控制读指针在缓存区中读取磁盘数据之前,方法还包括:
判断写指针与读指针在缓存区中的位置是否未重合;
如果写指针与读指针在缓存区中的位置未重合,执行通过第二线程控制读指针在缓存区中读取磁盘数据的步骤;
否则,等待预设时长,并再次执行判断写指针与读指针在缓存区中的位置是否未重合的步骤。
需要说明的是,本实施方式考虑到写指针与读指针在缓存区中所指向的数据单元的位置是不断移动且移动方向一致的,因此可能会出现读指针与写指针的指向的位置发生重合的情况,处于上述情况时,说明写指针需要向当前的数据单元中写入磁盘数据,但读指针也需要读取到当前的数据单元,因此为了避免出现数据错误的情况,本方法当判断写指针与读指针在缓存区中的位置重合时,等在预设时长,并再次执行判断写指针与读指针在缓存区中的位置是否未重合的步骤,当写指针与读指针在缓存区中的位置不重合时,执行通过第二线程控制读指针在缓存区中读取磁盘数据的步骤。本实施方式相对确保了备份过程的数据可靠性。
在上述实施方式的基础上,作为一种优选的实施方式,控制写指针将磁盘数据记录至缓存区,包括:
控制写指针将磁盘数据记录至循环缓存区。
需要说明的是,本实施方式的重点在于缓存区的类型具体为循环缓存区,循环缓存区是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构。当缓存区中的一个数据元素被用掉后,其余数据元素不需要移动存储位置,能够进一步提高整体的备份效率。
下面提供一种基于循环缓存区对磁盘数据进行读写的具体场景实施例,请参考图3所示的具体场景下基于循环缓存区的指针读写示意图。
本场景实施例是对原设备中vmware虚拟化平台中的虚拟机进行备份的场景,场景实施例的基本流程如下:
1、首先会建立一个环形缓冲区,大小根据原设备磁盘的扇区大小进行分配;
2、初始化环形缓冲区的写指针和读指针,分别用来表示读写的位置;
3、读取vmware磁盘数据的线程操控写指针,不断将从vmware磁盘中读取的磁盘数据写入环形缓冲区;
4、负责写qcow2文件的线程操控读指针,不断将缓冲区中的数据读取出来,写入qcow2文件;(注:由于去vmware读取磁盘数据的时候,我们是根据磁盘扇区偏移来读取数据的,所以,确保了读取回来的数据时顺序的);
5、中间如果遇到读指针赶上写指针了,缓冲区是空的情况,就会优先写,读指针会稍等短时间;
6、如果遇到写指针赶上读指针,缓冲区已满的情况,写指针需要稍等短时间,读指针优先将缓冲区中的磁盘数据,确保不会发生数据错误的问题。
参见图4所示,本申请实施例公开了一种备份方法,包括:
步骤s40:通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区。
步骤s41:判断缓存区中是否记录有磁盘数据,如果缓存区中记录有磁盘数据,则执行步骤s42。
步骤s42:通过第二线程将磁盘数据写入至本地磁盘。
步骤s43:判断原设备是否发生故障,如果原设备发生故障,则执行步骤s44。
步骤s44:将目标虚拟机的差异数据关联为备份数据链。
差异数据为各次备份的磁盘数据相较于已备份数据的增量数据。
步骤s45:利用备份数据链启动目标虚拟机。
需要说明的是,本实施方式的重点是在云端设备中启动原设备备份的目标虚拟机,并且目标虚拟机是基于各次备份的增量数据关联而成的备份数据链启动的。另外,需要解释的是,增量数据指的是对目标虚拟机的相邻次备份之间,目标虚拟机的磁盘数据内容发生变化的部分,本实施例通过建立增量数据之间的关联性生成备份数据链,进而通过备份数据链能够检索并调用到各个增量数据,因此能够通过备份数据链在云端设备中高效的启动目标虚拟机,以此保持目标虚拟机中业务服务的正常运行,提高了对于虚拟机的备份后的容灾效率。
在上述实施例的基础上,作为一种优选的实施方式,在利用备份数据链作为镜像启动目标虚拟机之后,方法还包括:
将备份数据链中的差异数据合并为基础镜像,并将目标虚拟机的数据读取途径切换为基础镜像。
需要说明的是,由于考虑到基于备份数据链作为镜像启动目标虚拟机时,虽然具有较高的虚拟机启动效率,但是虚拟机启动后,在提供业务服务时需要经常对备份数据链中的增量数据进行合并,因此会影响虚拟机的业务性能。本实施方式的重点在于,在将目标虚拟机快速启动后,进一步将备份数据链中的差异数据合并为基础镜像,并将基础镜像作为目标虚拟机的数据读取途径,以此相对确保目标虚拟机的业务性能。
参见图5所示,本申请实施例公开了一种备份方法,包括:
步骤s50:通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区。
步骤s51:判断缓存区中是否记录有磁盘数据,如果缓存区中记录有磁盘数据,则执行步骤s52。
步骤s52:通过第二线程将磁盘数据写入至本地磁盘。
步骤s53:判断原设备是否发生故障,如果原设备发生故障,则执行步骤s54。
步骤s54:将目标虚拟机的差异数据关联为备份数据链。
差异数据为各次备份的磁盘数据相较于已备份数据的增量数据。
步骤s55:利用备份数据链启动目标虚拟机。
步骤s56:将备份数据链中的差异数据合并为基础镜像,并将目标虚拟机的数据读取途径切换为基础镜像。
步骤s57:判断原设备的故障是否排除,如果原设备的故障排除,则执行步骤s58。
步骤s58:则将目标虚拟机的当前镜像迁移至原设备,并对目标虚拟机产生的新磁盘数据进行备份。
步骤s59:判断新磁盘数据的增量是否小于预设数据量,如果新磁盘数据的增量小于预设数据量,则执行步骤s60。
步骤s60:将新磁盘数据迁移至原设备,并关闭目标虚拟机。
本实施例的目的是将运行于云端设备的目标虚拟机迁移至故障已排除的原设备,由于云端设备中启动的目标虚拟机仍然在提供业务服务,仍会不断产生新增数据,因此为了最大程度确保目标虚拟机的新增数据不出现丢失的情况,本实施例在当判断原设备的故障排除时,先将目标虚拟机当前时刻最新的当前镜像迁移至原设备,并继续保持云端设备的目标虚拟机的处于运行状态,且对该目标虚拟机产生的新磁盘数据进行备份,直至判断新磁盘数据的增量小于预设数据量时,如增量小于512mb时,再将新磁盘数据迁移至原设备,并关闭云端设备中的目标虚拟机,本实施例确保了原设备能够正常启动目标虚拟机,并且最大程度保证了目标虚拟机启动后业务数据的完整性。
请参见图6所示,本申请实施例公开了一种备份装置,包括:
第一线程模块10,用于通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区;
判断模块11,用于判断缓存区中是否记录有磁盘数据,如果缓存区中记录有磁盘数据,则调用第二线程模块12;
第二线程模块12,用于通过第二线程将磁盘数据写入至本地磁盘。
本申请所提供的备份装置,通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区,进而当判断缓存区中记录有磁盘数据时,通过第二线程将磁盘数据写入至本地磁盘以完成对目标虚拟机的备份。由于本装置获取目标虚拟机的磁盘数据的操作以及将磁盘数据写入至本地磁盘的操作分别通过相互独立的第一线程以及第二线程完成,第一线程仅用于接收原设备传入的磁盘数据并记录至缓存区,第二线程仅用于将缓存区中的磁盘数据写入至本地磁盘,因此对于磁盘数据的远程获取以及对于将磁盘数据写入至本地磁盘的操作可以由第一线程以及第二线程同时执行,即在第一线程将磁盘数据记录至缓存区的过程中,第二线程能够将缓存区中已有的磁盘数据写入至本地磁盘,进而相对提高了对虚拟机进行备份过程的整体效率。
在前述实施例的基础上,本申请实施例对备份装置进行进一步的说明和优化。具体的:
在一种具体实施方式中,所述第一线程模块包括:
写指针模块,用于通过第一线程获取原设备中目标虚拟机的磁盘数据,并控制写指针将磁盘数据记录至缓存区;
所述第二线程模块包括:
读指针模块,用于通过第二线程控制读指针在缓存区中读取磁盘数据,并写入至本地磁盘;写指针与读指针在存储区的初始位置以及移动方向均相同。
在一种具体实施方式中,所述备份装置还包括:
位置判断模块,用于判断写指针与读指针在缓存区中的位置是否未重合,如果写指针与读指针在缓存区中的位置未重合,则调用读指针模块,否则,调用等待模块;
所述等待模块,用于等待预设时长,并再次调用位置判断模块。
在一种具体实施方式中,所述备份装置还包括:
故障判断模块,用于判断原设备是否故障,如果原设备故障,则调用数据链生成模块;
所述数据链生成模块,用于将目标虚拟机的差异数据关联为备份数据链;差异数据为各次备份的磁盘数据相较于已备份数据的增量数据;
备份启动模块,用于利用备份数据链启动目标虚拟机。
在一种具体实施方式中,所述备份装置还包括:
镜像切换模块,用于将备份数据链中的差异数据合并为基础镜像,并将目标虚拟机的数据读取途径切换为基础镜像。
在一种具体实施方式中,所述备份装置还包括:
故障排除判断模块,用于判断原设备的故障是否排除,如果原设备的故障排除,则调用迁移备份模块;
所述迁移备份模块,用于将目标虚拟机的当前镜像迁移至原设备,并对目标虚拟机产生的新磁盘数据进行备份;
增量判断模块,用于判断新磁盘数据的增量是否小于预设数据量,如果新磁盘数据的增量小于预设数据量,则调用新数据迁移模块;
所述新数据迁移模块,用于将新磁盘数据迁移至原设备,并关闭目标虚拟机。
此外,本实施例还公开了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序,以实现以下步骤:
通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区;判断缓存区中是否记录有磁盘数据;如果缓存区中记录有磁盘数据,则通过第二线程将磁盘数据写入至本地磁盘。
本申请所提供的电子设备,通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区,进而当判断缓存区中记录有磁盘数据时,通过第二线程将磁盘数据写入至本地磁盘以完成对目标虚拟机的备份。由于本电子设备获取目标虚拟机的磁盘数据的操作以及将磁盘数据写入至本地磁盘的操作分别通过相互独立的第一线程以及第二线程完成,第一线程仅用于接收原设备传入的磁盘数据并记录至缓存区,第二线程仅用于将缓存区中的磁盘数据写入至本地磁盘,因此对于磁盘数据的远程获取以及对于将磁盘数据写入至本地磁盘的操作可以由第一线程以及第二线程同时执行,即在第一线程将磁盘数据记录至缓存区的过程中,第二线程能够将缓存区中已有的磁盘数据写入至本地磁盘,进而相对提高了对虚拟机进行备份过程的整体效率。
在前述实施例的基础上,本申请实施例对电子设备进行进一步的说明和优化。具体的:
本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:通过第一线程获取原设备中目标虚拟机的磁盘数据,控制写指针将磁盘数据记录至缓存区;通过第二线程控制读指针在缓存区中读取磁盘数据,并写入至本地磁盘;写指针与读指针在存储区的初始位置以及移动方向均相同。
本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:判断写指针与读指针在缓存区中的位置是否未重合;如果写指针与读指针在缓存区中的位置未重合,执行通过第二线程控制读指针在缓存区中读取磁盘数据的步骤;否则,等待预设时长,并再次执行判断写指针与读指针在缓存区中的位置是否未重合的步骤。
本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:判断原设备是否故障;如果原设备故障,则将目标虚拟机的差异数据关联为备份数据链;差异数据为各次备份的磁盘数据相较于已备份数据的增量数据;利用备份数据链启动目标虚拟机。
本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:将备份数据链中的差异数据合并为基础镜像,并将目标虚拟机的数据读取途径切换为基础镜像。
本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:判断原设备的故障是否排除;如果原设备的故障排除,则将目标虚拟机的当前镜像迁移至原设备,并对目标虚拟机产生的新磁盘数据进行备份;判断新磁盘数据的增量是否小于预设数据量;如果新磁盘数据的增量小于预设数据量,则将新磁盘数据迁移至原设备,并关闭目标虚拟机。
进一步的,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的备份方法的步骤。关于该方法的具体步骤可以参考前述实施例公开的备份方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请所提供的计算机可读存储介质,通过第一线程获取原设备中目标虚拟机的磁盘数据,并将磁盘数据记录至缓存区,进而当判断缓存区中记录有磁盘数据时,通过第二线程将磁盘数据写入至本地磁盘以完成对目标虚拟机的备份。由于本计算机可读存储介质获取目标虚拟机的磁盘数据的操作以及将磁盘数据写入至本地磁盘的操作分别通过相互独立的第一线程以及第二线程完成,第一线程仅用于接收原设备传入的磁盘数据并记录至缓存区,第二线程仅用于将缓存区中的磁盘数据写入至本地磁盘,因此对于磁盘数据的远程获取以及对于将磁盘数据写入至本地磁盘的操作可以由第一线程以及第二线程同时执行,即在第一线程将磁盘数据记录至缓存区的过程中,第二线程能够将缓存区中已有的磁盘数据写入至本地磁盘,进而相对提高了对虚拟机进行备份过程的整体效率。
以上对本申请所提供的一种备份方法、装置、设备及存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。