一种基于版本矢量的数据索引方法及服务器的制作方法

文档序号:6398709阅读:163来源:国知局
专利名称:一种基于版本矢量的数据索引方法及服务器的制作方法
技术领域
本发明涉及云计算和云存储系统中数据同步、数据备份的方法,属于计算机信息存储技术领域,广泛适用于在线存储、云存储服务、数据备份、数据归档、数据复制、异地容灾、存储管理等系统。
背景技术
在当今信息化时代,随着电子商务应用的加速,数据已经成为人们最重要的财富。人们在日常生活和工作中使用计算机产生的各种数据,却时刻面临着病毒感染、硬件故障、软件错误、设备丢失等难以预测的意外,以及黑客攻击、误操作等人为因素的威胁。数据安全已经成为信息时代的一大隐患,而数据备份自然也就成为一种重要预防手段。在数据备份领域,数据总是在变化过程中产生无数的版本,备份系统必须真实记录数据的变更历史。如果对文件系统中每个文件的每次修改都生成一个“快照”,这不仅占用了大量的存储空间,而且随着数据量的增加,备份时间越来越长,备份效率也明显降低。对异地备份、在线备份或云备份而言,由于受到带宽、存储空间和通信链路时延等因素局限性的制约,此种数据备份方式显然行不通。云备份或者在线备份是一种新型的云存储服务,就是将本地数据复制到远程数据中心,此种类型的数据备份方式通常按照所使用的存储空间和数据流量计费。与传统的本地备份相比,云备份是以用户为中心,更加强调用户体验。备份过程中不能影响用户的操作,应尽量缩短备份时间,优化网络传输效率。为了确保备份数据的安全可靠,防止意外和人为误操作,云备份系统必须为所有需要备份的数据存储尽可能多的版本。即,此种数据备份方式需要保留备份数据的变更历史,这将造成云存储空间的巨大浪费,无形中增加了云存储的运营成本。现有备份系统大都采用增量备份的方式,即仅将上次备份后发生了变更的数据复制到备份数据中心。增量备份要求本地和远程节点保留各自存储数据的元数据。有些备份系统只是简单地使用文件的修改时间作为元数据,通过比较上次备份的时间和文件的修改时间,只备份那些新修改的文件。显然这样的备份系统不仅容易产生人为的差错,而且无法甄别文件内的重复数据。为了弥补上述简单备份系统的不足,有些备份系统采用较为复杂的算法分析本地和远程节点文件内容并甄别文件内的重复数据,即重复数据删除技术简称去重或删冗技术。按照重复数据粒度,重复数据删除技术可分为文件级重复数据删除和数据块级重复数据删除。在数据备份领域,通常采用后者。现有采用重复数据删除技术的备份系统通常在每次数据备份过程中相互交换待传输数据的数据块的哈希值,如果存储端已有哈希值对应的数据块,则无需传输该数据块,以尽可能地减少待传输的数据 块的数量。然而此种类型备份系统中的备份过程之间相互独立,即每次备份过程都不会从之前的备份过程中获得相关信息,因此每次备份过程都需要对相同的文件进行重复切分和哈希计算,严重耗费本地资源。

发明内容
鉴于现有技术中存在的问题,本发明的目的是提出一种基于版本矢量的数据索引方法和服务器。本发明提供了一种基于版本矢量的数据索引方法,其特征在于包括:服务器端读取当前备份过程生成的数据,建立数据块哈希值和数据块位置之间的映射关系;服务器端具有一个最新版本Ve,结合上次数据索引的版本Vi,确定本次索引的版本范围为[Vi,Ve],并将哈希表和索引表载入内存完成初始化任务;服务器端从元数据库 中读取内有索引的所有版本文件,然后将与文件相关的信息加入到哈希表中,完成文件哈希索引,其中哈希表数据结构包括文件哈希值及版本标签。优选的,其特征在于进一步包括:服务器端将备份过程传来的数据文件与从元数据库中读取的内有索引的所有版本文件一起进行重新分块,并为所划分的数据块计算相应的哈希值,然后将数据块哈希值、版本标签、偏移量和数据块标识加入到索引表中。优选的,其特征在于进一步包括:服务器端对备份过程传来的重复数据的指针,读取元数据库中相应的数据块指针记录,并将数据块指针中的哈希值、版本标签、偏移量和数据块标识加入到索引表中。优选的,其中所述哈希表数据结构还包括有文件指针标识,用于标识数据中的指针是文件指针还是数据块指针。本发明还提供了一种可实现基于版本矢量的数据索引的服务器,其特征在于包括:用于读取当前备份过程生成的数据,建立数据块哈希值和数据块位置之间的映射关系的1 块;用于根据服务器端具有的最新版本Ve,结合上次数据索引的版本Vi,确定本次索引的版本范围为[Vi,Ve],并将哈希表和索引表载入内存完成初始化任务的模块;用于从元数据库中读取内有索引的所有版本文件,然后将与文件相关的信息加入到哈希表中,完成文件哈希索引的模块,其中哈希表数据结构包括文件哈希值及版本标签。优选的,其特征在于进一步包括:用于将备份过程传来的数据文件与从元数据库中读取的内有索引的所有版本文件一起进行重新分块,并为所划分的数据块计算相应的哈希值,然后将数据块哈希值、版本标签、偏移量和数据块标识加入到索引表中的模块。优选的,其特征在于进一步包括:用于对备份过程传来的重复数据的指针,读取元数据库中的数据块指针记录,并将数据块指针中的哈希值、版本标签、偏移量和数据块标识加入到索引表中的模块。优选的,其中所述哈希表数据结构还包括有文件指针标识,用于标识数据中的指针是文件指针还是数据块指针。本发明在数据备份和还原过程中采用了独创的基于版本的重复数据删除方法。该方法使用版本矢量作为元数据,本地和远程节点共享交换版本矢量,本地节点只需要上次还原数据的版本信息就能准确判断哪些发生了变更的数据需要传输。基于哈希算法的重复数据删除方法需要传输所有数据块的哈希表,与之相比,基于版本的重复数据删除方法仅需传输已还原数据块的版本矢量,此种方式效率更高,节省了网络带宽并减少了备份时间。同时,通过本发明基于版本矢量的数据索引方法和服务器,对于重复数据仅需为数据块指针建立索引,此种方式效率更高,节省了建立数据索引的时间。


