一种虚拟机合成备份方法及系统与流程

文档序号:25279538发布日期:2021-06-01 17:25阅读:83来源:国知局
一种虚拟机合成备份方法及系统与流程

本发明涉及计算机容灾备份技术领域,特别是涉及一种vmware虚拟机合成备份方法及系统。



背景技术:

目前,随着企业信息化建设的深入,业务数据也随之增长,非结构数据已达到了海量级别,结构化数据也进入了tb级别。面对如此庞大的数据量,采用传统的周期性“完全备份+增量备份”的策略,已无法满足企业对备份的及时性要求,存在以下问题:

1、周期性的完全备份,数据量大,备份时间长,且大量占用了客户端主机计算资源、i/o资源和网络资源,将影响核心业务的正常运行;

2、为了能恢复到多个时间点,需要准备较大的存储空间,来保存多个完全备份的备份集数据,这增加了企业的存储建设成本。



技术实现要素:

为克服上述现有技术存在的不足,本发明之目的在于提供一种虚拟机合成备份方法及系统,以提升虚拟机备份与还原的处理效率。

为达上述目的,本发明提出一种虚拟机合成备份方法,包括如下步骤:

步骤s1,对虚拟平台的源虚拟机进行首次全量数据初始备份,形成一份基础的全量备份数据;

步骤s2,对源端虚拟机执行增量备份,从源虚拟机获取本次增量备份的cbt信息,根据获取的cbt信息,对源端虚拟机磁盘和目标端磁盘的相应数据块进行读写,实现增量备份;

步骤s3,当当前备份时间点为全量备份时间点时,执行增量备份,并基于前一次生成的全量备份数据以及前一次全量备份时间点到当前时间点的所有增量数据,合成备份为当前全量备份时间点的全量备份数据。

优选地,步骤s3进一步包括:

步骤s300,获取前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息;

步骤s301,从虚拟平台的源虚拟机获取本次增量备份的cbt信息,并将其与步骤s300获取的各备份时间点中保存的cbt信息组织成一条数据链;

步骤s302,从所述数据链头部开始,一直到尾部节点前的一个节点为止,根据所述数据链对本地源端和目标端磁盘进行读写;

步骤s303,对所述数据链尾部节点,连接远端虚拟机和本地相对应的目标端磁盘,根据所述数据链对远端虚拟机磁盘和目标端磁盘的相应数据块进行读写。

优选地,该数据链中保存有各备份点下相应磁盘的句柄和cbt信息,所述数据链中各元素的先后顺序由备份时间决定的。

优选地,于步骤s302中,将以前各次备份的磁盘数据,依次写到本次备份的备份点目录下对应的vmdk磁盘文件中。

优选地,于步骤s3后,本发明还包括如下步骤:

在进行备份数据的恢复时,若选择全量备份点或合成备份点,则进行全量数据的恢复;选择增量备份点,则只进行对应增量数据的恢复。

优选地,于步骤s302中,针对每个磁盘都开一个读线程和写线程,写线程一开始会阻塞,等待共享的数据结构中有数据到来;读线程根据cbt信息、用vddk的api从源端磁盘读取变化的数据块并存入临时缓冲区中,每读取10块数据读线程会阻塞,等待写线程将临时缓冲区中的数据写入目标磁盘。

优选地,在整盘备份或厚置备置零磁盘的情况下,读线程读取一块数据后会判断该块数据是否为空块,若为空块则舍弃该块并继续读取下一块数据,以节省目标端机器的空间。

为达到上述目的,本发明还提供一种虚拟机合成备份系统,包括:

首次全量备份模块,用于对虚拟平台的源虚拟机进行首次全量数据初始备份,形成一份基础的全量备份数据;

增量备份模块,用于对虚拟平台的源虚拟机执行增量备份,从源虚拟机获取本次增量备份的cbt信息,根据获取的cbt信息,对源虚拟机磁盘和目标端磁盘的相应数据块进行读写,实现增量备份;

合成备份模块,用于当当前备份时间点为全量备份时间点时,执行增量备份,并基于前一次生成的全量备份数据以及前一次全量备份时间点到当前时间点的所有增量数据,合成备份为当前全量备份时间点的全量备份数据。

优选地,所述合成备份模块进一步包括:

历史备份点获取单元,用于获取前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息;

数据链生成单元,用于从虚拟平台的源虚拟机获取本次增量备份的cbt信息,并将其与历史备份点获取单元获取的各备份时间点中保存的cbt信息组织成一条数据链;

历史备份点数据备份处理单元,用于从数据链头部开始,一直到尾部节点前的一个节点为止,根据各个节点保存的句柄和cbt等信息对源端和目标端磁盘进行读写;

当前备份点增量备份处理单元,用于对所述数据链尾部节点,利用vddk连接远端和本地相对应的磁盘,根据保存的磁盘句柄以及cbt信息,对远端磁盘和目标端磁盘的相应数据块进行读写。

优选地,所述系统还包括备份恢复处理模块,用于在进行备份数据的恢复时,若选择全量备份点或合成备份点,则进行全量数据的恢复;选择增量备份点,则只进行对应增量数据的恢复。

与现有技术相比,本发明一种虚拟机合成备份方法及系统通过利用增量备份的备份时间及前一次全量备份合成生成当前的全量备份时间点,确保每个备份点都是安全可靠的时间点,相比每次进行完全备份可大大减少备份时间,降低对生产主机的性能影响,同时,相比传统的差异/增量备份,后台将自动生成了全备时间点,那么在选择这些时间点进行数据恢复时,无需再进行数据重组过程,直接使用全量备份数据进行恢复,可减少恢复时间及提高恢复效率。

附图说明

图1为本发明一种虚拟机合成备份方法的步骤流程图;

图2为本发明一种虚拟机合成备份系统的系统架构图;

图3为本发明具体实施例中虚拟机合成备份的流程图。

具体实施方式

以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

图1为本发明一种虚拟机合成备份方法的步骤流程图。如图1所示,本发明一种虚拟机合成备份方法,包括如下步骤:

步骤s1,对虚拟平台的源虚拟机进行首次全量数据初始备份,形成一份基础的全量备份数据。

也就是说,当需要第一次对虚拟平台的源虚拟机进行全量备份时,对虚拟平台的源虚拟机进行全量数据初始备份,形成一份基础的全量备份数据。由于这里的全量备份与现有技术中的全量备份并无不同,因此具体如何进行全量备份在此不予赘述。

步骤s2,对虚拟平台的源虚拟机执行增量备份,从源虚拟机获取本次增量备份的cbt信息,根据获取的cbt信息,对源虚拟机磁盘和目标端磁盘的相应数据块进行读写,实现增量备份。

在本发明具体实施例中,这里的增量备份和现有技术的增量备份的处理一致,即利用vddk(virtualdiskdevelopmentkit,虚拟磁盘开发包)连接远端源vmware虚拟机和本地目标端相对应的磁盘,再根据vmware虚拟机提供的cbt信息,对源端磁盘和目标端磁盘的相应数据块进行读写,实现增量备份,所述cbt信息至少包括变化数据块的起始偏移值以及变化数据块的长度。由于具体的增量备份的过程与现有技术相同,其具体过程在此不予赘述。

步骤s3,当当前备份时间点为全量备份时间点时,执行增量备份,并基于前一次生成的全量备份数据以及前一次全量备份时间点到当前时间点的所有增量数据,合成备份为当前全量备份时间点的全量备份数据。

具体地,步骤s3进一步包括:

步骤s300,获取前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息。

本发明中,合成备份是先将上次备份的数据(一直追溯到全量)恢复到本地,再进行本次的增量备份(对恢复到本地的数据进行增量覆盖),因此,首先需要获取前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息,这里前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息可从本地获取。

