基于脏数据位图和网络块设备的KVM虚拟机备份方法与流程

文档序号:20016978发布日期:2020-02-25 10:43阅读:513来源:国知局
基于脏数据位图和网络块设备的KVM虚拟机备份方法与流程

本发明属于kvm虚拟机技术领域,具体涉及一种基于脏数据位图和网络块设备的kvm虚拟机备份方法。



背景技术:

随着云计算日渐成为了一种基础设施,使得云端数据的安全性成为了重要的研究议题。同时,kvm(kernel-basedvirtualmachine)及qemu(io虚拟化组件)因其完整的开源生态,已经逐渐成为各云厂商的主要研究方向。因此对kvm虚拟机的在线备份机制的研究具有十分重要的意义。qemu是一套开源的模拟计算机软件,在很多应用场景下,它为kvm虚拟机提供io虚拟化。因此,kvm虚拟机的备份由qemu的内部来实现备份。libvirt是用于管理虚拟化平台的开源的api,它被用来管理kvm虚拟机。在对kvm虚拟机进行备份时,libvirt作为管理入口,通过调用qemu的api来实现备份数据的管理。目前,大部分云厂商采用的备份方式主要有两种,一种是基于快照的备份方式。另一种是是基于qemu的脏数据位图的备份方式。

1.基于快照的备份方式

基于快照的备份方式首先会创建一个临时快照,快照的创建通过libvirt的api即可完成.以配置两块磁盘的kvm虚拟机为例,其镜像依赖关系如图1所示,其中active1.qcow2和active2.qcow2分别为两个磁盘的top镜像,负责用户当前数据的读写功能,依赖base镜像分别为只读格式的base1.img和base2.img。该临时快照的创建会将其作为最top层镜像(需要更改虚拟机xml文件)负责用户数据的改写与加载功能,而原来的top层镜像active1.qcow2及active2.qcow2变为只读镜像,因此,通过拷贝active1.qcow2及active2.qcow2即可达到备份的目的。

当备份数据拷贝完成后,需要将临时快照在备份期间改写的数据合并回active1.qcow2及active2.qcow2,并删除临时快照。其中快照数据的合并可通过libvirt的blockcommit命令进行合并。

2.单独基于脏数据位图的备份方式

单独基于脏数据位图(dirty-bitmap)的备份方式,是一种通过将备份数据导出到临时空间的一种备份方式。在备份过程中,按照qemu提供的接口,指定需要备份的对象及目标以及备份类型即可生成全量备份或增量备份文件。

其核心机制是利用qemu内部实现的脏数据位图进行脏数据的追踪,脏数据位图可以以一定粒度对镜像在脏数据位图创建时刻以来的脏数据进行映射。

但上述两种方案均存在一定的技术缺陷:

1.对应基于快照方式而言:

1)虚拟机的xml文件需要临时改动以更改虚拟机最top层的镜像。xml文件的修改还要伴随着libvirt的重启。

2)无法识别从上次备份以来用户修改的数据,只能进行镜像级的备份。但是,可以通过管理快照链,并提交链中间而非活动层,也能捕获qcow2格式的增量备份,但也存在快照链管理复杂的问题。

3)备份的目标必须为qemu支持的格式。

4)合并临时快照阶段仍只支持一次合并一块磁盘。

2.对于单独基于脏数据位图备份方式而言

1)通过临时文件的方式进行备份,会需求额外的存储空间,增加成本。

2)备份文件的合并需要在第三方备份服务器上部署qemu环境用于增量及全量文件的合并。

3)无法指定任意两个时间点的数据进行备份,只可以对脏数据位图创建时间以来的数据进行备份。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是:如何提供一种基于脏数据位图和网络块设备的kvm虚拟机备份方法。

(二)技术方案

为解决上述技术问题,本发明提供一种基于脏数据位图和网络块设备的kvm虚拟机备份方法,所述kvm虚拟机备份方法基于kvm虚拟机备份系统来实施,所述kvm虚拟机备份系统包括:配置文件生成模块、信息解析模块、备份预处理模块、服务提供模块、备份资源获取模块、备份任务结束命令生成模块;

所述kvm虚拟机备份方法包括如下步骤:

步骤1:所述配置文件生成模块依据kvm虚拟机备份需求编写备份配置文件;

步骤2:所述信息解析模块从备份配置文件中获取并解析备份配置信息;所述步骤2包括:

步骤21:所述信息解析模块从备份配置文件中解析出指定备份的起始时间戳;

步骤22:所述信息解析模块从备份配置文件中解析出指定备份的网络块设备的服务器地址;

步骤23:所述信息解析模块从备份配置文件中解析出指定备份的结束时间戳;

步骤3:所述备份预处理模块进行备份预处理操作;所述步骤3包括:

步骤31:所述备份预处理模块在备份数据中,基于所述起始时间戳获取备份数据的脏数据位图,将该起始时间戳获取的脏数据位图记为db-start;

步骤32:所述备份预处理模块基于结束时间戳创建新的临时镜像,用于备份期间的用户数据的存储;

步骤33:所述备份预处理模块将网络块设备的服务器地址设置为上述步骤22解析出的指定备份的网络块设备的服务器地址,并启动nbd服务;

步骤4:所述服务提供模块通过nbd服务向外部提供备份资源服务;所述步骤4包括:

步骤41:所述服务提供模块将db-start提供给nbd服务器,从而向外部提供dirty-bitmap服务;

步骤42:所述服务提供模块将kvm虚拟机以只读形式挂载到nbd服务器,由此向外部提供虚拟机镜像数据服务;

步骤5:所述备份资源获取模块获取备份资源;所述备份资源获取模块包括:脏数据位图获取单元、备份数据读取单元;

所述步骤5包括:

