本发明涉及云计算、虚拟化、增量备份、灾备的技术领域,尤其涉及改进的基于虚拟磁盘文件的流式增量备份方法及装置。
背景技术:
虚拟磁盘文件通常由元数据和数据部分构成,元数据以块为单位管理数据,通常一个元数据单位可以管理多个数据块。
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的数据,现在的导致增量技术通常在识别到第一个差异数据块分配并输出一个元数据单位,之后如果再属于这个元数据单位管理的数据块时,输出这个数据块的同时修改之前已经输出的元数据单位,这就要求输出的目标端需要有随机写入的特性,通常是文件系统。
但如果输出的目标端是流式(比如对象存储,通过http网络协议访问),不具备随机写,只有追加写的功能时,就无法满足;或者只能先完整输出到文件系统后,再以流式上传。
现有技术方案通过先完整输出到文件系统,之后再流式上传,其缺点是,文件系统会成为可靠性、性能以及容量的瓶颈,尤其在并发量大的情况更为严重。
技术实现要素:
为了克服现有技术的不足,本发明的目的在于提供改进的基于虚拟磁盘文件的流式增量备份方法及装置,旨在解决现有的文件系统中转带来的文件系统本身的不可靠、容量占用大、性能不高的问题。。
本发明的目的采用以下技术方案实现:
一种改进的基于虚拟磁盘文件的流式增量备份方法,包括:
确定步骤,扫描需要备份的增量文件链中虚拟磁盘文件元数据,计算出差异数据量,并根据差异数据量确定元数据偏移量;所述增量文件链为具有链式关系的增量虚拟磁盘文件;所述元数据偏移量包括每个元数据在最终输出的虚拟磁盘文件流的偏移量,每个元数据对应若干数据块;
存放步骤,将元数据分为若干组,每组元数据中包含一个、两个或多个元数据;在内存中开辟一块连续区域用以存放某一组元数据;
输出步骤,扫描内存中的该组元数据,如果该组元数据显示数据有差异,则根据该组元数据信息读取差异数据并输出到虚拟磁盘文件流,且输出差异数据时并不输出该组元数据,只更新内存中的该组元数据;在与该组元数据相应的若干数据块完成差异数据输出后,根据元数据偏移量,输出内存中的该组元数据到虚拟磁盘文件流。
在上述实施例的基础上,优选的,所述确定步骤后,还包括:
头部步骤,输出增量文件链的头部到虚拟磁盘文件流,所输出的头部包含元数据偏移量。
在上述任意实施例的基础上,优选的,所述存放步骤,还包括:
将所开辟的连续区域初始化为零。
在上述任意实施例的基础上,优选的,所述确定步骤中,元数据偏移量满足:使元数据位于最终输出的虚拟磁盘文件流的末端。
或者,优选的,所述确定步骤中,元数据偏移量满足:使每个元数据位于最终输出的虚拟磁盘文件流中,且位于该元数据相应的若干数据块之后。
一种改进的基于虚拟磁盘文件的流式增量备份装置,包括:
确定模块,用于扫描需要备份的增量文件链中虚拟磁盘文件元数据,计算出差异数据量,并根据差异数据量确定元数据偏移量;所述增量文件链为具有链式关系的增量虚拟磁盘文件;所述元数据偏移量包括每个元数据在最终输出的虚拟磁盘文件流的偏移量,每个元数据对应若干数据块;
存放模块,用于将元数据分为若干组,每组元数据中包含一个、两个或多个元数据;在内存中开辟一块连续区域用以存放某一组元数据;
输出模块,用于扫描内存中的该组元数据,如果该组元数据显示数据有差异,则根据该组元数据信息读取差异数据并输出到虚拟磁盘文件流,且输出差异数据时并不输出该组元数据,只更新内存中的该组元数据;在与该组元数据相应的若干数据块完成差异数据输出后,根据元数据偏移量,输出内存中的该组元数据到虚拟磁盘文件流。
在上述实施例的基础上,优选的,还包括:
头部模块,用于输出增量文件链的头部到虚拟磁盘文件流,所输出的头部包含元数据偏移量。
在上述任意实施例的基础上,优选的,所述存放模块还用于:
将所开辟的连续区域初始化为零。
在上述任意实施例的基础上,优选的,元数据偏移量满足:使元数据位于最终输出的虚拟磁盘文件流的末端。
或者,优选的,元数据偏移量满足:使每个元数据位于最终输出的虚拟磁盘文件流中,且位于该元数据相应的若干数据块之后。
相比现有技术,本发明的有益效果在于:
本发明公开了改进的基于虚拟磁盘文件的流式增量备份方法及装置,扫描增量文件链中虚拟磁盘文件元数据,提前计算好差异数据量,以确定每个元数据在整个输出的虚拟磁盘文件流的偏移量;在内存中开辟一块连续区域用以存放某一组元数据;输出差异数据时并不输出该组元数据,只更新内存中的该组元数据,在该组元数据相应的若干数据块完成差异数据输出后输出内存中的该组元数据,优选的,该元数据在虚拟磁盘文件流中的位置在与之相应的若干数据块之后。本发明不通过文件系统中转,以流的方式直接上传,因此可以解决现有的文件系统中转带来的文件系统本身的不可靠、容量占用大、性能不高的问题;由于开辟的连续区域用于存放某一组元数据而非全部元数据,因此可以減少内存占用,尤其在大文件、元数据量比较大时比较有价值。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1示出了本发明实施例提供的一种改进的基于虚拟磁盘文件的流式增量备份方法的流程示意图;
图2示出了本发明实施例提供的一种改进的基于虚拟磁盘文件的流式增量备份方法的应用场景示意图;
图3示出了本发明实施例提供的一种改进的基于虚拟磁盘文件的流式增量备份装置的结构示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
具体实施例一
如图1所示,本发明实施例提供了一种改进的基于虚拟磁盘文件的流式增量备份方法,包括:
确定步骤S101,扫描需要备份的增量文件链中虚拟磁盘文件元数据,计算出差异数据量,并根据差异数据量确定元数据偏移量;所述增量文件链为具有链式关系的增量虚拟磁盘文件;所述元数据偏移量包括每个元数据在最终输出的虚拟磁盘文件流的偏移量,每个元数据对应若干数据块;
存放步骤S102,将元数据分为若干组,每组元数据中包含一个、两个或多个元数据;在内存中开辟一块连续区域用以存放某一组元数据;
输出步骤S103,扫描内存中的该组元数据,如果该组元数据显示数据有差异,则根据该组元数据信息读取差异数据并输出到虚拟磁盘文件流,且输出差异数据时并不输出该组元数据,只更新内存中的该组元数据;在与该组元数据相应的若干数据块完成差异数据输出后,根据元数据偏移量,输出内存中的该组元数据到虚拟磁盘文件流。
本发明实施例首先扫描增量文件链中虚拟磁盘文件元数据,提前计算好差异数据量,以确定每个元数据在整个输出的虚拟磁盘文件流的偏移量;在内存中开辟一块连续区域用以存放某一组元数据;输出差异数据时并不输出该组元数据,只更新内存中的该组元数据,在该组元数据相应的若干数据块完成差异数据输出后输出内存中的该组元数据。本发明实施例不通过文件系统中转,以流的方式直接上传,因此可以解决现有的文件系统中转带来的文件系统本身的不可靠、容量占用大、性能不高的问题;由于开辟的连续区域用于存放某一组元数据而非全部元数据,因此可以減少内存占用,尤其在大文件、元数据量比较大时比较有价值。
优选的,所述确定步骤S101后,还可以包括:头部步骤,输出增量文件链的头部到虚拟磁盘文件流,所输出的头部包含元数据偏移量。这样做的好处是,输出文件头时预先输出元数据偏移量。
优选的,所述存放步骤S102,还可以包括:将所开辟的连续区域初始化为零。这样做的好处是,能够防止其他数据污染增量虚拟磁盘文件数据。
本发明实施例对元数据偏移量不做限定,优选的,所述确定步骤S101中,元数据偏移量可以满足:使全部元数据位于最终输出的虚拟磁盘文件流的末端。
或者,元数据偏移量可以满足:使每个元数据位于最终输出的虚拟磁盘文件流中,且位于该元数据相应的若干数据块之后的任意位置;每个元数据的位置可以紧随在与该元数据相应的若干数据块之后,也可以在相应的若干数据块后一段距离,也可以在整个虚拟磁盘文件流的末端。这样做的好处是,使每个输出的元数据在虚拟磁盘文件流中的位置在与之相应的若干数据块之后。
如图2所示,本发明实施例的一个应用场景可以是:云平台中计算节点中有一虚拟机0,本地磁盘D,对应计算节点中的Qcow2Active文件(一种虚拟磁盘文件格式),在虚拟磁盘文件的链中,存在多个增量文件以及上次备份点(全量文件),按照本发明实施例中的流式增量备份方法实施增量备份,并不通过文件系统上传到对象存储。
在上述的具体实施例一中,提供了改进的基于虚拟磁盘文件的流式增量备份方法,与之相对应的,本申请还提供改进的基于虚拟磁盘文件的流式增量备份装置。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
具体实施例二
如图3所示,本发明实施例提供了一种改进的基于虚拟磁盘文件的流式增量备份装置,包括:
确定模块201,用于扫描需要备份的增量文件链中虚拟磁盘文件元数据,计算出差异数据量,并根据差异数据量确定元数据偏移量;所述增量文件链为具有链式关系的增量虚拟磁盘文件;所述元数据偏移量包括每个元数据在最终输出的虚拟磁盘文件流的偏移量,每个元数据对应若干数据块;
存放模块202,用于将元数据分为若干组,每组元数据中包含一个、两个或多个元数据;在内存中开辟一块连续区域用以存放某一组元数据;
输出模块203,用于扫描内存中的该组元数据,如果该组元数据显示数据有差异,则根据该组元数据信息读取差异数据并输出到虚拟磁盘文件流,且输出差异数据时并不输出该组元数据,只更新内存中的该组元数据;在与该组元数据相应的若干数据块完成差异数据输出后,根据元数据偏移量,输出内存中的该组元数据到虚拟磁盘文件流。
本发明实施例首先扫描增量文件链中虚拟磁盘文件元数据,提前计算好差异数据量,以确定每个元数据在整个输出的虚拟磁盘文件流的偏移量;在内存中开辟一块连续区域用以存放某一组元数据;输出差异数据时并不输出该组元数据,只更新内存中的该组元数据,在该组元数据相应的若干数据块完成差异数据输出后输出内存中的该组元数据。本发明实施例不通过文件系统中转,以流的方式直接上传,因此可以解决现有的文件系统中转带来的文件系统本身的不可靠、容量占用大、性能不高的问题;由于开辟的连续区域用于存放某一组元数据而非全部元数据,因此可以減少内存占用,尤其在大文件、元数据量比较大时比较有价值。
优选的,本发明实施例还可以包括:头部模块,用于输出增量文件链的头部到虚拟磁盘文件流,所输出的头部包含元数据偏移量。
优选的,所述存放模块202还可以用于:将所开辟的连续区域初始化为零。
本发明实施例对元数据偏移量不做限定,优选的,元数据偏移量满足:使元数据位于最终输出的虚拟磁盘文件流的末端。
或者,元数据偏移量满足:使每个元数据位于最终输出的虚拟磁盘文件流中,且位于该元数据相应的若干数据块之后。
本发明从使用目的上,效能上,进步及新颖性等观点进行阐述,其具有的实用进步性,己符合专利法所强调的功能增进及使用要件,本发明以上的说明及附图,仅为本发明的较佳实施例而己,并非以此局限本发明,因此,凡一切与本发明构造,装置,待征等近似、雷同的,即凡依本发明专利申请范围所作的等同替换或修饰等,皆应属本发明的专利申请保护的范围之内。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。尽管本发明已进行了一定程度的描述,明显地,在不脱离本发明的精神和范围的条件下,可进行各个条件的适当变化。可以理解,本发明不限于所述实施方案,而归于权利要求的范围,其包括所述每个因素的等同替换。对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。