CN114880297A - 基于指纹的分布式的数据去重方法及系统 - Google Patents
基于指纹的分布式的数据去重方法及系统 Download PDFInfo
- Publication number
- CN114880297A CN114880297A CN202210364761.XA CN202210364761A CN114880297A CN 114880297 A CN114880297 A CN 114880297A CN 202210364761 A CN202210364761 A CN 202210364761A CN 114880297 A CN114880297 A CN 114880297A
- Authority
- CN
- China
- Prior art keywords
- file
- fingerprint
- data
- data block
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1752—De-duplication implemented within the file system, e.g. based on file segments based on file chunks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Abstract
本发明提供了一种基于指纹的分布式的数据去重方法及系统,该方法包括:发起文件执行管理请求;将接收的文件切片成至少一个数据块;利用一致性哈希存储算法计算每一个数据块的指纹及整个文件的指纹,将每一个数据块和整个文件分别路由到对应的目标存储服务器;构建每一个数据块及整个文件的描述信息,通过所述目标存储服务器执行文件管理。通过本发明实施例的技术方案,企业执行文件管理过程中,可以实现高效数据去重,与此同时,通过本机制还可以把数据分布存储在不同的存服务器,实现负载均衡。
Description
技术领域
本发明涉及信息交互录入处理技术应用领域,尤其涉及一种基于指纹的分布式的数据去重方法及系统。
背景技术
目前,企业数据中心管理着海量的数据,云存储服务商为众多企业用户提供存储服务。然而企业数据存储和管理成本较高,扩展存储资源极具挑战性,有研究表明,几乎75%的数据是冗余的,尤其是备份和归档存储系统中的数据的冗余度高于90%,因此云存贮中数据去重技术的能极大减少内存需求和硬盘成本。
对于已经存贮在系统中的数据,目前通过数据去重模型仅仅需要保存数据的链接以减少数据冗余。数据去重模型虽然可以避免单个文件内的冗余数据,并且进一步通过数据比对,识别不同文件之间的冗余数据,但传统数据去重过程需要较高的计算复杂度和I/O吞吐量,进而影响服务器性能。
发明内容
本发明提供一种基于指纹的分布式的数据去重方法及系统,可以解决以上问题以提高数据去重效率、降低备份和归档存储系统中的数据的冗余度。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
第一方面,本发明提供了一种基于指纹的分布式的数据去重方法,包括:
发起文件执行管理请求;
将接收的文件切片成至少一个数据块;
利用一致性哈希存储算法计算每一个数据块的指纹及整个文件的指纹,将每一个数据块和整个文件分别路由到对应的目标存储服务器;
构建每一个数据块及整个文件的描述信息,通过所述目标存储服务器执行文件管理。
优选地,利用一致性哈希存储算法计算每一个数据块的指纹以及整个文件的指纹的方法,包括:
分别对每一个数据块分别做哈希运算,计算得到每一数据块的指纹;
根据所述每一数据块的指纹计算出所述文件的指纹。
优选地,将每一个数据块的指纹以及整个文件的指纹路由到对应的目标存储服务器的方法,包括:
将每一个数据块的指纹以及整个文件的指纹作为目标值key;
每一台存储服务器结点维护一个一致性哈希路由表,根据确定的目标值key通过存储服务器结点维护的一致性哈希路由表进行路由运算,找出目标值key的直接后继及与其对应的目标存储服务器信息;
根据所述目标存储服务器信息确定目标存储服务器;
其中,目标值key的直接后继为距离目标值key最近且小于目标值key的存储服务器结点。
优选地,得到一致性哈希路由表的方法,包括:
分别对每一台存储服务器做哈希运算,得到每一台服务器的指纹信息;
将每一台服务器的指纹信息作为存储值key;
建立并保存每一台存储服务器结点、存储值key的后继及存储服务器信息的对应关系,得到预设在存储服务器中的一致性哈希路由表。
优选地,将所述文件切片成至少一个数据块的方法,包括:
接收以数据流传输的所述文件;
根据所述数据流的大小将其分割成固定大小的至少一个数据块。
优选地,通过所述目标存储服务器执行文件管理的方法,包括:
根据所述数据块的指纹及其目标存储服务器信息构建所述数据块的描述信息,根据所述文件的指纹及其目标存储服务器信息构建所述文件的描述信息;
将所述数据块及所述文件的描述信息传送至目标存储服务器;
比对所述目标存储服务器内原始数据与所述数据块及所述文件的描述信息,根据比对结果对所述数据块及所述文件执行文件管理。
第二方面,本发明提供了一种基于指纹的分布式数据去重系统,包括:
客户端,对文件发起文件执行管理请求;
云端数据处理服务器,将接收的文件切片成至少一个数据块,对每一数据块进行一致性哈希存储算法,计算出每一数据块的指纹和整个文件的指纹,并将其路由到对应的目标存储服务器;
目标存储服务器,根据所述云端数据处理服务器构建的每一个数据块及整个文件的描述信息,对所述数据块及所述整个文件执行文件管理。
优选地,所述云端数据处理服务器包括:
切割模块,用于接收并分析文件的数据流,根据数据流大小将其切片成至少一个数据块;
指纹计算模块,根据存储的一致性哈希存储算法对每一数据块进行运算,计算出每一数据块的指纹,根据所述每一数据块的指纹计算所述文件的指纹;
路由模块,根据所述指纹计算模块传输的每一数据块的指纹和文件的指纹通过每一台存储服务器维护的每个一致性哈希路由表进行路由运算,找出目标值key的直接后继及与其对应的目标存储服务器信息,根据目标存储服务器信息确定每一数据块和文件的目标存储服务器;
信息构建模块,根据所述每一数据块的指纹和目标存储服务器信息构建每一数据块和文件的描述信息,并将其发送至对应的目标存储服务器。
优选地,所述目标存储服务器包括:
本地数据存储模块,存储有原始数据的信息文件,并根据信息构建模块传输的每一数据块和文件的描述信息建立并存储传输对应的数据块信息描述文件和文件信息描述文件;
本地数据管理模块,将本地数据存储模块传输的数据块信息描述文件和文件信息描述文件与原始数据的信息描述文件进行比对,并根据比对结果对所述数据块及所述文件执行文件管理。
第三方面,本发明提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述第一方面中任一所述的基于指纹的分布式的数据去重方法。
第四方面,本发明提供了一种电子设备,包括:处理器、存储器和总线;所述存储器用于存储计算机程序,所述处理器与所述存储器通过所述总线连接,当所述电子设备运行时,所述处理器执行所述存储器的所述计算机程序,以使所述处理器执行如上述第一方面中任一所述的基于指纹的分布式的数据去重方法。
本发明实施例提供的技术方案可以包括以下有益效果:
1.通过计算得到文件及切片得到的每一个数据块的指纹,由于相同数据块和相同文件的指纹相同,目标存储服务器不需要重复保存指纹相同的数据块和文件,可以实现数据块及文件的去重,极大减少企业数据存储中备份和归档存储系统中的数据的冗余度,降低管理成本。
2.通过将计算的每一个数据块的指纹和整个文件的指纹路由到对应的目标存储服务器,分别将数据分布存储在不同的存服务器上,实现负载均衡。
附图说明
为了更清楚地说明本发明实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的基于指纹的分布式的数据去重方法的原理框图;
图2为图1中将所述文件切片成至少一个数据块的方法的一实施例的原理框图;
图3为图1中存储服务器结点维护的一致性哈希路由表的获得方法的一实施例的原理框图;
图4为图1中一致性哈希存储算法的具体构建过程的一实施例的结构示意图;
图5为图4中结点N1中存储维护的一致性哈希路由表;
图6为结点N1利用图5中的一致性哈希路由表查找结点N53的过程的结构示意图;
图7为图1中通过目标存储服务器执行文件管理的方法的一实施例的原理框图;
图8为本发明一实施例提供的基于指纹的分布式的数据去重系统的结构框图;
图9为图8中云端数据处理服务器的一实施例的结构框图;
图10为图8中云端数据处理服务器优选为代理服务器时将接收的文件切片成数据块并计算每个数据块的指纹的一实施例的结构框图;
图11为图8中云端数据处理服务器优选为代理服务器时为abc_file构建其数据块及文件的描述信息文件的一实施例的结构及内容示意图;
图12为图11中代理服务器为第一个数据块“blocks_1”构建其描述信息文件的一实施例的结构及内容示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
如图1所示,本发明实施例提供了一种基于指纹的分布式的数据去重方法,包括:
S1:发起文件执行管理请求;
S2:将接收的文件切片成至少一个数据块;
S3:利用一致性哈希存储算法计算每一个数据块的指纹及整个文件的指纹,将每一个数据块和整个文件分别路由到对应的目标存储服务器;
S4:构建每一个数据块及整个文件的描述信息,通过目标存储服务器执行文件管理。
本专利通过构建数据存储规以利用多个数据服务器上则并行对公司数据进行管理,该机制主要包括三个主要阶段:
初始阶段,构建数据存储系统,系统通过一致性哈希存储算法模型构建。
第二阶段,把文件的数据分割成多个数据块,利用一致性哈希算法计算每一数据块的哈希值64位(包括但不限于128位、256位、1024位等),该哈希值即数据块指纹,可以理解,一数据块指纹即该数据块的哈希值,再以该数据块的指纹为关键字,将该数据块路由到相应的存储服务器。
最后阶段,存储服务器执行文件管理过程。保存数据块和文件的数据时,创建以指纹值为数据块的文件名,同时创建包括指纹值和目标存储服务器信息的相应的描述文件,并且在描述文件中保存该块数据的引用计数,删除数据时减少数据块的引用计数,如果引用计数为0则删除该数据块及描述文件。
由于相同数据的指纹相同,根据比对需进行执行管理的文件和数据块的数据的指纹与原始存储在目标存储服务器上的指纹是否一致以将重复的数据块和文件删除,也即相同的数据不需要重复保存,因此可以实现数据去重。与此同时,通过本机制,还可以把数据分布存储在不同的存服务器,实现负载均衡。
为了实现高效数据去重,可以将数据去重所需计算和I/O吞吐量分布到存储集群中的不同结点来提升性能,从而利用云存储中许多节点的计算能力和存储能力来解决数据去重的局限性。
鉴于此,如图2所示,本发明提供的一具体实施例中,步骤S2将所述文件切片成至少一个数据块的方法,包括:
S21:接收以数据流传输所述文件;
S22:根据所述数据流的大小将其分割成固定大小的至少一个数据块。
本发明提供的具体实施例中,步骤S3利用一致性哈希存储算法计算每一个数据块的指纹以及整个文件的指纹的方法,包括:
S31:通过对每一个数据块分别做哈希运算,计算得到每一数据块的指纹;
S32:根据每一数据块的指纹计算出文件的指纹。
该具体实施例中,优选哈希数值空间为2160,则具体指纹信息是长度采用160位的二进制值数据,比如以下数据是某块数据的指纹信息“80b281b067b893854f3f279f901254750b604576”。为了表述方便,本案将采用前面20位“80b281”表述为该专利的指纹信息。当指纹信息长度足够长时能够降低数据重复的可能性,本案认为如果两个数据块的指纹信息相同,则两块数据相同。且以SHA-1作为哈希函数计算得到每个数据块的指纹,并根据计算得到的每个数据块的指纹及该函数计算得到整个文件的指纹,关于此可参考现有技术中哈希计算的具体内容,在此不再赘述。
再次参考图2,本发明提供的具体实施例中,步骤S3将每一个数据块的指纹以及整个文件的指纹路由到对应的目标存储服务器的方法,包括:
S33:根据每一个数据块的指纹以及整个文件的指纹确定目标值key;
S34:每一台存储服务器结点维护一个一致性哈希路由表,根据确定的目标值key和存储服务器的一致性哈希路由表进行路由算法,找出目标值key的直接后继及与其对应的目标存储服务器信息;
S35:根据目标存储服务器信息确定目标存储服务器;
其中,目标值key的直接后继为距离目标值key最近且小于目标值key的存储服务器结点。
如图3所示,本发明提供的一实施例中,步骤S34中一致性哈希路由表的获得方法,包括:
S340a:分别对每一台存储服务器做哈希运算,得到每一台服务器的指纹信息;
S340b:将每一台服务器的指纹信息作为存储值key;
S340c:建立并保存每一台存储服务器结点、存储值key的后继及存储服务器信息的对应关系;
S340d:得到一致性哈希路由表,预设在存储服务器中。
对云存储系统的每一台存储服务器分布做哈希运算,得到预设在每台服务器且利用该服务器结点维护的一致性哈希路由表,以其作为一致性哈希存储算法中的路由模型,可以理解,通过该程序的运行可以快速找出目标值key的直接后继,以及时定位与其对应的目标存储服务器信息,将其发送到对应的目标存储服务器执行文件管理。
参考图4,本发明提供的具体实施例中对一致性哈希存储算法的具体构建过程,包括如下内容:
将哈希数值空间设置成一个首尾相接的哈希环;
将存储服务器映射到数据块及文件映射到的同一个哈希数值空间,且使用相同的哈希算法,以保证一致性哈希和哈希的非重复性。
具体地,一致性哈希算法通过把存储服务器的网络结点Node和数据块及文件的值Key映射到相同的空间而保证一致性哈希;由于数据块的指纹信息即为将数据块和文件进行哈希运算后的重复性高低与哈希数值的位数有关,且哈希数值位数越大,则数据块和文件进行哈希运算后的重复的可能性越低,且在哈希数值空间为2160时,由于哈希的每项均为一160比特的大整数,此时数据重复的可能性基本为0,因此为了保证数据块和文件的精准去重,本实施例优选哈希数值空间为2160,且以SHA-1作为哈希函数,具体包括如下:
将这些整数按大小顺时针排列形成一个首(0)尾(2160-1)相接的哈希环;
将存储服务器结点Node与值Key都被哈希到该哈希环上,也即假定将所有存储服务器的整个存储空间的状态设定为一个虚拟的环,且每个网络Node上均包含该存储服务器的机器的IP地址和端口信息与值key的后继的对应关系的哈希路由表,可以理解,该环上所有存储服务器分别由不同网络Node维护的哈希路由表运行。
该优选实施例中,将2160的哈希环环上的每个结点为标志符,如果某个Node映射到了某个标志符,则继续称该标志符为Node,以该标志符为参考,结点前面的称为为前继,结点后面的结点称为后继,可以理解,该结点第一个前继称之为直接前继,该结点第一个后继称之为直接后继。
由于2160的哈希数值空间过大,为便于理解本方案,以26的哈希数值空间对该过程进一步介绍,如图5所示结点N1上的一致性哈希路由表,即以该表中代表的哈希空间为26以进一步说明一致性哈希路由算法的原理:如图4和图6所示,该哈希环上的方块表示为Node,圆点表示为标志符(值key),再次结合图5表格,以结点N1为例说明其路由表中的后继,通过把Node和Key都映射到一个值域便可保证一致性哈希。
很显然如图4所示,通常只要沿顺时针的哈希环一圈结果肯定可以找到,由于N为网络结点数,对一个上百万的网络结点,且在网络结点经常加入、退出的哈希网络来说,时间复杂度O(N)是不可忍受的,因此本发明实施例通过为每一台存储服务器的对应网络结点预设维护的一个一致性哈希路由表,并以该路由表的长度m作为哈希空间的位数,通过文件或每一数据块的指纹确定哈希的目标值key,通过目标值key和不同存储服务器上的不同网络结点维护的路由表找出对应每一数据块的目标存储服务器信息和文件的目标存储服务器信息,实现将每个数据块和文件分配到不同目标存储服务器;在该参考例中具体采用如下非线性查找目标值key的直接后继的方法:
1.图4中每一台存储服务器的网络结点都维护图5所示一个一致性哈希路由表,该表的长度为m(m=6),其中m就是哈希空间的位数(也是存储服务器的数量),该表的第i项存放网络结点n的第(n+2i-1)mod 2m个后继(1<=i<=m)。
2.每个网络结点都维护一个前继列表和后继列表,该列表的作用是能快速地定位值key的前继和后继。
3.该表中存放的后继是按2的倍数等比递增,最大的一个结点的下一个结点定义为第一个结点;
4.沿哈希环,hash(Node)>=hash(key)的第一个Node为该Key的后继。
5.给定一个目标值Key,查找该Key的直接后继。
若查找是在结点n上进行,进一步说明包括如下:
a.在结点n的路由表A中,找出与hash(Key)距离最近且<hash(Key)的n的后继,将查找的该n的后继结点作为对应该后续结点的路由表B中最接近目标值Key的前继,生成对n的后继结点上的路由表B继续查找的请求,把该查找请求转发到该n的后继结点;
b.在n的后继结点的路由表B中,继续上述查找过程……。
c.直至查看目标值Key的哈希是否落在结点n和其直接后继之间,若是结束查找,此时n的后继即为所找。
再次参考如图5,一致性哈希路由表的长度m为哈希空间的位数6,哈希空间为首(0)尾(26-1=63)的哈希环,若设定N1=1,结合图1在结点N1上通过其维护的表2可查找出:对应N1+20=2的后继存储在结点N18且对应存储在结点N18的IP及端口信息的目标存储服务器上,对应N1+21=3的后继存储在结点N18且对应存储在结点N18的IP及端口信息的目标存储服务器上,对应N1+22=5的后继存储在结点N18且对应存储在结点N18的IP及端口信息的目标存储服务器上,对应N1+23=9的后继存储在结点N18且对应存储在结点N18的IP及端口信息的目标存储服务器上,对应N1+24=17的后继存储在结点N18且对应存储在结点N18的IP及端口信息的目标存储服务器上,对应N1+25=31的后继存储在结点N45且对应存储在结点N45的IP及端口信息的目标存储服务器上,对应N1+26=65的后继存储在结点N1且对应存储在结点N1的IP及端口信息的目标存储服务器上。
为便于理解,参考结点N1查找结点N53的过程的图6,并结合图5进一步说明:
首先在网络结点N1的存储服务器上根据其本地存储的一致性哈希路由表(图5)得知:结点N45小于结点N53并且离后继结点N53最近,结点N1把查找请求发给结点N45,结点N45根据接收到结点N1发送的查找请求,根据在结点N45存储的一致性哈希路由表(未示出)继续查找,最终找到结点N53的直接后继及对应的目标存储服务器信息,以实现每一个数据块和整个文件对应存储到的目标存储服务器上。
上述查找过程为指数收敛的查找,具体类似二分法的查找,收敛速度很快,即使以2160的哈希数值空间进行查找,查找80次便可找到n的后继,查找速度很快,查找效率很高。
如图7所示,本发明提供的一具体实施例中,步骤S4通过目标存储服务器执行文件管理的方法,包括:
S301:根据数据块的指纹及其目标存储服务器信息构建数据块的描述信息,根据文件的指纹及其目标存储服务器信息构建文件的描述信息;
S302:将数据块及文件的描述信息传送至目标存储服务器;
S401:比对目标存储服务器内原始数据与数据块及文件的描述信息,根据比对结果对数据块及文件执行文件管理。
该具体实施例中,目标存储服务器接收并保存该数据块及整个文件,并为该其建立描述请单,同时判断目标存储服务器中已存在该数据为yes或no,并根据判断目标存储服务器中是否已存在该数据执行文件管理,具体再次参考图7,该过程进一步包括:
S402:判断目标存储服务器中已存在该数据为yes或no,
S403:在判断存储服务器已经存在该数据为yes时,不再需要保存该数据块,启用存储服务器上的计数器将该数据的引用计数加1即可;
S404:若判断存储服务器已经存在该数据为no,也即不存在该数据文件,此时启动该数据文件的存储。
本发明通过以上过程可以实现数据的非重复存储,避免数据多次重复存储。
本发明实施例在将文件切片、指纹计算及路由计算时,同时还构建了描述信息文件的构建过程。更进一步地,如图11中的描述信息文件采用JSON表示,可以理解,该信息文件也可以采用XML或其它格式表示,本方案将以图11文件abc_file.manifest为例,说明描述信息保存、读取及原始数据文件的构建过程,具体以图11文件abc_file.manifest为例,说明对文件abc_file.manifest的保存过程包括如下:
1.通过代理服务器构建abc_file.manifest文件。
2.以abc_file.manifest文件的指纹file_finger值“745ba”为关键字,通过第3章一致性哈希算法,找到存储服务器。
3.代理服务器向存储服务器发送abc_file.manifest,请求存储服务器保存abc_file.manifest文件。
4.存储服务器接收abc_file.manifest,并以其指纹“745ba”为文件名保存描述信息文件。
如图8所示,本发明实施例还提供了一种基于指纹的分布式数据去重系统,其包括:
客户端,对文件发起文件执行管理请求;
云端数据处理服务器,将接收的文件切片成至少一个数据块,对每一数据块进行一致性哈希存储算法,计算出每一数据块的指纹和整个文件的指纹,并将其路由到对应的目标存储服务器;
目标存储服务器,根据代理服务器构建的每一个数据块及整个文件的描述信息,对数据块及整个文件执行文件管理。
该具体实施例中,本方案按结点的功能将基于指纹的分布式数据去重系统具体划分为客户端、代理服务器和目标存储服务器:
(1)客户端优选为一台发起保存文件请求的结点,其可以是智能手机、电脑终端或服务器。
(2)客户端把需要保存的文件发送给代理服务器,代理服务器执行文件的数据保存过程,包括构建待保存文件描述文件,文件分割、计算指纹、发送数据块、文件描述文件到目标存储服务器。
(3)目标存储服务器将文件保存为文件描述信息、每一个的数据块保存为对应的文件的数据块及其描述信息。
其中,客户端、代理服务器和存储服务器可以是同一个结点,也可以是不同结点。由于相同数据块指纹相同,不需要重复保存,因此本发明可以实现数据去重。与此同时,通过本机制,还可以把数据分布存储在不同的存服务器,实现负载均衡。
该实施例中,对描述信息文件abc_file.manifest的读取及数据文件装配过程如下:
1.客户端或代理服务器(以下简称配置结点)以指纹“745ba”(参考图11)为关键字,通过一致性哈希存储算法,找到存储服务器。
2.配置结点通过存储服务器下载“745ba”文件。
3.配置结点打开并读取“745ba”原数据信息。
4.配置结点根据“745ba”元数据信息,向每个数据块对应的服务器请求下载数据块。
5.配置结点装配原始数据文件abc_file。
6数据文件及其指纹管理。
如图9所示,本发明提供的一具体实施例中,云端数据处理服务器进一步包括:
切割模块,用于接收并分析文件的数据流,根据数据流大小将其切片成至少一个数据块;
指纹计算模块,根据存储的一致性哈希存储算法对每一数据块进行运算,计算出每一数据块的指纹,根据每一数据块的指纹计算文件的指纹;
路由模块,根据指纹计算模块传输的每一数据块的指纹和文件的指纹以及每一台存储服务器存储的每个一致性哈希路由表进行路由算法,找出目标值key的直接后继及与其对应的目标存储服务器信息,根据目标存储服务器信息确定每一数据块和文件的目标存储服务器;
信息构建模块,根据每一数据块的指纹和目标存储服务器信息构建每一数据块和文件的描述信息,并将其发送至对应的目标存储服务器。
该实施例中,云端数据处理服务器优选为代理服务器,客户端把文件以数据流形式发给代理服务器,代理服务器用于接收文件,把文件切片成不同的数据块,计算每个数据块的指纹,并根据每个数据块的指纹计算整个文件的指纹,再根据路由算法将每个数据块和整个文件发送至对应的不同的目标存储服务器,同时构建数据文件描述清单。
参考图10,本发明实施例在对文件切片及指纹计算过程中,存储服务器接收到需要存储的文件的数据流以后,把文件分割成固定大小的数据块,优选地,数据块的大小可以设置成4MB,对每个数据块分别做哈希运算,得到对应该数据块的指纹,参考图10,对数据块i,数据块i+1…数据块n运算以后分别得到指纹i,指纹i+1…指纹n。
根据指纹i确定目标值key,再通过路由算法,找到该数据块(文件)的存储服务器,把该数据块(文件)发送到该找到的目标存储服务器。
详细地,参考图11,当代理服务器接收到数据文件abc_fille,代理服务器为abc_file构建一个信息描述文件abc_file.manifest,其结构及内容如图11所示,包含以下内容:
1.文件名称信息(name),该数据文件名称。
2.文件类型信息(data_type),数据文件类型。优选地可以是二进制类型和文本类型及其细分,比如MP4,XML,JSON等。
3.文件长度信息(file_size),以字节表示该文件的长度。
4.文件指纹信息(file_finger),整个数据文件的指纹信息,在存储系统中,该指纹信息是文件的唯一标识符,且通过对整个数据文件哈希得到。
5.文件数据块的数量信息(datab_block_numbers),数据文件分割的数据块数。
代理服务器为每一个数据块(图11中的block_1、block_2...block_100等)构建对应信息描述文件信息,包括以下内容:
1.指纹信息(finger):每个数据块的指纹信息。
2.存储的服务器信息(server):每个数据块保存的服务器信息,比如服务器名称或IP。
3.数据块的大小信息(size):每个数据块的长度信息。
由图11可知:本发明提供的实施例中指纹信息优选采用160位二进制表示,为了表述方便图11采用前20位表示指纹信息,且根据图11所示的描述信息,该文件是名为abc_file二进制文件,包含100个数据块,每个数据块长度为4MB,其中第一个数据块的指纹为“84f2d”,该数据块保存在“server_11”这个存储结点(存储服务器结点)上。
本发明提供的又一具体实施例中,目标存储服务器进一步包括:
本地数据存储模块,存储有原始数据的信息文件,并根据信息构建模块传输的每一数据块和文件的描述信息建立并存储传输对应的数据块信息描述文件和文件信息描述文件;
本地数据管理模块,将本地数据存储模块传输的数据块信息描述文件和文件信息描述文件与原始数据的信息描述文件进行比对,并根据比对结果对数据块及文件执行文件管理。
该具体实施例中,目标存储服务器接收并保存该数据块及整个文件,并为该其建立描述请单,同时判断目标存储服务器中是否已存在该数据,如果判断存储服务器已经存在该数据文件,则不再需要保存该数据块,启用存储服务器上的计数器将该数据的引用计数加1即可,若判断不存在该数据文件,则启动该数据文件的存储,以实现数据的非重复存储,避免数据多次重复存储。
描述信息文件保存、读取及数据文件装配的过程包括:
参考图11和图12,目标存储服务器为每个数据块建立一个数据块文件及其描述信息文件,例如目标存储服务器在收到图11的00000第一个数据块“blocks_1”时,在目标存储服务器的本地文件系统创建“84f2d.data”数据块文件以及“84f2d.manifest”文件,其中“84f2d”为该数据块的指纹,84f2d.manifest的内容如图12所示,如果本地文件系统已经存在84f2d.manifest,则不需创建“84f2d.data”数据块文件以及“84f2d.manifest”这两个文件,只需增加84f2d.manifest的引用计数references。
进一步地,本发明实施例中对文件(或数据)删除过程参考如下:
1.客户端向代理服务器发起删除文件请求。
2.代理服务器下载待删除文件的数据描述清单,代理服务器找出清单列出的所有数据块及文件及与其对应的存储服务器信息,并向前述存储服务器发起删除数据块的请求。
3.前述存储服务器在接收到代理服务器删除数据块请求后,打开该数据块的描述清单,并把描述清单的引用计数减1,如果引用计数已经为0,则删除该数据块及其描述信息。
本发明还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述第一方面中任一所述的基于指纹的分布式的数据去重方法。
本发明还提供了一种电子设备,包括:处理器、存储器和总线;所述存储器用于存储计算机程序,所述处理器与所述存储器通过所述总线连接,当所述电子设备运行时,所述处理器执行所述存储器的所述计算机程序,以使所述处理器执行如上述第一方面中任一所述的基于指纹的分布式的数据去重方法。
本发明提供的实施例,包括以下有益效果:
1.通过计算得到文件及切片得到的每一个数据块的指纹,由于相同数据块和相同文件的指纹相同,目标存储服务器不需要重复保存指纹相同的数据块和文件,可以实现数据块及文件的去重,极大减少企业数据存储中备份和归档存储系统中的数据的冗余度,降低管理成本。
2.通过将计算的每一个数据块的指纹和整个文件的指纹路由到对应的目标存储服务器,分别将数据分布存储在不同的存服务器上,实现负载均衡。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种基于指纹的分布式的数据去重方法,其特征在于,包括:
发起文件执行管理请求;
将接收的文件切片成至少一个数据块;
利用一致性哈希存储算法计算每一个数据块的指纹及整个文件的指纹,将每一个数据块和整个文件分别路由到对应的目标存储服务器;
构建每一个数据块及整个文件的描述信息,通过所述目标存储服务器执行文件管理。
2.根据权利要求1所述的基于指纹的分布式的数据去重方法,其特征在于,利用一致性哈希存储算法计算每一个数据块的指纹以及整个文件的指纹的方法,包括:
分别对每一个数据块做哈希运算,得到每一数据块的指纹;
根据所述每一数据块的指纹计算出所述文件的指纹。
3.根据权利要求2所述的基于指纹的分布式的数据去重方法,其特征在于,将每一个数据块的指纹以及整个文件的指纹路由到对应的目标存储服务器的方法,包括:
将每一个数据块的指纹以及整个文件的指纹作为目标值key;
每一台存储服务器结点维护一个一致性哈希路由表,根据确定的目标值key通过存储服务器结点维护的一致性哈希路由表进行路由运算,找出目标值key的直接后继及与其对应的目标存储服务器信息;
根据所述目标存储服务器信息确定目标存储服务器;
其中,目标值key的直接后继为距离目标值key最近且小于目标值key的存储服务器结点。
4.根据权利要求3所述的基于指纹的分布式的数据去重方法,其特征在于,得到一致性哈希路由表的方法,包括:
分别对每一台存储服务器做哈希运算,得到每一台服务器的指纹信息;
将每一台服务器的指纹信息作为存储值key;
建立并保存每一台存储服务器结点、存储值key的后继及存储服务器信息的对应关系,得到预设在存储服务器中的一致性哈希路由表。
5.根据权利要求1所述的基于指纹的分布式的数据去重方法,其特征在于,将所述文件切片成至少一个数据块的方法,包括:
接收以数据流传输的所述文件;
根据所述数据流的大小将其分割成固定大小的至少一个数据块。
6.根据权利要求2所述的基于指纹的分布式的数据去重方法,其特征在于,通过所述目标存储服务器执行文件管理的方法,包括:
根据所述数据块的指纹及其目标存储服务器信息构建所述数据块的描述信息,根据所述文件的指纹及其目标存储服务器信息构建所述文件的描述信息;
将所述数据块及所述文件的描述信息传送至目标存储服务器;
比对所述目标存储服务器内原始数据与所述数据块及所述文件的描述信息,根据比对结果对所述数据块及所述文件执行文件管理。
7.一种基于指纹的分布式数据去重系统,其特征在于,所述系统包括:
客户端,对文件发起文件执行管理请求;
云端数据处理服务器,将接收的文件切片成至少一个数据块,对每一数据块进行一致性哈希存储算法,计算出每一数据块的指纹和整个文件的指纹,并将其路由到对应的目标存储服务器;
目标存储服务器,根据所述云端数据处理服务器构建的每一个数据块及整个文件的描述信息,对所述数据块及所述整个文件执行文件管理。
8.根据权利要求7所述的基于指纹的分布式数据去重系统,其特征在于,所述云端数据处理服务器包括:
切割模块,用于接收并分析文件的数据流,根据数据流大小将其切片成至少一个数据块;
指纹计算模块,根据存储的一致性哈希存储算法对每一数据块进行运算,计算出每一数据块的指纹,根据所述每一数据块的指纹计算所述文件的指纹;
路由模块,根据所述指纹计算模块传输的每一数据块的指纹和文件的指纹通过每一台存储服务器维护的一致性哈希路由表进行路由运算,找出目标值key的直接后继及与其对应的目标存储服务器信息,根据目标存储服务器信息确定每一数据块和文件的目标存储服务器;
信息构建模块,根据所述每一数据块的指纹和目标存储服务器信息构建每一数据块和文件的描述信息,并将其发送至对应的目标存储服务器。
9.根据权利要求7或8所述的基于指纹的分布式数据去重系统,其特征在于,所述目标存储服务器包括;
本地数据存储模块,存储有原始数据的信息文件,并根据信息构建模块传输的每一数据块和文件的描述信息建立并存储传输对应的数据块信息描述文件和文件信息描述文件;
本地数据管理模块,将本地数据存储模块传输的数据块信息描述文件和文件信息描述文件与原始数据的信息描述文件进行比对,并根据比对结果对所述数据块及所述文件执行文件管理。
10.一种电子设备,包括:处理器、存储器和总线;所述存储器用于存储计算机程序,所述处理器与所述存储器通过所述总线连接,当所述电子设备运行时,所述处理器执行所述存储器的所述计算机程序,以使所述处理器执行如权利要求1至6中任一项所述的基于指纹的分布式的数据去重方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210364761.XA CN114880297A (zh) | 2022-04-07 | 2022-04-07 | 基于指纹的分布式的数据去重方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210364761.XA CN114880297A (zh) | 2022-04-07 | 2022-04-07 | 基于指纹的分布式的数据去重方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114880297A true CN114880297A (zh) | 2022-08-09 |
Family
ID=82669222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210364761.XA Pending CN114880297A (zh) | 2022-04-07 | 2022-04-07 | 基于指纹的分布式的数据去重方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880297A (zh) |
-
2022
- 2022-04-07 CN CN202210364761.XA patent/CN114880297A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6094487B2 (ja) | 情報システム、管理装置、データ処理方法、データ構造、プログラム、および記録媒体 | |
US20050108368A1 (en) | Method and apparatus for representing data available in a peer-to-peer network using bloom-filters | |
JP4263477B2 (ja) | 共通デジタルシーケンスを識別するシステム | |
US9935919B2 (en) | Directory partitioned system and method | |
US20120166403A1 (en) | Distributed storage system having content-based deduplication function and object storing method | |
JP2003524243A (ja) | 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法 | |
US20140244794A1 (en) | Information System, Method and Program for Managing the Same, Method and Program for Processing Data, and Data Structure | |
CN110908589B (zh) | 数据文件的处理方法、装置、系统和存储介质 | |
US10339124B2 (en) | Data fingerprint strengthening | |
JP2009295127A (ja) | アクセス方法、アクセス装置及び分散データ管理システム | |
EP4231167A1 (en) | Data storage method and apparatus based on blockchain network | |
US20180107404A1 (en) | Garbage collection system and process | |
US9020977B1 (en) | Managing multiprotocol directories | |
WO2020024446A1 (zh) | 数据的存储方法及装置、存储介质、计算机设备 | |
US20240015135A1 (en) | Domain management and synchronization system | |
CN117176796A (zh) | 消息推送方法、装置、计算机设备和存储介质 | |
TWI420333B (zh) | 分散式的重複數據刪除系統及其處理方法 | |
CN114880297A (zh) | 基于指纹的分布式的数据去重方法及系统 | |
US11526516B2 (en) | Method, apparatus, device and storage medium for generating and processing a distributed graph database | |
Guirat et al. | An efficient data replication approach for structured peer-to-peer systems | |
Kniesburges et al. | Hashed Patricia Trie: Efficient longest prefix matching in peer-to-peer systems | |
US9319245B2 (en) | Information processing device, recording medium storing information search program, and information search method | |
CN115129779A (zh) | 数据库的同步方法、装置及可读介质 | |
JP2017123040A (ja) | サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム | |
Xu et al. | Two-side data deduplication mechanism for non-center cloud storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |