一种数据存储方法及装置制造方法及图纸

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

【技术实现步骤摘要】

本专利技术涉及计算机领域,尤其涉及一种数据存储方法及装置
技术介绍
随着大数据时代的到来,数据总量不断增加,存储设备的存储压力也越来越大,而存储设备的存储压力有很大一部分来源于重复数据。为了减少存储设备的存储压力,需要在存储数据时删除重复数据。如图1所示,为一种常见的数据存储系统的示意图。文件被划分为固定大小(如4KB,即4千字节)的数据块,每个数据块对应一个指纹信息(英文-fingerprint,缩写:FP,FP为用于唯一标识数据块的一个简短的特征值)。数据块以容器(英文container)为单位存储在磁盘中,每个容器的大小固定(如4MB,即4兆字节)。磁盘中除了存储有数据块之外,还存储有元数据(英文:metadata),元数据包括块索引(英文:chunk index)和文件配方(英文:file recipe)。文件配方用于指示构成文件的数据块的指纹信息,块索引用于指示每一个指纹信息与容器之间的对应关系。在如图1所示的数据存储系统中,数据存储方法具体包括:将待存储文件划分为固定大小的待存储数据块,计算每一个待存储数据块的指纹信息,并在磁盘中存储待存储文件的文件配方;对于每一个待存储数据块,查找磁盘中存储的块索引中是否存在与该待存储数据块的指纹信息相同的指纹信息;若块索引中存在与该待存储数据块的指纹信息相同的指纹信息,说明磁盘中至少有一个容器中存储有与该待存储数据块相同的数据块,则需要将该待存储数据块删除;若块索引中不存在与该待存储数据块的指纹信息相同的指纹信息,说明磁盘中的每一个容器中均未存储与该待存储数据块相同的数据块,则需要将该待存储数据块写入磁盘。例如,存储文件A时,若磁盘中的容器I中存储的数据块I与文件A的数据块I相同,则可以在磁盘中存储的块索引中查找到与文件A的数据块I的指纹信息相同的指纹信息,此时需要将文件A的数据块I删除;当需要读取文件A的数据块I时,只需要读取磁盘中的容器I中存储的数据块I即可。采用上述方法时,随着磁盘中存储的文件的增多,后续存储的文件的数据块很大概率上会与磁盘中的容器中已存储的数据块重复,后续存储的文件的数据块可能会分散在磁盘中的多个不同的容器中。当数据块以容器为单位存储在磁盘时,数据块的读取也是以容器为单位的,即读取容器I中存储的数据块I时,需要读取容器I中存储的所有数据块,但是只有容器I中存储的数据块I是有用的数据块。当文件数目很多时,多数文件的数据块会分散在多个不同的容器中,导致读取文件时的有效数据率(有用的数据块与读取的所有数据块的比值)较低。
技术实现思路
本专利技术实施例提供一种数据存储方法及装置,可以减少磁盘的存储压力并提高读取文件时的有效数据率,从而提高读取性能。为达到上述目的,本专利技术的实施例采用如下技术方案:本专利技术实施例的第一方面,提供一种数据存储方法,包括:接收待存储文件,将所述待存储文件划分为预设大小的多个数据块,并从所述多个数据块中确定第一数据块集合,所述第一数据块集合中包含的数据块为与磁盘中的任一容器中存储的数据块重复的数据块;当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从所述第一数据块集合中删除第三数据块集合中包含的数据块,所述第二数据块集合中包含的数据块为所述磁盘中一容器中存储的、与所述第一数据块集合中包含的数据块重复的数据块,所述第三数据块集合中包含的数据块为与所述第二数据块集合中包含的数据块重复的数据块;将所述多个数据块中剩余的数据块写入快速的非易失存储设备;当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘。结合第一方面,在第一方面的第一种可能的实现方式中,所述将所述多个数据块中剩余的数据块写入快速的非易失存储设备,包括:若所述快速的非易失存储设备中存储有数据块,则从所述多个数据块中剩余的数据块中确定第四数据块集合,所述第四数据块集合中包含的数据块为与所述快速的非易失存储设备中存储的数据块重复的数据块;从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块,并将删除所述第四数据块集合中包含的数据块后的所述多个数据块中剩余的数据块写入所述快速的非易失存储设备。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在所述从所述多个数据块中剩余的数据块中删除所述第四数据块集合中包含的数据块之前,所述方法还包括:从所述快速的非易失存储设备中存储的数据块中确定第五数据块集合,所述第五数据块集合中包含的数据块为与所述第四数据块集合中包含的数据块重复的数据块;所述当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘,包括:当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于所述第三阈值时,优先将所述快速的非易失存储设备中存储的数据块中的第五数据块集合中包含的数据块写入所述磁盘。结合第一方面,在第一方面的第三种可能的实现方式中,所述方法还包括:当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于所述第一阈值时,若不存在包含的数据块的个数大于所述第二阈值的所述第二数据块集合,则将所述多个数据块写入所述快速的非易失存储设备。结合第一方面,在第一方面的第四种可能的实现方式中,所述方法还包括:当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值小于等于所述第一阈值时,则将所述多个数据块写入所述磁盘。结合第一方面和上述可能的实现方式,在第一方面的第五种可能的实现方式中,将数据块写入所述磁盘包括:若待写入的数据块的个数大于所述磁盘中一个容器所能够存储的数据块的个数时,将所述待写入的数据块写入所述磁盘中地址连续的容器。本专利技术实施例的第二方面,提供一种数据存储装置,包括:接收单元,用于接收待存储文件;数据块划分单元,用于将所述接收单元接收的所述待存储文件划分为预设大小的多个数据块;确定单元,用于从所述数据块划分单元划分的所述多个数据块中确定第一数据块集合,所述第一数据块集合中包含的数据块为与磁盘中任一容器中存储的数据块重复的数据块;删除单元,用于当所述确定单元确定的所述第一数据块集合中包含的数据块的个数与所述数据块划分单元划分的所述多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从所述第一数据块集合中删除第三数据块集合中包含的数据块,所述第二数据块集合中包含的数据块为所述磁盘中一容器中存储的、与所述第一数据块集合中包含的数据块重复的数据块,所述第三数据块集合中包含的数据块为与所述第二数据块集合中包含的数据块重复的数据块;写入单元,用于将所述删除单元删除所述第三数据块集合中包含的数据块后所述多个数据块中剩余的数据块写入快速的非易失存储设备;所述写入单元,还用于当所述快速的非易失存储设备中存本文档来自技高网
...
一种数据存储方法及装置

【技术保护点】
一种数据存储方法,其特征在于,包括:接收待存储文件,将所述待存储文件划分为预设大小的多个数据块,并从所述多个数据块中确定第一数据块集合,所述第一数据块集合中包含的数据块为与磁盘中的任一容器中存储的数据块重复的数据块;当所述第一数据块集合中包含的数据块的个数与所述多个数据块的个数的比值大于第一阈值时,若存在包含的数据块的个数大于第二阈值的第二数据块集合,则从所述第一数据块集合中删除第三数据块集合中包含的数据块,所述第二数据块集合中包含的数据块为所述磁盘中一容器中存储的、与所述第一数据块集合中包含的数据块重复的数据块,所述第三数据块集合中包含的数据块为与所述第二数据块集合中包含的数据块重复的数据块;将所述多个数据块中剩余的数据块写入快速的非易失存储设备;当所述快速的非易失存储设备中存储的数据块在所述快速的非易失存储设备中占用的存储空间与所述快速的非易失存储设备的存储空间的比值大于第三阈值时,将所述快速的非易失存储设备中存储的数据块写入所述磁盘。

【技术特征摘要】

【专利技术属性】
技术研发人员:柴云鹏孙东旺
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1