一种基于无中心分布系统的全局重复数据删除系统及方法

文档序号:6372932阅读:164来源:国知局
专利名称:一种基于无中心分布系统的全局重复数据删除系统及方法
技术领域
本发明涉及计算机信息存储领域,具体涉及一种基于无中心分布系统的全局重复数据删除系统及方法。
背景技术
随着信息量的膨胀,云存储系统的普及,越来越多的重复数据给存储系统和网络带宽带来挑战,如何压缩数据成为一个重要的课题。为了解决这个问题,“重复数据删除”技术便成为焦点。由于现有的“服务端数据删除”技术,需要把数据传送到服务端,再由服务器进行重复删除操作,当在云存储环境下,大量客户端并发请求时,服务器的运算及存储马上成为瓶颈;由于云存储环境下的数据量非常大,即使经过重复删除,单台存储服务器也会 被很快填满。所以,如何在分布式的云存储环境下,又能实现数据重复删除,成为了亟待解决的难题。现行技术下的重复数据删除,基本上都采用了 “布隆过滤器”(Bloom Filter),它是种有损的信息处理方法,会产生一定的误判(False Positive),它可能给出的一个查询请求结果是“可能存在”,当数据量越来越大,这种误判就会降低数据的重复删除效果,导致仍然有很多数据没有被重复删除掉。这种有损的信息处理方法,决定了不能保证在全局范围内进行重复数据删除处理。

