CN104750432B - 一种数据存储方法及装置 - Google Patents

一种数据存储方法及装置 Download PDF

Info

Publication number
CN104750432B
CN104750432B CN201510115428.5A CN201510115428A CN104750432B CN 104750432 B CN104750432 B CN 104750432B CN 201510115428 A CN201510115428 A CN 201510115428A CN 104750432 B CN104750432 B CN 104750432B
Authority
CN
China
Prior art keywords
data block
volatile memory
memory apparatus
data
stored
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
CN201510115428.5A
Other languages
English (en)
Other versions
CN104750432A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510115428.5A priority Critical patent/CN104750432B/zh
Publication of CN104750432A publication Critical patent/CN104750432A/zh
Application granted granted Critical
Publication of CN104750432B publication Critical patent/CN104750432B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例公开了一种数据存储方法及装置,涉及计算机领域,可以减少磁盘的存储压力、提高读取文件的有效数据率,提高读取性能。具体方案为:接收待存储文件,将该文件划分为预设大小的多个数据块,并从该多个数据块中确定第一数据块集合;当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块;将剩余的数据块写入快速的非易失存储设备;当快速的非易失存储设备中存储的数据块占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,将快速的非易失存储设备中存储的数据块写入磁盘。

Description

一种数据存储方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种数据存储方法及装置。
背景技术
随着大数据时代的到来,数据总量不断增加,存储设备的存储压力也越来越大,而存储设备的存储压力有很大一部分来源于重复数据。为了减少存储设备的存储压力,需要在存储数据时删除重复数据。
如图1所示,为一种常见的数据存储系统的示意图。文件被划分为固定大小(如4KB,即4千字节)的数据块,每个数据块对应一个指纹信息(英文:fingerprint,缩写:FP,FP为用于唯一标识数据块的一个简短的特征值)。数据块以容器(英文:container)为单位存储在磁盘中,每个容器的大小固定(如4MB,即4兆字节)。磁盘中除了存储有数据块之外,还存储有元数据(英文:metadata),元数据包括块索引(英文:chunk index)和文件配方(英文:file recipe)。文件配方用于指示构成文件的数据块的指纹信息,块索引用于指示每一个指纹信息与容器之间的对应关系。
在如图1所示的数据存储系统中,数据存储方法具体包括:将待存储文件划分为固定大小的待存储数据块,计算每一个待存储数据块的指纹信息,并在磁盘中存储待存储文件的文件配方;对于每一个待存储数据块,查找磁盘中存储的块索引中是否存在与该待存储数据块的指纹信息相同的指纹信息;若块索引中存在与该待存储数据块的指纹信息相同的指纹信息,说明磁盘中至少有一个容器中存储有与该待存储数据块相同的数据块,则需要将该待存储数据块删除;若块索引中不存在与该待存储数据块的指纹信息相同的指纹信息,说明磁盘中的每一个容器中均未存储与该待存储数据块相同的数据块,则需要将该待存储数据块写入磁盘。例如,存储文件A时,若磁盘中的容器1中存储的数据块1与文件A的数据块1相同,则可以在磁盘中存储的块索引中查找到与文件A的数据块1的指纹信息相同的指纹信息,此时需要将文件A的数据块1删除;当需要读取文件A的数据块1时,只需要读取磁盘中的容器1中存储的数据块1即可。
采用上述方法时,随着磁盘中存储的文件的增多,后续存储的文件的数据块很大概率上会与磁盘中的容器中已存储的数据块重复,后续存储的文件的数据块可能会分散在磁盘中的多个不同的容器中。当数据块以容器为单位存储在磁盘时,数据块的读取也是以容器为单位的,即读取容器1中存储的数据块1时,需要读取容器1中存储的所有数据块,但是只有容器1中存储的数据块1是有用的数据块。当文件数目很多时,多数文件的数据块会分散在多个不同的容器中,导致读取文件时的有效数据率(有用的数据块与读取的所有数据块的比值)较低。
发明内容
本发明实施例提供一种数据存储方法及装置,可以减少磁盘的存储压力并提高读取文件时的有效数据率,从而提高读取性能。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明实施例的第一方面,提供一种数据存储方法,包括:
接收待存储文件,将所述待存储文件划分为预设大小的多个数据块,并从所述多个数据块中确定第一数据块集合,所述第一数据块集合中包含的数据块为与磁盘中的任一容器中存储的数据块重复的数据块;
当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从所述第一数据块集合中删除第三数据块集合中包含的数据块,所述第二数据块集合中包含的数据块为所述磁盘中一容器中存储的、与所述第一数据块集合中包含的数据块重复的数据块,所述第三数据块集合中包含的数据块为与所述第二数据块集合中包含的数据块重复的数据块;
将所述多个数据块中剩余的数据块写入快速的非易失存储设备;
当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘。
结合第一方面,在第一方面的第一种可能的实现方式中,所述将所述多个数据块中剩余的数据块写入快速的非易失存储设备,包括:
若所述快速的非易失存储设备中存储有数据块,则从所述多个数据块中剩余的数据块中确定第四数据块集合,所述第四数据块集合中包含的数据块为与所述快速的非易失存储设备中存储的数据块重复的数据块;
从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块,并将删除所述第四数据块集合中包含的数据块后的所述多个数据块中剩余的数据块写入所述快速的非易失存储设备。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在所述从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块之前,所述方法还包括:
从所述快速的非易失存储设备中存储的数据块中确定第五数据块集合,所述第五数据块集合中包含的数据块为与所述第四数据块集合中包含的数据块重复的数据块;
所述当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘,包括:
当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于所述第三阈值时,优先将所述快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入所述磁盘。
结合第一方面,在第一方面的第三种可能的实现方式中,所述方法还包括:
当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于所述第一阈值时,若不存在包含的数据块的个数大于所述第二阈值的所述第二数据块集合,则将所述多个数据块写入所述快速的非易失存储设备。
结合第一方面,在第一方面的第四种可能的实现方式中,所述方法还包括:
当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值小于等于所述第一阈值时,则将所述多个数据块写入所述磁盘。
结合第一方面和上述可能的实现方式,在第一方面的第五种可能的实现方式中,将数据块写入所述磁盘包括:
若待写入的数据块的个数大于所述磁盘中一个容器所能够存储的数据块的个数时,将所述待写入的数据块写入所述磁盘中地址连续的容器。
本发明实施例的第二方面,提供一种数据存储装置,包括:
接收单元,用于接收待存储文件;
数据块划分单元,用于将所述接收单元接收的所述待存储文件划分为预设大小的多个数据块;
确定单元,用于从所述数据块划分单元划分的所述多个数据块中确定第一数据块集合,所述第一数据块集合中包含的数据块为与磁盘中任一容器中存储的数据块重复的数据块;
删除单元,用于当所述确定单元确定的所述第一数据块集合中包含的数据块的个数与所述数据块划分单元划分的所述多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从所述第一数据块集合中删除第三数据块集合中包含的数据块,所述第二数据块集合中包含的数据块为所述磁盘中一容器中存储的、与所述第一数据块集合中包含的数据块重复的数据块,所述第三数据块集合中包含的数据块为与所述第二数据块集合中包含的数据块重复的数据块;
写入单元,用于将所述删除单元删除所述第三数据块集合中包含的数据块后所述多个数据块中剩余的数据块写入快速的非易失存储设备;
所述写入单元,还用于当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘。
结合第二方面,在第二方面的第一种可能的实现方式中,
所述确定单元,还用于若所述快速的非易失存储设备中存储有数据块,则从所述多个数据块中剩余的数据块中确定第四数据块集合,所述第四数据块集合中包含的数据块为与所述快速的非易失存储设备中存储的数据块重复的数据块;
所述删除单元,还用于从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块;
所述写入单元,具体用于将所述删除单元删除所述第四数据块集合中包含的数据块后的所述多个数据块中剩余的数据块写入所述快速的非易失存储设备。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,
所述确定单元,还用于在所述删除单元从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块之前,从所述快速的非易失存储设备中存储的数据块中确定第五数据块集合,所述第五数据块集合中包含的数据块为与所述第四数据块集合中包含的数据块重复的数据块;
所述写入单元,还具体用于当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于所述第三阈值时,优先将所述快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入所述磁盘。
结合第二方面,在第二方面的第三种可能的实现方式中,所述写入单元,还用于当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于所述第一阈值时,若不存在包含的数据块的个数大于所述第二阈值的所述第二数据块集合,则将所述多个数据块写入所述快速的非易失存储设备。
结合第二方面,在第二方面的第四种可能的实现方式中,所述写入单元,还用于当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值小于等于所述第一阈值时,则将所述多个数据块写入所述磁盘。
结合第二方面和上述可能的实现方式,在第二方面的第五种可能的实现方式中,所述写入单元,还用于在将数据块写入所述磁盘时,若待写入的数据块的个数大于所述磁盘中一个容器所能够存储的数据块的个数时,将所述待写入的数据块写入所述磁盘中地址连续的容器。
本发明实施例提供的数据存储方法及装置,一方面,当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,说明该多个数据块中的重复数据块所占的比例较高,才有必要进行数据去重。并且,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块,而并不是将第一数据块集合中包含的所有数据块都删除,当要读取待存储文件时,需要该容器中存储的第二数据块集合中包含的数据块,由于该容器中存储的第二数据块集合中包含的数据块的个数大于第二阈值,并且一个容器所能够存储的数据块的个数是固定的,因此,第二数据块集合中包含的数据块在该容器中所占的比例较高,从而可以提高读取文件时的有效数据率,进而提高读取性能。此外,删除第三数据块集合中包含的数据块可以减少磁盘的存储压力。另一方面,进行数据去重后,该多个数据块中剩余的数据块被写入快速的非易失存储设备,当快速的非易失存储设备中存储的数据块占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,才将快速的非易失存储设备中存储的数据块写入磁盘。由于快速的非易失存储设备的读写速度快于磁盘,因此,直接从快速的非易失存储设备读取数据块的速率很快,因此,可以直接读取快速的非易失存储设备中存储的数据块中有用的数据块,可以保证从快速的非易失存储设备中读取文件时的有效数据率为100%。因此,采用本发明实施例提供的数据存储方法和装置,可以减少磁盘的存储压力并提高读取文件时的有效数据率,从而提高读取性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中一种常见的数据存储系统的示意图;
图2为本发明实施例提供的一种数据存储方法的流程图;
图3为本发明实施例提供的另一种数据存储方法的流程图;
图4为本发明实施例提供的另一种数据存储方法的流程图;
图5为本发明实施例中的快速的非易失存储设备中存储的数据块和待存储文件的多个数据块中剩余的数据块的示意图;
图6为本发明实施例中快速的非易失存储设备中的数据块采用多队列的形式进行管理时各个队列所包含的数据块的示意图;
图7为本发明实施例中当快速的非易失存储设备中存储有文件A、文件B和文件C的数据块时,快速的非易失存储设备中包含的队列的示意图;
图8为本发明实施例中将队列Z10中的数据块并入队列Z16后,队列Z16的示意图;
图9为本发明实施例中将快速的非易失存储设备中与文件A相关的数据块写入缓冲区后,快速的非易失存储设备中包含的队列的示意图;
图10为本发明实施例提供的一种数据存储装置的组成示意图;
图11为本发明实施例提供的另一种数据存储装置的组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据存储方法,如图2所示,该方法包括:
S101、接收待存储文件,将待存储文件划分为预设大小的多个数据块,并从该多个数据块中确定第一数据块集合。
其中,数据块的大小可以根据需要进行设定,例如数据块的大小可以设定为4KB,本发明实施例对数据块的大小不做限定。
第一数据块集合中包含的数据块为与磁盘中的任一容器中存储的数据块重复的数据块。容器是一种可以持有其他对象或指向其他对象的指针的对象类型,可以理解为容器是可以保存其他对象的对象,或者理解为一个容器就是对某一种数据结构的实例化,更多关于容器的解释可以参考现有技术中的相关描述,本发明实施例这里不再赘述。本实施例中,数据块以容器为单位存储在磁盘中,每个容器的大小固定,本发明实施例对容器的大小不做限定。
在本发明实施例中,若两个数据块相同,则这两个数据块互为与对方重复的数据块。例如,数据块A和数据块B相同,则称数据块A为与数据块B重复的数据块,数据块B为与数据块A重复的数据块,数据块A和数据块B均为重复数据块。
具体的,判断两个数据块是否相同的方法可以有多种,例如,可以直接判断两个数据块中包含的数据是否相同,也可以计算每个数据块的指纹信息,然后根据指纹信息判断两个数据块是否相同。本发明实施例对如何判断两个数据块是否相同的方法不做限定。本发明实施例这里仅以根据指纹信息判断两个数据块是否相同为例进行说明。数据块的指纹信息为用于唯一标识数据块的一个简短的特征值。若两个数据块的指纹信息相同,则这两个数据块相同。具体的计算数据块的指纹信息的方法可以参考现有技术中的计算方法,如安全哈希算法(英文:Secure Hash Algorithm)、消息摘要算法第五版(英文:MessageDigest Algorithm,缩写:MD5)和双哈希算法等。
从多个数据块中确定第一数据块集合的方法可以包括:将该多个数据块中每个数据块的指纹信息分别与磁盘中的容器中存储的数据块的指纹信息进行对比,其中,磁盘中的容器中存储的数据块的指纹信息可以根据磁盘中存储的块索引所指示的指纹信息与容器的对应关系得到;当磁盘中的任一容器中存储有至少一个指纹信息与该多个数据块中的一个数据块的指纹信息相同的数据块时,则该多个数据块中的一个数据块属于第一数据块集合。例如,磁盘中的容器3中存储有至少一个指纹信息与该多个数据块中的数据块1的指纹信息相同的数据块,则该多个数据块中的数据块1属于第一数据块集合;磁盘中的容器5中存储有至少一个指纹信息与该多个数据块中的数据块2的指纹信息相同的数据块,则该多个数据块中的数据块2也属于第一数据块集合。
S102、当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块。
其中,第一阈值可以根据需要进行设定,例如可以将第一阈值设为20%,当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于20%时,则说明该多个数据块中的重复数据块所占的比例较高,有必要进行数据去重;当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值小于等于20%时,则说明该多个数据块中的重复数据块所占的比例较低,若进行数据去重,则不会明显减少磁盘的存储压力,因此,这种情况没有必要进行数据去重。本发明实施例对第一阈值的大小不做限定。
第二数据块集合中包含的数据块为磁盘中一容器中存储的、与第一数据块集合中包含的数据块重复的数据块,第三数据块集合中包含的数据块为与第二数据块集合中包含的数据块重复的数据块。
例如,待存储文件被划分为500个数据块,即本发明实施例中的多个数据块包括500个数据块,假设这500个数据块中有400个数据块与磁盘中的容器中存储的数据块重复,则第一数据块集合中包含这400个数据块。假设这400个数据块中有350个数据块与磁盘中的容器10中存储的350个数据块重复,则存在一个第二数据块集合,该第二数据块集合中包含磁盘中的容器10中存储的这350个数据块,与该第二数据块集合对应的第三数据块集合中包含这400个数据块中的这350个数据块。假设这400个数据块中有50个数据块与磁盘中的容器11中存储的50个数据块重复,则存在另一个第二数据块集合,该第二数据块集合中包含磁盘中的容器11中存储的这50个数据块,与该第二数据块集合对应的第三数据块集合中包含这400个数据块中的这50个数据块。
进一步的,第二阈值也可以根据需要进行设定,例如可以将第二阈值设为200,本发明实施例对第二阈值的大小不做限定。
当第一数据块集合中包含400个数据块,待存储文件被划分为500个数据块,第一阈值为20%时,满足第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值这一条件。上述例子中,包含磁盘中的容器10中存储的350个数据块的第二数据块集合,满足包含的数据块的个数大于第二阈值(200)这一条件,则从第一数据块集合中删除与该第二数据块集合对应的第三数据块集合中包含的350个数据块。包含磁盘中的容器11中存储的50个数据块的第二数据块集合,不满足包含的数据块的个数大于第二阈值(200)这一条件,因此,不从第一数据块集合中删除与该第二数据块集合对应的第三数据块集合中包含的50个数据块。
当要读取待存储文件时,需要读取磁盘中的容器10中存储的数据块。假设一个容器能够存储的数据块的个数为400,则读取磁盘中的容器10中存储的数据块时,有效数据率为350/400=87.5%,有效数据率较高。将第二阈值设为200,可以保证读取磁盘中的容器中存储的数据块时,有效数据率高于50%。
S103、将该多个数据块中剩余的数据块写入快速的非易失存储设备。
其中,快速的非易失存储设备为一种读写速度快于磁盘、且断电后所存储的数据不会丢失的存储设备。快速的非易失存储设备可以包括:固态硬盘(英文:Solid StateDrives,缩写:SSD)和相变内存(英文:Phase Change Memory,缩写:PCM)等。本发明这里对快速的非易失存储设备不做具体限定,只要是读写速度快于磁盘、且断电后所存储的数据不会丢失的存储设备均可。
在上述例子中,该多个数据块中剩余的数据块的个数为150,需要将该多个数据块中剩余的这150个数据块写入快速的非易失存储设备。
由于快速的非易失存储设备的读写速度远快于磁盘的读写速度,因此,将该多个数据块中剩余的数据块写入快速的非易失存储设备后,后续读取该多个数据块中剩余的数据块时的读取速度相比于从磁盘中读取该多个数据块中剩余的数据块的读取速度显著加快。在本发明实施例中,快速的非易失存储设备中的数据块是直接存储的,而并不是以容器为单位进行存储的,因此,可以直接读取快速的非易失存储设备中存储的数据块中有用的数据块,可以保证从快速的非易失存储设备中读取文件时的有效数据率为100%。
S104、当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,将快速的非易失存储设备中存储的数据块写入磁盘。
其中,第三阈值可以根据需要进行设定,例如,可以将第三阈值设为90%,本发明实施例对第三阈值的大小不做限定。
本发明实施例提供的数据存储方法,一方面,当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,说明该多个数据块中的重复数据块所占的比例较高,才有必要进行数据去重。并且,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块,而并不是将第一数据块集合中包含的所有数据块都删除,当要读取待存储文件时,需要该容器中存储的第二数据块集合中包含的数据块,由于该容器中存储的第二数据块集合中包含的数据块的个数大于第二阈值,并且一个容器所能够存储的数据块的个数是固定的,因此,第二数据块集合中包含的数据块在该容器中所占的比例较高,从而可以提高读取文件时的有效数据率,进而提高读取性能。此外,删除第三数据块集合中包含的数据块可以减少磁盘的存储压力。另一方面,进行数据去重后,该多个数据块中剩余的数据块被写入快速的非易失存储设备,当快速的非易失存储设备中存储的数据块占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,才将快速的非易失存储设备中存储的数据块写入磁盘。由于快速的非易失存储设备的读写速度快于磁盘,因此,直接从快速的非易失存储设备读取数据块的速率很快,因此,可以直接读取快速的非易失存储设备中存储的数据块中有用的数据块,可以保证从快速的非易失存储设备中读取文件时的有效数据率为100%。因此,采用本发明实施例提供的数据存储方法,可以减少磁盘的存储压力并提高读取文件时的有效数据率,从而提高读取性能。
本发明实施例还提供一种数据存储方法,如图3所示,该方法包括:
S201、接收待存储文件。
S202、将待存储文件划分为预设大小的多个数据块。
其中,数据块的大小可以根据需要进行设定,例如数据块的大小可以设定为4KB,本发明实施例对数据块的大小不做限定。
S203、从该多个数据块中确定第一数据块集合。
其中,第一数据块集合中包含的数据块为与磁盘中的任一容器中存储的数据块重复的数据块。
S204、判断第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值是否大于第一阈值。
若第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值小于等于第一阈值,则执行S205;若第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值,则执行S206。
S205、将该多个数据块写入磁盘。
S206、判断是否存在包含的数据块的个数大于第二阈值的第二数据块集合。
其中,第二数据流集合中包含的数据块为磁盘中一容器中存储的、与第一数据块集合中包含的数据块重复的数据块。
若不存在包含数据块的个数大于第二阈值的第二数据块集合,则执行S207、S210和S211;若存在包含数据块的个数大于第二阈值的第二数据块集合,则执行S208-S211。
S207、将该多个数据块写入快速的非易失存储设备。
S208、从第一数据块集合中删除第三数据块集合中包含的数据块。
其中,第三数据块集合中包含的数据块为与第二数据块集合中包含的数据块重复的数据块。
S209、将该多个数据块中剩余的数据块写入快速的非易失存储设备。
S210、判断快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值是否大于第三阈值。
若快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值,则执行S211。
S211、将快速的非易失存储设备中存储的数据块写入磁盘。
进一步的,如图4所示,S209中的将该多个数据块中剩余的数据块写入快速的非易失存储设备可以包括:
S209a、若快速的非易失存储设备中存储有数据块,则根据该多个数据块中剩余的数据块中确定第四数据块集合。
其中,第四数据块集合中包含的数据块为与快速的非易失存储设备中存储的数据块重复的数据块。
S209b、从该多个数据块中剩余的数据块中删除第四数据块集合中包含的数据块,并将删除第四数据块集合中包含的数据块后的该多个数据块中剩余的数据块写入快速的非易失存储设备。
进一步的,在从该多个数据块中剩余的数据块中删除第四数据块集合中包含的数据块之前,该方法还包括:从快速的非易失存储设备中存储的数据块中确定第五数据块集合。第五数据块集合中包含的数据块为与第四数据块集合中包含的数据块重复的数据块。
若快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值,S211具体包括:
优先将快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入磁盘。
示例性的,如图5所示,快速的非易失存储设备中存储有数据块,待存储文件的多个数据块中剩余的数据块中存在与快速的非易失存储设备中存储的数据块重复的数据块,用阴影部分的数据块表示。快速的非易失存储设备中存储的数据块中的阴影部分的数据块构成第五数据块集合,待存储文件的多个数据块中剩余的数据块中的阴影部分的数据块构成第四数据块集合。S209b中写入快速的非易失存储设备的数据块为图5中待存储文件的多个数据块中剩余的数据块中的非阴影部分的数据块。当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,优先将第五数据块集合中包含的数据块写入磁盘。
可选的,快速的非易失存储设备中的数据块可以采用多队列的形式进行管理。多队列的具体描述可以参考现有技术中的相关描述,本发明实施例这里不再赘述。如图6所示,在执行S209b之前,快速的非易失存储设备中存储的数据块存储在队列Z1中,在执行S209b之后,队列Z1中的第五数据块集合中包含的数据块迁移至队列Z2中,并且快速的非易失存储设备中新增加一个队列Z3,Z3中存储有删除第四数据块集合中包含的数据块后待存储文件的多个数据块中剩余的数据块,每个队列中的数据块均不相同。当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,优先将队列Z2中的数据块写入磁盘。
进一步的,当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,将快速的非易失存储设备中存储的数据块写入磁盘还包括:
a、在内存中设置一个大小与容器的大小相同的缓冲区。
b、从快速的非易失存储设备中的队列中选择包含多个文件共享的数据块的个数最多的队列,并将该队列中的数据块写入该缓冲区。
c、若缓冲区被写满,则将该缓冲区的数据块写入磁盘的一个容器;若缓冲区未被写满,再将快速的非易失存储设备中的其他队列的数据块写入该缓冲区。
示例性的,假设快速的非易失存储设备中有7个队列,分别为:队列Z10、队列Z11、队列Z12、队列Z13、队列Z14、队列Z15和队列Z16,用图7中的3个圆所包含的7个区域分别表示这7个队列。其中,队列Z10中包含文件A、文件B和文件C共享的数据块(用集合{A,B,C}表示)、队列Z11中包含文件A和文件B共享的数据块(用集合{A,B}表示)、队列Z12中包含文件A和文件C共享的数据块(用集合{A,C}表示)、队列Z13中包含文件B和文件C共享的数据块(用集合{B,C}表示),队列Z14中包含文件A独有的数据块(用集合{A}表示)、队列Z15中包含文件B独有的数据块(用集合{B}表示)、队列Z16中包含文件C独有的数据块(用集合{C}表示)。队列Z10、队列Z11、队列Z12和队列Z13中包含的数据块的个数从大到小依次为:Z13、Z10、Z12、Z11。其中,两个文件共享的数据块为读取这两个文件时均要读取的数据块,即这两个文件中互相重复的数据块。三个文件共享的数据块为读取这三个文件时均要读取的数据块,即这三个文件中互相重复的数据块。文件独有的数据块不与其他文件重复。
具体的,当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,将快速的非易失存储设备中存储的数据块写入磁盘包括:
1)在内存中设置一个大小与容器的大小相同的缓冲区。
2)优先选择长度最大的多个文件共享的数据块对应的队列,即在队列Z10、队列Z11、队列Z12和队列Z13中选择包含的数据块的个数最多的队列,将该队列中包含的数据块写入缓冲区,若所选择出的单个队列中包含的数据块可以将缓冲区写满,则将该单个队列中包含的数据块组织为一个容器写入磁盘,若该单个队列最后剩余的数据块不可以将缓冲区写满,则将该单个队列中最后剩余的数据块保留在缓冲区。
3)如果以上操作不可以将缓冲区写满,则将当前队列的子集所对应的队列中包含的数据写入缓冲区。例如,当前队列为集合{A,B,C}对应的队列Z10,若队列Z10中包含的数据块不可以将缓冲区写满,则可以选择集合{A,B}对应的队列Z11、集合{A,C}对应的队列Z12、集合{B,C}对应的队列Z13、集合{A}对应的队列Z14、集合{B}对应的队列Z15和集合{C}对应的队列Z16,并将这些队列中包含的数据块都尝试写入缓冲区,若缓冲区被写满,则将缓冲区中的数据块组织为一个容器写入磁盘。
4)如果以上操作不可以将缓冲区填满,则选择当前队列的超集所对应的队列中包含的数据写入缓冲区。例如,当前队列为集合{A,B}对应的队列Z11,若队列Z11中包含的数据块不可以将缓冲区写满,则可以将集合{A,B}的超集{A,B,C}对应的队列Z10中的数据块并入队列Z10,然后将并入后的队列Z10中的数据块写入缓冲区,若缓冲区被写满,则将缓冲区中的数据块组织为一个容器写入磁盘。
需要说明的是,当集合{A,B}对应的队列Z11和集合{A,B,C}对应的队列Z10中的数据块写入缓冲区并写入同一个容器时,需要将其中的无关文件C的数据块(即队列Z10中的数据块)都保留下来,在快速的非易失存储设备中另外创建一个集合{C}对应的队列保存这些数据块,或者将这些数据块与快速的非易失存储设备中已有的队列Z16合并(合并后的队列Z16如图8中的阴影部分所示)。
5)如果以上操作不可以将缓冲区写满,则选择某一文件独有的数据块所对应的队列中包含的数据块的个数最多的队列,即选择队列Z14、队列Z15和队列Z16中包含的数据块的个数最多的队列,将该队列对应的文件的数据块都写入缓冲区。例如,文件A对应的队列Z14中包含的数据块的个数最多,则将文件A的数据块都写入缓冲区,再将缓冲区中的数据块组织为一个容器写入磁盘。并将快速的非易失存储设备中关于文件A的队列与其他队列合并。具体为:将队列Z11中数据块并入队列Z15、将队列Z10中的数据块并入队列Z13,将队列Z12中的数据块并入队列Z16,合并后的队列如图9所示。
进一步的,在本发明实施例中,将数据块写入磁盘还可以包括:若待写入的数据块的个数大于磁盘中一个容器所能够存储的数据块的个数时,将待写入的数据块写入磁盘中地址连续的容器。
具体的,可以在磁盘中存储一个哈希表,哈希表的每一个表项的关键字包括:文件标识和第一数据块的指纹信息,第一数据块为文件标识所标识的文件的一数据块,哈希表的每一个表项的值为容器的个数,容器的个数为地址在第一数据块所在的容器的地址之后,与第一数据块所在的容器的地址连续,且存储有文件标识所标识的文件的数据块的容器的个数。例如,待写入的数据块为文件B的数据块,将待写入的数据块写入磁盘中地址连续的N个容器,则哈希表的一个表项的关键字包括:文件B的标识和文件B的第一个数据块的指纹信息,该表项的值为N-1,即在文件B的第一个数据块所在的容器之后还有N-1个容器中存储有文件B的数据块。这样,当要读取文件B的数据块时,通过查找哈希表可知,只需要在读取到文件B的第一个数据块之后,再连续读取N-1个容器中的数据块即可。由于磁盘的存取访问时间主要包括寻道时间、旋转延迟时间和传送时间,而当数据块分散在各个地址不连续的容器中时,需要花费更多的寻道时间和旋转延迟时间,因此,会导致文件的读取速度较慢。而采用本发明实施例中的方法,待写入的数据块被写入磁盘中地址连续的容器,这样读取文件时,花费的寻道时间和旋转延迟时间较少,可以提高文件的读取速度。
本发明实施例提供的数据存储方法,一方面,当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,说明该多个数据块中的重复数据块所占的比例较高,才有必要进行数据去重。并且,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块,而并不是将第一数据块集合中包含的所有数据块都删除,当要读取待存储文件时,需要该容器中存储的第二数据块集合中包含的数据块,由于该容器中存储的第二数据块集合中包含的数据块的个数大于第二阈值,并且一个容器所能够存储的数据块的个数是固定的,因此,第二数据块集合中包含的数据块在该容器中所占的比例较高,从而可以提高读取文件时的有效数据率,进而提高读取性能。此外,删除第三数据块集合中包含的数据块可以减少磁盘的存储压力。另一方面,进行数据去重后,该多个数据块中剩余的数据块被写入快速的非易失存储设备,当快速的非易失存储设备中存储的数据块占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,才将快速的非易失存储设备中存储的数据块写入磁盘。由于快速的非易失存储设备的读写速度快于磁盘,因此,直接从快速的非易失存储设备读取数据块的速率很快,因此,可以直接读取快速的非易失存储设备中存储的数据块中有用的数据块,可以保证从快速的非易失存储设备中读取文件时的有效数据率为100%。因此,采用本发明实施例提供的数据存储方法,可以减少磁盘的存储压力并提高读取文件时的有效数据率,从而提高读取性能。
本发明实施例还提供一种数据存储装置,如图10所示,该数据存储装置包括:接收单元31、数据块划分单元32、确定单元33、删除单元34和写入单元35。
接收单元31,用于接收待存储文件。
数据块划分单元32,用于将接收单元31接收的待存储文件划分为预设大小的多个数据块。
确定单元33,用于从数据块划分单元32划分的多个数据块中确定第一数据块集合,第一数据块集合中包含的数据块为与磁盘中任一容器中存储的数据块重复的数据块。
删除单元34,用于当确定单元33确定的第一数据块集合中包含的数据块的个数与数据块划分单元32划分的多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块,第二数据块集合中包含的数据块为磁盘中一容器中存储的、与第一数据块集合中包含的数据块重复的数据块,第三数据块集合中包含的数据块为与第二数据块集合中包含的数据块重复的数据块。
写入单元35,用于将删除单元34删除第三数据块集合中包含的数据块后该多个数据块中剩余的数据块写入快速的非易失存储设备。
写入单元35,还用于当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,将快速的非易失存储设备中存储的数据块写入磁盘。
进一步的,确定单元33,还用于若快速的非易失存储设备中存储有数据块,则从该多个数据块中剩余的数据块中确定第四数据块集合,第四数据块集合中包含的数据块为与快速的非易失存储设备中存储的数据块重复的数据块。
删除单元34,还用于从该多个数据块中剩余的数据块中删除第四数据块集合中包含的数据块。
写入单元35,具体用于将删除单元34删除第四数据块集合中包含的数据块后的多个数据块中剩余的数据块写入快速的非易失存储设备。
进一步的,确定单元33,还用于在删除单元34从该多个数据块中剩余的数据块中删除第四数据块集合中包含的数据块之前,从快速的非易失存储设备中存储的数据块中确定第五数据块集合,第五数据块集合中包含的数据块为与第四数据块集合中包含的数据块重复的数据块。
写入单元35,还具体用于当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,优先将快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入磁盘。
进一步的,写入单元35,还用于当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,若不存在包含的数据块的个数大于第二阈值的第二数据块集合,则将该多个数据块写入快速的非易失存储设备。
进一步的,写入单元35,还用于当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值小于等于第一阈值时,则将多个数据块写入磁盘。
进一步的,写入单元35,还用于在将数据块写入磁盘时,若待写入的数据块的个数大于磁盘中一个容器所能够存储的数据块的个数时,将待写入的数据块写入磁盘中地址连续的容器。
需要说明的是,本发明实施例提供的数据存储装置中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
本发明实施例提供的数据存储装置,一方面,当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,说明该多个数据块中的重复数据块所占的比例较高,才有必要进行数据去重。并且,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块,而并不是将第一数据块集合中包含的所有数据块都删除,当要读取待存储文件时,需要该容器中存储的第二数据块集合中包含的数据块,由于该容器中存储的第二数据块集合中包含的数据块的个数大于第二阈值,并且一个容器所能够存储的数据块的个数是固定的,因此,第二数据块集合中包含的数据块在该容器中所占的比例较高,从而可以提高读取文件时的有效数据率,进而提高读取性能。此外,删除第三数据块集合中包含的数据块可以减少磁盘的存储压力。另一方面,进行数据去重后,该多个数据块中剩余的数据块被写入快速的非易失存储设备,当快速的非易失存储设备中存储的数据块占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,才将快速的非易失存储设备中存储的数据块写入磁盘。由于快速的非易失存储设备的读写速度快于磁盘,因此,直接从快速的非易失存储设备读取数据块的速率很快,因此,可以直接读取快速的非易失存储设备中存储的数据块中有用的数据块,可以保证从快速的非易失存储设备中读取文件时的有效数据率为100%。因此,采用本发明实施例提供的数据存储装置,可以减少磁盘的存储压力并提高读取文件时的有效数据率,从而提高读取性能。
本发明实施例还提供一种数据存储装置,如图11所示,该数据存储装置包括:接收器41、处理器42和存储器43。其中,存储器43包括磁盘和快速的非易失存储设备。
接收器41,用于接收待存储文件。
处理器42,用于将待存储文件划分为预设大小的多个数据块,并从多个数据块中确定第一数据块集合,第一数据块集合中包含的数据块为与磁盘中的任一容器中存储的数据块重复的数据块。
处理器42,还用于当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块,第二数据块集合中包含的数据块为磁盘中一容器中存储的、与第一数据块集合中包含的数据块重复的数据块,第三数据块集合中包含的数据块为与第二数据块集合中包含的数据块重复的数据块。
处理器42,还用于将该多个数据块中剩余的数据块写入快速的非易失存储设备。
处理器42,还用于当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,将快速的非易失存储设备中存储的数据块写入磁盘。
进一步的,处理器42,还用于若快速的非易失存储设备中存储有数据块,则从该多个数据块中剩余的数据块中确定第四数据块集合,第四数据块集合中包含的数据块为与快速的非易失存储设备中存储的数据块重复的数据块;从多个数据块中剩余的数据块中删除第四数据块集合中包含的数据块,并将删除第四数据块集合中包含的数据块后的多个数据块中剩余的数据块写入快速的非易失存储设备。
处理器42,还用于在从该多个数据块中剩余的数据块中删除第四数据块集合中包含的数据块之前,从快速的非易失存储设备中存储的数据块中确定第五数据块集合,第五数据块集合中包含的数据块为与第四数据块集合中包含的数据块重复的数据块;当快速的非易失存储设备中存储的数据块在快速的非易失存储设备中占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,优先将快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入磁盘。
进一步的,处理器42,还用于当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,若不存在包含的数据块的个数大于第二阈值的第二数据块集合,则将该多个数据块写入快速的非易失存储设备。
进一步的,处理器42,还用于当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值小于等于第一阈值时,则将该多个数据块写入磁盘。
进一步的,处理器42,还用于在将数据块写入磁盘时,若待写入的数据块的个数大于磁盘中一个容器所能够存储的数据块的个数时,将待写入的数据块写入磁盘中地址连续的容器。
其中,接收器41、处理器42和存储器43之间通过总线连接并完成相互间的通信。
处理器42可以为中央处理器(英文:central processing unit,缩写:CPU),也可以为CPU和数字信号处理器(英文:digital signal processor,缩写:DSP)的组合。
需要说明的是,本发明实施例提供的数据存储装置中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
本发明实施例提供的数据存储装置,一方面,当第一数据块集合中包含的数据块的个数与该多个数据块的个数的比值大于第一阈值时,说明该多个数据块中的重复数据块所占的比例较高,才有必要进行数据去重。并且,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从第一数据块集合中删除第三数据块集合中包含的数据块,而并不是将第一数据块集合中包含的所有数据块都删除,当要读取待存储文件时,需要该容器中存储的第二数据块集合中包含的数据块,由于该容器中存储的第二数据块集合中包含的数据块的个数大于第二阈值,并且一个容器所能够存储的数据块的个数是固定的,因此,第二数据块集合中包含的数据块在该容器中所占的比例较高,从而可以提高读取文件时的有效数据率,进而提高读取性能。此外,删除第三数据块集合中包含的数据块可以减少磁盘的存储压力。另一方面,进行数据去重后,该多个数据块中剩余的数据块被写入快速的非易失存储设备,当快速的非易失存储设备中存储的数据块占用的存储空间与快速的非易失存储设备的存储空间的比值大于第三阈值时,才将快速的非易失存储设备中存储的数据块写入磁盘。由于快速的非易失存储设备的读写速度快于磁盘,因此,直接从快速的非易失存储设备读取数据块的速率很快,因此,可以直接读取快速的非易失存储设备中存储的数据块中有用的数据块,可以保证从快速的非易失存储设备中读取文件时的有效数据率为100%。因此,采用本发明实施例提供的数据存储装置,可以减少磁盘的存储压力并提高读取文件时的有效数据率,从而提高读取性能。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考上述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,缩写:ROM)、随机存取存储器(英文:Random AccessMemory,缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种数据存储方法,其特征在于,包括:
接收待存储文件,将所述待存储文件划分为预设大小的多个数据块,并从所述多个数据块中确定第一数据块集合,所述第一数据块集合中包含的数据块为与磁盘中的任一容器中存储的数据块重复的数据块;
当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从所述第一数据块集合中删除第三数据块集合中包含的数据块,所述第二数据块集合中包含的数据块为所述磁盘中一容器中存储的、与所述第一数据块集合中包含的数据块重复的数据块,所述第三数据块集合中包含的数据块为与所述第二数据块集合中包含的数据块重复的数据块;
将删除所述第三数据块集合中包含的数据块后所述多个数据块中剩余的数据块写入快速的非易失存储设备;
当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘。
2.根据权利要求1所述的方法,其特征在于,所述将所述多个数据块中剩余的数据块写入快速的非易失存储设备,包括:
若所述快速的非易失存储设备中存储有数据块,则从所述多个数据块中剩余的数据块中确定第四数据块集合,所述第四数据块集合中包含的数据块为与所述快速的非易失存储设备中存储的数据块重复的数据块;
从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块,并将删除所述第四数据块集合中包含的数据块后的所述多个数据块中剩余的数据块写入所述快速的非易失存储设备。
3.根据权利要求2所述的方法,其特征在于,在所述从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块之前,所述方法还包括:
从所述快速的非易失存储设备中存储的数据块中确定第五数据块集合,所述第五数据块集合中包含的数据块为与所述第四数据块集合中包含的数据块重复的数据块;
所述当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘,包括:
当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于所述第三阈值时,优先将所述快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入所述磁盘。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于所述第一阈值时,若不存在包含的数据块的个数大于所述第二阈值的所述第二数据块集合,则将所述多个数据块写入所述快速的非易失存储设备。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值小于等于所述第一阈值时,则将所述多个数据块写入所述磁盘。
6.根据权利要求1-5中任一项所述的方法,其特征在于,将数据块写入所述磁盘包括:
若待写入的数据块的个数大于所述磁盘中一个容器所能够存储的数据块的个数时,将所述待写入的数据块写入所述磁盘中地址连续的容器。
7.一种数据存储装置,其特征在于,包括:
接收单元,用于接收待存储文件;
数据块划分单元,用于将所述接收单元接收的所述待存储文件划分为预设大小的多个数据块;
确定单元,用于从所述数据块划分单元划分的所述多个数据块中确定第一数据块集合,所述第一数据块集合中包含的数据块为与磁盘中任一容器中存储的数据块重复的数据块;
删除单元,用于当所述确定单元确定的所述第一数据块集合中包含的数据块的个数与所述数据块划分单元划分的所述多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从所述第一数据块集合中删除第三数据块集合中包含的数据块,所述第二数据块集合中包含的数据块为所述磁盘中一容器中存储的、与所述第一数据块集合中包含的数据块重复的数据块,所述第三数据块集合中包含的数据块为与所述第二数据块集合中包含的数据块重复的数据块;
写入单元,用于将所述删除单元删除所述第三数据块集合中包含的数据块后所述多个数据块中剩余的数据块写入快速的非易失存储设备;
所述写入单元,还用于当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘。
8.根据权利要求7所述的数据存储装置,其特征在于,
所述确定单元,还用于若所述快速的非易失存储设备中存储有数据块,则从所述多个数据块中剩余的数据块中确定第四数据块集合,所述第四数据块集合中包含的数据块为与所述快速的非易失存储设备中存储的数据块重复的数据块;
所述删除单元,还用于从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块;
所述写入单元,具体用于将所述删除单元删除所述第四数据块集合中包含的数据块后的所述多个数据块中剩余的数据块写入所述快速的非易失存储设备。
9.根据权利要求8所述的数据存储装置,其特征在于,
所述确定单元,还用于在所述删除单元从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块之前,从所述快速的非易失存储设备中存储的数据块中确定第五数据块集合,所述第五数据块集合中包含的数据块为与所述第四数据块集合中包含的数据块重复的数据块;
所述写入单元,还具体用于当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于所述第三阈值时,优先将所述快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入所述磁盘。
10.根据权利要求7所述的数据存储装置,其特征在于,
所述写入单元,还用于当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于所述第一阈值时,若不存在包含的数据块的个数大于所述第二阈值的所述第二数据块集合,则将所述多个数据块写入所述快速的非易失存储设备。
11.根据权利要求7所述的数据存储装置,其特征在于,
所述写入单元,还用于当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值小于等于所述第一阈值时,则将所述多个数据块写入所述磁盘。
12.根据权利要求7-11中任一项所述的数据存储装置,其特征在于,
所述写入单元,还用于在将数据块写入所述磁盘时,若待写入的数据块的个数大于所述磁盘中一个容器所能够存储的数据块的个数时,将所述待写入的数据块写入所述磁盘中地址连续的容器。
CN201510115428.5A 2015-03-16 2015-03-16 一种数据存储方法及装置 Active CN104750432B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510115428.5A CN104750432B (zh) 2015-03-16 2015-03-16 一种数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510115428.5A CN104750432B (zh) 2015-03-16 2015-03-16 一种数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN104750432A CN104750432A (zh) 2015-07-01
CN104750432B true CN104750432B (zh) 2017-11-24

Family

ID=53590195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510115428.5A Active CN104750432B (zh) 2015-03-16 2015-03-16 一种数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN104750432B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019456B2 (en) * 2016-06-29 2018-07-10 Microsoft Technology Licensing, Llc Recovering free space in nonvolatile storage with a computer storage system supporting shared objects
CN108256003A (zh) * 2017-12-29 2018-07-06 天津南大通用数据技术股份有限公司 一种根据分析数据重复率提高union运算效率的方法
CN108958660B (zh) * 2018-07-02 2021-03-19 深圳市茁壮网络股份有限公司 分布式存储系统及其数据处理方法和装置
CN111221470A (zh) * 2019-10-12 2020-06-02 平安科技(深圳)有限公司 数据处理方法、电子装置及存储介质
CN111208953A (zh) * 2020-04-16 2020-05-29 广东睿江云计算股份有限公司 一种分布式存储方法及其装置
CN111722804B (zh) * 2020-06-12 2022-07-08 浪潮电子信息产业股份有限公司 一种非易失内存调度的方法、系统、设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103502957A (zh) * 2012-12-28 2014-01-08 华为技术有限公司 数据处理方法及装置
CN104050057A (zh) * 2014-06-06 2014-09-17 华中科技大学 一种历史感知的数据去重碎片消除方法与系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082228B2 (en) * 2008-10-31 2011-12-20 Netapp, Inc. Remote office duplication
US8458144B2 (en) * 2009-10-22 2013-06-04 Oracle America, Inc. Data deduplication method using file system constructs
US9047304B2 (en) * 2011-11-28 2015-06-02 International Business Machines Corporation Optimization of fingerprint-based deduplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103502957A (zh) * 2012-12-28 2014-01-08 华为技术有限公司 数据处理方法及装置
CN104050057A (zh) * 2014-06-06 2014-09-17 华中科技大学 一种历史感知的数据去重碎片消除方法与系统

Also Published As

Publication number Publication date
CN104750432A (zh) 2015-07-01

Similar Documents

Publication Publication Date Title
CN104750432B (zh) 一种数据存储方法及装置
CN103345472B (zh) 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法
CN105630955B (zh) 一种高效动态的数据集合成员管理方法
CN104272244B (zh) 用于对处理进行调度以实现空间节省的系统、方法
CN108829344A (zh) 数据存储方法、装置及存储介质
CN107209714A (zh) 分布式存储系统及分布式存储系统的控制方法
CN105980992B (zh) 一种存储系统、识别数据块稳定性的方法以及装置
CN101968795B (zh) 一种数据块长度可变的文件系统缓存方法
CN105117351B (zh) 向缓存写入数据的方法及装置
CN103678405B (zh) 邮件索引建立方法及系统、邮件搜索方法及系统
CN103019887A (zh) 数据备份方法及装置
CN103677674B (zh) 一种数据处理方法及装置
CN109445702B (zh) 一种块级数据去重存储系统
CN105787037B (zh) 一种重复数据的删除方法及装置
CN101122885A (zh) 一种数据缓存处理方法、系统及数据缓存装置
CN103440207A (zh) 缓存方法及装置
CN104503703B (zh) 缓存的处理方法和装置
CN106066818B (zh) 一种提高重复数据删除备份系统恢复性能的数据布局方法
CN108733306A (zh) 一种文件合并方法及装置
CN101169761A (zh) 大容量缓存实现方法及存储系统
CN102446139A (zh) 一种数据存储方法及装置
CN106407224A (zh) 一种键值存储系统中文件压实的方法和装置
CN110109868A (zh) 用于索引文件的方法、装置和计算机程序产品
CN103425435A (zh) 磁盘存储方法及磁盘存储系统
CN110399096A (zh) 分布式文件系统元数据缓存重删的方法、装置以及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant