CN110245129B - 一种分布式全局数据去重方法和装置 - Google Patents
一种分布式全局数据去重方法和装置 Download PDFInfo
- Publication number
- CN110245129B CN110245129B CN201910327312.6A CN201910327312A CN110245129B CN 110245129 B CN110245129 B CN 110245129B CN 201910327312 A CN201910327312 A CN 201910327312A CN 110245129 B CN110245129 B CN 110245129B
- Authority
- CN
- China
- Prior art keywords
- target
- target data
- storage node
- fingerprint
- storage
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, 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)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种分布式全局数据去重方法和装置。本发明涉及大数据技术领域,该方法包括:接收目标数据写入请求,并确定目标数据对应的目标对象编号;根据目标对象编号确定对应的目标存储节点,向目标存储节点的缓存层写入目标数据;判断目标数据是否需要计算数据指纹;如果目标数据需要计算数据指纹,则计算目标数据的数据指纹,得到目标数据指纹;返回用于提示写入成功的提示信息,提示信息携带目标数据指纹;存储目标数据指纹。因此,本发明实施例提供的技术方案能够解决现有技术中分布式存储系统中存在大量冗余重复信息导致存储空间消耗大、存储效率低的问题。
Description
【技术领域】
本发明涉及大数据技术领域,尤其涉及一种分布式全局数据去重方法和装置。
【背景技术】
分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
目前数据量爆炸性增长,对现有的分布式存储系统的容量、能耗管理等方面都带来了新的挑战。分布式存储系统中存在大量的冗余重复信息,而冗余重复信息增加了存储空间的消耗,降低了存储效率。
【发明内容】
有鉴于此,本发明实施例提供了一种分布式全局数据去重方法和装置,用以解决现有技术中分布式存储系统中存在大量冗余重复信息导致存储空间消耗大、存储效率低的问题。
一方面,本发明实施例提供了一种分布式全局数据去重方法,所述方法应用于存储系统,所述方法包括:存储网关接收客户端的目标数据写入请求,按照第一预设规则确定所述目标数据对应的目标对象编号,并将所述目标数据与所述目标对象编号的对应关系存储在元数据列表;根据第二预设规则确定所述目标对象编号对应的目标存储节点,所述存储网关将所述目标数据写入所述目标存储节点的缓存层,所述第二预设规则为对象编号与存储节点之间的对应规则;判断所述目标数据是否需要计算数据指纹;如果所述目标数据需要计算数据指纹,则根据预设算法计算所述目标数据的数据指纹,得到目标数据指纹,所述目标数据指纹与所述目标数据之间存在一一对应关系;判断所述目标存储节点的存储层是否已存储所述目标数据指纹;如果所述目标存储节点的存储层没有存储所述目标数据指纹,则将所述目标数据指纹存储在所述目标存储节点的存储层,向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹;如果所述目标存储节点的存储层已存储所述目标数据指纹,则向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹,然后删除所述目标存储节点的缓存层中存储的所述目标数据,更新所述目标存储节点的存储层存储的所述目标数据指纹的引用计数;所述存储网关接收所述提示信息,并判断所述提示信息是否携带所述目标数据指纹;如果所述提示信息携带所述目标数据指纹,则将所述元数据列表中所述目标数据与所述目标对象编号的对应关系更新为所述目标数据、所述目标对象编号与所述目标数据指纹三者之间的对应关系,将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则。
进一步地,在所述将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则之后,所述方法还包括:接收所述客户端读取所述目标数据的请求;判断所述元数据列表中是否存在所述目标数据指纹;如果所述元数据列表中不存在所述目标数据指纹,则根据所述元数据列表中所述目标对象编号与所述第二预设规则确定所述目标存储节点;根据所述目标对象编号获取所述目标存储节点的缓存层中存储的所述目标数据;向所述客户端返回所述目标数据。
进一步地,在所述判断所述元数据列表中是否存在所述目标数据指纹之后,所述方法还包括:如果所述元数据列表中存在所述目标数据指纹,则根据所述第二预设规则,确定所述目标存储节点;查找所述目标存储节点的存储层中存储的所述目标数据指纹;根据所述目标数据指纹确定所述目标存储节点的缓存层存储的所述目标数据;向所述客户端返回所述目标数据。
进一步地,在所述将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则之后,所述方法还包括:接收第一目标数据的写入请求;按照所述第一预设规则确定对象编号1;判断所述元数据列表中所述对象编号1是否存在对应的数据指纹;如果所述对象编号1存在对应的数据指纹a,确定所述第一目标数据为更新写;根据所述第二预设规则确定存储节点A,并判断所述存储系统是写优先还是读优先;如果是读优先,则向所述存储节点A的缓存层写入所述第一目标数据;根据所述数据指纹a获取所述存储节点A的缓存层存储的所述目标数据,并将所述第一目标数据与所述目标数据进行合并,得到第二目标数据;根据所述预设算法计算所述第二目标数据的数据指纹,得到数据指纹a1;将所述数据指纹a1存储到所述存储节点A的存储层,将所述第二目标数据存储到所述存储节点A的缓存层,所述第二目标数据对应所述对象编号1和所述数据指纹a1;更新所述数据指纹a的引用计数;将所述元数据列表和所述第二预设规则中所述数据指纹a更新为所述数据指纹a1。
进一步地,在所述判断所述存储系统是写优先还是读优先之后,所述方法还包括:如果是写优先,向所述存储节点A的缓存层写入所述第一目标数据,并标记所述第一目标数据为脏数据;根据所述预设算法计算所述第一目标数据的数据指纹,得到数据指纹a2;将所述数据指纹a2存储到所述存储节点A的存储层,将所述第一目标数据存储到所述存储节点A的缓存层;从所述缓存层中获取所述数据指纹a对应的目标数据,将所述目标数据与所述第一目标数据进行合并,得到所述第二目标数据,所述第二目标数据对应所述对象编号1和所述数据指纹a2;更新所述存储节点A的存储层存储的所述数据指纹a的引用计数;将所述元数据列表和所述第二预设规则中所述数据指纹a更新为所述数据指纹a2。
一方面,本发明实施例提供了一种分布式全局数据去重方法,所述方法由客户端执行,所述方法包括:接收目标数据的写入请求,按照第一预设规则确定所述目标数据对应的目标对象编号,并将所述目标数据与所述目标对象编号的对应关系存储在元数据列表;根据第二预设规则确定所述目标对象编号对应的目标存储节点,所述第二预设规则为对象编号与存储节点之间的对应规则,所述目标存储节点部署在存储系统;向所述目标存储节点发送所述目标数据;接收所述目标存储节点返回的提示信息,并判断所述提示信息是否携带目标数据指纹,所述目标数据指纹是在所述目标存储节点根据所述目标数据生成的数据;如果所述提示信息携带所述目标数据指纹,则将所述元数据列表中所述目标数据与所述目标对象编号的对应关系更新为所述目标数据、所述目标对象编号与所述目标数据指纹三者之间的对应关系,将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则。
进一步地,在所述接收目标数据的写入请求之前,所述方法包括:按照预设值将所述客户端的每个磁盘镜像进行切片,得到多个分片;为所述多个分片的每个分片分配一个对象编号;按照所述第二预设规则,为所述每个对象编号分配存储节点。
一方面,本发明实施例提供了一种分布式全局数据去重方法,所述方法由存储系统执行,所述方法包括:接收客户端发送的目标数据,并将所述目标数据写入目标存储节点的缓存层;判断所述目标数据是否需要计算数据指纹;如果所述目标数据需要计算数据指纹,则根据预设算法计算所述目标数据的数据指纹,得到目标数据指纹,所述目标数据指纹与所述目标数据之间存在一一对应关系;判断所述目标存储节点的存储层是否已存储所述目标数据指纹;如果所述目标存储节点的存储层没有存储所述目标数据指纹,则将所述目标数据指纹存储到所述目标存储节点的存储层,向所述客户端返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹;如果所述目标存储节点的存储层已存储所述目标数据指纹,则向所述客户端返回用于提示写入成功的提示信息,所述提示信息携带目标数据指纹,然后删除所述目标存储节点的缓存层中存储的目标数据,更新所述目标存储节点的存储层存储的所述目标数据指纹的引用计数。
一方面,本发明实施例提供了一种分布式全局数据去重装置,所述装置包括:第一接收单元,用于存储网关接收客户端的目标数据写入请求,按照第一预设规则确定所述目标数据对应的目标对象编号,并将所述目标数据与所述目标对象编号的对应关系存储在元数据列表;第一确定单元,用于根据第二预设规则确定所述目标对象编号对应的目标存储节点,所述存储网关将所述目标数据写入所述目标存储节点的缓存层,所述第二预设规则为对象编号与存储节点之间的对应规则;第一判断单元,用于判断所述目标数据是否需要计算数据指纹;第一计算单元,用于如果所述目标数据需要计算数据指纹,则根据预设算法计算所述目标数据的数据指纹,得到目标数据指纹,所述目标数据指纹与所述目标数据之间存在一一对应关系;第二判断单元,用于判断所述目标存储节点的存储层是否已存储所述目标数据指纹;第一存储单元,用于如果所述目标存储节点的存储层没有存储所述目标数据指纹,则将所述目标数据指纹存储在所述目标存储节点的存储层,向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹;删除单元,用于如果所述目标存储节点的存储层已存储所述目标数据指纹,则向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹,然后删除所述目标存储节点的缓存层中存储的所述目标数据,更新所述目标存储节点的存储层存储的所述目标数据指纹的引用计数;第三判断单元,用于所述存储网关接收所述提示信息,并判断所述提示信息是否携带所述目标数据指纹;第一更新单元,用于如果所述提示信息携带所述目标数据指纹,则将所述元数据列表中所述目标数据与所述目标对象编号的对应关系更新为所述目标数据、所述目标对象编号与所述目标数据指纹三者之间的对应关系,将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则。
进一步地,所述装置还包括:第二接收单元,用于在所述第一更新单元将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则之后,接收所述客户端读取所述目标数据的请求;第四判断单元,用于判断所述元数据列表中是否存在所述目标数据指纹;第二确定单元,用于如果所述元数据列表中不存在所述目标数据指纹,则根据所述元数据列表中所述目标对象编号与所述第二预设规则确定所述目标存储节点;第二存储单元,用于根据所述目标对象编号获取所述目标存储节点的缓存层中存储的所述目标数据;第一返回单元,用于向所述客户端返回所述目标数据。
进一步地,所述装置还包括:第三确定单元,用于在所述第四判断单元判断所述元数据列表中是否存在所述目标数据指纹之后,如果所述元数据列表中存在所述目标数据指纹,则根据所述第二预设规则,确定所述目标存储节点;查找单元,用于查找所述目标存储节点的存储层中存储的所述目标数据指纹;第四确定单元,用于根据所述目标数据指纹确定所述目标存储节点的缓存层存储的所述目标数据;第二返回单元,用于向所述客户端返回所述目标数据。
进一步地,所述装置还包括:第三接收单元,用于在所述第一更新单元将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则之后,接收第一目标数据的写入请求;第五确定单元,用于按照所述第一预设规则确定对象编号1;第五判断单元,用于判断所述元数据列表中所述对象编号1是否存在对应的数据指纹;第六确定单元,用于如果所述对象编号1存在对应的数据指纹a,确定所述第一目标数据为更新写;第六判断单元,用于根据所述第二预设规则确定存储节点A,并判断所述存储系统是写优先还是读优先;写入单元,用于如果是读优先,则向所述存储节点A的缓存层写入所述第一目标数据;合并单元,用于根据所述数据指纹a获取所述存储节点A的缓存层存储的所述目标数据,并将所述第一目标数据与所述目标数据进行合并,得到第二目标数据;第二计算单元,用于根据所述预设算法计算所述第二目标数据的数据指纹,得到数据指纹a1;第三存储单元,用于将所述数据指纹a1存储到所述存储节点A的存储层,将所述第二目标数据存储到所述存储节点A的缓存层,所述第二目标数据对应所述对象编号1和所述数据指纹a1;第二更新单元,用于更新所述数据指纹a的引用计数;第三更新单元,用于将所述元数据列表和所述第二预设规则中所述数据指纹a更新为所述数据指纹a1。
进一步地,所述装置还包括:标记单元,用于在所述第六判断单元判断所述存储系统是写优先还是读优先之后,如果是写优先,向所述存储节点A的缓存层写入所述第一目标数据,并标记所述第一目标数据为脏数据;第三计算单元,用于根据所述预设算法计算所述第一目标数据的数据指纹,得到数据指纹a2;第四存储单元,用于将所述数据指纹a2存储到所述存储节点A的存储层,将所述第一目标数据存储到所述存储节点A的缓存层;获取单元,用于从所述缓存层中获取所述数据指纹a对应的目标数据,将所述目标数据与所述第一目标数据进行合并,得到所述第二目标数据,所述第二目标数据对应所述对象编号1和所述数据指纹a2;第四更新单元,用于更新所述存储节点A的存储层存储的所述数据指纹a的引用计数;第五更新单元,用于将所述元数据列表和所述第二预设规则中所述数据指纹a更新为所述数据指纹a2。
一方面,本发明实施例提供了一种分布式全局数据去重装置,所述装置包括:第一接收单元,用于接收目标数据的写入请求,按照第一预设规则确定所述目标数据对应的目标对象编号,并将所述目标数据与所述目标对象编号的对应关系存储在元数据列表;确定单元,用于根据第二预设规则确定所述目标对象编号对应的目标存储节点,所述第二预设规则为对象编号与存储节点之间的对应规则,所述目标存储节点部署在存储系统;发送单元,用于向所述目标存储节点发送所述目标数据;第二接收单元,用于接收所述目标存储节点返回的提示信息,并判断所述提示信息是否携带目标数据指纹,所述目标数据指纹是在所述目标存储节点根据所述目标数据生成的数据;更新单元,用于如果所述提示信息携带所述目标数据指纹,则将所述元数据列表中所述目标数据与所述目标对象编号的对应关系更新为所述目标数据、所述目标对象编号与所述目标数据指纹三者之间的对应关系,将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则。
进一步地,所述装置还包括:切分单元,用于在所述第一接收单元接收目标数据的写入请求之前,按照预设值将所述客户端的每个磁盘镜像进行切片,得到多个分片;第一分配单元,用于为所述多个分片的每个分片分配一个对象编号;第二分配单元,用于按照所述第二预设规则,为所述每个对象编号分配存储节点。
一方面,本发明实施例提供了一种分布式全局数据去重装置,所述装置包括:接收单元,用于接收客户端发送的目标数据,并将所述目标数据写入目标存储节点的缓存层;第一判断单元,用于判断所述目标数据是否需要计算数据指纹;计算单元,用于如果所述目标数据需要计算数据指纹,则根据预设算法计算所述目标数据的数据指纹,得到目标数据指纹,所述目标数据指纹与所述目标数据之间存在一一对应关系;第二判断单元,用于判断所述目标存储节点的存储层是否已存储所述目标数据指纹;存储单元,用于如果所述目标存储节点的存储层没有存储所述目标数据指纹,则将所述目标数据指纹存储到所述目标存储节点的存储层,向所述客户端返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹;删除单元,用于如果所述目标存储节点的存储层已存储所述目标数据指纹,则向所述客户端返回用于提示写入成功的提示信息,所述提示信息携带目标数据指纹,然后删除所述目标存储节点的缓存层中存储的目标数据,更新所述目标存储节点的存储层存储的所述目标数据指纹的引用计数。
一方面,本发明实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述的分布式全局数据去重方法。
一方面,本发明实施例提供了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时实现上述的分布式全局数据去重方法的步骤。
本方案中,通过写入的目标数据确定目标对象编号,根据目标对象编号确定目标存储节点,将目标数据写入目标存储节点的缓存层,并按照预设算法生成目标数据对应的目标数据指纹,通过目标数据对应分布式存储系统中的唯一存储节点,并且为目标数据生成具有唯一性的目标数据指纹,指示了目标数据在存储系统中的唯一性,如果目标存储节点的存储层已存储目标数据指纹,则删除目标存储节点的缓存层的目标数据,避免了现有技术中分布式存储系统中存在大量冗余重复信息导致存储空间消耗大、存储效率低的问题,降低了存储空间消耗,提高了存储系统的存储效率。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是根据本发明实施例的一种可选的分布式全局数据去重方法的流程图;
图2是根据本发明实施例的一种可选的分布式全局数据去重装置的示意图。
【具体实施方式】
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例1
本发明实施例1提供了一种分布式全局数据去重方法,该方法应用于存储系统,如图1所示,该方法包括以下步骤:
步骤S102,存储网关接收客户端的目标数据写入请求,按照第一预设规则确定目标数据对应的目标对象编号,并将目标数据与目标对象编号的对应关系存储在元数据列表。
步骤S104,根据第二预设规则确定目标对象编号对应的目标存储节点,存储网关将目标数据写入目标存储节点的缓存层,第二预设规则为对象编号与存储节点之间的对应规则。
步骤S106,判断目标数据是否需要计算数据指纹。
步骤S108,如果目标数据需要计算数据指纹,则根据预设算法计算目标数据的数据指纹,得到目标数据指纹,目标数据指纹与目标数据之间存在一一对应关系。
步骤S110,判断目标存储节点的存储层是否已存储目标数据指纹。
步骤S112,如果目标存储节点的存储层没有存储目标数据指纹,则将目标数据指纹存储在目标存储节点的存储层,向存储网关返回用于提示写入成功的提示信息,提示信息携带目标数据指纹。
步骤S114,如果目标存储节点的存储层已存储目标数据指纹,则向存储网关返回用于提示写入成功的提示信息,提示信息携带目标数据指纹,然后删除目标存储节点的缓存层中存储的目标数据,更新目标存储节点的存储层存储的目标数据指纹的引用计数。
步骤S116,存储网关接收提示信息,并判断提示信息是否携带目标数据指纹。
步骤S118,如果提示信息携带目标数据指纹,则将元数据列表中目标数据与目标对象编号的对应关系更新为目标数据、目标对象编号与目标数据指纹三者之间的对应关系,将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则。
预设算法可以是MD5消息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
目标数据指纹是按照MD5消息摘要算法计算得到的值。
第一预设规则为写入的数据与对象编号之间对应的规则。
如果存储层存储的数据指纹,每增加一个客户端对象引用,则数据指纹的引用计数需要加1的操作;如果存储层存储的数据指纹,每减少一个客户端对象引用,则数据指纹的引用计数需要减1的操作,如果数据指纹的引用计数的值是0,表示存储层存储的数据指纹没有被客户端对象引用,则可以删除存储层存储的数据指纹,将引用计数为0的数据指纹对应缓存层存储的数据作为垃圾数据回收,空闲出的空间连接到空闲链表,以备循环使用。
如果目标数据是重复数据,则需要在目标存储节点的缓存层删除目标数据,并将客户端或者存储系统中存储的目标对象编号的对应关系更新为目标对象编号和目标数据指纹之间的对应关系,方便以后访问查找目标数据,目标存储节点的缓存层存储的是目标数据,目标存储节点的存储层存储的是目标数据指纹及目标数据指纹的引用计数。
将存储系统中缓存层的重复数据删除,避免了冗余重复数据增加存储空间消耗问题,提高了存储空间的存储效率。
本方案中,通过写入的目标数据确定目标对象编号,根据目标对象编号确定目标存储节点,将目标数据写入目标存储节点的缓存层,并按照预设算法生成目标数据对应的目标数据指纹,通过目标数据对应分布式存储系统中的唯一存储节点,并且为目标数据生成具有唯一性的目标数据指纹,指示了目标数据在存储系统中的唯一性,如果目标存储节点的存储层已存储目标数据指纹,则删除目标存储节点的缓存层的目标数据,避免了现有技术中分布式存储系统中存在大量冗余重复信息导致存储空间消耗大、存储效率低的问题,降低了存储空间消耗,提高了存储系统的存储效率。
可选地,在将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则之后,方法还包括:接收客户端读取目标数据的请求;判断元数据列表中是否存在目标数据指纹;如果元数据列表中不存在目标数据指纹,则根据元数据列表中目标对象编号与第二预设规则确定目标存储节点;根据目标对象编号获取目标存储节点的缓存层中存储的目标数据;向客户端返回目标数据。
目标数据指纹和目标对象编号是目标数据的元数据。
元数据又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
可选地,在判断元数据列表中是否存在目标数据指纹之后,方法还包括:如果元数据列表中存在目标数据指纹,则根据第二预设规则,确定目标存储节点;查找目标存储节点的存储层中存储的目标数据指纹;根据目标数据指纹确定目标存储节点的缓存层存储的目标数据;向客户端返回目标数据。
在读取目标数据时,如果获取到目标数据指纹,则根据目标数据指纹查找目标数据,否则根据目标对象编号查找目标数据,两种方法都可以查找到目标数据。
可选地,在将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则之后,方法还包括:接收第一目标数据的写入请求;按照第一预设规则确定对象编号1;判断元数据列表中对象编号1是否存在对应的数据指纹;如果对象编号1存在对应的数据指纹a,确定第一目标数据为更新写;根据第二预设规则确定存储节点A,并判断存储系统是写优先还是读优先;如果是读优先,则向存储节点A的缓存层写入第一目标数据;根据数据指纹a获取存储节点A的缓存层存储的目标数据,并将第一目标数据与目标数据进行合并,得到第二目标数据;根据预设算法计算第二目标数据的数据指纹,得到数据指纹a1;将数据指纹a1存储到存储节点A的存储层,将第二目标数据存储到存储节点A的缓存层,第二目标数据对应对象编号1和数据指纹a1;更新数据指纹a的引用计数;将元数据列表和第二预设规则中数据指纹a更新为数据指纹a1。
可选地,在判断存储系统是写优先还是读优先之后,方法还包括:如果是写优先,向存储节点A的缓存层写入第一目标数据,并标记第一目标数据为脏数据;根据预设算法计算第一目标数据的数据指纹,得到数据指纹a2;将数据指纹a2存储到存储节点A的存储层,将第一目标数据存储到存储节点A的缓存层;从缓存层中获取数据指纹a对应的目标数据,将目标数据与第一目标数据进行合并,得到第二目标数据,第二目标数据对应对象编号1和数据指纹a2;更新存储节点A的存储层存储的数据指纹a的引用计数;将元数据列表和第二预设规则中数据指纹a更新为数据指纹a2。
客户端发起写请求,如果是更新写,则在存储节点的缓存层存储更新后的数据,在存储节点的存储层存储数据指纹a1,更新之前的数据对应的数据指纹a的引用计数需要减1的操作。
本发明实施例1提供了一种分布式全局数据去重装置,该装置用于执行实施例1提供的分布式全局数据去重方法,该装置部署在存储系统中,如图2所示,该装置包括:第一接收单元10、第一确定单元20、第一判断单元30、第一计算单元40、第二判断单元50、第一存储单元60、删除单元70、第三判断单元80、第一更新单元90。
第一接收单元10,用于存储网关接收客户端的目标数据写入请求,按照第一预设规则确定目标数据对应的目标对象编号,并将目标数据与目标对象编号的对应关系存储在元数据列表。
第一确定单元20,用于根据第二预设规则确定目标对象编号对应的目标存储节点,存储网关将目标数据写入目标存储节点的缓存层,第二预设规则为对象编号与存储节点之间的对应规则。
第一判断单元30,用于判断目标数据是否需要计算数据指纹。
第一计算单元40,用于如果目标数据需要计算数据指纹,则根据预设算法计算目标数据的数据指纹,得到目标数据指纹,目标数据指纹与目标数据之间存在一一对应关系。
第二判断单元50,用于判断目标存储节点的存储层是否已存储目标数据指纹。
第一存储单元60,用于如果目标存储节点的存储层没有存储目标数据指纹,则将目标数据指纹存储在目标存储节点的存储层,向存储网关返回用于提示写入成功的提示信息,提示信息携带目标数据指纹。
删除单元70,用于如果目标存储节点的存储层已存储目标数据指纹,则向存储网关返回用于提示写入成功的提示信息,提示信息携带目标数据指纹,然后删除目标存储节点的缓存层中存储的目标数据,更新目标存储节点的存储层存储的目标数据指纹的引用计数。
第三判断单元80,用于存储网关接收提示信息,并判断提示信息是否携带目标数据指纹。
第一更新单元90,用于如果提示信息携带目标数据指纹,则将元数据列表中目标数据与目标对象编号的对应关系更新为目标数据、目标对象编号与目标数据指纹三者之间的对应关系,将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则。
预设算法可以是MD5消息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
目标数据指纹是按照MD5消息摘要算法计算得到的值。
第一预设规则为写入的数据与对象编号之间对应的规则。
如果存储层存储的数据指纹,每增加一个客户端对象引用,则数据指纹的引用计数需要加1的操作;如果存储层存储的数据指纹,每减少一个客户端对象引用,则数据指纹的引用计数需要减1的操作,如果数据指纹的引用计数的值是0,表示存储层存储的数据指纹没有被客户端对象引用,则可以删除存储层存储的数据指纹,将引用计数为0的数据指纹对应缓存层存储的数据作为垃圾数据回收,空闲出的空间连接到空闲链表,以备循环使用。
如果目标数据是重复数据,则需要在目标存储节点的缓存层删除目标数据,并将客户端或者存储系统中存储的目标对象编号的对应关系更新为目标对象编号和目标数据指纹之间的对应关系,方便以后访问查找目标数据,目标存储节点的缓存层存储的是目标数据,目标存储节点的存储层存储的是目标数据指纹及目标数据指纹的引用计数。
将存储系统中缓存层的重复数据删除,避免了冗余重复数据增加存储空间消耗问题,提高了存储空间的存储效率。
本方案中,通过写入的目标数据确定目标对象编号,根据目标对象编号确定目标存储节点,将目标数据写入目标存储节点的缓存层,并按照预设算法生成目标数据对应的目标数据指纹,通过目标数据对应分布式存储系统中的唯一存储节点,并且为目标数据生成具有唯一性的目标数据指纹,指示了目标数据在存储系统中的唯一性,如果目标存储节点的存储层已存储目标数据指纹,则删除目标存储节点的缓存层的目标数据,避免了现有技术中分布式存储系统中存在大量冗余重复信息导致存储空间消耗大、存储效率低的问题,降低了存储空间消耗,提高了存储系统的存储效率。
可选地,装置还包括:第二接收单元,用于在第一更新单元90将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则之后,接收客户端读取目标数据的请求;第四判断单元,用于判断元数据列表中是否存在目标数据指纹;第二确定单元,用于如果元数据列表中不存在目标数据指纹,则根据元数据列表中目标对象编号与第二预设规则确定目标存储节点;第二存储单元,用于根据目标对象编号获取目标存储节点的缓存层中存储的目标数据;第一返回单元,用于向客户端返回目标数据。
目标数据指纹和目标对象编号是目标数据的元数据。
元数据又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
进一步地,装置还包括:第三确定单元,用于在第四判断单元判断元数据列表中是否存在目标数据指纹之后,如果元数据列表中存在目标数据指纹,则根据第二预设规则,确定目标存储节点;查找单元,用于查找目标存储节点的存储层中存储的目标数据指纹;第四确定单元,用于根据目标数据指纹确定目标存储节点的缓存层存储的目标数据;第二返回单元,用于向客户端返回目标数据。
在读取目标数据时,如果获取到目标数据指纹,则根据目标数据指纹查找目标数据,否则根据目标对象编号查找目标数据,两种方法都可以查找到目标数据。
可选地,装置还包括:第三接收单元,用于在第一更新单元90将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则之后,接收第一目标数据的写入请求;第五确定单元,用于按照第一预设规则确定对象编号1;第五判断单元,用于判断元数据列表中对象编号1是否存在对应的数据指纹;第六确定单元,用于如果对象编号1存在对应的数据指纹a,确定第一目标数据为更新写;第六判断单元,用于根据第二预设规则确定存储节点A,并判断存储系统是写优先还是读优先;写入单元,用于如果是读优先,则向存储节点A的缓存层写入第一目标数据;合并单元,用于根据数据指纹a获取存储节点A的缓存层存储的目标数据,并将第一目标数据与目标数据进行合并,得到第二目标数据;第二计算单元,用于根据预设算法计算第二目标数据的数据指纹,得到数据指纹a1;第三存储单元,用于将数据指纹a1存储到存储节点A的存储层,将第二目标数据存储到存储节点A的缓存层,第二目标数据对应对象编号1和数据指纹a1;第二更新单元,用于更新数据指纹a的引用计数;第三更新单元,用于将元数据列表和第二预设规则中数据指纹a更新为数据指纹a1。
可选地,装置还包括:标记单元,用于在第六判断单元判断存储系统是写优先还是读优先之后,如果是写优先,向存储节点A的缓存层写入第一目标数据,并标记第一目标数据为脏数据;第三计算单元,用于根据预设算法计算第一目标数据的数据指纹,得到数据指纹a2;第四存储单元,用于将数据指纹a2存储到存储节点A的存储层,将第一目标数据存储到存储节点A的缓存层;获取单元,用于从缓存层中获取数据指纹a对应的目标数据,将目标数据与第一目标数据进行合并,得到第二目标数据,第二目标数据对应对象编号1和数据指纹a2;第四更新单元,用于更新存储节点A的存储层存储的数据指纹a的引用计数;第五更新单元,用于将元数据列表和第二预设规则中数据指纹a更新为数据指纹a2。
客户端发起写请求,如果是更新写,则在存储节点的缓存层存储更新后的数据,在存储节点的存储层存储数据指纹a1,更新之前的数据对应的数据指纹a的引用计数需要减1的操作。
本发明实施例1提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行实施例1提供的分布式全局数据去重方法。
本发明实施例1提供了一种存储系统,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现实施例1提供的分布式全局数据去重方法的步骤。
实施例2
本发明实施例2提供了一种分布式全局数据去重方法,该方法由客户端和存储系统共同执行,其中,客户端执行步骤S202至步骤S210;存储系统执行步骤S302至步骤S312。
步骤S202,客户端接收目标数据的写入请求,按照第一预设规则确定目标数据对应的目标对象编号,并将目标数据与目标对象编号的对应关系存储在元数据列表。
步骤S204,客户端根据第二预设规则确定目标对象编号对应的目标存储节点,第二预设规则为对象编号与存储节点之间的对应规则,目标存储节点部署在存储系统。
步骤S206,客户端向目标存储节点发送目标数据。
步骤S208,客户端接收目标存储节点返回的提示信息,并判断提示信息是否携带目标数据指纹,目标数据指纹是在目标存储节点根据目标数据生成的数据。
步骤S210,如果提示信息携带目标数据指纹,则客户端将元数据列表中目标数据与目标对象编号的对应关系更新为目标数据、目标对象编号与目标数据指纹三者之间的对应关系,将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则。
目标数据指纹和目标对象编号是目标数据的元数据。
元数据又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
本方案中,通过写入的目标数据确定目标对象编号,根据目标对象编号确定目标存储节点,将目标数据写入目标存储节点的缓存层,并按照预设算法生成目标数据对应的目标数据指纹,通过目标数据对应分布式存储系统中的唯一存储节点,并且为目标数据生成具有唯一性的目标数据指纹,指示了目标数据在存储系统中的唯一性,如果目标存储节点的存储层已存储目标数据指纹,则删除目标存储节点的缓存层的目标数据,避免了现有技术中分布式存储系统中存在大量冗余重复信息导致存储空间消耗大、存储效率低的问题,降低了存储空间消耗,提高了存储系统的存储效率。
可选地,客户端还执行以下步骤:在接收目标数据的写入请求之前,按照预设值将客户端的每个磁盘镜像进行切片,得到多个分片;为多个分片的每个分片分配一个对象编号;按照第二预设规则,为每个对象编号分配存储节点。
其中,对客户端的磁盘镜像进行切片的预设值,可以按照应用场景不同设置为8K到64M的大小。
如果多个分片的对象编号分别为对象1、对象2、…、对象n,按照第二预设规则将多个对象编号分布到多个存储节点,映射关系可以为:对象1~对象10分布在存储节点A上,对象11~对象20分布在存储节点B上。为客户端的每个分片指定存储系统的唯一存储节点,将写入数据存储在指定存储节点,方便存储系统的管理和数据的查询,提高了存储系统的能耗管理效率。
本发明实施例2提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制客户端执行上述步骤S202至步骤S210。
本发明实施例2提供了一种客户端,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现上述步骤S202至步骤S210。
步骤S302,存储系统接收客户端发送的目标数据,并将目标数据写入目标存储节点的缓存层。
步骤S304,存储系统判断目标数据是否需要计算数据指纹。
步骤S306,如果目标数据需要计算数据指纹,则存储系统根据预设算法计算目标数据的数据指纹,得到目标数据指纹,目标数据指纹与目标数据之间存在一一对应关系。
步骤S308,存储系统判断目标存储节点的存储层是否已存储目标数据指纹。
步骤S310,如果目标存储节点的存储层没有存储目标数据指纹,则存储系统将目标数据指纹存储到目标存储节点的存储层,向客户端返回用于提示写入成功的提示信息,提示信息携带目标数据指纹。
步骤S312,如果目标存储节点的存储层已存储目标数据指纹,则存储系统向客户端返回用于提示写入成功的提示信息,提示信息携带目标数据指纹,然后删除目标存储节点的缓存层中存储的目标数据,更新目标存储节点的存储层存储的目标数据指纹的引用计数。
预设算法可以是MD5消息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
目标数据指纹是按照MD5消息摘要算法计算得到的值。
如果存储层存储的数据指纹,每增加一个客户端对象引用,则数据指纹的引用计数需要加1的操作;如果存储层存储的数据指纹,每减少一个客户端对象引用,则数据指纹的引用计数需要减1的操作,如果数据指纹的引用计数的值是0,表示存储层存储的数据指纹没有被客户端对象引用,则可以删除存储层存储的数据指纹,将引用计数为0的数据指纹对应缓存层存储的数据作为垃圾数据回收,空闲出的空间连接到空闲链表,以备循环使用。
如果目标数据是重复数据,则需要在目标存储节点的缓存层删除目标数据,并将客户端或者存储系统中存储的目标对象编号的对应关系更新为目标对象编号和目标数据指纹之间的对应关系,方便以后访问查找目标数据,目标存储节点的缓存层存储的是目标数据,目标存储节点的存储层存储的是目标数据指纹及目标数据指纹的引用计数。
将存储系统中缓存层的重复数据删除,避免了冗余重复数据增加存储空间消耗问题,提高了存储空间的存储效率。
本方案中,通过写入的目标数据确定目标对象编号,根据目标对象编号确定目标存储节点,将目标数据写入目标存储节点的缓存层,并按照预设算法生成目标数据对应的目标数据指纹,通过目标数据对应分布式存储系统中的唯一存储节点,并且为目标数据生成具有唯一性的目标数据指纹,指示了目标数据在存储系统中的唯一性,如果目标存储节点的存储层已存储目标数据指纹,则删除目标存储节点的缓存层的目标数据,避免了现有技术中分布式存储系统中存在大量冗余重复信息导致存储空间消耗大、存储效率低的问题,降低了存储空间消耗,提高了存储系统的存储效率。
本发明实施例2提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储系统执行上述步骤S302至步骤S312。
本发明实施例2提供了一种存储系统,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现上述步骤S302至步骤S312。
本发明实施例2提供了一种分布式全局数据去重装置,该装置用于执行实施例2提供的分布式全局数据去重方法,该装置部署在客户端和存储系统,其中,客户端中部署了以下单元:第一接收单元10、确定单元20、发送单元30、第二接收单元40、更新单元50;存储系统中部署了以下单元:接收单元11、第一判断单元21、计算单元31、第二判断单元41、存储单元51、删除单元61。
第一接收单元10,用于接收目标数据的写入请求,按照第一预设规则确定目标数据对应的目标对象编号,并将目标数据与目标对象编号的对应关系存储在元数据列表。
确定单元20,用于根据第二预设规则确定目标对象编号对应的目标存储节点,第二预设规则为对象编号与存储节点之间的对应规则,目标存储节点部署在存储系统。
发送单元30,用于向目标存储节点发送目标数据。
第二接收单元40,用于接收目标存储节点返回的提示信息,并判断提示信息是否携带目标数据指纹,目标数据指纹是在目标存储节点根据目标数据生成的数据。
更新单元50,用于如果提示信息携带目标数据指纹,则将元数据列表中目标数据与目标对象编号的对应关系更新为目标数据、目标对象编号与目标数据指纹三者之间的对应关系,将第二预设规则中目标对象编号与目标存储节点的对应规则更新为目标对象编号、目标数据指纹与目标存储节点三者之间的对应规则。
目标数据指纹和目标对象编号是目标数据的元数据。
元数据又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
可选地,客户端中还部署了:切分单元、第一分配单元。切分单元,用于在第一接收单元10接收目标数据的写入请求之前,按照预设值将客户端的每个磁盘镜像进行切片,得到多个分片;第一分配单元,用于为多个分片的每个分片分配一个对象编号;第二分配单元,用于按照第二预设规则,为每个对象编号分配存储节点。
其中,对客户端的磁盘镜像进行切片的预设值,可以按照应用场景不同设置为8K到64M的大小。
如果多个分片的对象编号分别为对象1、对象2、…、对象n,按照第二预设规则将多个对象编号分布到多个存储节点,映射关系可以为:对象1~对象10分布在存储节点A上,对象11~对象20分布在存储节点B上。为客户端的每个分片指定存储系统的唯一存储节点,将写入数据存储在指定存储节点,方便存储系统的管理和数据的查询,提高了存储系统的能耗管理效率。
接收单元11,用于接收客户端发送的目标数据,并将目标数据写入目标存储节点的缓存层。
第一判断单元21,用于判断目标数据是否需要计算数据指纹。
计算单元31,用于如果目标数据需要计算数据指纹,则根据预设算法计算目标数据的数据指纹,得到目标数据指纹,目标数据指纹与目标数据之间存在一一对应关系。
第二判断单元41,用于判断目标存储节点的存储层是否已存储目标数据指纹。
存储单元51,用于如果目标存储节点的存储层没有存储目标数据指纹,则将目标数据指纹存储到目标存储节点的存储层,向客户端返回用于提示写入成功的提示信息,提示信息携带目标数据指纹。
删除单元61,用于如果目标存储节点的存储层已存储目标数据指纹,则向客户端返回用于提示写入成功的提示信息,提示信息携带目标数据指纹,然后删除目标存储节点的缓存层中存储的目标数据,更新目标存储节点的存储层存储的目标数据指纹的引用计数。
预设算法可以是MD5消息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
目标数据指纹是按照MD5消息摘要算法计算得到的值。
如果存储层存储的数据指纹,每增加一个客户端对象引用,则数据指纹的引用计数需要加1的操作;如果存储层存储的数据指纹,每减少一个客户端对象引用,则数据指纹的引用计数需要减1的操作,如果数据指纹的引用计数的值是0,表示存储层存储的数据指纹没有被客户端对象引用,则可以删除存储层存储的数据指纹,将引用计数为0的数据指纹对应缓存层存储的数据作为垃圾数据回收,空闲出的空间连接到空闲链表,以备循环使用。
如果目标数据是重复数据,则需要在目标存储节点的缓存层删除目标数据,并将客户端或者存储系统中存储的目标对象编号的对应关系更新为目标对象编号和目标数据指纹之间的对应关系,方便以后访问查找目标数据,目标存储节点的缓存层存储的是目标数据,目标存储节点的存储层存储的是目标数据指纹及目标数据指纹的引用计数。
将存储系统中缓存层的重复数据删除,避免了冗余重复数据增加存储空间消耗问题,提高了存储空间的存储效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (9)
1.一种分布式全局数据去重方法,其特征在于,所述方法应用于存储系统,所述方法包括:
存储网关接收客户端的目标数据写入请求,按照第一预设规则确定所述目标数据对应的目标对象编号,并将所述目标数据与所述目标对象编号的对应关系存储在元数据列表;
根据第二预设规则确定所述目标对象编号对应的目标存储节点,所述存储网关将所述目标数据写入所述目标存储节点的缓存层,所述第二预设规则为对象编号与存储节点之间的对应规则;
判断所述目标数据是否需要计算数据指纹;
如果所述目标数据需要计算数据指纹,则根据预设算法计算所述目标数据的数据指纹,得到目标数据指纹,所述目标数据指纹与所述目标数据之间存在一一对应关系;
判断所述目标存储节点的存储层是否已存储所述目标数据指纹;
如果所述目标存储节点的存储层没有存储所述目标数据指纹,则将所述目标数据指纹存储在所述目标存储节点的存储层,向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹;
如果所述目标存储节点的存储层已存储所述目标数据指纹,则向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹,然后删除所述目标存储节点的缓存层中存储的所述目标数据,更新所述目标存储节点的存储层存储的所述目标数据指纹的引用计数;
所述存储网关接收所述提示信息,并判断所述提示信息是否携带所述目标数据指纹;
如果所述提示信息携带所述目标数据指纹,则将所述元数据列表中所述目标数据与所述目标对象编号的对应关系更新为所述目标数据、所述目标对象编号与所述目标数据指纹三者之间的对应关系,将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则。
2.根据权利要求1所述的方法,其特征在于,在所述将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则之后,所述方法还包括:
接收所述客户端读取所述目标数据的请求;
判断所述元数据列表中是否存在所述目标数据指纹;
如果所述元数据列表中不存在所述目标数据指纹,则根据所述元数据列表中所述目标对象编号与所述第二预设规则确定所述目标存储节点;
根据所述目标对象编号获取所述目标存储节点的缓存层中存储的所述目标数据;
向所述客户端返回所述目标数据。
3.根据权利要求2所述的方法,其特征在于,在所述判断所述元数据列表中是否存在所述目标数据指纹之后,所述方法还包括:
如果所述元数据列表中存在所述目标数据指纹,则根据所述第二预设规则,确定所述目标存储节点;
查找所述目标存储节点的存储层中存储的所述目标数据指纹;
根据所述目标数据指纹确定所述目标存储节点的缓存层存储的所述目标数据;
向所述客户端返回所述目标数据。
4.根据权利要求1至3任一项所述的方法,其特征在于,在所述将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则之后,所述方法还包括:
接收第一目标数据的写入请求;
按照所述第一预设规则确定对象编号1;
判断所述元数据列表中所述对象编号1是否存在对应的数据指纹;
如果所述对象编号1存在对应的数据指纹a,确定所述第一目标数据为更新写;
根据所述第二预设规则确定存储节点A,并判断所述存储系统是写优先还是读优先;
如果是读优先,则向所述存储节点A的缓存层写入所述第一目标数据;
根据所述数据指纹a获取所述存储节点A的缓存层存储的所述目标数据,并将所述第一目标数据与所述目标数据进行合并,得到第二目标数据;
根据所述预设算法计算所述第二目标数据的数据指纹,得到数据指纹a1;
将所述数据指纹a1存储到所述存储节点A的存储层,将所述第二目标数据存储到所述存储节点A的缓存层,所述第二目标数据对应所述对象编号1和所述数据指纹a1;
更新所述数据指纹a的引用计数;
将所述元数据列表和所述第二预设规则中所述数据指纹a更新为所述数据指纹a1。
5.根据权利要求4所述的方法,其特征在于,在所述判断所述存储系统是写优先还是读优先之后,所述方法还包括:
如果是写优先,向所述存储节点A的缓存层写入所述第一目标数据,并标记所述第一目标数据为脏数据;
根据所述预设算法计算所述第一目标数据的数据指纹,得到数据指纹a2;
将所述数据指纹a2存储到所述存储节点A的存储层,将所述第一目标数据存储到所述存储节点A的缓存层;
从所述缓存层中获取所述数据指纹a对应的目标数据,将所述目标数据与所述第一目标数据进行合并,得到所述第二目标数据,所述第二目标数据对应所述对象编号1和所述数据指纹a2;
更新所述存储节点A的存储层存储的所述数据指纹a的引用计数;
将所述元数据列表和所述第二预设规则中所述数据指纹a更新为所述数据指纹a2。
6.一种分布式全局数据去重方法,其特征在于,所述方法由客户端与存储系统共同执行,所述方法包括:
客户端接收目标数据的写入请求,按照第一预设规则确定所述目标数据对应的目标对象编号,并将所述目标数据与所述目标对象编号的对应关系存储在元数据列表;存储系统接收客户端发送的目标数据,并将所述目标数据写入目标存储节点的缓存层;客户端根据第二预设规则确定所述目标对象编号对应的目标存储节点,所述第二预设规则为对象编号与存储节点之间的对应规则,所述目标存储节点部署在存储系统;
存储系统判断目标数据是否需要计算数据指纹;如果所述目标数据需要计算数据指纹,则根据预设算法计算所述目标数据的数据指纹,得到目标数据指纹,所述目标数据指纹与所述目标数据之间存在一一对应关系;
存储系统判断所述目标存储节点的存储层是否已存储所述目标数据指纹;
如果所述目标存储节点的存储层没有存储所述目标数据指纹,客户端向所述目标存储节点发送所述目标数据;存储系统将所述目标数据指纹存储到所述目标存储节点的存储层,向所述客户端返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹;
如果所述目标存储节点的存储层已存储所述目标数据指纹,则向所述客户端返回用于提示写入成功的提示信息,所述提示信息携带目标数据指纹,然后删除所述目标存储节点的缓存层中存储的目标数据,更新所述目标存储节点的存储层存储的所述目标数据指纹的引用计数;
客户端接收所述目标存储节点返回的提示信息,并判断所述提示信息是否携带目标数据指纹,所述目标数据指纹是在所述目标存储节点根据所述目标数据生成的数据;
如果所述提示信息携带所述目标数据指纹,则客户端将所述元数据列表中所述目标数据与所述目标对象编号的对应关系更新为所述目标数据、所述目标对象编号与所述目标数据指纹三者之间的对应关系,将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则。
7.根据权利要求6所述的方法,其特征在于,在所述接收目标数据的写入请求之前,所述方法包括:
客户端按照预设值将所述客户端的每个磁盘镜像进行切片,得到多个分片;
客户端为所述多个分片的每个分片分配一个对象编号;
客户端按照所述第二预设规则,为所述每个对象编号分配存储节点。
8.一种分布式全局数据去重装置,其特征在于,所述装置包括:
第一接收单元,用于存储网关接收客户端的目标数据写入请求,按照第一预设规则确定所述目标数据对应的目标对象编号,并将所述目标数据与所述目标对象编号的对应关系存储在元数据列表;
第一确定单元,用于根据第二预设规则确定所述目标对象编号对应的目标存储节点,所述存储网关将所述目标数据写入所述目标存储节点的缓存层,所述第二预设规则为对象编号与存储节点之间的对应规则;
第一判断单元,用于判断所述目标数据是否需要计算数据指纹;
第一计算单元,用于如果所述目标数据需要计算数据指纹,则根据预设算法计算所述目标数据的数据指纹,得到目标数据指纹,所述目标数据指纹与所述目标数据之间存在一一对应关系;
第二判断单元,用于判断所述目标存储节点的存储层是否已存储所述目标数据指纹;
第一存储单元,用于如果所述目标存储节点的存储层没有存储所述目标数据指纹,则将所述目标数据指纹存储在所述目标存储节点的存储层,向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹;
删除单元,用于如果所述目标存储节点的存储层已存储所述目标数据指纹,则向所述存储网关返回用于提示写入成功的提示信息,所述提示信息携带所述目标数据指纹,然后删除所述目标存储节点的缓存层中存储的所述目标数据,更新所述目标存储节点的存储层存储的所述目标数据指纹的引用计数;
第三判断单元,用于所述存储网关接收所述提示信息,并判断所述提示信息是否携带所述目标数据指纹;
第一更新单元,用于如果所述提示信息携带所述目标数据指纹,则将所述元数据列表中所述目标数据与所述目标对象编号的对应关系更新为所述目标数据、所述目标对象编号与所述目标数据指纹三者之间的对应关系,将所述第二预设规则中所述目标对象编号与所述目标存储节点的对应规则更新为所述目标对象编号、所述目标数据指纹与所述目标存储节点三者之间的对应规则。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至5中任意一项所述的分布式全局数据去重方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327312.6A CN110245129B (zh) | 2019-04-23 | 2019-04-23 | 一种分布式全局数据去重方法和装置 |
PCT/CN2019/104330 WO2020215580A1 (zh) | 2019-04-23 | 2019-09-04 | 一种分布式全局数据去重方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327312.6A CN110245129B (zh) | 2019-04-23 | 2019-04-23 | 一种分布式全局数据去重方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110245129A CN110245129A (zh) | 2019-09-17 |
CN110245129B true CN110245129B (zh) | 2022-05-13 |
Family
ID=67883298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910327312.6A Active CN110245129B (zh) | 2019-04-23 | 2019-04-23 | 一种分布式全局数据去重方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110245129B (zh) |
WO (1) | WO2020215580A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090620B (zh) * | 2019-12-06 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种文件存储方法、装置、设备及可读存储介质 |
CN114138756B (zh) * | 2020-09-03 | 2023-03-24 | 金篆信科有限责任公司 | 数据去重方法、节点及计算机可读存储介质 |
CN116166179A (zh) * | 2021-11-25 | 2023-05-26 | 华为技术有限公司 | 数据存储系统、智能网卡及计算节点 |
CN114675783B (zh) * | 2022-03-25 | 2024-06-21 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、系统、设备以及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156380A (zh) * | 2014-03-04 | 2014-11-19 | 深圳信息职业技术学院 | 一种分布式存储器哈希索引方法及系统 |
CN107506150A (zh) * | 2017-08-30 | 2017-12-22 | 郑州云海信息技术有限公司 | 分布式存储装置、重删、写、删除、读取方法以及系统 |
CN109101365A (zh) * | 2018-08-01 | 2018-12-28 | 南京壹进制信息技术股份有限公司 | 一种基于源端数据重删的数据备份和恢复方法 |
CN109614403A (zh) * | 2018-10-24 | 2019-04-12 | 北京三快在线科技有限公司 | 集群服务节点的数据一致性校验方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533231B2 (en) * | 2011-08-12 | 2013-09-10 | Nexenta Systems, Inc. | Cloud storage system with distributed metadata |
US10146787B2 (en) * | 2013-07-26 | 2018-12-04 | Quest Software Inc. | Transferring differences between chunks during replication |
CN107436725B (zh) * | 2016-05-25 | 2019-12-20 | 杭州海康威视数字技术股份有限公司 | 一种数据写、读方法、装置及分布式对象存储集群 |
US10359942B2 (en) * | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
CN106649556A (zh) * | 2016-11-08 | 2017-05-10 | 深圳市中博睿存科技有限公司 | 基于分布式文件系统的多层重复数据删除方法及装置 |
CN108228083A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于数据去重的方法和设备 |
CN108008918A (zh) * | 2017-11-30 | 2018-05-08 | 联想(北京)有限公司 | 数据处理方法、存储节点及分布式存储系统 |
CN108052284B (zh) * | 2017-12-08 | 2020-11-06 | 北京奇虎科技有限公司 | 一种分布式数据存储方法及装置 |
-
2019
- 2019-04-23 CN CN201910327312.6A patent/CN110245129B/zh active Active
- 2019-09-04 WO PCT/CN2019/104330 patent/WO2020215580A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156380A (zh) * | 2014-03-04 | 2014-11-19 | 深圳信息职业技术学院 | 一种分布式存储器哈希索引方法及系统 |
CN107506150A (zh) * | 2017-08-30 | 2017-12-22 | 郑州云海信息技术有限公司 | 分布式存储装置、重删、写、删除、读取方法以及系统 |
CN109101365A (zh) * | 2018-08-01 | 2018-12-28 | 南京壹进制信息技术股份有限公司 | 一种基于源端数据重删的数据备份和恢复方法 |
CN109614403A (zh) * | 2018-10-24 | 2019-04-12 | 北京三快在线科技有限公司 | 集群服务节点的数据一致性校验方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110245129A (zh) | 2019-09-17 |
WO2020215580A1 (zh) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245129B (zh) | 一种分布式全局数据去重方法和装置 | |
JP6778795B2 (ja) | データを記憶するための方法、装置及びシステム | |
CN106776967B (zh) | 基于时序聚合算法的海量小文件实时存储方法及装置 | |
CN110557964B (zh) | 数据写入方法、客户端服务器和系统 | |
US20040205109A1 (en) | Computer system | |
CN102708165B (zh) | 分布式文件系统中的文件处理方法及装置 | |
CN105190573A (zh) | 存储数据的减少冗余 | |
CN107368260A (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
CN110765076B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
JP6870466B2 (ja) | 制御プログラム、制御方法、制御装置、及びデータベースサーバ | |
CN103067461A (zh) | 一种文件的元数据管理系统以及元数据管理方法 | |
CN111522502B (zh) | 数据去重方法、装置、电子设备及计算机可读存储介质 | |
CN105493080B (zh) | 基于上下文感知的重复数据删除的方法和装置 | |
CN103514222B (zh) | 虚拟机映像的存储方法、管理方法、存储管理装置及系统 | |
CN110908589A (zh) | 数据文件的处理方法、装置、系统和存储介质 | |
CN109460345B (zh) | 实时数据的计算方法及系统 | |
CN114936188A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115328403A (zh) | 一种数据重删方法、装置、设备及存储介质 | |
CN107133334B (zh) | 基于高带宽存储系统的数据同步方法 | |
CN111399765A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
KR20150097973A (ko) | 지도 서비스를 위한 타일 이미지 갱신 시스템 및 그 방법 | |
CN110737389A (zh) | 存储数据的方法和装置 | |
CN108153883B (zh) | 搜索方法和装置、计算机设备、程序产品以及存储介质 | |
EP3995972A1 (en) | Metadata processing method and apparatus, and computer-readable storage medium |
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 |