CN113986891B - 一种重复数据删除方法及装置 - Google Patents

一种重复数据删除方法及装置 Download PDF

Info

Publication number
CN113986891B
CN113986891B CN202111058390.4A CN202111058390A CN113986891B CN 113986891 B CN113986891 B CN 113986891B CN 202111058390 A CN202111058390 A CN 202111058390A CN 113986891 B CN113986891 B CN 113986891B
Authority
CN
China
Prior art keywords
fingerprint
type
fingerprint information
data
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.)
Active
Application number
CN202111058390.4A
Other languages
English (en)
Other versions
CN113986891A (zh
Inventor
郑乾坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Big Data Technologies Co Ltd
Original Assignee
New H3C Big Data Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by New H3C Big Data Technologies Co Ltd filed Critical New H3C Big Data Technologies Co Ltd
Priority to CN202111058390.4A priority Critical patent/CN113986891B/zh
Publication of CN113986891A publication Critical patent/CN113986891A/zh
Application granted granted Critical
Publication of CN113986891B publication Critical patent/CN113986891B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据存储技术领域,特别涉及一种重复数据删除方法及装置。计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及将第一类指纹信息发送至指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的地址信息;接收数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息;判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若是,则基于该第二类指纹信息进行数据重删。

Description

一种重复数据删除方法及装置
技术领域
本申请涉及数据存储技术领域,特别涉及一种重复数据删除方法及装置。
背景技术
为了迎合不断增长的业务需求,存储***必须提供更低的时延、更高的IOPS,进一步提高客户满意度。SSD盘相比传统HDD盘,能给存储***提供更低的时延,更高的IOPS,但是SSD盘价格较为昂贵。为了降低使用SSD盘的存储成本,重删技术识别并删除重复数据,提高存储空间利用率,成为了SSD盘存储(全闪存)的必备选择。
目前,在主机上将数据按照一定的粒度切分,每个等大的数据块,都计算一份指纹数据,将所有指纹数据和数据存储位置都记录到指纹表中。数据下盘前,查询指纹表,如果指纹已经在指纹表中,说明已经有相同内容的数据块,已经存在当前主机上,数据无需下盘,只需从指纹表查询到指纹表中记录的数据地址,在数据块的元数据中引用这个地址,实现了重复数据的删除。
然而,在分布式存储中,数据打散到多个主机之上,数据在存储池内的分布,相比传统集中式存储要离散得多,相同内容被打散存储在不同主机上的可能性更大。如果在分布式存储中,我们使用本地重删,将受益甚微。因此,我们需要实现存储池全局的重删,在存储池全局范围内识别重复数据,并进行数据重删。
在开源ceph项目中,为了实现数据的重删,引入了两个存储池,一个Base Pool用于存储元数据,Chunk Pool用于存储数据。Base Pool存储的元数据包含,数据块的指纹以及对应数据块存储在Chunk Pool中的偏移。其实,Base Pool相当于实现了指纹表的功能,所有数据写入都需要计算指纹,将指纹记录到Base Pool的元数据中。数据实际的写入位置是经过指纹hash得到(HASH(1’s content)=K->OID=K->CRUSH(K)->chunk’s location),相同的数据一定会写入到相同的位置,对应位置如果已经有数据,说明此内容的数据已经写过,不需要重写,从而实现了对数据的重删。
然而,所有数据的指纹信息,全部都写入到Base Pool中,Base Pool规模庞大,不能使用内存全缓存。数据最后写入的对象大小等于计算指纹数据块大小,一般为了保证识别更多的重复数据,计算指纹数据块大小不易太大,这样存储数据的对象太小,则会影响数据写入性能。
发明内容
本申请提供了一种重复数据删除方法及装置,用以解决现有技术中存在的所有指纹信息均写入指纹表,而导致指纹表查询性能不高的问题。
第一方面,本申请提供了一种重复数据删除方法,应用于分布式存储***,所述分布式存储***包括数据处理模块和部署在每一主机上的指纹分析器,所述方法包括:
所述数据处理模块计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及基于哈希结果将第一类指纹信息发送至对应的指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的数据指纹及该数据块的地址信息;
目标指纹分析器接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的数据指纹,该数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息;
所述目标指纹分析器判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若判定一个第二类指纹信息中第一类指纹信息的重复数量达到第二设定阈值,则基于该第二类指纹信息对重复数据进行删除处理。
可选地,所述目标指纹分析器接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息的步骤包括:
所述目标指纹分析器在接收到所述数据处理模块发送的一个第一类指纹信息时,将该一个第一类指纹信息写入预设容量的指定文件中,若该指定文件的大小达到预设容量时,对该指定文件进行封装处理,生成新的指定文件;
所述目标指纹分析器在确定封装后的指定文件数量达到第三设定阈值时,对封装后的指定文件中的数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息。
可选地,以键值对的方式记录第一类指纹信息和第二类指纹信息,其中,第一类指纹信息的key值为数据指纹,value值包括指纹信息类型为第一类,数据块的地址信息;
所述目标指纹分析器对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息的步骤包括:
所述目标指纹分析器将指纹数据相同的多个第一类指纹信息合并为一个第二类指纹信息,其中,第二类指纹信息的key值为数据指纹,value值包括指纹信息类型为第二类,指纹数据对应的数据块的第一类指纹信息的重复数量,该数据块的多个地址信息。
可选地,所述方法还包括:
所述目标指纹分析器将执行完重复数据删除后的数据块的指纹信息存储至指纹表中,其中,该指纹信息包括该数据块的数据指纹,及其该数据块的地址信息;
所述目标指纹分析器生成该数据块对应的第三类指纹信息,其中,以键值对的方式记录第三类指纹信息,该第三类指纹信息的key值为数据指纹,value值包括纹数据对应的数据块的第一类指纹信息的重复数量,指纹表版本号,其中,指纹表执行一次指纹清理,则指纹表的版本号加一。
可选地,所述方法还包括:
所述目标指纹分析器在接收到一个数据块的第一类指纹信息之后,判断本地是否存在该数据块对应的第三类指纹信息;
若所述目标指纹分析器判定本地存在该数据块对应的第三类指纹信息,则判断该第三类指纹信息记录的指纹表版本号是否小于指纹表的当前版本号;
若所述目标指纹分析器判定该第三类指纹信息记录的指纹表版本号小于指纹表的当前版本号,则查找指纹表中是否存在该数据块对应的指纹信息,若存在,则执行重复数据删除处理,并更新该第三类指纹信息路的指纹表版本号;若不存在,则记录该第一类指纹信息。
第二方面,本申请提供了一种分布式存储***,所述分布式存储***包括数据处理模块和部署在每一主机上的指纹分析器,其中,
所述数据处理模块,用于计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及基于哈希结果将第一类指纹信息发送至对应的指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的数据指纹及该数据块的地址信息;
目标指纹分析器,用于接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的数据指纹,该数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息;
所述目标指纹分析器还用于,判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若判定一个第二类指纹信息中第一类指纹信息的重复数量达到第二设定阈值,则基于该第二类指纹信息对重复数据进行删除处理。
可选地,接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,所述目标指纹分析器具体用于:
在接收到所述数据处理模块发送的一个第一类指纹信息时,将该一个第一类指纹信息写入预设容量的指定文件中,若该指定文件的大小达到预设容量时,对该指定文件进行封装处理,生成新的指定文件;
在确定封装后的指定文件数量达到第三设定阈值时,对封装后的指定文件中的数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息。
可选地,以键值对的方式记录第一类指纹信息和第二类指纹信息,其中,第一类指纹信息的key值为数据指纹,value值包括指纹信息类型为第一类,数据块的地址信息;
对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,所述目标指纹分析器具体用于:
将指纹数据相同的多个第一类指纹信息合并为一个第二类指纹信息,其中,第二类指纹信息的key值为数据指纹,value值包括指纹信息类型为第二类,指纹数据对应的数据块的第一类指纹信息的重复数量,该数据块的多个地址信息。
可选地,所述目标指纹分析器还用于:
将执行完重复数据删除后的数据块的指纹信息存储至指纹表中,其中,该指纹信息包括该数据块的数据指纹,及其该数据块的地址信息;
生成该数据块对应的第三类指纹信息,其中,以键值对的方式记录第三类指纹信息,该第三类指纹信息的key值为数据指纹,value值包括纹数据对应的数据块的第一类指纹信息的重复数量,指纹表版本号,其中,指纹表执行一次指纹清理,则指纹表的版本号加一。
可选地,所述目标指纹分析器还用于:
在接收到一个数据块的第一类指纹信息之后,判断本地是否存在该数据块对应的第三类指纹信息;
若判定本地存在该数据块对应的第三类指纹信息,则判断该第三类指纹信息记录的指纹表版本号是否小于指纹表的当前版本号;
若判定该第三类指纹信息记录的指纹表版本号小于指纹表的当前版本号,则查找指纹表中是否存在该数据块对应的指纹信息,若存在,则执行重复数据删除处理,并更新该第三类指纹信息路的指纹表版本号;若不存在,则记录该第一类指纹信息。
第三方面,本申请实施例提供一种重复数据删除装置,该重复数据删除装置包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如上述第一方面中任一项所述的方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如上述第一方面中任一项所述方法的步骤。
综上可知,本申请实施例提供的重复数据删除方法,应用于分布式存储***,所述分布式存储***包括数据处理模块和部署在每一主机上的指纹分析器,所述方法包括:所述数据处理模块计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及基于哈希结果将第一类指纹信息发送至对应的指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的数据指纹及该数据块的地址信息;目标指纹分析器接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的数据指纹,该数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息;所述目标指纹分析器判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若判定一个第二类指纹信息中第一类指纹信息的重复数量达到第二设定阈值,则基于该第二类指纹信息对重复数据进行删除处理
采用本申请实施例提供的重复数据删除方法,可以
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1为本申请实施例提供的一种分布式存储***的结构示意图;
图2为本申请实施例提供的一种重复数据删除方法的详细流程图;
图3为本申请实施例提供的一种指纹分析器的数据组织结构示意图;
图4为本申请实施例提供的一种分布式存储***的结构示意图;
图5为本申请实施例提供的一种重复数据删除装置的结构示意图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了更好的说明本申请实施例提供的重复数据删除方法,示例性的,参阅图1所示,为本申请实施例提供的一种分布式存储***的结构示意图,本申请实施例提供的重复数据删除方法应用于该分布式存储***。该分布式存储***包括多个用于存储数据的主机,各主机上可以运行有数据处理模块,且个主机上部署有指纹分析器。任一主机在接收到客户端发送的待处理数据之后,将待处理数据且分为定长(如,8kb)的数据块,并将各数据块下盘至对应的存储磁盘上,在每个定长数据块下盘后,给定长数据块计算出一个数据指纹,并将该定长数据块的逻辑地址LBA、实际落盘物理地址PBA以及数据指纹等指纹信息都收集到指纹分析器中。
示例性的,参阅图2所示,为本申请实施例提供的一种重复数据删除方法的详细流程图,该方法应用于分布式存储***,所述分布式存储***包括数据处理模块和部署在每一主机上的指纹分析器,该方法包括以下步骤:
步骤200:所述数据处理模块计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及基于哈希结果将第一类指纹信息发送至对应的指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的数据指纹及该数据块的地址信息。
具体的,在收集指纹信息到指纹分析器的过程中,可以通过对数据指纹进行HASH,将不同数据块的指纹信息打散到不同主机上,一方面可以均衡各指纹分析器的分析处理压力;另一方面,数据指纹相同的指纹信息,一定会被打散到同一个指纹分析器上。由于数据指纹相同,数据块内容就相同,那么存储池内,所有内容相同的数据块的指纹信息,一定会被收集到同一个指纹分析器,就能在这个指纹分析器上分析识别出重复数据,并发起重删请求对数据进行重删。
即分布式存储***将待处理数据切分为多个定长数据块并下盘之后,针对每一数据块,计算该数据块的数据指纹,并对各数据块的数据指纹进行哈希处理,得到哈希结果,以及基于哈希结果将各数据指纹扩散至各主机的指纹分析器上。具体的,将一个数据块的数据指纹,该数据块的地址信息(逻辑地址LBA和实际落盘物理地址PBA)发送给对应的指纹分析器。
步骤210:目标指纹分析器接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的数据指纹,该数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息。
所述目标指纹分析器接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,一种较佳地实现方式为:
所述目标指纹分析器在接收到所述数据处理模块发送的一个第一类指纹信息时,将该一个第一类指纹信息写入预设容量的指定文件中,若该指定文件的大小达到预设容量时,对该指定文件进行封装处理,生成新的指定文件;所述目标指纹分析器在确定封装后的指定文件数量达到第三设定阈值时,对封装后的指定文件中的数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息。
例如,假设指纹分析器使用ROCKSDB存储所有收集的指纹信息(第一类指纹信息),那么,由于ROCKSDB的内部Key上面,会增加序列号,因此相同Key值的数据,写入多次,不会立即覆盖上一次的写。ROCKSDB数据会先写入到内存数据结构Memtable中,单个内存数据结构Memtable总大小超过一定阈值,就会被封装起来,重新生成新的Memtable写,被封装起来的Memtable会等待顺序的被写入到如图3所示的Level 0的SST文件中。数据从Memtable写入到Level 0中,也不会处理同一Key值的多次写入。当数据在Level0达到一定数据量,Level0的SST文件个数会超过一定阈值,这时需要将数据从Level0合并到Level 1中。在Level 0中单个SST文件内,数据是以Key值有序排列的,但是不同SST文件的Key值范围是有可能有交集的。而在Level 1中所有SST的Key值范围不会有交集,数据在Level1中能全局的有序排列。这样数据从Level0合并到Level1中,Key相同的数据就一定会被排布到一起。接着,基于数据合并机制,将同一Key值的多时间点数据合并为一条,并记录指纹重复数量,得到该key值对应的第二类指纹信息。
本申请实施例中,可以以键值对(key-value)的方式记录第一类指纹信息和第二类指纹信息,其中,第一类指纹信息的key值为数据指纹,value值包括指纹信息类型为第一类,数据块的地址信息。
那么,所述目标指纹分析器对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,一种较佳的实现方式为:
所述目标指纹分析器将指纹数据相同的多个第一类指纹信息合并为一个第二类指纹信息,其中,第二类指纹信息的key值为数据指纹,value值包括指纹信息类型为第二类,指纹数据对应的数据块的第一类指纹信息的重复数量,该数据块的多个地址信息。
步骤220:所述目标指纹分析器判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若判定一个第二类指纹信息中第一类指纹信息的重复数量达到第二设定阈值,则基于该第二类指纹信息对重复数据进行删除处理。
本申请实施例中,上述重复数据删除方法还可以包括以下步骤:
所述目标指纹分析器将执行完重复数据删除后的数据块的指纹信息存储至指纹表中,其中,该指纹信息包括该数据块的数据指纹,及其该数据块的地址信息;所述目标指纹分析器生成该数据块对应的第三类指纹信息,其中,以键值对的方式记录第三类指纹信息,该第三类指纹信息的key值为数据指纹,value值包括纹数据对应的数据块的第一类指纹信息的重复数量,指纹表版本号,其中,指纹表执行一次指纹清理,则指纹表的版本号加一。
也就是说,在针对任一数据块的数据指纹进行合并处理,得到第二类指纹信息之后,判断该第二类指纹信息中携带的该任一数据块的重复下盘次数是否达到第二设定阈值,以判断是否需要对该任一数据块进行重删处理,若已达到,则需要进行重删处理,并生成对应的第三类指纹信息,第三类指纹信息中记录有数据指纹,对应数据块的重复数量,以及指纹表的当前版本号。
例如,假设已下盘n个目标数据快,那么在对目标数据块进行重删时,只保留一份已下盘的目标数据块,并将目标数据块的数据指纹,n个逻辑地址和1个物理地址作为目标数据块的最终指纹信息,维护至指纹表中。
进一步的,本申请实施例中,上述重复数据删除方法还可以包括以下步骤:
所述目标指纹分析器在接收到一个数据块的第一类指纹信息之后,判断本地是否存在该数据块对应的第三类指纹信息;若所述目标指纹分析器判定本地存在该数据块对应的第三类指纹信息,则判断该第三类指纹信息记录的指纹表版本号是否小于指纹表的当前版本号;若所述目标指纹分析器判定该第三类指纹信息记录的指纹表版本号小于指纹表的当前版本号,则查找指纹表中是否存在该数据块对应的指纹信息,若存在,则执行重复数据删除处理,并更新该第三类指纹信息路的指纹表版本号;若不存在,则记录该第一类指纹信息。
下面结合具体应用场景对本申请实施例提供的指纹分析器的数据组织结构进行详细说明。示例性的,参阅图3所示,为本申请实施例提供的一种指纹分析器的数据组织结构示意图,从各个主机收集回来的指纹信息包含逻辑地址LBA、实际落盘物理地址PBA以及数据指纹。在写入到Rocksdb数据库的指纹信息,随着指纹合并会产生出3种类型。类型1的指纹信息为最初写入到指纹分析器的数据,以数据指纹为Key,Value包含类型、逻辑地址和物理地址。当多个类型1的指纹信息合并到一条指纹信息后得到类型2的指纹信息,类型2的指纹信息仍然以数据指纹为Key,Value包含类型,类型1的指纹信息的重复量,以及合并前的每一条类型1的指纹信息的逻辑地址和物理地址。当类型2指纹信息包括的类型1的指纹信息的重复数量超过一定阈值,将根据类型2的指纹信息中记录的逻辑地址和物理地址,对重复数据进行删除,并将此指纹加入到指纹表中。类型2的指纹信息中记录的数据被重删后,不需要再记录逻辑地址和物理地址,演变为类型3的指纹信息,类型3的指纹信息仍以数据指纹为Key,Value包含类型,指纹表版本号。
类型3的指纹信息中的指纹表版本号,和指纹表清理相关。所谓指纹表清理,是指将指纹表中,不再被引用的指纹从指纹表中删除。较佳的,不将不再引用的指纹立即从指纹表中删除,而是通过一定的算法定期的去清理指纹表,可能是半个月触发一次清理或者是其他事件触发指纹表清理。而类型3的指纹信息中所描述的指纹表版本号,初始值为0,伴随着每一次指纹表的清理,版本号会加1。类型3的指纹信息中所记录的指纹表版本号为,指纹重复数量达到阈值后,将指纹写入到指纹表时,指纹表的版本号。
当类型1的指纹信息和类型3的指纹信息合并时,如果所记录指纹表版本号等于当前指纹表版本号,说明指纹被写入指纹表后,未触发指纹清理。类型3的指纹信息仍然有效,直接根据类型1的指纹信息所记录的逻辑地址和物理地址进行重删,不需要将指纹新加入指纹表。如果所记录版本号小于当前指纹表版本号,说明指纹写入指纹表后,触发了指纹清理。这时候需要查询指纹表,如果指纹仍然在指纹表中,将类型3的指纹信息的版本号更新为当前指纹表版本号,根据与类型3合并的指纹信息进行重删。如果指纹已不再指纹表中,类型1的指纹信息与类型3的指纹信息合并,只保留类型1的指纹信息,指纹重复数量恢复为1,等待后续重复数据写入再进行重删。
类型2的指纹信息与类型3的指纹信息合并流程类似,只是重删时重删多个数据块,如果指纹表中不存在此指纹时,保留的类型为类型2的指纹信息。类型3的指纹信息与类型3的指纹信息合并时,触发版本号更新,如果已不在指纹表中,删除类型3的指纹信息。
需要说明的是,以上合并均是指key(数据指纹)相同的不同类型的指纹信息的合并。
示例性的,参阅图4所示,为本申请实施例提供的一种分布式存储***的结构示意图,该分布式存储***包括数据处理模块40和部署在每一主机上的指纹分析器41,其中,
所述数据处理模块40,用于计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及基于哈希结果将第一类指纹信息发送至对应的指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的数据指纹及该数据块的地址信息;
目标指纹分析器41,用于接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的数据指纹,该数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息;
所述目标指纹分析器41还用于,判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若判定一个第二类指纹信息中第一类指纹信息的重复数量达到第二设定阈值,则基于该第二类指纹信息对重复数据进行删除处理。
可选地,接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,所述目标指纹分析器41具体用于:
在接收到所述数据处理模块发送的一个第一类指纹信息时,将该一个第一类指纹信息写入预设容量的指定文件中,若该指定文件的大小达到预设容量时,对该指定文件进行封装处理,生成新的指定文件;
在确定封装后的指定文件数量达到第三设定阈值时,对封装后的指定文件中的数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息。
可选地,以键值对的方式记录第一类指纹信息和第二类指纹信息,其中,第一类指纹信息的key值为数据指纹,value值包括指纹信息类型为第一类,数据块的地址信息;
对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,所述目标指纹分析器41具体用于:
将指纹数据相同的多个第一类指纹信息合并为一个第二类指纹信息,其中,第二类指纹信息的key值为数据指纹,value值包括指纹信息类型为第二类,指纹数据对应的数据块的第一类指纹信息的重复数量,该数据块的多个地址信息。
可选地,所述目标指纹分析器41还用于:
将执行完重复数据删除后的数据块的指纹信息存储至指纹表中,其中,该指纹信息包括该数据块的数据指纹,及其该数据块的地址信息;
生成该数据块对应的第三类指纹信息,其中,以键值对的方式记录第三类指纹信息,该第三类指纹信息的key值为数据指纹,value值包括纹数据对应的数据块的第一类指纹信息的重复数量,指纹表版本号,其中,指纹表执行一次指纹清理,则指纹表的版本号加一。
可选地,所述目标指纹分析器41还用于:
在接收到一个数据块的第一类指纹信息之后,判断本地是否存在该数据块对应的第三类指纹信息;
若判定本地存在该数据块对应的第三类指纹信息,则判断该第三类指纹信息记录的指纹表版本号是否小于指纹表的当前版本号;
若判定该第三类指纹信息记录的指纹表版本号小于指纹表的当前版本号,则查找指纹表中是否存在该数据块对应的指纹信息,若存在,则执行重复数据删除处理,并更新该第三类指纹信息路的指纹表版本号;若不存在,则记录该第一类指纹信息。
以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上***(system-on-a-chip,简称SOC)的形式实现。
进一步地,本申请实施例提供的重复数据删除装置,从硬件层面而言,所述重复数据删除装置的硬件架构示意图可以参见图5所示,所述重复数据删除装置可以包括:存储器50和处理器51,
存储器50用于存储程序指令;处理器51调用存储器50中存储的程序指令,按照获得的程序指令执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本申请还提供一种分布式存储设备,包括用于执行上述方法实施例的至少一个处理元件(或芯片)。
可选地,本申请还提供一种程序产品,例如计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使该计算机执行上述方法实施例。
这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种重复数据删除方法,其特征在于,应用于分布式存储***,所述分布式存储***包括数据处理模块和部署在每一主机上的指纹分析器,所述方法包括:
所述数据处理模块计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及基于哈希结果将第一类指纹信息发送至对应的指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的数据指纹及该数据块的地址信息;
目标指纹分析器接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的数据指纹,该数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息;
所述目标指纹分析器判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若判定一个第二类指纹信息中第一类指纹信息的重复数量达到第二设定阈值,则基于该第二类指纹信息对重复数据进行删除处理。
2.如权利要求1所述的方法,其特征在于,所述目标指纹分析器接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息的步骤包括:
所述目标指纹分析器在接收到所述数据处理模块发送的一个第一类指纹信息时,将该一个第一类指纹信息写入预设容量的指定文件中,若该指定文件的大小达到预设容量时,对该指定文件进行封装处理,生成新的指定文件;
所述目标指纹分析器在确定封装后的指定文件数量达到第三设定阈值时,对封装后的指定文件中的数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息。
3.如权利要求1所述的方法,其特征在于,以键值对的方式记录第一类指纹信息和第二类指纹信息,其中,第一类指纹信息的key值为数据指纹,value值包括指纹信息类型为第一类,数据块的地址信息;
所述目标指纹分析器对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息的步骤包括:
所述目标指纹分析器将指纹数据相同的多个第一类指纹信息合并为一个第二类指纹信息,其中,第二类指纹信息的key值为数据指纹,value值包括指纹信息类型为第二类,指纹数据对应的数据块的第一类指纹信息的重复数量,该数据块的多个地址信息。
4.如权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述目标指纹分析器将执行完重复数据删除后的数据块的指纹信息存储至指纹表中,其中,该指纹信息包括该数据块的数据指纹,及其该数据块的地址信息;
所述目标指纹分析器生成该数据块对应的第三类指纹信息,其中,以键值对的方式记录第三类指纹信息,该第三类指纹信息的key值为数据指纹,value值包括纹数据对应的数据块的第一类指纹信息的重复数量,指纹表版本号,其中,指纹表执行一次指纹清理,则指纹表的版本号加一。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
所述目标指纹分析器在接收到一个数据块的第一类指纹信息之后,判断本地是否存在该数据块对应的第三类指纹信息;
若所述目标指纹分析器判定本地存在该数据块对应的第三类指纹信息,则判断该第三类指纹信息记录的指纹表版本号是否小于指纹表的当前版本号;
若所述目标指纹分析器判定该第三类指纹信息记录的指纹表版本号小于指纹表的当前版本号,则查找指纹表中是否存在该数据块对应的指纹信息,若存在,则执行重复数据删除处理,并更新该第三类指纹信息路的指纹表版本号;若不存在,则记录该第一类指纹信息。
6.一种分布式存储***,其特征在于,所述分布式存储***包括数据处理模块和部署在每一主机上的指纹分析器,其中,
所述数据处理模块,用于计算下盘后的各数据块的数据指纹,并对各数据指纹进行哈希处理,以及基于哈希结果将第一类指纹信息发送至对应的指纹分析器,其中,一个第一类指纹信息包括一个数据块对应的数据指纹及该数据块的地址信息;
目标指纹分析器,用于接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息,其中,一个第二类指纹信息包括一个数据块对应的数据指纹,该数据块对应的第一类指纹信息的重复数量,以及该数据块的一个或多个地址信息;
所述目标指纹分析器还用于,判断各第二类指纹信息中第一类指纹信息的重复数量是否达到第二设定阈值,若判定一个第二类指纹信息中第一类指纹信息的重复数量达到第二设定阈值,则基于该第二类指纹信息对重复数据进行删除处理。
7.如权利要求6所述的分布式存储***,其特征在于,接收所述数据处理模块发送的第一类指纹信息,并在确定本地存储的第一类指纹信息的数量达到第一设定阈值时,对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,所述目标指纹分析器具体用于:
在接收到所述数据处理模块发送的一个第一类指纹信息时,将该一个第一类指纹信息写入预设容量的指定文件中,若该指定文件的大小达到预设容量时,对该指定文件进行封装处理,生成新的指定文件;
在确定封装后的指定文件数量达到第三设定阈值时,对封装后的指定文件中的数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息。
8.如权利要求6所述的分布式存储***,其特征在于,以键值对的方式记录第一类指纹信息和第二类指纹信息,其中,第一类指纹信息的key值为数据指纹,value值包括指纹信息类型为第一类,数据块的地址信息;
对数据指纹相同的第一类指纹信息进行合并处理,得到对应的第二类指纹信息时,所述目标指纹分析器具体用于:
将指纹数据相同的多个第一类指纹信息合并为一个第二类指纹信息,其中,第二类指纹信息的key值为数据指纹,value值包括指纹信息类型为第二类,指纹数据对应的数据块的第一类指纹信息的重复数量,该数据块的多个地址信息。
9.如权利要求6-8任一项所述的分布式存储***,其特征在于,所述目标指纹分析器还用于:
将执行完重复数据删除后的数据块的指纹信息存储至指纹表中,其中,该指纹信息包括该数据块的数据指纹,及其该数据块的地址信息;
生成该数据块对应的第三类指纹信息,其中,以键值对的方式记录第三类指纹信息,该第三类指纹信息的key值为数据指纹,value值包括纹数据对应的数据块的第一类指纹信息的重复数量,指纹表版本号,其中,指纹表执行一次指纹清理,则指纹表的版本号加一。
10.如权利要求9所述的分布式存储***,其特征在于,所述目标指纹分析器还用于:
在接收到一个数据块的第一类指纹信息之后,判断本地是否存在该数据块对应的第三类指纹信息;
若判定本地存在该数据块对应的第三类指纹信息,则判断该第三类指纹信息记录的指纹表版本号是否小于指纹表的当前版本号;
若判定该第三类指纹信息记录的指纹表版本号小于指纹表的当前版本号,则查找指纹表中是否存在该数据块对应的指纹信息,若存在,则执行重复数据删除处理,并更新该第三类指纹信息路的指纹表版本号;若不存在,则记录该第一类指纹信息。
CN202111058390.4A 2021-09-09 2021-09-09 一种重复数据删除方法及装置 Active CN113986891B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111058390.4A CN113986891B (zh) 2021-09-09 2021-09-09 一种重复数据删除方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111058390.4A CN113986891B (zh) 2021-09-09 2021-09-09 一种重复数据删除方法及装置

Publications (2)

Publication Number Publication Date
CN113986891A CN113986891A (zh) 2022-01-28
CN113986891B true CN113986891B (zh) 2024-03-12

Family

ID=79735588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111058390.4A Active CN113986891B (zh) 2021-09-09 2021-09-09 一种重复数据删除方法及装置

Country Status (1)

Country Link
CN (1) CN113986891B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104978151A (zh) * 2015-06-19 2015-10-14 浪潮电子信息产业股份有限公司 基于应用感知的重复数据删除存储***中的数据重构方法
CN106610790A (zh) * 2015-10-26 2017-05-03 华为技术有限公司 一种重复数据删除方法及装置
WO2021016728A1 (zh) * 2019-07-26 2021-02-04 华为技术有限公司 存储***中数据处理方法、装置及计算机存储可读存储介质
CN112800057A (zh) * 2021-01-22 2021-05-14 新华三大数据技术有限公司 一种指纹表管理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055005B2 (en) * 2018-10-12 2021-07-06 Netapp, Inc. Background deduplication using trusted fingerprints

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104978151A (zh) * 2015-06-19 2015-10-14 浪潮电子信息产业股份有限公司 基于应用感知的重复数据删除存储***中的数据重构方法
CN106610790A (zh) * 2015-10-26 2017-05-03 华为技术有限公司 一种重复数据删除方法及装置
WO2021016728A1 (zh) * 2019-07-26 2021-02-04 华为技术有限公司 存储***中数据处理方法、装置及计算机存储可读存储介质
CN112800057A (zh) * 2021-01-22 2021-05-14 新华三大数据技术有限公司 一种指纹表管理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于重复数据删除技术的存储***分析;朱江;冀鸣;杨志成;张嘉贤;曹雄;;信息***工程;20170420(04);全文 *
基于重复数据删除技术的雾存储数据去冗余方案;陈思佳;温蜜;陈珊;;计算机应用与软件;20200212(02);全文 *

Also Published As

Publication number Publication date
CN113986891A (zh) 2022-01-28

Similar Documents

Publication Publication Date Title
US11461027B2 (en) Deduplication-aware load balancing in distributed storage systems
US10809928B2 (en) Efficient data deduplication leveraging sequential chunks or auxiliary databases
US9134914B1 (en) Deduplication
CN108459826B (zh) 一种处理io请求的方法及装置
CN108268219B (zh) 一种处理io请求的方法及装置
CN107491523B (zh) 存储数据对象的方法及装置
US10078648B1 (en) Indexing deduplicated data
CN107329692A (zh) 一种数据重删的方法及存储设备
US10503608B2 (en) Efficient management of reference blocks used in data deduplication
JP6098301B2 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US11169968B2 (en) Region-integrated data deduplication implementing a multi-lifetime duplicate finder
JP6089890B2 (ja) ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム
US10282127B2 (en) Managing data in a storage system
US10585802B1 (en) Method and system for caching directories in a storage system
CN113986891B (zh) 一种重复数据删除方法及装置
CN108021562B (zh) 应用于分布式文件***的存盘方法、装置及分布式文件***
US10474588B1 (en) Method and system for memory-based data caching
CN112800057B (zh) 一种指纹表管理方法及装置
KR101144321B1 (ko) 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치
US10831370B1 (en) Deduplicated and compressed non-volatile memory cache
US10664442B1 (en) Method and system for data consistency verification in a storage system
JP2010191903A (ja) 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム
Song et al. Efficient key-value stores with ranged log-structured merge trees
US11847334B2 (en) Method or apparatus to integrate physical file verification and garbage collection (GC) by tracking special segments
US11150827B2 (en) Storage system and duplicate data management method

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
GR01 Patent grant
GR01 Patent grant