步骤51:所述脏数据位图获取单元从nbd服务器获取db-start的dirty-bitmap信息。

步骤52:所述备份数据读取单元依据获取的db-start的dirty-bitmap信息从nbd服务器循环读取备份数据;

步骤6:所述备份任务结束命令生成模块发出任务结束命令;

在备份任务结束后,所述备份任务结束命令生成模块将临时镜像文件合并到kvm虚拟机原镜像,并发出任务结束命令。

其中,所述步骤1中,所述配置文件生成模块依据kvm虚拟机备份需求以xml文件的格式编写备份配置文件。

其中,所述步骤21中,所述起始时间戳由上一次备份任务所创建。

其中,所述步骤3还包括:

所述备份预处理模块在备份数据中,基于所述结束时间戳创建新的脏数据位图,将基于该结束时间戳获取的脏数据位图记为记为db-end,用于下一次备份任务。

其中,所述脏数据位图获取单元通过qemu-nbd工具来实现。

其中,所述备份数据读取单元通过qemu-io工具来实现。

(三)有益效果

本发明针对目前使用的备份方式,通过改进qemu及libvirt的备份机制,以实现一种无需临时空间存储备份文件,也无需修改虚拟机xml文件(避免了libvirt重启可能会造成的各种潜在问题),备份链相对管理简单,对qemu格式无要求且多备份任务可以并行的一种备份方式。

与现有技术相比较,本发明具备如下区别技术特征:

(1)对nbd服务进行改进,使得dirty-bitmap信息可以通过nbd服务向外提供dirty-bitmap服务。

(2)通过占用较少空间的临时文件进行用户数据的读写,负责备份期间的数据一致性。

由此,相对于现有技术,本发明通过改进libvirt及qemu的备份机制,使得该备份方式具有以下优点:

(1)相对于基于快照的备份方式:

1)整个备份流程无需修改虚拟机xml文件(避免了libvirt重启可能会造成的各种潜在问题)

2)整个备份流程只“基于结束时间戳创建新的临时镜像”,因此备份链相对管理简单,简化了备份管理。

(2)相对于单独基于脏数据位图的方式:

1)由步骤3和步骤6可知只创建了一个临时文件,并且备份结束临时文件会进行合并,因此无需较多的临时空间存储备份文件。

2)每次备份任务都会“基于结束时间戳创建新的dirty-bitmap”,因此,具有较大的灵活性,可以基于之前任意时刻创建的时间戳对其之间的镜像数据进行差量备份。

附图说明

图1为镜像依赖关系示意图。

图2为快照模式备份后镜像依赖关系示意图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

为解决现有技术问题,本发明提供一种基于脏数据位图和网络块设备的kvm虚拟机备份方法,所述kvm虚拟机备份方法基于kvm虚拟机备份系统来实施,所述kvm虚拟机备份系统包括:配置文件生成模块、信息解析模块、备份预处理模块、服务提供模块、备份资源获取模块、备份任务结束命令生成模块;

所述kvm虚拟机备份方法包括如下步骤:

步骤1:所述配置文件生成模块依据kvm虚拟机备份需求编写备份配置文件;

步骤2:所述信息解析模块从备份配置文件中获取并解析备份配置信息;所述步骤2包括:

步骤21:所述信息解析模块从备份配置文件中解析出指定备份的起始时间戳;

步骤22:所述信息解析模块从备份配置文件中解析出指定备份的网络块设备(networkblockdevice,nbd)的服务器地址;

步骤23:所述信息解析模块从备份配置文件中解析出指定备份的结束时间戳;

步骤3:所述备份预处理模块进行备份预处理操作;所述步骤3包括:

步骤31:所述备份预处理模块在备份数据中,基于所述起始时间戳获取备份数据的脏数据位图(dirty-bitmap),将该起始时间戳获取的脏数据位图记为db-start;

步骤32:所述备份预处理模块基于结束时间戳创建新的临时镜像,用于备份期间的用户数据的存储;

步骤33:所述备份预处理模块将网络块设备的服务器地址(nbd服务地址)设置为上述步骤22解析出的指定备份的网络块设备的服务器地址,并启动nbd服务;

步骤4:所述服务提供模块通过nbd服务向外部提供备份资源服务;所述步骤4包括:

步骤41:所述服务提供模块将db-start提供给nbd服务器,从而向外部提供dirty-bitmap服务;

步骤42:所述服务提供模块将kvm虚拟机以只读形式挂载到nbd服务器,由此向外部提供虚拟机镜像数据服务;

步骤5:所述备份资源获取模块获取备份资源;所述备份资源获取模块包括:脏数据位图获取单元、备份数据读取单元;

所述步骤5包括:

步骤51:所述脏数据位图获取单元从nbd服务器获取db-start的dirty-bitmap信息。

步骤52:所述备份数据读取单元依据获取的db-start的dirty-bitmap信息从nbd服务器循环读取备份数据;

步骤6:所述备份任务结束命令生成模块发出任务结束命令;

在备份任务结束后,所述备份任务结束命令生成模块将临时镜像文件合并到kvm虚拟机原镜像,并发出任务结束命令。

其中,所述步骤1中,所述配置文件生成模块依据kvm虚拟机备份需求以xml文件的格式编写备份配置文件。

其中,所述步骤21中,所述起始时间戳由上一次备份任务所创建。

其中,所述步骤3还包括:

所述备份预处理模块在备份数据中,基于所述结束时间戳创建新的脏数据位图(dirty-bitmap),将基于该结束时间戳获取的脏数据位图记为记为db-end,用于下一次备份任务。

其中,所述脏数据位图获取单元通过qemu-nbd工具来实现。

其中,所述备份数据读取单元通过qemu-io工具来实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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