首页> 中国专利> 基于位置敏感哈希的删冗存储系统元数据管理方法

基于位置敏感哈希的删冗存储系统元数据管理方法

摘要

本发明公开了一种基于位置敏感哈希的删冗存储系统元数据管理方法,该方法利用位置敏感哈希函数快速将相似文件数据块元数据组织在一起,从而在对删冗存储系统写入数据块时,能快速查找到是否系统中已经存在该数据块,提高删冗存储系统的元数据查找性能,最终提高系统吞吐率。在该方法中通过设置使用的位置敏感哈希函数数量,调整相似文件识别率,从而改变元数据管理系统查询速度、内存开销和删冗效果。通过这种方法可以使元数据管理适应不同删冗存储系统要求,并且通过使用多个哈希函数可以提高相似文件识别率,提高删冗存储系统的删冗能力并减少元数据索引内存开销。

著录项

  • 公开/公告号CN101963982A

    专利类型发明专利

  • 公开/公告日2011-02-02

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201010294016.X

  • 发明设计人 余宏亮;孙竞;

    申请日2010-09-27

  • 分类号G06F17/30;

  • 代理机构北京路浩知识产权代理有限公司;

  • 代理人王莹

  • 地址 100084 北京市海淀区清华园北京100084-82信箱

  • 入库时间 2023-12-18 01:39:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-07-25

    授权

    授权

  • 2011-03-23

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20100927

    实质审查的生效

  • 2011-02-02

    公开

    公开

说明书

技术领域

本发明涉及计算机数据存储技术领域,具体涉及一种基于位置敏感哈希的删冗存储系统元数据管理方法。

背景技术

随着数字信息量的爆炸式增长,数据占用空间越来越大;在过去的10年里,很多行业提供的存储系统容量从数十GB发展到数百TB,甚至数PB,足足翻了10,000多倍。随着数据的指数级增长,企业面临的快速备份和恢复的时间点越来越多,管理保存数据的成本及数据中心空间和电源的耗费也变得越来越昂贵。研究发现,应用系统所保存的数据,高达60%是冗余的,而且随着时间的推移越来越严重,人们可能要花费超过10倍的存储空间和管理成本。

为了缓解存储系统的空间增长问题,缩减数据占用空间,降低成本、最大程度的利用已有资源,冗余数据删除技术(简称删冗技术)就应运而生了。一方面,利用冗余数据删除技术,可以对存储空间的利用率进行优化。因传统的数据压缩技术主要根据一些固定的模式利用传统的数据分析工具和技术来消除重复数据,不能有效地改善基于磁盘数据的成本效益,所以需要通过探究重复数据的特性,利用相应的冗余数据删除技术,以消除分布在存储系统中的相同文件或者数据块。另一方面,利用冗余数据删除技术,可以减少在网络中传输的数据量,进而降低能量消耗和网络成本。由于冗余数据删除技术的目标是消除分布在存储系统中的相同及相似文件或者数据块,因此能够减少大量的磁盘消耗,并且为数据复制大大节省网络带宽。

删冗技术可以广泛用于从虚拟机存储、文件服务器、邮件服务器、磁盘备份、社区网络(Social Networking Services,SNS)等诸多应用领域。传统上删冗技术不作为主存储系统(Primary Storage System)使用,但近年来,随着云存储等技术的发展,以删冗技术构建主存储系统成为了一个重要的技术课题,以删冗技术构建的主存储系统简称为删冗存储系统。

在构建主存储删冗系统(Primary Storage Dedulication System)(即删冗存储系统)的时候,主要有两个重要的技术挑战:(1)由于删冗而产生大量的计算开销如何消除;(2)相对普通存储系统,删冗存储系统中,元数据的数量激增,而在进行数据写操作的时候,需要查找所要写的数据是否在系统中已经存在,这种查找的开销极大。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是:如何提供一种基于位置敏感哈希的删冗存储系统元数据管理方法,使其显著提高删冗存储系统中元数据查找的速度,从而提高整个删冗存储系统的存取吞吐率。

(二)技术方案

为解决上述技术问题,本发明提供了基于位置敏感哈希的删冗存储系统元数据管理方法,所述方法的写数据操作包括以下步骤:

S101、将文件分块,计算每个数据块的数字指纹,生成文件数字指纹集合;

S102、将所述文件数字指纹集合映射到一个固定大小的存储结构中进行归一化处理,得到固定长度的输入向量;

S103、根据所述输入向量计算所述文件数字指纹集合的位置敏感哈希函数值;

S104、根据所述位置敏感哈希函数值查找相似文件的元数据集合的地址,根据该地址将所述相似文件的元数据集合读入内存,然后查找存在于所述文件数字指纹集合中而在所述相似文件的元数据集合中没有保存的数字指纹;所述相似文件是包含有一定数量相同数据块的文件;

S105、根据步骤S104得到的所述元数据集合中没有保存的数字指纹对应的数据块生成相应的元数据,将所述相应的元数据合并到所述相似文件的元数据集合中。

在步骤S102中,使用bloom filter进行归一化处理,归一化后,bloom filter的输出具有相同长度,所述输出为位置敏感哈希函数的所述输入向量。

所有文件数字指纹集合使用相同的位置敏感哈希函数来计算位置敏感哈希函数值,所述位置敏感哈希函数使用确定大小的随机变量组成的向量与所述输入向量进行点积,求得位置敏感哈希函数值。

使用数字指纹映射到bloom filter的位置,和数字指纹映射这个位置的个数构成的二元组集合表示bloom filter的输出,相应地,在步骤S103中根据所述二元组集合计算文件数字指纹集合的位置敏感哈希函数值。

所述位置敏感哈希函数值为利用多个不同的位置敏感哈希函数生成的多个函数值。

在所述步骤S101中,对每个数据块使用标准消息摘要算法计算数字指纹。

对每个数据块使用SHA-1算法计算数字指纹,所有数据块的数字指纹构成文件数字指纹集合。

(三)有益效果

本发明根据文件相似性组织删冗存储系统的删冗元数据,利用位置敏感哈希函数判断文件是否相似,使用哈希值索引文件数据块元数据集合。利用位置敏感哈希函数将相似元数据集合映射到相同哈希空间位置的特性,能够快速并准确地识别出相似文件,这种方法可以使元数据管理适应不同删冗存储系统的要求。进一步,由于通过设置所使用的位置敏感哈希函数的数量可以控制相似文件的识别率,使用的哈希函数越多识别率越高,运算时间越长,而文件数据块元数据集合索引的内存开销越少,因此,通过使用多个哈希函数可以提高相似文件识别率,提高删冗存储系统的删冗能力并减少元数据索引内存开销。

附图说明

图1为本发明的方法流程图;

图2为本发明实施例的方法中位置敏感哈希函数值计算流程图;

图3为本发明实施例的方法中数据块删冗过程流程图;

图4为本发明实施例的方法中文件读过程流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明的主要原理是:由于删冗存储系统对数据块元数据的访问模式与文件相关,也就是说通常一个文件的元数据会被连续访问,因此将同一文件的元数据组织起来一起访问,会大大降低磁盘随机访问次数,提高元数据管理性能。而在进行元数据查找时,如果能够找到一个小的集合,仅仅对该集合中元素进行数据查找的最终结果如果能够与在整个数据集合中进行数据查找的结果在概率上相同,则可以提高数据查找的速度。对于删冗存储系统来说,做到这一点就意味着要求相似文件(也就是包含有一定数量相同数据块的文件)是放在一起的,从而查找这些放在一起的文件就可与查找所有文件达到类似的删冗效果。也就是说:按如下两个要求组织元数据能够快速准确地识别出相似文件:(1)一个文件的元数据放在一起;(2)相似文件的元数据也放在一起。

位置敏感哈希函数(Location Sensitive Hash,LSH)与一般的哈希函数不同的是位置敏感性,也就是散列前的相似点经过哈希之后,也能够在一定程度上相似,并且具有一定的概率保证。

删冗存储系统包括四类元数据(参见表1~3):

