一种去除重复数据的方法、装置及系统的制作方法

文档序号:6491192阅读:187来源:国知局
一种去除重复数据的方法、装置及系统的制作方法
【专利摘要】本发明公开了一种去除重复数据的方法及设备,属于通信领域。所述方法包括:根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器;如果所述索引服务器包括所述待存储的文件分片的索引值,则在所述索引服务器中增加所述待存储的文件分片的引用次数;如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中。所述设备包括:第一获取模块、第一增加模块和第一存储模块。本发明能够提高备份数据的性能。
【专利说明】一种去除重复数据的方法、装置及系统
【技术领域】
[0001]本发明涉及通信领域,特别涉及一种去除重复数据的方法、装置及系统。
【背景技术】
[0002]在互联网服务后台,需要将互联网服务产生的数据备份在备份系统中,互联网服务常常会产生重复数据,此时需要去除产生的重复数据,以在备份系统中存放一份数据,减少重复数据使用的存储容量,提高存储效率。
[0003]目前现有技术提供了一种去除重复数据的方法,包括:服务器接收终端需要存储的文件,将该文件分成多个数据块,获取数据块的索引值,如果备份系统中没有存储该数据块,则将该数据块存储在备份系统中,设置该数据块的引用次数,将该数据块的索引值、存储路径和引用次数的对应关系存储在服务器的内存内的索引表中;如果备份系统中已存储该数据块,则在索引表中增加该数据块的引用次数,如此实现去除重复数据。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005]随着互联网服务产生的数据越来越大,使得索引表的容量也越来越大,当索引表的容量超过服务器内存大小时,索引表中的部分内容将被移入服务器的磁盘中,使得服务器备份数据的性能急速下降。

【发明内容】

[0006]为了提高备份数据的性能,本发明提供了一种去除重复数据的方法、装置及系统。所述技术方案如下:
[0007]一种去除重复数据的方法,所述方法包括:
[0008]根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器;
[0009]如果所述索引服务器包括所述待存储的文件分片的索引值,则在所述索引服务器中增加所述待存储的文件分片的引用次数;
[0010]如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中。
[0011]所述根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器,包括:
[0012]根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识;
[0013]确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
[0014]所述将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中,包括:
[0015]将所述待存储的文件分片存储在存储服务器中;
[0016]获取所述待存储的文件分片的存储路径;
[0017]设置所述待存储的文件分片的引用次数的初值;
[0018]将所述待存储的文件分片的索引值、存储路径和引用次数的对应关系存储在所述索引服务器包括的索引表中。
[0019]所述在所述索引服务器中增加所述待存储的文件分片的引用次数之前,还包括:
[0020]判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
[0021]所述根据所述待存储的文件分片的索引值判断所述索引服务器是否包括所述所述待存储的文件分片的索引值,包括:
[0022]根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系;
[0023]如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值;
[0024]如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
[0025]所述根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器之前,还包括:
[0026]对需要存储的文件进行分片得到待存储的文件分片;
[0027]根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
[0028]所述方法还包括:
[0029]根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
[0030]所述在所述索引服务器减少所述待删除的文件分片的引用次数之后,还包括:
[0031]如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除的文件分片的存储路径删除所述待删除的文件分片。
[0032]一种去除重复数据的装置,所述装置包括:
[0033]第一获取模块,用于根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器;
[0034]第一增加模块,用于如果所述索引服务器包括所述待存储的文件分片的索引值,则在所述索引服务器中增加所述待存储的文件分片的引用次数;
[0035]第一存储模块,用于如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中。
[0036]所述第一获取模块包括:
[0037]运算单元,用于根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识;
[0038]确定单元,用于确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
[0039]所述第一存储模块包括:
[0040]第一存储单元,用于将所述待存储的文件分片存储在存储服务器中;
[0041]获取单元,用于获取所述待存储的文件分片的存储路径;
[0042]设置单元,用于设置所述待存储的文件分片的引用次数的初值;
[0043]第二存储单元,用于将所述待存储的文件分片的索引值、存储路径和引用次数的对应关系存储在所述索引服务器包括的索引表中。
[0044]所述装置还包括:
[0045]判断模块,用于判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
[0046]所述判断模块包括:
[0047]查找单元,用于根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系;
[0048]第一判断单元,用于如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值;
[0049]第二判断单元,用于如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
[0050]所述装置还包括:
[0051]分片模块,用于对需要存储的文件进行分片得到待存储的文件分片;
[0052]第二获取模块,用于根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
[0053]所述装置还包括:
[0054]减少模块,用于根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
[0055]所述装置还包括:
[0056]删除模块,用于如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除的文件分片的存储路径删除所述待删除的文件分片。
[0057]—种去除重复数据的系统,所述系统包括预上传服务器,索引服务器和存储服务器;
[0058]所述预上传服务器,用于根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器,如果所述索引服务器包括所述待存储的文件分片的索引值,则发送增加请求给所述索引服务器,所述增加请求携带所述待存储的文件分片的索引值,如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片发送给所述存储服务器,接收所述存储服务器发送的存储所述待存储的文件分片的存储地址,获取所述待存储的文件分片的引用次数,将所述待存储的文件分片的索引值、存储路径和引用次数发送给所述索引服务器中;
[0059]所述索引服务器,用于如果自身包括所述待存储的文件分片的索引值,则接收所述增加请求。根据所述增加请求携带的所述待存储的文件分片的索引值增加所述待存储的文件分片的引用次数,如果自身不包括所述待存储的文件分片的索引值,则接收所述待存储的文件分片的索引值、存储路径和引用次数,并存储所述待存储的文件分片的索引值、存储路径和引用次数的对应关系;
[0060]所述存储服务器,用于如果所述索引服务器不包括所述待存储的文件分片的索引值,则接收所述待存储的文件分片,存储所述待存储的文件分片,发送存储所述待存储的文件分片的存储路径给所述预上传服务器。
[0061]所述预上传服务器,用于根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识,确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
[0062]所述预上传服务器,用于将所述待存储的文件分片发送给所述存储服务器,接收所述存储服务器发送的存储所述待存储的文件分片的存储地址,设置所述待存储的文件分片的引用次数的初值,将所述待存储的文件分片的索引值、存储路径和引用次数发送给所述索引服务器中。
[0063]所述预上传服务器,还用于判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
[0064]所述预上传服务器,用于根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系,如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值,如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
[0065]所述预上传服务器,还用于对需要存储的文件进行分片得到待存储的文件分片,根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
[0066]所述预上传服务器,还用于根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
[0067]所述预上传服务器,还用于如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除的文件分片的存储路径删除所述待删除的文件分片。
[0068]在本发明实施例中,根据待存储的文件分片的索引值获取用于存储待存储的文件分片的索引值的索引服务器,如果索引服务器包括待存储的文件分片的索引值,则在索引服务器中增加待存储的文件分片的引用次数,如果索引服务器不包括待存储的文件分片的索引值,则将待存储的文件分片存储在存储服务器中,获取待存储的文件分片的引用次数和存储路径,将待存储的文件分片的索引值、存储路径和引用次数存储在索引服务器中,如此可以使用多个索引服务器器来存储索引表,避免使用一台服务器来存储索引表而导致索引表的部分内容被移入服务器的磁盘,从而提高备份数据的性能。【专利附图】