步骤s301,从虚拟平台的源虚拟机获取本次增量备份的cbt信息,并将其与步骤s300获取的各备份时间点中保存的cbt信息组织成一条数据链。

具体地说,本次(即当前备份时间点)增量备份的信息需从远端exsi虚拟机平台获取,即将从exsi虚拟机平台获取本次增量备份的cbt信息,并将从exsi虚拟机平台获取的本次增量备份的cbt信息和之前各个备份点中保存的cbt信息组织成一条数据链,该数据链中保存有各备份点下相应磁盘的句柄和cbt信息;数据链中各元素的先后顺序是由备份时间决定的,越靠近头部、备份时间越早,其中头部为当前时间点的前一次全量备份点的cbt信息,尾部为最新的增量备份点的cbt信息,即当前备份时间点从从exsi虚拟机平台获取本次增量备份的cbt信息。

得到数据链后,从头部开始,在每个备份点下,针对每一个磁盘,根据保存的cbt信息,利用vddk的磁盘读写api打开并读取相应数据块、写入本地目标磁盘。

步骤s302,从数据链头部开始,一直到尾部节点前的一个节点为止,根据各个节点保存的句柄和cbt等信息对源端和目标端磁盘进行读写。

在本发明中,步骤s302实际上是在本地进行了一次合成处理,即将以前各次备份的磁盘数据,依次写到本次备份的备份点目录下对应的vmdk磁盘文件中,需说明的是,所述源端磁盘是指位于本地服务器中备份点下的本地磁盘。

步骤s303,对所述数据链尾部节点,利用vddk连接远端和本地相对应的磁盘,根据保存的磁盘句柄以及cbt信息,对远端磁盘和目标端磁盘的相应数据块进行读写。

数据链尾部节点代表着本次增量备份的相关信息,根据各个节点(这里指以尾节点为头部的一条子链上的各个节点)保存的句柄和cbt等信息对源端进行读取,覆盖写入本次备份的备份点目录下对应的vmdk磁盘文件中。由于步骤s302中已经做了一次合成处理,所以可以保证这是最后一次写入、写入的都将是最新的数据,此次增量备份的写入过程实际上也是一次合成处理,所述远端磁盘是位于vmwareworkstation/exsi虚拟平台中的远端磁盘。

本发明通过利用增量备份的备份时间及前一次全量备份合成生成当前的全量备份时间点,确保每个备份点都是安全可靠的时间点,相比每次进行完全备份可大大减少备份时间,降低对生产主机的性能影响。同时,相比传统的差异/增量备份,后台将自动生成了全备时间点,那么在选择这些时间点进行数据恢复时,无需再进行数据重组过程,直接使用全量备份数据进行恢复,可减少恢复时间及提高恢复效率。

当然,本发明也可在每次做增量备份的同时做一次合成备份,可结合具体的需求来选择,但从效率的角度来看,应是只有到了全量备份时间点时才进行合成备份。

优选地,于步骤s3后,本发明还包括如下步骤:

在进行备份数据的恢复时,若选择全量备份点或合成备份点,则进行全量数据的恢复;若选择增量备份点,则只进行对应增量数据的恢复。

在本发明中,合成备份数据的恢复,就是全量数据的恢复。只是在后台的处理中,如果需要恢复的备份点备份类型是合成备份,则视为全量备份。根据当前备份点的cbt信息恢复磁盘数据,同样是利用vddk的api对读取本地源端磁盘、更新远端磁盘的相应位置的数据块。跟普通增量备份和合成备份的区别在于,恢复过程的源端磁盘是本地备份点中存放的vmdk磁盘文件或自定义格式文件,远端磁盘则是位于远端exsi虚拟平台上的目标机器对应的托管磁盘。

图2为本发明一种虚拟机合成备份系统的系统架构图。如图1所示,本发明一种虚拟机合成备份系统,包括:

首次全量备份模块201,用于对虚拟平台的源虚拟机进行首次全量数据初始备份,形成一份基础的全量备份数据。