图1例示了本发明基于版本矢量的数据备份方法的示意图。图2例示了本发明基于版本矢量的数据还原方法的示意图。图3例示了本发明基于版本矢量的数据备份方法的流程图。图4例示了本发明基于版本矢量的数据索引方法的流程图。图5例示了本发明基于版本矢量的数据还原方法的流程图。
具体实施例方式为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。云同步备份系统采用C/S体系结构,运行在本地节点的进程称为客户端,运行在远程节点的进程称为服务器端。云同步备份系统需要实现如下操作,即:将客户端的数据同步复制到服务器端,将服务器端的备份数据还原到客户端。所有操作均是由客户端发起,月艮务器端只是被动地接受客户端的请求。由客户端向服务器端的备份过程采用“推”的方式,而由服务器端向客户端的还原过程则采用“拉”的方式。云同步备份系统基于客户端和服务器端之间共享交换的版本矢量,实现了重复数据删除。客户端在备份过程只完成重复数据删除的少量计算任务。为了尽可能地缩短备份时间,云同步备份系统还可以优选的采用管道机制,在甄别重复数据的同时进行数据同步复制。云同步备份系统主要实现三个功能:(I)数据备份:这是云同步备份系统最常用的功能,将客户端数据同步备份到服务器端,服务器端仅保留唯一的数据块;(2)数据索引:仅在服务器端完成数据索引操作,在备份过程中为存储的数据建立索引,实现数据块哈希值和存储位置之间的映射;(3)数据还原:将服务器端存储的备份数据还原至客户端,服务器端利用数据索引检索对应的数据块,实现数据还原操作。图1例示了本发明基于版本矢量的数据备份方法的示意图。如图1所示,数据备份由客户端发起,将同步目录中的数据同步备份到服务器端。假设客户端同步目录中只有两个文件,文件名分别为mydocl和mydoC2。当备份过程启动后,首先读取同步目录中的所有文件,并为每个文件生成一个版本标签。然后将每个文件划分成多个数据块,并为每个数据块生成相应的哈希值。在本次备份过程中,如果存在有数据块与上次备份过程中已传输的数据块具有相同的哈希值,则将该数据块标记为重复数据块并以哈希值替代,然后与其他数据块一起发送至服务器端。当服务器端接收到客户端发送来的数据流后,分别将数据块和哈希值保存在文件系统和元数据库中。
数据索引操作由服务器端实现,建立数据文件和元数据之间的映射关系,并生成索引表。索引表的数据结构包括哈希值、版本号、偏移量、数据块大小和指针/数据标识。图1所述的数据备份过程中对应的索引表如下表所示。
权利要求
1.一种基于版本矢量的数据索引方法,其特征在于包括: 服务器端读取当前备份过程生成的数据,建立数据块哈希值和数据块位置之间的映射关系; 服务器端具有一个最新版本Ve,结合上次数据索引的版本Vi,确定本次索引的版本范围为[Vi,Ve],并将哈希表和索引表载入内存完成初始化任务; 服务器端从元数据库中读取内有索引的所有版本文件,然后将与文件相关的信息加入到哈希表中,完成文件哈希索引,其中哈希表数据结构包括文件哈希值及版本标签。
2.根据权利要求1所述的基于版本矢量的数据索引方法,其特征在于进一步包括: 服务器将备份过程传来的数据文件与从元数据库中读取的所有版本文件重新分块,并为所划分的数据块计算相应的哈希值,然后将数据块哈希值、版本标签、偏移量和数据块标识加入到索引表中。
3.根据权利要求2所述的基于版本矢量的数据索引方法,其特征在于进一步包括: 服务器对备份过程传来的重复数据的指针,读取元数据库中相应的数据块指针记录,并将数据块指针中的哈希值、版本标签、偏移量和数据块标识加入到索引表中。
4.根据权利要求1-3任一所述的基于版本矢量的数据索引方法,其中所述哈希表数据结构还包括有文件指针标识,用于标识数据中的指针是文件指针还是数据块指针。
5.一种可实现基于版本矢量的数据索引的服务器,其特征在于包括: 用于读取当前备份过程生成的数据,建立数据块哈希值和数据块位置之间的映射关系的模块; 用于根据服务器端具有的最新版本Ve,结合按照上次数据索引的版本Vi,确定本次索引的版本范围为[Vi,Ve],并将哈希表和索引表载入内存完成初始化任务的模块; 用于从元数据库中读取内有索引的所有版本文件,然后将与文件相关的信息加入到哈希表中,完成文件哈希索引的模块,其中哈希表数据结构包括文件哈希值及版本标签。
6.根据权利要求5所述的可实现基于版本矢量的数据索引的服务器,其特征在于进一步包括: 用于将备份过程传来的数据文件与从元数据库中读取的所有版本文件进行重新分块,并为所划分的数据块计算相应的哈希值,然后将数据块哈希值、版本标签、偏移量和数据块标识加入到索引表中的模块。
7.根据权利要求6所述的可实现基于版本矢量的数据索引的服务器,其特征在于进一步包括: 用于对备份过程传来的重复数据的指针,读取元数据库中的数据块指针记录,并将数据块指针中的哈希值、版本标签、偏移量和数据块标识加入到索引表中的模块。
8.根据权利要求5-7任一所述的可实现基于版本矢量的数据索引的服务器,其中所述哈希表数据结构还包括有文件指针标识,用于标识数据中的指针是文件指针还是数据块指针。
全文摘要
本发明提供了一种基于版本矢量的数据索引方法和服务器,其特征在于包括服务器端读取当前备份过程生成的数据,建立数据块哈希值和数据块位置之间的映射关系;服务器端具有一个最新版本Ve,结合上次数据索引的版本Vi,确定本次索引的版本范围为[Vi,Ve],并将哈希表和索引表载入内存完成初始化任务;服务器端从元数据库中读取内有索引的所有版本文件,然后将与文件相关的信息加入到哈希表中,完成文件哈希索引。通过本发明基于版本矢量的数据索引方法和服务器,对于重复数据仅需为数据块指针建立索引,此种方式效率更高,节省了建立数据索引的时间。
文档编号G06F17/30GK103116615SQ20131003198
公开日2013年5月22日 申请日期2013年1月28日 优先权日2013年1月28日
发明者袁华强, 陶铭, 刘海峰 申请人:袁华强, 陶铭, 刘海峰
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1