【附图说明】
[0069]图1是本发明实施例1提供的一种去除重复数据的方法流程图;
[0070]图2是本发明实施例2提供的一种去除重复数据的方法流程图;
[0071]图3是本发明实施例2提供的一种备份系统结构示意图;
[0072]图4是本发明实施例2提供的一种删除待删除的文件分片的流程图;
[0073]图5是本发明实施例3提供的一种备份系统结构示意图;
[0074]图6是本发明实施例3提供的一种去除重复数据的方法流程图;
[0075]图7是本发明实施例3提供的一种备份系统的示例结构示意图;
[0076]图8是本发明实施例3提供的一种文件和索引表结构不意图;
[0077]图9是本发明实施例4提供的一种去除重复数据的装置结构示意图;
[0078]图10是本发明实施例5提供的一种去除重复数据的系统结构示意图。
【具体实施方式】
[0079]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0080]实施例1
[0081]如图1所示,本发明实施例提供了一种去除重复数据的方法,包括:
[0082]步骤101:根据待存储的文件分片的索引值获取用于存储待存储的文件分片的索引值的索引服务器;
[0083]步骤102:如果索引服务器包括待存储的文件分片的索引值,则在索引服务器中增加待存储的文件分片的引用次数;
[0084]步骤103:如果索引服务器不包括待存储的文件分片的索引值,则将待存储的文件分片存储在存储服务器中,获取待存储的文件分片的引用次数和存储路径,将待存储的文件分片的索引值、存储路径和引用次数存储在索引服务器中。
[0085]在本发明实施例中,根据待存储的文件分片的索引值获取用于存储待存储的文件分片的索引值的索引服务器,如果索引服务器包括待存储的文件分片的索引值,则在索引服务器中增加待存储的文件分片的引用次数,如果索引服务器不包括待存储的文件分片的索引值,则将待存储的文件分片存储在存储服务器中,获取待存储的文件分片的引用次数和存储路径,将待存储的文件分片的索引值、存储路径和引用次数存储在索引服务器中,如此可以使用多个索引服务器器来存储索引表,避免使用一台服务器来存储索引表而导致索引表的部分内容被移入服务器的磁盘,从而提高备份数据的性能。
[0086]实施例2
[0087]如图2所示,本发明实施例提供了一种去除重复数据的方法,包括:
[0088]步骤201:预上传服务器对需要存储的文件进行分片得到待存储的文件分片,获取待存储的文件分片的索引值;
[0089]具体地,预上传服务器对需要存储的文件进行分片,得到需要存储的文件包括的一个或多个待存储的文件分片,对于任一个待存储的文件分片,根据待存储的文件分片的内容获取待存储的文件分片的索引值。[0090]其中,根据待存储的文件分片的内容获取待存储的文件分片的索引值,可以具体为:
[0091]根据待存储的文件分片的内容,通过现有的MD5(Message Digest Algorithm5,信息摘要算法5)算法计算出待存储的文件分片的MD5值,将计算的MD5值确定为待存储的文件分片的索引值;或者,
[0092]根据待存储的文件分片的内容,通过现有的计算散列值算法计算出待存储的文件分片的散列值,将计算的散列值确定为待存储的文件分片的索引值。
[0093]其中,本实施例应用于如图3所示的备份系统,该备份系统包括预上传服务器、多个索引服务器以及多个存储服务器;预上传服务器可以接收互联网服务产生的需要存储的文件,索引服务器内包括索引表,索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系,以及存储服务器用于存储文件分片。
[0094]进一步地,将需要存储的文件的文件标识与待存储的文件分片的索引值存储在文件标识与索引值的对应关系中。
[0095]步骤202:预上传服务器根据待存储的文件分片的索引值获取用于存储待存储的文件分片的索值的索引服务器;
[0096]具体地,预上传服务器根据备份系统包括的索引服务器的个数,对待存储的文件分片的索引值进行取模运算,得到索引服务器的标识,将该索引服务器的标识对应的索引服务器确定为用于存储待存储的文件分片的索引值的索引服务器。
[0097]步骤203:预上传服务器根据待存储的文件分片的索引值,判断该索引服务器包括的索引表中是否存在待存储的文件分片的索引值,如果存在,则执行204,如果不存在,则执行步骤205 ;
[0098]具体地,预上传服务器根据待存储的文件分片的索引值,查找该索引服务器包括的索引表,如果查找出对应的存储路径和引用次数,则判断出该索引服务器包括的索引表中存在待存储的文件分片的索引值,如果没有查找出对应的存储路径和引用次数,则判断出该索引服务器包括的索引表中不存在待存储的文件分片的索引值。
[0099]其中,待存储的文件分片的引用次数用于表示在备份系统中包括待存储的文件分片的文件的文件个数等于待存储的文件分片的引用次数。
[0100]步骤204:预上传服务器在该索引服务器包括的索引表中增加待存储的文件分片的引用次数,结束操作;
[0101]具体地,预上传服务器增加从该索引服务器包括的索引表中查找的待存储的文件分片的引用次数。
[0102]其中,增加待存储的文件分片的引用次数,可以具体为:对待存储的文件分片的引用次数增加I或2等值。
[0103]步骤205:预上传服务器将待存储的文件分片存储在备份系统包括的存储服务器中,获取待存储的文件分片的存储路径;
[0104]其中,在本实施例中,备份系统的存储服务器包括的存储空间事先被划分成多个存储区域,且每个存储区域用区域标识来唯一地标识。
[0105]预上传服务器从备份系统的存储服务器包括的存储区域中选择一个存储区域,将待存储的文件分片存储在选择的存储区域中;然后,预上传服务器再获取待存储的文件分片的存储路径,该存储路径至少包括选择的存储区域的区域标识和待存储的文件分片在选择的存储区域中的存储位置。
[0106]步骤206:预上传服务器设置待存储的文件分片的引用次数的初值,将待存储的文件分片的索引值、存储路径和引用次数的对应关系存储在该索引服务器包括的索引表中,结束操作。
[0107]其中,预上传服务器设置待存储的文件分片的引用次数的初值,可以具体为:将待存储的文件分片的引用次数的初值设置为I或2等值。
[0108]其中,对于需要存储的文件包括的其他每个待存储的文件分片,按上述相同的方法,对其他每个待存储的文件分片进行备份。
[0109]进一步地,参见图4,预上传服务器接收互联网服务需要删除的文件的文件标识,根据需要删除的文件的文件标识,删除需要删除的文件;其中,预上传服务器通过如下(O- (6)的步骤来删除需要删除的文件,包括:
[0110](I):预上传服务器根据需要删除的文件的文件标识,获取需要删除的文件包括的待删除的文件分片的索引值;
[0111]具体地,预上传服务器根据需要删除的文件的文件标识,从已存储的文件标识与索引值的对应关系中获取需要删除的文件包括的待删除的文件分片的索引值。
[0112]其中,对于需要删除的文件包括的任一个待删除的文件分片,执行如下操作:
[0113](2):预上传服务器根据待删除的文件分片的索引值获取用于存储待删除的文件分片的索引值的索引服务器;
[0114]具体地,预上传服务器根据备份系统包括的索引服务器的个数,对待删除的文件分片的索引值进行取模运算得到索引服务器的标识,确定该索引服务器的标识对应的索引服务器为用于存储待删除的文件分片的索引值的索引服务器。
[0115](3):预上传服务器在该索引务器包括的索引表中减少待删除的文件分片的引用次数,以实现删除需要删除的文件包括的待删除的文件分片;
[0116]具体地,预上传服务器根据待删除的文件分片的索引值,从该索引服务器包括的索引表中查找待删除的文件分片的引用次数,减少待删除的文件分片的引用次数。
[0117](4):预上传服务器对待删除的文件分片的引用次数进行判断,如果待删除的文件分片的引用次数为零,则执行步骤(5);
[0118]其中,如果待删除的文件分片的引用次数为零,则表示包括待删除的文件分片的所有文件将从备份系统中全部删除;此时需要从该索引服务器包括的过些表中删除包括待删除的文件分片的索引值的对应关系,以及从备份系统的存储服务器中删除待删除的文件分片。
[0119]其中,如果待删除的文件分片的引用次数不为零,则不需要对待删除的文件分片执行如下(5)和(6)两步骤。
[0120](5):预上传服务器获取待删除的文件分片的存储路径,根据待删除的文件分片的存储路径删除待删除的文件分片;
[0121]具体地,预上传服务器根据待删除的文件分片的索引值,从该索引服务器包括的索引表中获取待删除的文件分片的存储路径,根据待删除的文件分片的存储路径删除待删除的文件分片。[0122]其中,待存储路径至少包括存储待删除的文件分片的存储区域的区域标识和在该存储区域中存储待删除的文件分片的存储位置。
[0123]相应地,预上传服务器根据待删除的文件分片的存储路径删除待删除的文件分片,可以具体为:
[0124]根据存储待删除的文件分片的存储区域的区域标识定位出对应的存储区域,根据在该存储区域中存储待删除的文件分片的存储位置将待删除的文件分片从该存储区域中删除。
[0125](6):预上传服务器将包括待删除的文件分片的索引值的对应关系从该索引服务器包括的索引表中删除。
[0126]在本发明实施例中,根据待存储的文件分片的索引值获取用于存储待存储的文件分片的索引值的索引服务器,如果索引服务器包括待存储的文件分片的索引值,则在索引服务器中增加待存储的文件分片的引用次数,如果索引服务器不包括待存储的文件分片的索引值,则存储待存储的文件分片,获取待存储的文件分片的引用次数和存储路径,将待存储的文件分片的索引值、存储路径和引用次数存储在索引服务器中,如此可以使用多个索引服务器器来存储索引表,避免使用一台服务器来存储索引表而导致索引表的部分内容被移入服务器的磁盘,从而提高备份数据的性能。
[0127]实施例3
[0128]本发明实施例提供了一种去除重复数据的方法。
[0129]其中,目前的互联网拥有大量的用户,用户每天通过web产生大量的文件需要进行处理,参见图5,本发明实施例应用的系统架构,该系统架构包括预上传服务器、索引服务器和存储服务器,
[0130]其中,在图6所示的备份系统中,本发明实施例提供的方法对腾讯公司众多互联网业务所产生的UGC (User Generated Content)数据进行存储和管理,预上传服务器接收到来自web的文件数据请求以后,通过索引服务器查找到已有文件的存储路径或者为新文件分配存储路径,然后预存传服务器在获取到文件存储路径以后,就可以直接往存储服务器上以并发形式的读写数据。在实际的部署中,预上传服务器,索引服务器和存储服务器可以根据实际业务数据的负载情况动态扩展机器的数量。每一类的服务器之间是对等的关系,但是都会有一个Master Server用于请求的分发和维护服务器之间的负载平衡。基于这种开放的且极具扩展性的架构,消除了数据排重过程中计算、索引、和存储每一个环节的性能瓶颈,可以应用于海量互联网文件数据的实时排重。
[0131]其中,文件I和文件2都为用户通过web产生的文件,并采用本发明实施例提供的方法来对文件I和文件2进行处理。参见图6,该方法包括:
[0132]步骤301:预上传服务器对文件I进行分片得到文件I包括的待存储的文件分片
1、2、3、4……N,分别获取文件I包括的待存储的文件分片1、2、3、4……N的索引值;
[0133]其中,预上传服务器根据待存储的文件分片I的内容获取待存储的文件分片I的索引值为MD5-1,根据待存储的文件分片2的内容获取待存储的文件分片2的索引值为MD5-5,根据待存储的文件分片3的内容获取待存储的文件分片3的索引值为MD5-4,根据待存储的文件分片4的内容获取待 存储的文件分片4的索引值为MD5-2,……以及根据待存储有文件分片N的内容获取待存储的文件分片N的索引值为MD5-N。[0134]步骤302:对于文件I中的一个待存储的文件分片1,预上传服务器根据待存储的文件分片1,获取用于存储待存储的文件分片I的索引值的索引服务器I;
[0135]具体地,预上传服务器根据索引服务器的个数,对待存储的文件分片I的索引值MD5-1进行取模运算,得到索引服务器的标识ID1,将该索引服务器的标识IDl对应的索引服务器I确定为用于存储待存储的文件分片的索引值的索引服务器。
[0136]其中,对于文件待存储的文件分片2、3、4......N分别按待存储的文件分片I 一样,
分别得到用于存储待存储的文件分片2、3、4……N的索引服务器,假设在本发明实施例中,得到用于存储待存储的文件分片2、3、4……N的索引服务器都为索引服务器I。
[0137]步骤303:预上传服务器根据待存储的文件分片I的索引值MD5-1,判断索引服务器I包括的索引表1中是否存在待存储的文件分片I的索引值MD5-1,假设判断出不存在,则执行步骤304 ;
[0138]具体地,预上传服务器根据待存储的文件分片I的索引值MD5-1,查找索引服务器I包括的索引表1,且从索引表1没有查找出对应的存储路径和引用次数,然后据此判断出索引服务器I中不存在待存储的文件分片I的索引值MD5-1。
[0139]其中,假设每台索引服务器的最大处理能力为I万条索引记录,这样的话预上传服务器将全局的索引表以I万条记录作为划分依据,按文件分片的索引值大小的顺序分分配给每个索引服务器。参见图6,三万条索引记录被分配给三台索引服务器,三台索引服务器可以并行的处理预上传服务器的索引查询请求,其中,参见图6,该三台索引服务器分别为索引服务器1、2和3,且每个索引服务器中包括一个索引表,索引服务器I中包括索引表1,索引服务器2中包括索引表2,以及索引服务器3中包括索引表3。
`[0140]步骤304:预上传服务器将待存储的文件分片I存储在存储服务器中,获取存储待存储的文件分片I的存储路径,该存储路径包括待存储的文件分片I所在存储区域的标识为2和待存储的文件分片I在该存储区域的存储位置为245 ;
[0141]步骤305:预上传服务器设置待存储的文件分片I的引用次数的初值为1,将待存储的文件分片的索引值MD5-1、存储路径和引用次数I存储在索引服务器的索引表1中;
[0142]其中,参见7,将将待存储的文件分片的索引值MD5-1、存储路径和引用次数I存储在索引服务器的索引表1中,在索引表1中Key为索引文件分片的索引值,Value包括文件分片的存储区域的标识和存储位置以及引用次数,其中,chid为存储区域的标识,fid为存储位置,ref_count为文件分片的引用次数。
[0143]其中,图7是对单个索引服务器上的分片排重索引的管理,索引表中每条记录都是一对(key,value), Key值为分片的索引值,该索引值为MD5散列值,Value则保存了用于查找分片物理存储路径的chunk id和fid,以及用于标识相同分片的应用计数ref_count。图中文件I和文件2有两个相同的分片,分片的散列值分别指向索引表中的(md5_2, (332,20,2))和(md5_4, (15,2,2))两条记录。
[0144]步骤306:对于文件I包括的待存储的文件分片4,预上传服务器根据待存储的文件分片4的索引值MD5-2,判断索引服务器I包括的索引表1中是否存在待存储的文件分片4的索引值MD5-2,假设判断出存在,则执行步骤307 ;
[0145]步骤307:预上传服务器在索引服务器中的索引表1中增加待上传的文件分片4的引用次数。[0146]其中,参见图7,在索引服务器中的索引表1中增加待上传的文件分片4的引用次数,增加后的引用次数为2。
[0147]其中,对文件I包括的其他的文件分片2、3......N,同文件分片I和4 一样执行上
述302至307流程,得到的结果参见图7。
[0148]其中,对于文件2,预上传服务器对文件2进行分片得到文件2包括的待存储的文件分片1、2、3、4……M,根据文件2包括的待存储的文件分片I的内容获取待存储的文件分片I的索引值为MD5-3,根据待存储的文件分片2的内容获取待存储的文件分片2的索引值为MD5-9,根据待存储的文件分片3的内容获取待存储的文件分片3的索引值为MD5-4,根据待存储的文件分片4的内容获取待存储的文件分片4的索引值为MD5-2,……以及根据待存储有文件分片M的内容获取待存储的文件分片M的索引值为MD5-M ;然后对于文件2包括的任一个待存储的文件分片按文件I包括的待存储的文件分片I和4 一样执行上述步骤302至307的流程,得到的结果参见图7。
[0149]实施例4
[0150]如图8所示,本发明实施例提供了一种去除重复数据的装置,包括:
[0151]第一获取模块401,用于根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器;
[0152]第一增加模块402,用于如果所述索引服务器包括所述待存储的文件分片的索引值,则在所述索引服务器中增加所述待存储的文件分片的引用次数;
[0153]第一存储模块403,用于如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待 存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中。
[0154]其中,第一获取模块401包括:
[0155]运算单元,用于根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识;
[0156]确定单元,用于确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
[0157]其中,第一存储模块403包括:
[0158]第一存储单元,用于将所述待存储的文件分片存储在存储服务器中;
[0159]获取单元,用于获取所述待存储的文件分片的存储路径;
[0160]设置单元,用于设置所述待存储的文件分片的引用次数的初值;
[0161]第二存储单元,用于将所述待存储的文件分片的索引值、存储路径和引用次数的对应关系存储在所述索引服务器包括的索引表中。
[0162]进一步地,所述装置还包括:
[0163]判断模块,用于判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
[0164]其中,所述判断模块包括:
[0165]查找单元,用于根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系;[0166]第一判断单元,用于如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值;
[0167]第二判断单元,用于如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
[0168]进一步地,所述装置还包括:
[0169]分片模块,用于对需要存储的文件进行分片得到待存储的文件分片;
[0170]第二获取模块,用于根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
[0171]进一步地,所述装置还包括:
[0172]减少模块,用于根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
[0173]进一步地,所述装置还包括:
[0174]删除模块,用于如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除的文件分片的存储路径删除所述待删除的文件分片。
[0175]在本发明实施例中,根据待存储的文件分片的索引值获取用于存储待存储的文件分片的索引值的索引服务器,如果索引服务器包括待存储的文件分片的索引值,则在索引服务器中增加待存储的文件分片的引用次数,如果索引服务器不包括待存储的文件分片的索引值,则将待存储的文件分片存储在存储服务器中,获取待存储的文件分片的引用次数和存储路径,将待存储的文件分片的索引值、存储路径和引用次数存储在索引服务器中,如此可以使用多个索引服务器器来存储索引表,避免使用一台服务器来存储索引表而导致索引表的部分内容被移入服务器的磁盘,从而提高备份数据的性能。
[0176]实施例5
[0177]如图9所示,本发明实施例提供了一种去除重复数据的系统,包括:
[0178]预上传服务器501,索引服务器502和存储服务器503 ;
[0179]所述预上传服务器501,用于根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器,如果所述索引服务器包括所述待存储的文件分片的索引值,则发送增加请求给所述索引服务器,所述增加请求携带所述待存储的文件分片的索引值,如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片发送给所述存储服务器,接收所述存储服务器发送的存储所述待存储的文件分片的存储地址,获取所述待存储的文件分片的引用次数,将所述待存储的文件分片的索引值、存储路径和弓I用次数发送给所述索引服务器中;
[0180]所述索引服务器502,用于如果自身包括所述待存储的文件分片的索引值,则接收所述增加请求。根据所述增加请求携带的所述待存储的文件分片的索引值增加所述待存储的文件分片的引用次数,如果自身不包括所述待存储的文件分片的索引值,则接收所述待存储的文件分片的索引值、存储路径和引用次数,并存储所述待存储的文件分片的索引值、存储路径和引用次数的对应关系;
[0181]所述存储服务器503,用于如果所述索引服务器不包括所述待存储的文件分片的索引值,则接收所述待存储的文件分片,存储所述待存储的文件分片,发送存储所述待存储的文件分片的存储路径给所述预上传服务器。
[0182]其中,所述预上传服务器501,用于根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识,确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
[0183]其中,所述预上传服务器501,用于将所述待存储的文件分片发送给所述存储服务器,接收所述存储服务器发送的存储所述待存储的文件分片的存储地址,设置所述待存储的文件分片的引用次数的初值,将所述待存储的文件分片的索引值、存储路径和引用次数发送给所述索引服务器中。
[0184]其中,所述预上传服务器501,还用于判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
[0185]其中,所述预上传服务器501,用于根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系,如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值,如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
[0186]其中,所述预上传服务器501,还用于对需要存储的文件进行分片得到待存储的文件分片,根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
[0187]其中,所述预上传服务器501,还用于根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
[0188]其中,所述预上传服务器501,还用于如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除的文件分片的存储路径删除所述待删除的文件分片。
[0189]在本发明实施例中,根据待存储的文件分片的索引值获取用于存储待存储的文件分片的索引值的索引服务器,如果索引服务器包括待存储的文件分片的索引值,则在索引服务器中增加待存储的文件分片的引用次数,如果索引服务器不包括待存储的文件分片的索引值,则将待存储的文件分片存储在存储服务器中,获取待存储的文件分片的引用次数和存储路径,将待存储的文件分片的索引值、存储路径和引用次数存储在索引服务器中,如此可以使用多个索引服务器器来存储索引表,避免使用一台服务器来存储索引表而导致索引表的部分内容被移入服务器的磁盘,从而提高备份数据的性能。
[0190]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0191]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种去除重复数据的方法,其特征在于,所述方法包括: 根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器; 如果所述索引服务器包括所述待存储的文件分片的索引值,则在所述索引服务器中增加所述待存储的文件分片的引用次数; 如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中。
2.如权利要求1所述的方法,其特征在于,所述根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器,包括: 根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识; 确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
3.如权利要求1所述的方法,其特征在于,所述将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中,包括: 将所述待存储的文件分片存储在存储服务器中; 获取所述待存储的文件分片的存储路径;· 设置所述待存储的文件分片的引用次数的初值; 将所述待存储的文件分片的索引值、存储路径和引用次数的对应关系存储在所述索引服务器包括的索引表中。
4.如权利要求1所述的方法,其特征在于,所述在所述索引服务器中增加所述待存储的文件分片的引用次数之前,还包括: 判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
5.如权利要求4所述的方法,其特征在于,所述根据所述待存储的文件分片的索引值判断所述索引服务器是否包括所述所述待存储的文件分片的索引值,包括: 根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系; 如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值; 如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
6.如权利要求1所述的方法,其特征在于,所述根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器之前,还包括: 对需要存储的文件进行分片得到待存储的文件分片; 根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
7.如权利要求1至6任一项权利要求所述的方法,其特征在于,所述方法还包括: 根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
8.如权利要求7所述的方法,其特征在于,所述在所述索引服务器减少所述待删除的文件分片的引用次数之后,还包括: 如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除的文件分片的存储路径删除所述待删除的文件分片。
9.一种去除重复数据的装置,其特征在于,所述装置包括: 第一获取模块,用于根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器; 第一增加模块,用于如果所述索引服务器包括所述待存储的文件分片的索引值,则在所述索引服务器中增加所述待存储的文件分片的引用次数; 第一存储模块,用于如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片存储在存储服务器中,获取所述待存储的文件分片的引用次数和存储路径,将所述待存储的文件分片的索引值、存储路径和引用次数存储在所述索引服务器中。
10.如权利要求9所述的装置,其特征在于,所述第一获取模块包括: 运算单元,用于根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识; 确定单元,用于确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
11.如权利要求9所述的装置,其特征在于,所述第一存储模块包括: 第一存储单元,用于将所述待存储的文件分片存储在存储服务器中; 获取单元,用于获取所述待存储的文件分片的存储路径; 设置单元,用于设置所述待存储的文件分片的引用次数的初值; 第二存储单元,用于将所述待存储的文件分片的索引值、存储路径和引用次数的对应关系存储在所述索引服务器包括的索引表中。
12.如权利要求9所述的装置,其特征在于,所述装置还包括: 判断模块,用于判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
13.如权利要求12所述的装置,其特征在于,所述判断模块包括: 查找单元,用于根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系; 第一判断单元,用于如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值; 第二判断单元,用于如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
14.如权利要 求9所述的装置,其特征在于,所述装置还包括: 分片模块,用于对需要存储的文件进行分片得到待存储的文件分片; 第二获取模块,用于根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
15.如权利要求9至14任一项权利要求所述的装置,其特征在于,所述装置还包括: 减少模块,用于根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
16.如权利要求15所述的装置,其特征在于,所述装置还包括: 删除模块,用于如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除的文件分片的存储路径删除所述待删除的文件分片。
17.—种去除重复数据的系统,其特征在于,所述系统包括预上传服务器,索引服务器和存储服务器;所述预上传服务器,用于根据待存储的文件分片的索引值获取用于存储所述待存储的文件分片的索引值的索引服务器,如果所述索引服务器包括所述待存储的文件分片的索引值,则发送增加请求给所述索引服务器,所述增加请求携带所述待存储的文件分片的索引值,如果所述索引服务器不包括所述待存储的文件分片的索引值,则将所述待存储的文件分片发送给所述存储服务器,接收所述存储服务器发送的存储所述待存储的文件分片的存储地址,获取所述待存储的文件分片的引用次数,将所述待存储的文件分片的索引值、存储路径和引用次数发送给所述索引服务器中; 所述索引服务器,用于如果自身包括所述待存储的文件分片的索引值,则接收所述增加请求。根据所述增加 请求携带的所述待存储的文件分片的索引值增加所述待存储的文件分片的引用次数,如果自身不包括所述待存储的文件分片的索引值,则接收所述待存储的文件分片的索引值、存储路径和引用次数,并存储所述待存储的文件分片的索引值、存储路径和引用次数的对应关系; 所述存储服务器,用于如果所述索引服务器不包括所述待存储的文件分片的索引值,则接收所述待存储的文件分片,存储所述待存储的文件分片,发送存储所述待存储的文件分片的存储路径给所述预上传服务器。
18.如权利要求17所述的系统,其特征在于, 所述预上传服务器,用于根据索引服务器的个数对所述待存储的文件分片的索引值进行取模运算得到索引服务器的标识,确定所述索引服务器的标识对应的索引服务器为用于存储所述待存储的文件分片的索引值的索引服务器。
19.如权利要求17所述的系统,其特征在于, 所述预上传服务器,用于将所述待存储的文件分片发送给所述存储服务器,接收所述存储服务器发送的存储所述待存储的文件分片的存储地址,设置所述待存储的文件分片的引用次数的初值,将所述待存储的文件分片的索引值、存储路径和引用次数发送给所述索引服务器中。
20.如权利要求17所述的系统,其特征在于,所述预上传服务器,还用于判断所述索引服务器是否包括所述所述待存储的文件分片的索引值。
21.如权利要求20所述的系统,其特征在于,所述预上传服务器,用于根据所述待存储的文件分片的索引值,查找所述索引服务器中包括的索引表,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系,如果查找出对应的存储路径和引用次数,则判断出所述索引服务器包括所述所述待存储的文件分片的索引值,如果没有查找出对应的存储路径和引用次数,则判断出所述索引服务器不包括所述所述待存储的文件分片的索引值。
22.如权利要求17所述的系统,其特征在于,所述预上传服务器,还用于对需要存储的文件进行分片得到待存储的文件分片,根据所述待存储的文件分片的内容获取所述待存储的文件分片的索引值。
23.如权利要求17至22任一项权利要求所述的系统,其特征在于, 所述预上传服务器,还用于根据待删除的文件分片的索引值获取用于存储所述待删除的文件分片的索引的索引服务器,在所述索引服务器包括的索引表中减少所述待删除的文件分片的引用次数,所述索引表用于存储文件分片的索引值、存储路径与引用次数的对应关系。
24.如权利要求23所述的系统,其特征在于, 所述预上传服务器,还用于如果所述待删除的文件分片的引用次数为零,则根据所述待删除的文件分片的索引值,从所述索引服务器包括的索引表中获取所述待删除的文件的存储路径,根据所述待删除 的文件分片的存储路径删除所述待删除的文件分片。
【文档编号】G06F17/30GK103823807SQ201210464977
【公开日】2014年5月28日 申请日期:2012年11月16日 优先权日:2012年11月16日
【发明者】娄继冰, 李博, 黄伟 申请人:深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1