也就是说,当需要第一次对虚拟平台的源虚拟机进行全量备份时,对虚拟平台的源虚拟机进行全量数据初始备份,形成一份基础的全量备份数据。由于这里的全量备份与现有技术中的全量备份并无不同,因此具体如何进行全量备份在此不予赘述。

增量备份模块202,用于对虚拟平台的源虚拟机执行增量备份,从源虚拟机获取本次增量备份的cbt信息,根据获取的cbt信息,对源虚拟机磁盘和目标端磁盘的相应数据块进行读写,实现增量备份。

在本发明具体实施例中,这里的增量备份和现有技术的增量备份的处理一致,即利用vddk(virtualdiskdevelopmentkit,虚拟磁盘开发包)连接远端源vmware虚拟机和本地目标端相对应的磁盘,再根据vmware虚拟机提供的cbt信息,对源端磁盘和目标端磁盘的相应数据块进行读写,实现增量备份,所述cbt信息至少包括变化数据块的起始偏移值以及变化数据块的长度。由于具体的增量备份的过程与现有技术相同,其具体过程在此不予赘述。

合成备份模块203,用于当当前备份时间点为全量备份时间点时,执行增量备份,并基于前一次生成的全量备份数据以及前一次全量备份时间点到当前时间点的所有增量数据,合成备份为当前全量备份时间点的全量备份数据。

具体地,合成备份模块203进一步包括:

历史备份点获取单元,用于获取前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息。

本发明中,合成备份是先将上次备份的数据(一直追溯到全量)恢复到本地,再进行本次的增量备份(对恢复到本地的数据进行增量覆盖),因此,首先需要获取前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息,这里前一次全量备份时间点到当前时间点各次备份的磁盘信息和cbt信息可从本地获取。

数据链生成单元,用于从虚拟平台的源虚拟机获取本次增量备份的cbt信息,并将其与历史备份点获取单元获取的各备份时间点中保存的cbt信息组织成一条数据链。

具体地说,本次(即当前备份时间点)增量备份的信息需从远端exsi虚拟机平台获取,即将从exsi虚拟机平台获取本次增量备份的cbt信息,并将从exsi虚拟机平台获取的本次增量备份的cbt信息和之前各个备份点中保存的cbt信息组织成一条数据链,该数据链中保存有各备份点下相应磁盘的句柄和cbt信息;数据链中各元素的先后顺序是由备份时间决定的,越靠近头部、备份时间越早,其中头部为当前时间点的前一次全量备份点的cbt信息,尾部为最新的增量备份点的cbt信息,即当前备份时间点从从exsi虚拟机平台获取本次增量备份的cbt信息。

得到数据链后,从头部开始,在每个备份点下,针对每一个磁盘,根据保存的cbt信息,利用vddk的磁盘读写api打开并读取相应数据块、写入本地目标磁盘。

历史备份点数据备份处理单元,用于从数据链头部开始,一直到尾部节点前的一个节点为止,根据各个节点保存的句柄和cbt等信息对源端和目标端磁盘进行读写。

在本发明中,历史备份点数据备份处理单元实际上是在本地进行了一次合成处理,即将以前各次备份的磁盘数据,依次写到本次备份的备份点目录下对应的vmdk磁盘文件中,需说明的是,所述源端磁盘是指位于本地服务器中备份点下的本地磁盘。

当前备份点增量备份处理单元,用于对所述数据链尾部节点,利用vddk连接远端和本地相对应的磁盘,根据保存的磁盘句柄以及cbt信息,对远端磁盘和目标端磁盘的相应数据块进行读写。

数据链尾部节点代表着本次增量备份的相关信息,根据各个节点保存的句柄和cbt等信息对源端进行读取,覆盖写入本次备份的备份点目录下对应的vmdk磁盘文件中。由于之前已经做了一次合成处理,所以可以保证这是最后一次写入、写入的都将是最新的数据,此次增量备份的写入过程实际上也是一次合成处理,所述远端磁盘是位于vmwareworkstation/exsi虚拟平台中的远端磁盘。