1.文件元数据:包括文件名、文件ID、文件大小、文件属性、文件块数、和相关时间戳等。参见表1所示,表1中只示出了文件名、文件ID和属性。

2.文件数据段元数据:文件尺寸过大需要先将其分成数据段,每个数据段的元数据包括数据段LSH(位置敏感哈希函数)值(即图1中的LSH哈希值),数据段中每个数据块<块号,块数字指纹,数据块地址>表项集合。参见表2所示。

3.相似数据段元数据集合索引:在内存中维护一个相似数据段LSH哈希值到元数据集合存储地址索引。参见表3所示。

4.二级存储上相似数据段元数据集合:数据块数字指纹、数据块地址、使用次数(垃圾回收需要)。参见表3所示。

表1

  文件名  文件ID  属性  /foo  0×22  <size,blocks,modes,uid,gid,mode,time...>  /home/user/too1  0×327  <size,blocks,modes,uid,gid,mode,time...>  ……

表2

表3

本发明的文件写操作描述如下(参见图1):

步骤101、将文件分块,计算每个数据块的数字指纹,生成文件数字指纹集合,如果文件尺寸很大,则先分段处理,生成一个数据段数字指纹集合。分段规定了每段中最多包含的数据块个数n,如果文件数据块大于n,则分成若干不超过n个数据块的子数据段。如果文件数据块数小于n,就只有一个数据段,数据段的大小为数据块个数。数字指纹是指通过某种算法对数据信息进行综合计算得到的一个固定长度的数字序列。

上述步骤101中将文件分成数据块是为了提高文件删冗效果,即使文件经局部修改剩下的部分也能够删除冗余。文件分块可以使用固定长度分块或者可变长度分块,为了提高删冗效果通常采用可变长度的基于内容的分块(Content Defined Chunking)。分块后,将每块使用标准消息摘要算法计算数字指纹,一般采用SHA(Secure HashAlgorithm,安全哈希算法)-1算法。所有数据块的数字指纹构成文件的数字指纹集合。

步骤102、将文件数字指纹集合(本实施例中文件被分成了数据段,因此此处为数据段数字指纹集合)归一化到定长的输入向量上。这样做是因为文件大小不同造成数字指纹集合包含的元素数量不一样,而计算位置敏感哈希函数值需要固定大小(维度)的输入向量与相等大小(维度)的随机变量组成的向量做点积。因此不同的数字指纹集合需要映射到定长的输入向量,这里使用bloom filter进行映射。bloom filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。

映射后生成一个1和0组成的串,串长度m由分段规定的最大数据块数n与bloom filter设定的误命中率f计算得到。公式为:

f=(1-e^(-kn/m))^k

其中f为设定的误命中率(本系统采用0.001),k是bloom filter使用的哈希函数个数(本系统中可取k=1),n为分段规定的最大数据块数(本系统中n取1000),根据这个公式可以计算出bloom filter串长度m。将元数据集合(其中的数字指纹集合)映射到bloom filter后仍然保持了元数据集合的特性,并且所有元数据集合均归一化到了相同大小的输入向量上。上述公式中符号“^”表示求幂,例如,a^b表示ab

上述步骤102将文件数字指纹集合映射到固定长度的bloom filter上。为了减少不同数字指纹映射到相同bloom filter位置造成的误判,bloom filter大小远大于数据段数字指纹集合大小。为了减少内存开销,这一步计算不保存整个bloom filter,而只保存每个数字指纹映射到bloom filter上的位置和映射到这个位置的数字指纹的个数构成的向量。向量格式为{<pos,count>},即数字指纹映射到的位置(pos)和映射到这个位置的数字指纹的个数(count)的二元组构成的向量。

步骤103、根据步骤102生成的所述向量计算数据段数字指纹集合的位置敏感哈希函数值。计算步骤如图2所示。图2中,“随机变量点积count”的意思是使用随机变量组成的向量在pos对应位置的随机变量乘以count值。p-stable是参数为p的稳态分布函数。稳定分布(Stabledistribution),又称为雷维偏阿尔法-稳定分布(Levy skew alpha-stabledistribution),是一种连续概率分布,它是由保罗·皮埃尔·莱维发展起来的。在稳定分布中,独立同分布的随机变量之和与它们本身具有相同的分布。