发明内容
为了解决现有技术在重复数据删除过程中会产生误判,降低数据的重复删除效果,导致较多重复数据被漏删的技术问题,本发明提供一种基于无中心分布系统的全局重复数据删除系统及方法。一种基于无中心分布系统的全局重复数据删除系统,所述系统包括客户端重复数据删除模块,与客户端重复数据删除模块实现数据相互传输的服务端全局重复数据删除模块,与服务端全局重复数据删除模块实现数据相互传递的服务端多副本冗余模块以及引用操作模块,以及由客户端发起对一个数据块进行读写操作的读写操作模块。优选的是,所述引用操作模块由加引用操作模块和减引用操作模块组成。优选的是,所述加引用操作模块由路由模块、全内存索引模块和冗余组模块组成;所述路由模块、全内存索引模块以及冗余组模块相互之间协同工作;所述路由模块的路由过程是首先通过给定的一个数据块的ID,然后把ID映射到一个存储服务器上;所述全内存索引模块主要是用以提高重复数据删除的速度;所述冗余组模块是互为复制品的一组服务器,用以提高数据安全性。—种实现基于无中心分布系统的全局重复数据删除系统的方法,所述客户端重复数据删除方法包括以下步骤a)采用基于内容的变长数据分块算法对目标文件进行切块;b)对已切块的数据进行强签名运算,得到摘要ID ;c)由客户端向服务器端发起对此摘要的引用请求,表示为Ref (ID);
d)由服务器端通过全局重复数据删除操作,返回两个确定的操作之一的结果,其一为引用成功,该ID全局引用计数器已加1,其二为引用失败,该ID全局范围内不存在;e)再由客户端通过判断引用操作的结果,如果引用成功,则对该数据块的操作完成;如果引用失败,就向服务器端发送该数据块,然后再重复步骤a-e,直到所有数据块操作完成。优选的是,实现基于无中心分布系统的全局重复数据删除系统的方法中,所述服务端多副本冗余模块是基于RAIN结构下的写操作,所述写操作方法包括以下步骤a)由服务器K端接收到一个对数据块ID的写操作请求,表示为Write (ID);服务器K通过路由方法,f (ID) — N,算出数据块ID应由服务器N负责,并由此算出该ID的冗余组成员,假定冗余度为R=3,那么,三台服务器(N,N+l,N+2)成为一个冗余组被选定;b)由服务器K同时转发写入请求Ref (ID)到冗余组(N,N+l,N+2)每台服务器上;
·
c)由服务器K等待从冗余组(N,N+l,N+2)返回的操作结果;d)若服务器K接收到任一台服务器的结果为“失败”,立即把操作结果“失败”返回给客户端;e)若服务器K接收到R=3个成功操作结果,把“操作成功”返回给客户端;f)数据写入完成。优选的是,实现基于无中心分布系统的全局重复数据删除系统的方法中,所述服务器端的全局冗余删除是通过对冗余组模块内成员进行“加引用”操作;所述“加引用”方法包括以下步骤a)通过服务器K端接收到一个对数据块ID的引用请求,表示为=Ref(ID);b)由服务器K通过路由方法,f(ID) — N,算出数据块ID应由服务器N负责,并由此算出该ID的冗余组成员,假定冗余度(Replication)为R=3,那么,三台服务器(N,N+l, N+2)成为一个冗余组被选定;c)由服务器K同时转发引用请求Ref (ID)到冗余组(N,N+l,N+2)每台服务器上;d)由服务器K等待从冗余组(N,N+l, N+2)返回的操作结果;e)若服务器K接收到任一台服务器的结果为“不存在”,则立即将该结果返回给客户端;f)若服务器K接收到R=3个成功操作结果,则将“操作成功”返回给客户端,否则,只要有其一失败,把失败结果返回给客户端,让其重试;g)全局重复数据删除过程完成。优选的是,实现基于无中心分布系统的全局重复数据删除系统的方法中的减引用方法包括以下步骤a)由客户端发起一个对数据块ID减引用的请求,表示为Dec(ID);b)由服务器K通过路由算法,f(ID) — N,找到负责存储步骤a中ID的冗余组(N,N+l, N+2),并假定冗余度R=3 ;c)服务器K分别发送对ID的减引用操作到服务器(N,N+l, N+2)上;d)由服务器K等待从服务器(N,N+l, N+2)的操作结果;e)服务器(N,N+l,N+2)中的任一者,接收到请求,立地在本机进行减引用操作,并把操作结果返回给服务器K ;
f)服务器K接收到任一回复“已成功”,立即回复客户端“减引用成功”;g)服务器K接收到全部回复(R=3)皆为失败,回复客户端“减引用失败”;h)减引用操作完成。优选的是,实现基于无中心分布系统的全局重复数据删除系统的方法中的读操作方法包括以下步骤a)由客户端发起对一个数据块的读操作,表示为Read(ID);b)由服务器K接收到请求,运用路由算法f(ID) — N找出负责存储该数据块的冗余组(N,N+l,N+2);c)服务器K采用轮流的方式,选择冗余组内任一服务器,向其转发Read(ID)请求; d)由服务器K等待操作结果;e)若服务器K得到成功回复,立即返回给客户端,操作完成;f )若服务器K得到失败回复,或者等待超时,立即向冗余组中的下一个成员转发读取请求;g)返回步骤d)继续等待操作结果,直到有成功结果或者全部尝试失败;h)服务器K回复操作结果给客户端。本发明具有以下优点I、本发明提供的基于无中心云存储系统的全局重复数据删除方法,并实现了 CAP理论中的一致性(Consistency)与可用性(Availability)。2、利用全内存索引与冗余组,最大化了系统的吞吐量与重复数据删除性能。3、通过在分布式环境下,为了保证一致性的减引用操作方法,实现了经过全局重复数据删除之后,常规删除数据的功能。说明书附I为本发明的系统原理框图;图2为本发明中客户端重复数据删除模块的工作原理图;图3为本发明中服务端多副本冗余模块的工作原理图;图4为本发明中服务端全局重复数据删除模块的工作原理图;图5为本发明中减引用操作的工作原理图;图6为本发明中读操作的工作原理图。附图
标记说明客户端重复数据删除模块1,服务端全局重复数据删除模块2,服务端多副本冗余模块3,引用操作模块4,读写操作模块5 ;
具体实施例方式参见图I所示,本发明提供的一种基于无中心分布系统的全局重复数据删除系统包括客户端重复数据删除模块1,与客户端重复数据删除模块I实现数据相互传输的服务端全局重复数据删除模块2,与服务端全局重复数据删除模块2实现数据相互传递的服务端多副本冗余模块3以及引用操作模块4,以及由客户端发起对一个数据块进行读写操作的读写操作模块5。其中引用操作模块4由加引用操作模块和减引用操作模块组成。加引用操作模块由路由模块、全内存索引模块和冗余组模块组成;路由模块、全内存索引模块以及冗余组模块相互之间协同工作;路由模块的路由过程是首先通过给定的一个数据块的ID,然后把ID映射到一个存储服务器上;所述全内存索引模块主要是用以提高数据删除的速度;所述冗余组模块是互为复制品的一组服务器,用以提高数据安全性。该系统可以对客户端重复数据删除,可以对服务端全局重复数据删除,能实现独立节点冗余阵列即RAIN (Redundant Array of Independent Nodes),也能实现大吞吓量,随着服务器数量的增加,处理性能和容量同步增加,还具有高可用性(Availability)和强一致性(Consistency)的特点。其中全局重复数据删除是指分布式云存储系统,在进行重复数据删除的过程,被当成一个全体,对任何一个数据块的查询,分布式网络都会返回全局确定的状态“存在”或“不存在”;如果服务器端没有再对数据进行多副本冗灾存储,该数据块存储方式是全局唯一的;全局数据重复删除,最大化了数据去重的能力,无一落下。无中心分布式系统是指参与计算或存储的服务器(节点)是对等的,它们之间并没有全局唯一的统领(Master),所有 节点是自治但又相互协调的,这就避免了统领带来的瓶颈。典型的有BT网络,或电驴网络。该无中心分布式网络又被应用于持久云储存系统。分布式系统的CAP定理指出,一个分布式存储系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition-Tolerance)0所以,本发明的提供的方案中选择了可用性和一致性。参见图2所示,该图公开了本发明中客户端重复数据删除模块的工作过程,现结合该附图具体说明如下步骤1,对输入的文件采用变长数据分块算法对目标文件进行切块,比如使用Rabin Fingerpr int 算法;步骤2,对已切块的数据进行强签名运算,比如采用SHA-I算法,得到一个摘要,这个摘要就成为该数据块的全局唯一标识(ID);步骤3,客户端向服务器端发起对此摘要的引用请求,表示为Ref(ID);步骤4,服务器端通过全局重复数据删除操作,返回两个确定的操作之一的结果
(I)引用成功,该I D全局引用计数器已加1,⑵引用失败,该ID全局范围内不存在;步骤5,客户端通过判断引用操作的结果,如果引用成功,对该数据块的操作完成。如果引用失败,就向服务器端发送该数据块,然后再重复a-e的操作,直到所有数据块操作完成O参见图3所示,该图公开了本发明中整个系统写入数据块的过程,假设服务端多副本冗余度为R=3,服务端(N,N+l,N+2)通过路由算法,被选定为一个冗余组,其中实线代表请求,虚线代表回复。该服务端多副本冗余模块(RAIN结构下的写操作)的具体方法如下步骤I,服务器K端接收到一个对数据块ID的写操作请求,表示为Write (ID);步骤2,服务器K通过路由方法,f (ID) — N,算出数据块ID应由服务器N负责,并由此算出该ID的冗余组成员,假定冗余度(Replication)为R=3,那么,三台服务器(N,N+l,N+2)成为一个冗余组被选定;步骤3,服务器K同时转发写入请求Ref(ID)到冗余组(N,N+l,N+2)每台服务器上步骤4,服务器K等待从冗余组(N,N+l, N+2)返回的操作结果
步骤5,服务器K接收到任一台服务器的结果为“失败”,立即把操作结果“失败”返回给客户端步骤6,服务器K接收到R=3个成功操作结果,把“操作成功”返回给客户端步骤7,数据写入完成。参见图4所示,该图为服务端全局重复数据删除模块中的加引用操作原理,该服务端全局重复数据删除模块由路由模块、全内存索引和冗余组协同工作。其中,路由模块通过给定的一个数据块的ID,然后把ID映射到一个存储服务器上的过程称之为路由过程。即函数f (ID) — N(N代表某一节点)。多种路由方法可供选择,比如最简单的数学模运算,或者一致性哈希(Consistent Hash)。全内存索引是为了提高重复数据删除的速度,本发明采用全内存索引,避免任何I/O操作。内存中的索引项非常小,本发明使用(ID,引用值)做为索引项,每条索引只占用22字节,在内存价格不断下载跌,容量越来越大的今天,使得全内存索引成为可能,不再昂贵。冗余组(Replica Group)是为提高数据安全性,互为复制品的 一组服务器,该服务器端的全局其余重复数据删除过程,是通过对冗余组内成员进行“加引用”操作过程,“加引用”过程与“写操作”过程一致。具体实现方式如下步骤I,服务器K端接收到一个对数据块ID的引用请求,表示为=Ref(ID);步骤2,服务器K通过路由方法,f (ID) — N,算出数据块ID应由服务器N负责,并由此算出该ID的冗余组成员,假定冗余度(Replication)为R=3,那么,三台服务器(N,N+l,N+2)成为一个冗余组被选定。步骤3,服务器K同时转发引用请求Ref(ID)到冗余组(N,N+l,N+2)每台服务器上;步骤4,服务器K等待从冗余组(N,N+l, N+2)返回的操作结果;步骤5,服务器K接收到任一台服务器的结果为“不存在”,立即把操作结果“不存在”返回给客户端;步骤6,服务器K接收到R=3个成功操作结果,把“操作成功”返回给客户端,否则,只要有其一失败,把失败结果返回给客户端,让其重试。步骤7,全局重复数据删除过程完成。另外,当分别向冗余组节点做引用,如果有任何失败,客户端应该随后进行重试操作,比如尝试3次。操作过程中的失败,可能会导致某些服务器上的引用已经增加,本发明中不做回滚操作。客户端通过服务器返回的“加引用”操作结果做判断,如果是成功,客户端则不用发送本数据块,如果是失败(不存在),则需要发送本数据块。不发送重复的数据块,就完成了 “重复数据删除”操作。参见图5所示,该图为删除已存储数据的功能中减引用操作;减引用操作与加引用、数据写入过程,都需要保证一致性。但减引用过程有点不同,在减引用操作过程中可能出揚现意外情况,导致一个数据块的引用计数在冗余组内不一致,有的被减掉,有的没有,对于这种情况,本发明的处理方法是不做减引用重试操作,任一节点返回减引用成功,减引用操作即完成。由于无中心分布式系统中,分布式锁的控制是项难题,本发明通过直接回避,转而用容忍数据可能未被删除的方案,来轻松解决数据的减引用操作。减引用”的操作过程具体如下步骤1,客户端发起一个对数据块ID减引用的请求,表示为Dec(ID);
步骤2,服务器K通过路由算法,f(ID) — N,找到负责存储这个ID的冗余组(N,N+l,N+2),假定冗余度 R=3 ;步骤3,服务器K分别发送对I D的减引用操作到服务器(N,N+l, N+2)上;步骤4,服务器K等待从服务器(N,N+l, N+2)的操作结果;步骤5,服务器(N,N+l, N+2)中的任一者,接收到请求,立地在本机进行减引用操作,并把操作结果返回给服务器K ;步骤6,服务器K接收到任一回复“已成功”,立即回复客户端“减引用成功”步骤7,服务器K接收到全部回复(R=3)皆为失败,回复客户端“减引用失败”
步骤8,减引用操作完成。参见图6所示,由于本发明的“写操作”、“加引用”及“减引用”都是在保证一致性的情况下进行的,所以操作相对比较简单,本发明采用工业级的冗余度(R=3),读操作高度可靠,即使冗余组内的其中两台机器无法访问,本发明还是可以在最后存活的一台机器上读回数据。具体读操作的过程如下步骤1,客户端发起对一个数据块的读操作,表示为Read(ID);步骤2,服务器K接收到请求,运用路由算法f (ID) — N,找出负责存储该数据块的冗余组(N,N+l,N+2);步骤3,服务器K采用轮流的方式,选择冗余组内任一服务器,向其转发Read(ID)请求;步骤4,服务器K等待操作结果;步骤5,服务器K得到成功回复,立即返回给客户端,操作完成;步骤6,服务器K得到失败回复,或者等待超时,立即向冗余组中的下一个成员转发读取请求;步骤7,返回步骤4),直到有成功结果或者全部尝试失败;步骤8,服务器K回复操作结果给客户端。本发明通过基于无中心云存储系统的全局重复数据删除方法,实现了 CAP理论中的一致性(Consistency)与可用性(Availability)。利用全内存索引与冗余组,最大化了系统的吞吐量与重复数据删除性能。同时在分布式环境下,为了保证一致性的减引用操作方法,实现经过全局重复数据删除之后,常规删除数据的功能,具体举例如下如用户备份一个文件,生成了 VI,V2, V3三个版本,三个版本的数据已经过全局重复数据删除,但用户某一天,想删除掉其中一个版本V2。可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
权利要求
1.一种基于无中心分布系统的全局重复数据删除系统,其特征在于所述系统包括 客户端重复数据删除模块(1),与客户端重复数据删除模块(I)实现数据相互传输的服务端全局重复数据删除模块(2),与服务端全局重复数据删除模块(2)实现数据相互传递的服务端多副本冗余模块(3)以及引用操作模块(4),以及由客户端发起对一个数据块进行读写操作的读写操作模块(5 )。
2.根据权利要求I所述的一种基于无中心分布系统的全局重复数据删除系统,其特征在于所述引用操作模块(4)由加引用操作模块和减引用操作模块组成。
3.根据权利要求2所述的一种基于无中心分布系统的全局重复数据删除系统,其特征在于所述加引用操作模块由路由模块、全内存索引模块和冗余组模块组成;所述路由模块、全内存索引模块以及冗余组模块相互之间协同工作;所述路由模块的路由过程是首先通过给定的一个数据块的ID,然后把ID映射到一个存储服务器上;所述全内存索引模块主要是用以提高重复数据删除的速度;所述冗余组模块是互为复制品的一组服务器,用以提高数据安全性。
4.一种实现权利要求I中基于无中心分布系统的全局重复数据删除系统的方法,其特征在于所述客户端重复数据删除方法包括以下步骤 a)采用基于内容的变长数据分块算法对目标文件进行切块; b)对已切块的数据进行强签名运算,得到摘要ID; c)由客户端向服务器端发起对此摘要的引用请求,表示为Ref(I D); d)由服务器端通过全局重复数据删除操作,返回两个确定的操作之一的结果,其一为引用成功,该ID全局引用计数器已加1,其二为引用失败,该I D全局范围内不存在; e)再由客户端通过判断引用操作的结果,如果引用成功,则对该数据块的操作完成;如果引用失败,就向服务器端发送该数据块,然后再重复步骤a-e,直到所有数据块操作完成。
5.一种实现权利要求I中基于无中心分布系统的全局重复数据删除系统的方法,其特征在于所述服务端多副本冗余模块是基于RAIN结构下的写操作,所述写操作方法包括以下步骤 a)由服务器K端接收到一个对数据块ID的写操作请求,表示为Write(ID);服务器K通过路由方法,f (ID) — N,算出数据块ID应由服务器N负责,并由此算出该ID的冗余组成员,假定冗余度为R=3,那么,三台服务器(N,N+l,N+2)成为一个冗余组被选定; b)由服务器K同时转发写入请求Write(ID)到冗余组(N,N+l,N+2)每台服务器上; c)由服务器K等待从冗余组(N,N+l,N+2)返回的操作结果; d)若服务器K接收到任一台服务器的结果为“失败”,立即把操作结果“失败”返回给客户端; e)若服务器K接收到R=3个成功操作结果,把“操作成功”返回给客户端; f)数据写入完成。
6.一种实现权利要求3中基于无中心分布系统的全局重复数据删除系统的方法,其特征在于所述服务器端的全局冗余删除是通过对冗余组模块内成员进行“加引用”操作;所述“加引用”方法包括以下步骤 a)通过服务器K端接收到一个对数据块ID的引用请求,表示为=Ref(ID); b)由服务器K通过路由方法,f(ID) — N,算出数据块ID应由服务器N负责,并由此算出该ID的冗余组成员,假定冗余度(Replication)为R=3,那么,三台服务器(N,N+l, N+2)成为一个冗余组被选定;c)由服务器K同时转发引用请求Ref(ID)到冗余组(N,N+l,N+2)每台服务器上; d)由服务器K等待从冗余组(N,N+l,N+2)返回的操作结果;e)若服务器K接收到任一台服务器的结果为“不存在”,则立即将该结果返回给客户端; f )若服务器K接收到R=3个成功操作结果,则将“操作成功”返回给客户端,否则,只要有其一失败,把失败结果返回给客户端,让其重试;g)全局重复数据删除过程完成。
7.一种实现权利要求2中基于无中心分布系统的全局重复数据删除系统的方法,其特征在于所述减引用方法包括以下步骤 a)由客户端发起一个对数据块ID减引用的请求,表示为Dec(ID); b)由服务器K通过路由算法,f(ID)— N,找到负责存储步骤a中ID的冗余组(N,N+l, N+2),并假定冗余度R=3 ; c)服务器K分别发送对ID的减引用操作到服务器(N,N+l,N+2)上; d)服务器K等待从服务器(N,N+l,N+2)的操作结果; e)服务器(N,N+l,N+2)中的任一者,接收到请求,立即在本机进行减引用操作,并把操作结果返回给服务器K ; f)服务器K接收到任一回复“已成功”,立即回复客户端“减引用成功”; g)服务器K接收到全部回复(R=3)皆为失败,回复客户端“减引用失败”; h)减引用操作完成。
8.一种实现权利要求2中基于无中心分布系统的全局重复数据删除系统的方法,其特征在于所述读操作方法包括以下步骤 a)客户端发起对一个数据块的读操作,表示为Read(ID); b)服务器K接收到请求,运用路由算法f(ID) — N找出负责存储该数据块的冗余组(N,N+l,N+2);c)服务器K采用轮流的方式,选择冗余组内任一服务器,向其转发Read(ID)请求; d)服务器K等待操作结果; e)若服务器K得到成功回复,立即返回给客户端,操作完成; f )若服务器K得到失败回复,或者等待超时,立即向冗余组中的下一个成员转发读取请求; g)返回步骤d)继续等待操作结果,直到有成功结果或者全部尝试失败; h)服务器K回复操作结果给客户端。
全文摘要
本发明提供一种基于无中心分布系统的全局重复数据删除系统及方法,其中系统包括客户端重复数据删除模块,服务端全局重复数据删除模块;与服务端全局重复数据删除模块实现数据相互传递的服务端多副本冗余模块以及引用操作模块,以及由客户端发起对一个数据块进行读写操作的读写操作模块。引用操作模块由加引用操作模块和减引用操作模块组成。解决了现有技术在重复数据删除过程中会产生误判,降低数据的重复删除效果,导致较多重复数据被漏删的技术问题。本发明利用全内存索引与冗余组,最大化了系统的吞吐量与重复数据删除性能。
文档编号G06F17/30GK102799659SQ20121023260
公开日2012年11月28日 申请日期2012年7月5日 优先权日2012年7月5日
发明者严荣程, 魏孙鼎 申请人:广州鼎鼎信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1