优选地,本发明还包括:

备份恢复处理模块,用于在进行备份数据的恢复时,若选择全量备份点或合成备份点,则进行全量数据的恢复;选择增量备份点,则只进行对应增量数据的恢复。

在本发明中,合成备份数据的恢复,就是全量数据的恢复。只是在后台的处理中,如果需要恢复的备份点备份类型是合成备份,则视为全量备份。根据当前备份点的cbt信息恢复磁盘数据,同样是利用vddk的api对读取本地源端磁盘、更新远端磁盘的相应位置的数据块。跟普通增量备份和合成备份的区别在于,恢复过程的源端磁盘是本地备份点中存放的vmdk磁盘文件或自定义格式文件,远端磁盘则是位于远端exsi虚拟平台上的目标机器对应的托管磁盘。

实施例

图3为本发明实施例中一种虚拟机合成备份过程的流程图。在本实施例中,虚拟机的合成备份过程如下:

步骤1、第一次执行全量备份,对虚拟平台的虚拟机进行全量数据初始备份,形成一份基础的全量备份数据;

步骤2、第二次执行增量备份,获取虚拟机的增量备份数据,同时获取cbt信息(changedblocktracking块修改跟踪),即读取虚拟机中变化数据信息,cbt的格式为(变化数据块的起始偏移值,变化数据块的长度)。将根据变化位图中的信息,从初始的全量备份数据中读取没有变化的数据,并和获取的增量备份数据进行整合,形成新的全量备份数据,即合成备份。

步骤3,其后每次执行增量备份,都将获取增量备份数据,以及变化数据的位图信息,结合上次生成的全量备份数据,后台自动整合成新的全量备份数据。需说明的是,每次做增量备份的同时都进行一次合成备份,而在实际中可从效率的角度,只有到了全量备份时间点时才进行合成备份。

具体地,合成备份的具体过程如下:

步骤3.1,先获取以前各次备份和本次增量备份的磁盘信息和cbt信息。以前各次备份的磁盘信息从本地获取,本次增量备份的信息从远端exsi虚拟平台获取。

而后将从exsi平台获取的本次增量备份的cbt信息、和之前各个备份点中保存的cbt信息组织成一条数据链,数据链中保存有该备份点下相应磁盘的句柄和cbt信息;数据链中各元素的先后顺序是由备份时间决定的,越靠近头部、备份时间越早,其中头部为当前时间点的前一次全量备份点的cbt信息,尾部为最新的增量备份点的cbt信息。

步骤3.2,从数据链头部开始,一直到尾部节点前的一个节点为止,根据各个节点保存的句柄和cbt等信息对源端和目标端磁盘进行读写。该过程实际上是在本地进行了一次合成处理,把以前各次备份的磁盘数据,依次写到本次备份的备份点目录下对应的vmdk磁盘文件中。

步骤3.3,备份此次合成备份的增量数据,和普通的增量备份的处理一致,利用vddk连接远端vmware虚拟机和本地的相对应的磁盘、保存磁盘句柄,再根据vmware虚拟机提供的cbt信息,对源端磁盘和目标端磁盘的相应数据块进行读写。

数据链尾部节点代表着本次增量备份的相关信息,根据各个节点保存的句柄和cbt等信息对源端进行读取,覆盖写入本次备份的备份点目录下对应的vmdk磁盘文件中。由于之前已经做了一次合成处理,所以可以保证这是最后一次写入、写入的都将是最新的数据,此次增量备份的写入过程实际上也是一次合成处理。

在本实施例中,合成备份和普通的增量备份唯一的区别是,合成备份中读取的源端磁盘是位于本地服务器中备份点下的本地磁盘,普通的增量备份中的源端磁盘是位于vmwareworkstation/exsi虚拟平台中的远端虚拟机磁盘。