步骤104、根据步骤103得到的位置敏感哈希函数值通过索引查找相似数据段元数据集合地址,根据该地址将元数据集合读入内存。相似数据段元数据集合索引结构见表3。然后将文件数据段数字指纹集合中的数字指纹与相似数据段元数据集合中保存的数字指纹比对,如果数据段数字指纹集合中有相似数据段元数据集合中没有保存的数字指纹,则认为这个指纹对应的数据块是相似数据段元数据集合中没有保存的,如果是相似数据段元数据集合中已有的数字指纹就说明对应的数据块是冗余块。

步骤105、将步骤104得到的删冗存储系统的相似数据段元数据集合中没有保存的数字指纹对应的数据块存储到删冗存储系统中,然后,根据存储位置和数据(数字指纹)生成完整的元数据,将其合并到删冗存储系统的相似数据段元数据集合中。对于相似数据段集合中已经保存了的数据块,使用已保存数据块的数据地址生成元数据,并保存到数据段元数据中。具体见图3(删冗过程)。

在步骤104中,一个位置敏感哈希函数对相似文件的识别率是确定的,如果同时使用多个位置敏感哈希函数则可以提高相似文件的识别率,使用越多的哈希函数识别率越高,但计算开销也越大,越高的相似文件识别率越能减少删冗存储系统冗余数据块数量。存储不同文件的删冗存储系统对冗余数据数量要求不同,例如多媒体存储系统,能够删冗的数据块比例低,冗余数据量影响不大,对相似文件识别率要求较低。但对于多版本文件系统,数据冗余比例很大,对相似文件识别率要求很高。因此不同系统可以设置不同的位置敏感哈希函数数量。多个哈希函数使用在一个文件数据段数字指纹集合上会产生多个哈希值,通过相似数据段元数据集合索引可能得到多个元数据集合,元数据管理系统需要对多个元数据集合合并来减少元数据集合间冗余的元数据。多哈希函数处理流程如下:

1、计算多个位置敏感哈希函数值。

2、检查相似数据段元数据集合索引中这些哈希值对应位置是否存在相似数据段元数据集合。

3、如果没有,创建新的元数据集合,将文件数据块全部存储进删冗存储系统,并生成每个数据块的元数据,元数据保存在原数据段元数据和新的相似数据段元数据集合中。新元数据写入磁盘,在所有哈希值对应索引位置保存新相似数据段元数据集合地址,结束;否则,从磁盘读出所有索引位置不为空的相似数据段元数据集合。

4、计算文件数字指纹集合和读出的元数据集合中数字指纹集合相似度。

5、若相似度都为零,a)若有哈希值对应索引位置为空,则使用上述第3步的方法生成新元数据集合,将元数据集合地址保存在这些索引位置中;b)若哈希值对应位置都存在元数据集合,则将文件数据块全部存储进删冗存储系统,生成每个数据块元数据,将元数据保存在元数据数量最少的元数据集合和数据段元数据中。元数据集合写回磁盘。若相似度不都为零,将不为零的元数据集合合并。将数据段数字指纹集合中所有不在合并后元数据集合中的数字指纹对应的数据块保存到删冗存储系统中,并生成相应元数据,元数据保存到合并后的元数据集合和数据段元数据中。合并后的元数据写回磁盘,将原来不为零的元数据集合地址更新为合并后元数据集合地址。如果有哈希值对应位置没有元数据集合,这个位置也保存合并后的元数据集合地址,结束。

文件读操作描述如下(参见图4):

步骤201根据文件名查找文件inode,通过读偏移量计算所读的数据块号、块内偏移地址、数据段号。

步骤202根据文件inode,数据段号加载数据段元数据,再根据数据块号找到数据块对应存储地址,读出数据块内容,将块内偏移量以后内容写入读数据缓存区,读偏移量加上写入缓存区数量。

步骤203如果已读数据量等于读缓存区大小,则结束,否则回到步骤202继续执行。

以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号