CN109800218A - 分布式存储***、存储节点设备和数据去重方法 - Google Patents

分布式存储***、存储节点设备和数据去重方法 Download PDF

Info

Publication number
CN109800218A
CN109800218A CN201910007367.9A CN201910007367A CN109800218A CN 109800218 A CN109800218 A CN 109800218A CN 201910007367 A CN201910007367 A CN 201910007367A CN 109800218 A CN109800218 A CN 109800218A
Authority
CN
China
Prior art keywords
fingerprint
data
data slice
written
node equipment
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.)
Granted
Application number
CN201910007367.9A
Other languages
English (en)
Other versions
CN109800218B (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201910007367.9A priority Critical patent/CN109800218B/zh
Publication of CN109800218A publication Critical patent/CN109800218A/zh
Priority to PCT/CN2019/118009 priority patent/WO2020140622A1/zh
Application granted granted Critical
Publication of CN109800218B publication Critical patent/CN109800218B/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
    • 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/22Indexing; Data structures therefor; Storage structures
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

本发明涉及一种分布式存储技术,揭露了一种分布式存储***、存储节点设备和数据去重方法。本发明一存储节点设备在进行数据去重时,若在本地指纹库中未查询到一待写入数据片的指纹,则可直接在共享指纹库中查询该指纹是否为重复的指纹,无需与其他存储节点设备逐一进行通信查询,因此,提高了分布式存储***的数据去重效率。

Description

分布式存储***、存储节点设备和数据去重方法
技术领域
本发明涉及分布式存储技术领域,特别涉及一种分布式存储***、存储节点设备、数据去重方法和计算机可读存储介质。
背景技术
数据去重又称重复数据删除(Data Deduplication),是一种应用在存储***中的全局地识别和消除冗余数据的技术,成为近些年来存储***研究的热点。数据去重通过计算数据块的安全哈希摘要(比如SHA1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储***只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,具有良好的可扩展性。重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的。所以数据去重技术能够极大地节省存储空间从而提高存储设备的资源利用率。
目前,分布式存储***中一存储节点在对一数据片的去重过程通常包括如下步骤:计算该数据片的指纹,再在该存储节点的指纹库中查询该指纹是否存在,若不存在,则在该分布式存储***中其他存储节点的指纹库中查询该指纹是否存在,以此确认该数据片是否存在于分布式存储***中。该方法的缺陷在于,分布式存储***中存储节点的数量通常较多,若一存储节点需要在其他多个存储节点的指纹库中查询指纹,则需要与多个存储节点逐一通信,速度慢且效率低。
因此,如何提高分布式存储***的去重效率成为一个亟待解决的问题。
发明内容
本发明的主要目的是提供一种分布式存储***、存储节点设备、数据去重方法和计算机可读存储介质,旨在提高分布式存储***的去重效率。
为实现上述目的,本发明提出一种分布式存储***,所述分布式存储***包括多个存储节点设备及若干个共享指纹库,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述存储节点设备用于:
接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
当有一个或多个待去重指纹存在于所述本地指纹库时,将所述一个或多个待去重指纹对应的待写入数据片删除;
当有一个或多个待去重指纹不存在于所述本地指纹库时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
优选地,所述待写入数据片由待写入数据切分得到,所述数据片写入请求还包括数据片指纹序列,所述数据片指纹序列包括按顺序排列的各个待写入数据片的指纹;
所述确定出所述待写入数据片的指纹中的待去重指纹包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹;
所述存储节点设备还用于:
将所述数据片指纹序列保存至所述本地指纹库及共享指纹库中;
所述存储节点设备还用于:
保存所有剩余的待写入数据片,并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库及共享指纹库中。
优选地,所述分布式存储***还包括与各个存储节点设备及共享指纹库通信连接的控制节点设备,所述存储节点设备还用于:
确定各个待写入数据片的指纹的引用计数变化值,并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备;
所述控制节点设备用于:
根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数。
优选地,所述存储节点设备还用于:
接收一待删除数据的删除请求;
获取所述待删除数据的数据片指纹序列,确定获取的所述数据片指纹序列中各指纹的引用计数变化值,并发送所述数据片指纹序列中各指纹的引用计数变化值至控制节点设备;
所述控制节点设备还用于:
根据所述数据片指纹序列中各指纹的引用计数变化值,更新所述数据片指纹序列中各指纹的累计引用计数,并将所述待删除数据的数据片指纹序列从所述共享指纹库删除,且通知所述存储节点设备将所述待删除数据的数据片指纹序列从本地指纹库删除;
当在所述共享指纹库中侦测到一指纹的累计引用计数为零时,记录所述指纹保持累计引用计数为零的状态的持续时长,当所述持续时长大于预设时长时,删除所述指纹,并通知对应的存储节点设备删除所述指纹及所述指纹对应的数据片。
此外,为实现上述目的,本发明还提出一种数据去重方法,该方法适用于分布式存储***,所述分布式存储***包括多个存储节点设备及若干个共享指纹库,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述方法包括步骤:
接收步骤:存储节点设备接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
查询步骤:存储节点设备确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
第一去重步骤:当有一个或多个待去重指纹存在于所述本地指纹库时,存储节点设备将所述一个或多个待去重指纹对应的待写入数据片删除;
第二去重步骤:当有一个或多个待去重指纹不存在于所述本地指纹库时,存储节点设备将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
优选地,所述待写入数据片由待写入数据切分得到,所述数据片写入请求还包括数据片指纹序列,所述数据片指纹序列包括按顺序排列的各个待写入数据片的指纹;
所述确定出所述待写入数据片的指纹中的待去重指纹的步骤包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹;
在所述接收步骤之后,所述方法还包括:
存储节点设备将所述数据片指纹序列保存至所述本地指纹库及共享指纹库中;
在所述第二去重步骤之后,所述方法还包括:
存储节点设备保存所有剩余的待写入数据片,并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库及共享指纹库中。
优选地,所述分布式存储***还包括与各个存储节点设备及共享指纹库通信连接的控制节点设备,在所述接收步骤之后,所述方法还包括:
存储节点设备确定各个待写入数据片的指纹的引用计数变化值,并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备;
控制节点设备根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数。
优选地,所述方法还包括:
存储节点设备接收一待删除数据的删除请求;
存储节点设备获取所述待删除数据的数据片指纹序列,确定获取的所述数据片指纹序列中各指纹的引用计数变化值,并发送所述数据片指纹序列中各指纹的引用计数变化值至控制节点设备;
控制节点设备根据所述数据片指纹序列中各指纹的引用计数变化值,更新所述数据片指纹序列中各指纹的累计引用计数,并将所述待删除数据的数据片指纹序列从所述共享指纹库删除,且通知所述存储节点设备将所述待删除数据的数据片指纹序列从本地指纹库删除;
当在所述共享指纹库中侦测到一指纹的累计引用计数为零时,控制节点设备记录所述指纹保持累计引用计数为零的状态的持续时长,当所述持续时长大于预设时长时,删除所述指纹,并通知对应的存储节点设备删除所述指纹及所述指纹对应的数据片。
此外,为实现上述目的,本发明还提出一种存储节点设备,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述存储节点设备包括存储器和处理器,所述存储器上存储有数据去重程序,所述数据去重程序被所述处理器执行时实现如下步骤:
接收步骤:接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
查询步骤:确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
第一去重步骤:当有一个或多个待去重指纹存在于所述本地指纹库时,将所述一个或多个待去重指纹对应的待写入数据片删除;
第二去重步骤:当有一个或多个待去重指纹不存在于所述本地指纹库时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
优选地,所述待写入数据片由待写入数据切分得到,所述数据片写入请求还包括数据片指纹序列,所述数据片指纹序列包括按顺序排列的各个待写入数据片的指纹;
所述确定出所述待写入数据片的指纹中的待去重指纹的步骤包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹;
所述处理器执行所述数据去重程序,在所述接收步骤之后,还实现如下步骤:
将所述数据片指纹序列保存至所述本地指纹库及共享指纹库中;
所述处理器执行所述数据去重程序,在所述第二去重步骤之后,还实现如下步骤:
保存所有剩余的待写入数据片,并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库及共享指纹库中。
优选地,所述分布式存储***还包括与各个存储节点设备及共享指纹库通信连接的控制节点设备,所述处理器执行所述数据去重程序,在所述接收步骤之后,还实现如下步骤:
确定各个待写入数据片的指纹的引用计数变化值,并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备,供所述控制节点设备根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,适用于存储节点设备,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述计算机可读存储介质存储有数据去重程序,所述数据去重程序可被至少一个处理器执行,以使所述至少一个处理器执行如下步骤:
接收步骤:接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
查询步骤:确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
第一去重步骤:当有一个或多个待去重指纹存在于所述本地指纹库时,将所述一个或多个待去重指纹对应的待写入数据片删除;
第二去重步骤:当有一个或多个待去重指纹不存在于所述本地指纹库时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
优选地,所述待写入数据片由待写入数据切分得到,所述数据片写入请求还包括数据片指纹序列,所述数据片指纹序列包括按顺序排列的各个待写入数据片的指纹;
所述确定出所述待写入数据片的指纹中的待去重指纹的步骤包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹;
所述处理器执行所述数据去重程序,在所述接收步骤之后,还实现如下步骤:
将所述数据片指纹序列保存至所述本地指纹库及共享指纹库中;
所述处理器执行所述数据去重程序,在所述第二去重步骤之后,还实现如下步骤:
保存所有剩余的待写入数据片,并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库及共享指纹库中。
优选地,所述分布式存储***还包括与各个存储节点设备及共享指纹库通信连接的控制节点设备,所述处理器执行所述数据去重程序,在所述接收步骤之后,还实现如下步骤:
确定各个待写入数据片的指纹的引用计数变化值,并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备,供所述控制节点设备根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数。
与现有技术相比,本实施例一存储节点设备在进行数据去重时,若在本地指纹库中未查询到一待写入数据片的指纹,则可直接在共享指纹库中查询该指纹是否为重复的指纹,无需与其他存储节点设备逐一进行通信查询,因此,提高了分布式存储***的数据去重效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明分布式存储***一实施例的***架构示意图;
图2为本发明数据去重程序一实施例的运行环境示意图;
图3为本发明数据去重程序一实施例的程序模块图;
图4为本发明数据去重方法一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
参阅图1所示,是本发明分布式存储***一实施例的***架构图。
在本实施例中,所述分布式存储***包括多个存储节点设备1及若干个共享指纹库2,所述存储节点设备1及共享指纹库2之间通信连接(例如,通过网络4通信连接),所述存储节点设备1中设置有本地指纹库3,或者,所述存储节点设备1与对应的本地指纹库3通信连接。所述本地指纹库3包括对应存储节点设备1中已存储数据片的指纹,所述共享指纹库2包括所有存储节点设备1中已存储数据片的指纹。
所述存储节点设备1用于:
接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库3中查找各个待去重指纹是否存在;
当有一个或多个待去重指纹存在于所述本地指纹库3时,将所述一个或多个待去重指纹对应的待写入数据片删除;
当有一个或多个待去重指纹不存在于所述本地指纹库3时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库2中查找各个待处理指纹,当在所述共享指纹库2中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
本实施例中,存储节点设备1接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹。所述待写入数据片由待写入数据(所述待写入数据的数据类型包括块级数据、文件级数据)切分得到。该切分的操作可由存储节点设备1执行,或由其他任何适用的设备(例如,客户端)执行,其切分方法包括:
将待写入数据文件切分成相同数据大小的预设数量的数据片。或者,将预设数量记为M,当M为大于1的自然数时,确定切分所述待写入数据文件对应的数据片大小,根据确定的数据片大小,逐一切分出大小相同的M-1个数据块,切分后余下的是第M个数据块。其中,待写入数据片的大小可以是4KB、8KB、12KB、16KB或其他粒度大小。
在将待写入数据切分成若干个待写入数据片后,计算每个待写入数据片的指纹,例如,通过信息-摘要算法5(Message-Digest Algorithm 5,MD5)、安全哈希算法(SecureHash Algorithm,SHA1)等计算每个待写入数据片的指纹,同时,记录各待写入数据片的排列顺序(即数据片指纹序列),用于后续读取该待写入数据时,将待写入数据片按照该数据片指纹序列组装成该待写入数据。此外,存储节点设备1还可将所述数据片指纹序列保存至所述本地指纹库3及共享指纹库2中。
接着,存储节点设备1确定出所述待写入数据片的指纹中的待去重指纹,确定待去重指纹的方法包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹。
例如,存储节点设备1判断所有待写入数据片的指纹中是否存在相同的指纹。若存在相同的指纹,则将相同的指纹作为一个指纹组,在查找出所有指纹组后,在每一个指纹组中选择一个指纹保留,将未被选择的指纹作为冗余的指纹删除,并判断是否存在未分组的指纹,若是,则将各个未分组的指纹作为待去重指纹,若否,则结束流程。若不存在相同的指纹,则将所有待写入数据片的指纹作为未分组的指纹,则将各个未分组的指纹作为待去重指纹。
在识别出待去重指纹后,存储节点设备1于本地指纹库3中查找各个待去重指纹是否存在。当有一个或多个待去重指纹存在于所述本地指纹库3时,存储节点设备1将所述一个或多个待去重指纹对应的待写入数据片删除。当有一个或多个待去重指纹存在于所述本地指纹库3时,代表这些待去重指纹对应的待写入数据片是重复的数据片,为了节省存储空间,将这些重复的数据片删除。
最后,当有一个或多个待去重指纹不存在于所述本地指纹库3时,存储节点设备1将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库2中查找各个待处理指纹,当在所述共享指纹库2中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
由于共享指纹库2中拥有全量的指纹数据,因此,存储节点设备1若在本地指纹库3中未查询到一待去重指纹,则在共享指纹库2中继续查询该待去重指纹是否存在,若存在,则确定该待去重指纹对应的待写入数据片已存在于其他存储节点中,属于重复的数据片,无需再对该待写入数据片进行存储处理。
与现有技术相比,本实施例一存储节点设备1在进行数据去重时,若在本地指纹库3中未查询到一待写入数据片的指纹,则可直接在共享指纹库2中查询该指纹是否为重复的指纹,无需与其他存储节点设备1逐一进行通信查询,因此,提高了分布式存储***的数据去重效率。
进一步地,在本实施例中,所述存储节点设备1还用于:
存储节点设备1保存所有剩余的待写入数据片(即未重复的数据片),并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库3及共享指纹库2中。
进一步地,在本实施例中,所述分布式存储***还包括控制节点设备5,所述控制节点设备5分别与所述存储节点设备1及共享指纹库2通信连接(例如,通过网络4通信连接)。所述共享指纹库2可设置于一共享磁盘(如通过NVMEOF挂载的NVME盘)中,该共享磁盘可设置于控制节点设备5中,也可独立于控制节点设备5设置。
所述存储节点设备1还用于:
确定各个待写入数据片的指纹的引用计数变化值(例如,确定各个待去重指纹的引用计数变化值均为+1),并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备5。
所述控制节点设备5用于:
根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数(一指纹的累计引用计数代表该指纹对应的数据片被已存储数据引用的总次数)。
进一步地,在本实施例中,所述存储节点设备1还用于:
接收一待删除数据的删除请求,获取所述待删除数据的数据片指纹序列,确定获取的所述数据片指纹序列中各指纹的引用计数变化值(例如,确定所述数据片指纹序列中每一个指纹的引用计数变化值均为-1),并发送所述数据片指纹序列中各指纹的引用计数变化值至控制节点设备5。
所述控制节点设备5还用于:
根据所述数据片指纹序列中各指纹的引用计数变化值,更新所述数据片指纹序列中各指纹的累计引用计数,并将所述待删除数据的数据片指纹序列从所述共享指纹库2删除,且通知所述存储节点设备1将所述待删除数据的数据片指纹序列从本地指纹库3删除。
本实施例中,若要删除数据,存储节点设备1不能直接将该待删除数据的数据片直接删除,因为存储节点设备1无法确定该待删除数据的数据片是否同时被其他数据引用,如果直接删除该待删除数据的数据片,则可能会造成数据丢失。因此,仅需更新该待删除数据的数据片序列中各个指纹的累计引用计数,并将该待删除数据的数据片指纹序列删除。
进一步地,在本实施例中,所述控制节点设备5还用于:
当在所述共享指纹库2中侦测到一指纹的累计引用计数为零(即该指纹对应的数据片未被任何数据引用)时,记录所述指纹保持累计引用计数为零的状态的持续时长。
当所述持续时长大于预设时长时,删除所述指纹,并通知对应的存储节点设备1删除所述指纹及所述指纹对应的数据片。
当所述持续时长小于或等于预设时长时,不作删除处理。
本实施例中,控制节点设备5在侦测到一指纹的累计引用计数为零时,需经历一段预设时长后再将该指纹对应的数据片删除,且在该预设时长内实时接收各存储节点设备1上报的该指纹的引用计数变化值,以避免因存储节点设备1未及时上报引用计数变化值而造成的数据误删。
进一步地,在本实施例中,所述存储节点设备1还用于:
在接收到一待读取数据的读取请求时,获取该待读取数据的数据片指纹序列,并获取所述数据片指纹序列中各指纹对应的数据片的存储位置信息,根据获取的所述存储位置信息,获取所述数据片指纹序列中各指纹对应的数据片,再将获取的数据片按照所述数据片指纹序列组装成所述待读取数据。
本发明提出一种数据去重程序。
请参阅图2,是本发明数据去重程序10一实施例的运行环境示意图。
在本实施例中,数据去重程序10安装并运行于存储节点设备1中。存储节点设备1可以是桌上型计算机、笔记本、掌上电脑及服务器等计算设备。所述存储节点设备1可包括,但不仅限于,存储器11、处理器12及显示器13。图2仅示出了具有组件11-13的存储节点设备1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
存储器11在一些实施例中可以是存储节点设备1的内部存储单元,例如所述存储节点设备1的硬盘或内存。存储器11在另一些实施例中也可以是存储节点设备1的外部存储设备,例如存储节点设备1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括存储节点设备1的内部存储单元也包括外部存储设备。存储器11用于存储安装于存储节点设备1的应用软件及各类数据,例如数据去重程序10的程序代码等。存储器11还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据去重程序10等。
显示器13在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。显示器13用于显示在存储节点设备1中处理的信息以及用于显示可视化的用户界面。存储节点设备1的部件11-13通过程序总线相互通信。
请参阅图3,是本发明数据去重程序10一实施例的程序模块图。在本实施例中,数据去重程序10可以被分割成一个或多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明。例如,在图3中,数据去重程序10可以被分割成接收模块101、预处理模块102、查询模块103、第一去重模块104及第二去重模块105。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述数据去重程序10在存储节点设备1中的执行过程,其中:
接收模块101,用于接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹。
所述待写入数据片由待写入数据(所述待写入数据的数据类型包括块级数据及文件级数据)切分得到,该切分的操作可由接收模块101执行,或由其他任何适用的设备(例如,客户端)执行,其切分方法包括:
将待写入数据文件切分成相同数据大小的预设数量的数据片。或者,将预设数量记为M,当M为大于1的自然数时,确定切分所述待写入数据文件对应的数据片大小,根据确定的数据片大小,逐一切分出大小相同的M-1个数据块,切分后余下的是第M个数据块。其中,待写入数据片的大小可以是4KB、8KB、12KB、16KB或其他粒度大小。
在将待写入数据切分成若干个待写入数据片后,计算每个待写入数据片的指纹,例如,通过信息-摘要算法5(Message-Digest Algorithm 5,MD5)、安全哈希算法(SecureHash Algorithm,SHA1)等计算每个待写入数据片的指纹,同时,记录各待写入数据片的排列顺序(即数据片指纹序列),用于后续读取该待写入数据时,将待写入数据片按照该数据片指纹序列组装成该待写入数据。此外,还可将所述数据片指纹序列保存至所述本地指纹库3及共享指纹库2中。
预处理模块102,用于确定出所述待写入数据片的指纹中的待去重指纹。
预处理模块102确定待去重指纹的方法包括:
判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹。
例如,判断所有待写入数据片的指纹中是否存在相同的指纹。若存在相同的指纹,则将相同的指纹作为一个指纹组,在查找出所有指纹组后,在每一个指纹组中选择一个指纹保留,将未被选择的指纹作为冗余的指纹删除,并判断是否存在未分组的指纹,若是,则将各个未分组的指纹作为待去重指纹,若否,则结束流程。若不存在相同的指纹,则将所有待写入数据片的指纹作为未分组的指纹,则将各个未分组的指纹作为待去重指纹。
查询模块103,用于在本地指纹库3中查找各个待去重指纹是否存在。
第一去重模块104,用于当有一个或多个待去重指纹存在于所述本地指纹库3时,将所述一个或多个待去重指纹对应的待写入数据片删除。
当有一个或多个待去重指纹存在于所述本地指纹库3时,代表这些待去重指纹对应的待写入数据片是重复的数据片,为了节省存储空间,将这些重复的数据片删除。
第二去重模块105,用于当有一个或多个待去重指纹不存在于所述本地指纹库3时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库2中查找各个待处理指纹,当在所述共享指纹库2中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
由于共享指纹库2中拥有全量的指纹数据,因此,若第一去重模块104在本地指纹库3中未查询到一待去重指纹,则第二去重模块105在共享指纹库2中继续查询该待去重指纹是否存在,若存在,则确定该待去重指纹对应的待写入数据片已存在于其他存储节点中,属于重复的数据片,无需再对该待写入数据片进行存储处理。
与现有技术相比,本实施例一存储节点设备1在进行数据去重时,若在本地指纹库3中未查询到一待写入数据片的指纹,则可直接在共享指纹库2中查询该指纹是否为重复的指纹,无需与其他存储节点设备1逐一进行通信查询,因此,提高了分布式存储***的数据去重效率。
进一步地,在本实施例中,所述数据去重程序10还包括存储模块(图中未示出),用于:
保存所有剩余的待写入数据片(即未重复的数据片),并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库3及共享指纹库2中。
进一步地,在本实施例中,所述数据去重程序10还包括引用更新模块(图中未示出),用于:
确定各个待写入数据片的指纹的引用计数变化值(例如,确定各个待去重指纹的引用计数变化值均为+1),并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备5,供控制节点设备5根据各个待写入数据片的指纹的引用计数变化值,且更新各个待写入数据片的指纹的累计引用计数(一指纹的累计引用计数代表该指纹对应的数据片被已存储数据引用的总次数)。
进一步地,在本实施例中,所述数据去重程序10还包括删除模块(图中未示出),用于:
接收一待删除数据的删除请求,获取所述待删除数据的数据片指纹序列,确定获取的所述数据片指纹序列中各指纹的引用计数变化值(例如,确定所述数据片指纹序列中每一个指纹的引用计数变化值均为-1),并发送所述数据片指纹序列中各指纹的引用计数变化值至控制节点设备5。供控制节点设备5根据所述数据片指纹序列中各指纹的引用计数变化值,更新所述数据片指纹序列中各指纹的累计引用计数,并将所述待删除数据的数据片指纹序列从所述共享指纹库2删除,且通知所述存储节点设备1将所述待删除数据的数据片指纹序列从本地指纹库3删除。
本实施例中,若要删除数据,存储节点设备1不能直接将该待删除数据的数据片直接删除,因为存储节点设备1无法确定该待删除数据的数据片是否同时被其他数据引用,如果直接删除该待删除数据的数据片,则可能会造成数据丢失。因此,仅需更新该待删除数据的数据片序列中各个指纹的累计引用计数,并将该待删除数据的数据片指纹序列删除。
当在所述共享指纹库2中侦测到一指纹的累计引用计数为零(即该指纹对应的数据片未被任何数据引用)时,控制节点设备5记录所述指纹保持累计引用计数为零的状态的持续时长。当所述持续时长大于预设时长时,删除所述指纹,并通知对应的存储节点设备1删除所述指纹及所述指纹对应的数据片。当所述持续时长小于或等于预设时长时,不作删除处理。
本实施例中,控制节点设备5在侦测到一指纹的累计引用计数为零时,需经历一段预设时长后再将该指纹对应的数据片删除,且在该预设时长内实时接收各存储节点设备1上报的该指纹的引用计数变化值,以避免因存储节点设备1未及时上报引用计数变化值而造成的数据误删。
进一步地,在本实施例中,所述数据去重程序10还包括读取模块(图中未示出),用于:
在接收到一待读取数据的读取请求时,获取该待读取数据的数据片指纹序列,并获取所述数据片指纹序列中各指纹对应的数据片的存储位置信息,根据获取的所述存储位置信息,获取所述数据片指纹序列中各指纹对应的数据片,再将获取的数据片按照所述数据片指纹序列组装成所述待读取数据。
此外,本发明提出一种数据去重方法。该方法适用于上述分布式存储***。
如图4所示,图4为本发明数据去重方法一实施例的流程示意图。
本实施例中,所述方法包括:
步骤S10,存储节点设备1接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹。
所述待写入数据片由待写入数据(所述待写入数据的数据类型包括块级数据、文件级数据)切分得到,该切分的操作可由存储节点设备1执行,或由其他任何适用的设备(例如,客户端)执行,其切分方法包括:
将待写入数据文件切分成相同数据大小的预设数量的数据片。或者,将预设数量记为M,当M为大于1的自然数时,确定切分所述待写入数据文件对应的数据片大小,根据确定的数据片大小,逐一切分出大小相同的M-1个数据块,切分后余下的是第M个数据块。其中,待写入数据片的大小可以是4KB、8KB、12KB、16KB或其他粒度大小。
在将待写入数据切分成若干个待写入数据片后,计算每个待写入数据片的指纹,例如,通过信息-摘要算法5(Message-Digest Algorithm 5,MD5)、安全哈希算法(SecureHash Algorithm,SHA1)等计算每个待写入数据片的指纹,同时,记录各待写入数据片的排列顺序(即数据片指纹序列),用于后续读取该待写入数据时,将待写入数据片按照该数据片指纹序列组装成该待写入数据。此外,还可将所述数据片指纹序列保存至所述本地指纹库3及共享指纹库2中。
步骤S20,存储节点设备1确定出所述待写入数据片的指纹中的待去重指纹。
确定待去重指纹的方法包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹。
例如,所述步骤S20包括步骤S21~S26(图中未示出)。其中:
步骤S21,判断所有待写入数据片的指纹中是否存在相同的指纹。
步骤S22,若存在相同的指纹,则将相同的指纹作为一个指纹组,在查找出所有指纹组后,在每一个指纹组中选择一个指纹保留,将未被选择的指纹作为冗余的指纹删除,并判断是否存在未分组的指纹,若是,则将各个未分组的指纹作为待去重指纹,若否,则结束流程。
步骤S23,若不存在相同的指纹,则将所有待写入数据片的指纹作为未分组的指纹,则将各个未分组的指纹作为待去重指纹。
步骤S30,存储节点设备1于本地指纹库3中查找各个待去重指纹是否存在。
步骤S40,当有一个或多个待去重指纹存在于所述本地指纹库3时,存储节点设备1将所述一个或多个待去重指纹对应的待写入数据片删除。
当有一个或多个待去重指纹存在于所述本地指纹库3时,代表这些待去重指纹对应的待写入数据片是重复的数据片,为了节省存储空间,将这些重复的数据片删除。
步骤S50,当有一个或多个待去重指纹不存在于所述本地指纹库3时,存储节点设备1将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库2中查找各个待处理指纹,当在所述共享指纹库2中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
由于共享指纹库2中拥有全量的指纹数据,因此,存储节点设备1若在本地指纹库3中未查询到一待去重指纹,则在共享指纹库2中继续查询该待去重指纹是否存在,若存在,则确定该待去重指纹对应的待写入数据片已存在于其他存储节点中,属于重复的数据片,无需再对该待写入数据片进行存储处理。
与现有技术相比,本实施例一存储节点设备1在进行数据去重时,若在本地指纹库3中未查询到一待写入数据片的指纹,则可直接在共享指纹库2中查询该指纹是否为重复的指纹,无需与其他存储节点设备1逐一进行通信查询,因此,提高了分布式存储***的数据去重效率。
进一步地,在本实施例中,于步骤S60之后,该方法还包括:
存储节点设备1保存所有剩余的待写入数据片(即未重复的数据片),并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库3及共享指纹库2中。
进一步地,在本实施例中,所述分布式存储***还包括与各个存储节点设备1及共享指纹库2通信连接的控制节点设备5,在所述步骤S20之后,所述方法还包括:
存储节点设备1确定各个待写入数据片的指纹的引用计数变化值(例如,确定各个待去重指纹的引用计数变化值均为+1),并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备5。
接着,控制节点设备5根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数(一指纹的累计引用计数代表该指纹对应的数据片被已存储数据引用的总次数)。
进一步地,在本实施例中,该方法还包括步骤S60~S80(图中未示出)。
其中:
步骤S60,存储节点设备1接收一待删除数据的删除请求。
步骤S70,存储节点设备1获取所述待删除数据的数据片指纹序列,确定获取的所述数据片指纹序列中各指纹的引用计数变化值(例如,确定所述数据片指纹序列中每一个指纹的引用计数变化值均为-1),并发送所述数据片指纹序列中各指纹的引用计数变化值至控制节点设备5。
步骤S80,控制节点设备5根据所述数据片指纹序列中各指纹的引用计数变化值,更新所述数据片指纹序列中各指纹的累计引用计数,并将所述待删除数据的数据片指纹序列从所述共享指纹库2删除,且通知所述存储节点设备1将所述待删除数据的数据片指纹序列从本地指纹库3删除。
本实施例中,若要删除数据,存储节点设备1不能直接将该待删除数据的数据片直接删除,因为存储节点设备1无法确定该待删除数据的数据片是否同时被其他数据引用,如果直接删除该待删除数据的数据片,则可能会造成数据丢失。因此,仅需更新该待删除数据的数据片序列中各个指纹的累计引用计数,并将该待删除数据的数据片指纹序列删除。
进一步地,在本实施例中,该方法还包括:
当在所述共享指纹库2中侦测到一指纹的累计引用计数为零(即该指纹对应的数据片未被任何数据引用)时,控制节点设备5记录所述指纹保持累计引用计数为零的状态的持续时长。
当所述持续时长大于预设时长时,删除所述指纹,并通知对应的存储节点设备1删除所述指纹及所述指纹对应的数据片。
当所述持续时长小于或等于预设时长时,不作删除处理。
本实施例中,控制节点设备5在侦测到一指纹的累计引用计数为零时,需经历一段预设时长后再将该指纹对应的数据片删除,且在该预设时长内实时接收各存储节点设备1上报的该指纹的引用计数变化值,以避免因存储节点设备1未及时上报引用计数变化值而造成的数据误删。
进一步地,在本实施例中,该方法还包括步骤S90(图中未示出)。
步骤S90,存储节点设备1在接收到一待读取数据的读取请求时,获取该待读取数据的数据片指纹序列,并获取所述数据片指纹序列中各指纹对应的数据片的存储位置信息,根据获取的所述存储位置信息,获取所述数据片指纹序列中各指纹对应的数据片,再将获取的数据片按照所述数据片指纹序列组装成所述待读取数据。
进一步地,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有数据去重程序10,所述数据去重程序10的实施例在上述内容中已详细描述,在此不做赘述。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

Claims (10)

1.一种分布式存储***,其特征在于,所述分布式存储***包括多个存储节点设备及若干个共享指纹库,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述存储节点设备用于:
接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
当有一个或多个待去重指纹存在于所述本地指纹库时,将所述一个或多个待去重指纹对应的待写入数据片删除;
当有一个或多个待去重指纹不存在于所述本地指纹库时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
2.如权利要求1所述的分布式存储***,其特征在于,所述待写入数据片由待写入数据切分得到,所述数据片写入请求还包括数据片指纹序列,所述数据片指纹序列包括按顺序排列的各个待写入数据片的指纹;
所述确定出所述待写入数据片的指纹中的待去重指纹包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹;
所述存储节点设备还用于:
将所述数据片指纹序列保存至所述本地指纹库及共享指纹库中;
所述存储节点设备还用于:
保存所有剩余的待写入数据片,并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库及共享指纹库中。
3.如权利要求1或2所述的分布式存储***,其特征在于,所述分布式存储***还包括与各个存储节点设备及共享指纹库通信连接的控制节点设备,所述存储节点设备还用于:
确定各个待写入数据片的指纹的引用计数变化值,并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备;
所述控制节点设备用于:
根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数。
4.如权利要求2所述的分布式存储***,其特征在于,所述存储节点设备还用于:
接收一待删除数据的删除请求;
获取所述待删除数据的数据片指纹序列,确定获取的所述数据片指纹序列中各指纹的引用计数变化值,并发送所述数据片指纹序列中各指纹的引用计数变化值至控制节点设备;
所述控制节点设备还用于:
根据所述数据片指纹序列中各指纹的引用计数变化值,更新所述数据片指纹序列中各指纹的累计引用计数,并将所述待删除数据的数据片指纹序列从所述共享指纹库删除,且通知所述存储节点设备将所述待删除数据的数据片指纹序列从本地指纹库删除;
当在所述共享指纹库中侦测到一指纹的累计引用计数为零时,记录所述指纹保持累计引用计数为零的状态的持续时长,当所述持续时长大于预设时长时,删除所述指纹,并通知对应的存储节点设备删除所述指纹及所述指纹对应的数据片。
5.一种数据去重方法,该方法适用于分布式存储***,其特征在于,所述分布式存储***包括多个存储节点设备及若干个共享指纹库,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述方法包括步骤:
接收步骤:存储节点设备接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
查询步骤:存储节点设备确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
第一去重步骤:当有一个或多个待去重指纹存在于所述本地指纹库时,存储节点设备将所述一个或多个待去重指纹对应的待写入数据片删除;
第二去重步骤:当有一个或多个待去重指纹不存在于所述本地指纹库时,存储节点设备将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
6.如权利要求5所述的数据去重方法,其特征在于,所述待写入数据片由待写入数据切分得到,所述数据片写入请求还包括数据片指纹序列,所述数据片指纹序列包括按顺序排列的各个待写入数据片的指纹;
所述确定出所述待写入数据片的指纹中的待去重指纹的步骤包括:判断所述待写入数据片的指纹中是否存在冗余的指纹,若存在,则删除所述冗余的指纹,并将剩余的指纹作为待去重指纹,若不存在,则将所有所述待写入数据片的指纹作为待去重指纹;
在所述接收步骤之后,所述方法还包括:
存储节点设备将所述数据片指纹序列保存至所述本地指纹库及共享指纹库中;
在所述第二去重步骤之后,所述方法还包括:
存储节点设备保存所有剩余的待写入数据片,并将所述剩余的待写入数据片对应的存储位置信息保存至所述本地指纹库及共享指纹库中。
7.如权利要求5或6所述的数据去重方法,其特征在于,所述分布式存储***还包括与各个存储节点设备及共享指纹库通信连接的控制节点设备,在所述接收步骤之后,所述方法还包括:
存储节点设备确定各个待写入数据片的指纹的引用计数变化值,并将各个待写入数据片的指纹的引用计数变化值发送至控制节点设备;
控制节点设备根据各个待写入数据片的指纹的引用计数变化值,更新各个待写入数据片的指纹的累计引用计数。
8.如权利要求6所述的数据去重方法,其特征在于,所述方法还包括:
存储节点设备接收一待删除数据的删除请求;
存储节点设备获取所述待删除数据的数据片指纹序列,确定获取的所述数据片指纹序列中各指纹的引用计数变化值,并发送所述数据片指纹序列中各指纹的引用计数变化值至控制节点设备;
控制节点设备根据所述数据片指纹序列中各指纹的引用计数变化值,更新所述数据片指纹序列中各指纹的累计引用计数,并将所述待删除数据的数据片指纹序列从所述共享指纹库删除,且通知所述存储节点设备将所述待删除数据的数据片指纹序列从本地指纹库删除;
当在所述共享指纹库中侦测到一指纹的累计引用计数为零时,控制节点设备记录所述指纹保持累计引用计数为零的状态的持续时长,当所述持续时长大于预设时长时,删除所述指纹,并通知对应的存储节点设备删除所述指纹及所述指纹对应的数据片。
9.一种存储节点设备,其特征在于,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述存储节点设备包括存储器和处理器,所述存储器上存储有数据去重程序,所述数据去重程序被所述处理器执行时实现如下步骤:
接收步骤:接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
查询步骤:确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
第一去重步骤:当有一个或多个待去重指纹存在于所述本地指纹库时,将所述一个或多个待去重指纹对应的待写入数据片删除;
第二去重步骤:当有一个或多个待去重指纹不存在于所述本地指纹库时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
10.一种计算机可读存储介质,适用于存储节点设备,其特征在于,所述存储节点设备与共享指纹库之间通信连接,所述存储节点设备中设置有本地指纹库,或者,所述存储节点设备与对应的本地指纹库通信连接,所述计算机可读存储介质存储有数据去重程序,所述数据去重程序可被至少一个处理器执行,以使所述至少一个处理器执行如下步骤:
接收步骤:接收数据片写入请求,所述数据片写入请求包括若干个待写入数据片及各个所述待写入数据片的指纹;
查询步骤:确定出所述待写入数据片的指纹中的待去重指纹,并于本地指纹库中查找各个待去重指纹是否存在,所述本地指纹库包括所述存储节点设备中已存储数据片的指纹;
第一去重步骤:当有一个或多个待去重指纹存在于所述本地指纹库时,将所述一个或多个待去重指纹对应的待写入数据片删除;
第二去重步骤:当有一个或多个待去重指纹不存在于所述本地指纹库时,将所述一个或多个待去重指纹作为待处理指纹,并于共享指纹库中查找各个待处理指纹,所述共享数据库包括所有存储节点设备中已存储数据片的指纹,当在所述共享指纹库中查找到一个或多个待处理指纹时,将查找到的所述一个或多个待处理指纹对应的待写入数据片删除。
CN201910007367.9A 2019-01-04 2019-01-04 分布式存储***、存储节点设备和数据去重方法 Active CN109800218B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910007367.9A CN109800218B (zh) 2019-01-04 2019-01-04 分布式存储***、存储节点设备和数据去重方法
PCT/CN2019/118009 WO2020140622A1 (zh) 2019-01-04 2019-11-13 分布式存储***、存储节点设备和数据去重方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910007367.9A CN109800218B (zh) 2019-01-04 2019-01-04 分布式存储***、存储节点设备和数据去重方法

Publications (2)

Publication Number Publication Date
CN109800218A true CN109800218A (zh) 2019-05-24
CN109800218B CN109800218B (zh) 2024-04-09

Family

ID=66558525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910007367.9A Active CN109800218B (zh) 2019-01-04 2019-01-04 分布式存储***、存储节点设备和数据去重方法

Country Status (2)

Country Link
CN (1) CN109800218B (zh)
WO (1) WO2020140622A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110457305A (zh) * 2019-08-13 2019-11-15 腾讯科技(深圳)有限公司 数据去重方法、装置、设备及介质
WO2020140622A1 (zh) * 2019-01-04 2020-07-09 平安科技(深圳)有限公司 分布式存储***、存储节点设备和数据去重方法
CN111399768A (zh) * 2020-02-21 2020-07-10 苏州浪潮智能科技有限公司 一种数据的存储方法、***、设备及计算机可读存储介质
CN111459928A (zh) * 2020-03-27 2020-07-28 上海爱数信息技术股份有限公司 应用于集群范围内数据备份场景的数据去重方法及应用
CN111580755A (zh) * 2020-05-09 2020-08-25 杭州海康威视***技术有限公司 分布式数据处理***、分布式数据处理方法
WO2022048475A1 (zh) * 2020-09-03 2022-03-10 中兴通讯股份有限公司 数据去重方法、节点及计算机可读存储介质
CN114442931A (zh) * 2021-12-23 2022-05-06 天翼云科技有限公司 一种数据重删方法及***、电子设备、存储介质
CN117369731A (zh) * 2023-12-07 2024-01-09 苏州元脑智能科技有限公司 一种数据的缩减处理方法、装置、设备及介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495392B1 (en) * 2010-09-02 2013-07-23 Symantec Corporation Systems and methods for securely deduplicating data owned by multiple entities
CN103942292A (zh) * 2014-04-11 2014-07-23 华为技术有限公司 虚拟机镜像文件处理方法、装置及***
CN103944988A (zh) * 2014-04-22 2014-07-23 南京邮电大学 一种适用于云存储的重复数据删除***和方法
WO2015176249A1 (zh) * 2014-05-21 2015-11-26 华为技术有限公司 无线以太接口硬盘传输方法和相关设备及***
CN107391761A (zh) * 2017-08-28 2017-11-24 郑州云海信息技术有限公司 一种基于重复数据删除技术的数据管理方法及装置
US20180052846A1 (en) * 2016-08-22 2018-02-22 Kabushiki Kaisha Toshiba Data processing method, data processing device, storage system, and method for controlling storage system
CN108008918A (zh) * 2017-11-30 2018-05-08 联想(北京)有限公司 数据处理方法、存储节点及分布式存储***
CN108415669A (zh) * 2018-03-15 2018-08-17 深信服科技股份有限公司 存储***的数据去重方法及装置、计算机装置及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229420B (zh) * 2017-05-27 2020-05-26 苏州浪潮智能科技有限公司 数据存储方法、读取方法、删除方法和数据操作***
CN109800218B (zh) * 2019-01-04 2024-04-09 平安科技(深圳)有限公司 分布式存储***、存储节点设备和数据去重方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495392B1 (en) * 2010-09-02 2013-07-23 Symantec Corporation Systems and methods for securely deduplicating data owned by multiple entities
CN103942292A (zh) * 2014-04-11 2014-07-23 华为技术有限公司 虚拟机镜像文件处理方法、装置及***
CN103944988A (zh) * 2014-04-22 2014-07-23 南京邮电大学 一种适用于云存储的重复数据删除***和方法
WO2015176249A1 (zh) * 2014-05-21 2015-11-26 华为技术有限公司 无线以太接口硬盘传输方法和相关设备及***
US20180052846A1 (en) * 2016-08-22 2018-02-22 Kabushiki Kaisha Toshiba Data processing method, data processing device, storage system, and method for controlling storage system
CN107391761A (zh) * 2017-08-28 2017-11-24 郑州云海信息技术有限公司 一种基于重复数据删除技术的数据管理方法及装置
CN108008918A (zh) * 2017-11-30 2018-05-08 联想(北京)有限公司 数据处理方法、存储节点及分布式存储***
CN108415669A (zh) * 2018-03-15 2018-08-17 深信服科技股份有限公司 存储***的数据去重方法及装置、计算机装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡渝苹: "文件秒传***在云存储环境下的设计与实现", 计算机应用与软件, no. 04, 15 April 2016 (2016-04-15), pages 335 - 339 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020140622A1 (zh) * 2019-01-04 2020-07-09 平安科技(深圳)有限公司 分布式存储***、存储节点设备和数据去重方法
CN110457305A (zh) * 2019-08-13 2019-11-15 腾讯科技(深圳)有限公司 数据去重方法、装置、设备及介质
CN110457305B (zh) * 2019-08-13 2021-11-26 腾讯科技(深圳)有限公司 数据去重方法、装置、设备及介质
CN111399768A (zh) * 2020-02-21 2020-07-10 苏州浪潮智能科技有限公司 一种数据的存储方法、***、设备及计算机可读存储介质
CN111459928A (zh) * 2020-03-27 2020-07-28 上海爱数信息技术股份有限公司 应用于集群范围内数据备份场景的数据去重方法及应用
CN111459928B (zh) * 2020-03-27 2023-07-07 上海爱数信息技术股份有限公司 应用于集群范围内数据备份场景的数据去重方法及应用
CN111580755A (zh) * 2020-05-09 2020-08-25 杭州海康威视***技术有限公司 分布式数据处理***、分布式数据处理方法
CN111580755B (zh) * 2020-05-09 2022-07-05 杭州海康威视***技术有限公司 分布式数据处理***、分布式数据处理方法
WO2022048475A1 (zh) * 2020-09-03 2022-03-10 中兴通讯股份有限公司 数据去重方法、节点及计算机可读存储介质
CN114442931A (zh) * 2021-12-23 2022-05-06 天翼云科技有限公司 一种数据重删方法及***、电子设备、存储介质
CN117369731A (zh) * 2023-12-07 2024-01-09 苏州元脑智能科技有限公司 一种数据的缩减处理方法、装置、设备及介质
CN117369731B (zh) * 2023-12-07 2024-02-27 苏州元脑智能科技有限公司 一种数据的缩减处理方法、装置、设备及介质

Also Published As

Publication number Publication date
CN109800218B (zh) 2024-04-09
WO2020140622A1 (zh) 2020-07-09

Similar Documents

Publication Publication Date Title
CN109800218A (zh) 分布式存储***、存储节点设备和数据去重方法
Huang et al. X-Engine: An optimized storage engine for large-scale E-commerce transaction processing
CN105487818B (zh) 针对云存储***中重复冗余数据的高效去重方法
US11016955B2 (en) Deduplication index enabling scalability
JP4116413B2 (ja) プリフェッチアプライアンスサーバ
US9342574B2 (en) Distributed storage system and distributed storage method
Liao et al. Multi-dimensional index on hadoop distributed file system
US8972337B1 (en) Efficient query processing in columnar databases using bloom filters
CN103020315B (zh) 一种基于主从分布式文件***的海量小文件存储方法
US8799601B1 (en) Techniques for managing deduplication based on recently written extents
CN104850572A (zh) HBase非主键索引构建与查询方法及其***
US20160350302A1 (en) Dynamically splitting a range of a node in a distributed hash table
US10146684B2 (en) Distributed data parallel method for reclaiming space
US20080021902A1 (en) System and Method for Storage Area Network Search Appliance
CN103150394A (zh) 面向高性能计算的分布式文件***元数据管理方法
CN103139300A (zh) 一种基于重复数据删除的虚拟机镜像管理的优化方法
CN110321325A (zh) 文件索引节点查找方法、终端、服务器、***及存储介质
US9569477B1 (en) Managing scanning of databases in data storage systems
CN103218404A (zh) 一种基于关联特性的多维元数据管理方法和***
Merceedi et al. A comprehensive survey for hadoop distributed file system
CN110427347A (zh) 重复数据删除的方法、装置、存储节点及存储介质
US20140101158A1 (en) File Handling in a Hierarchical Storage System
CN107133334B (zh) 基于高带宽存储***的数据同步方法
CN116541427B (zh) 数据查询方法、装置、设备及存储介质
US10061725B2 (en) Scanning memory for de-duplication using RDMA

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