在本实施例中,对于普通的增量备份和合成备份,为了节省空间、提高效率,针对每个磁盘都开启一个读线程和写线程,写线程一开始会阻塞,等待共享的数据结构中有数据到来;读线程根据cbt信息、用vddk的api从源端磁盘读取变化的数据块并存入临时缓冲区中,每读取10块数据读线程会阻塞,等待写线程将临时缓冲区中的数据写入目标磁盘。整盘备份或厚置备置零磁盘(用户创建的虚拟磁盘类型的一种,创建支持群集功能的厚磁盘格式,创建磁盘时,直接从磁盘分配空间并立即对物理设备上保留的数据置零,所以当虚拟机有i/o操作时,就能够直接执行,简单来说,就是立即完全分配指定的磁盘空间给虚拟机,并立即清零磁盘空间,所需时间较长,特点是磁盘性能最好,创建时间长)情况下,读线程读取一块数据后会判断该块数据是否为空块(即该数据块中的数据是否全为0),若为空块则舍弃该块并继续读取下一块数据,以节省目标端机器的空间。

数据传输过程包括步骤3.2和步骤3.3,步骤3.2指从本地已存在全量/增量备份点读数据、写到本地的合成备份点,步骤3.3指从远端的磁盘读取数据、写到本地的合成备份点,步骤3.2中的数据量是本地进行数据传输的数据量、步骤3.3中是通过网络传输数据的数据量,一个是从本地获取,一个是要实时统计,所以做了区别处理,数据量的统计需要综合考虑,用以作为任务进度的统计标准,总的数据量包括步骤3.2和步骤3.3里的所有数据大小,相关变量的值需要在步骤3.2和步骤3.3里都更新。

另外cbt(有效数据块)信息也在内存中同步更新,合成新的增量备份点的cbt信息,cbt信息合并的方式为首尾合并,例如某两条cbt信息为(0,128)、(128,1024),则两条cbt信息实际上可以合并为一条新的cbt信息(0,1024)。具体地,cbt信息表示的是磁盘中有效数据块的集合,存储cbt信息后就不需把包括空数据块的整块磁盘都备份下来,本地存储的其实只有一份很小的cbt文件和只有有效数据的磁盘文件,可以节省空间、提高传输效率。已存在全量/增量备份点cbt信息从本地获取,本次增量的cbt通过相应的接口从远端esxi平台上获取、通过网络传输传到本地,获取所有备份点的cbt信息后需要对这些cbt信息做合并,作为合成备份点的cbt信息。

当数据传输完成后,将存在内存中的合并后的全新cbt信息写入增量备份点下的新的cbt文件,其他的处理和全量备份一致,最后在备端得到的备份点数据,实际上是个全量数据,唯一的区别是相应数据结构和文件中记录的这个备份点的备份类型是合成备份。

步骤4,合成备份数据的恢复:合成备份数据的恢复也是全量数据的恢复。只是在后台的处理中,如果需要恢复的备份点备份类型是合成备份,则视为全量备份。根据当前备份点的cbt信息恢复磁盘数据,同样是利用vddk的api对读取本地磁盘、更新远端磁盘的相应位置的数据块。跟普通增量备份和合成备份的区别在于,恢复过程的源端磁盘是本地备份点中存放的vmdk磁盘文件或自定义格式文件,目标端磁盘是位于远端exsi上的目标机器的对应的托管磁盘。

与现有技术相比,本发明具有如下优点:

1、缩短了备份时间:一次全备,永久的增量备份,合成备份基于全量备份集,和随后的增量备份集在备份服务器端进行合并,生成新的全量备份集,极大增强了备份效率;

2、恢复效率高:选择备份时间点进行数据恢复时,直接使用合成后的全量备份数据进行恢复,支持数据还原和挂载恢复等多种方式,减少了恢复时间,提高恢复的效率。

3、减少了占用生产环境的资源:通过执行一次全量备份,后续都是增量备份,然后在后台合成,避免了周期性完全备份对客户端主机资源、i/o资源和网络资源等生产环境的占用。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1