一种数据块索引的检索方法

文档序号:6367778阅读:148来源:国知局
专利名称:一种数据块索引的检索方法
技术领域
本发明属于计算机数据存储和备份方法,具体涉及ー种数据块索引的检索方法,用于删除重复数据。
背景技术
重复数据删除(Data De-duplication,DD),通过删除全局数据集合中重复的数据块,只保留其中ー份,从而消除冗余数据,可以有效提高存储效率和利用率,很大程度上减少对物理存储空间的需求,減少传输过程中的网络带宽,同时它也是ー种绿色存储技术,能够有效降低能耗,在存储备份领域得到极其广泛的应用。然而,在大存储容量下,特别是数据块粒度较细时,用于识别数据块的指纹数据非常庞大,不能够全部放入内存,需要利用磁盘空间存储。因此在ー个重复数据删除系统中,用于检索指纹的索引系统成为影响系统性能的关键。现有的重复数据删除系统,或者是数据块过大、粒度较粗,造成重删率低下,不能有效节省存储空间;或者是索引系统磁盘访问頻繁,严重影响系统整体效率。现有数据块索引检索方法,一种是把所有的索引记录都放入内存中,但是内存空间是有限的,相对于磁盘空间来说要小很多,这就限制了整个索引系统所能检索的总的索引数量,进而限制了重复数据删除系统的規模,为了节省内存空间,往往把数据分割成较大的数据块,这又降低了重删率,见杨天明“网络备份中重复数据删除技术研究”,华中科技大学博士学位论文,2010。另ー种方法选择把索引记录存储在磁盘上,常用的索引记录则读取到内存中,各条索引记录是零散的,这大大増加了重复数据删除系统的规模,但索引记录的检索速度较慢,见 Liu, Chuanyi. et al, Semantic Data De-duplication forArchival Storage Systems. In The Thirteenth IEEE Asia—Paciffic Computer SystemsArchitecture Conference,2008. 1—9。以下对本发明中的术语进行解释索引系统由写缓存队列、读缓存队列、布隆过滤器、反向映射集合、动态标识集和索引记录包组成,写缓存队列、读缓存队列、布隆过滤器、反向映射集合和动态标识集设置于计算机内存中,索引记录包存储在磁盘上,为了快速访问,部分索引记录包存储在内存中。写缓存队列由写缓存包组成,对写缓存的访问使用最近最少使用算法(LatestRecently Used, LRU),即最新写入的写缓存包放在队尾,最早写入的写缓存包放在队头,写缓存包用于暂存新加入的索引记录包,组织成散列表和双向队列两种形式,以写缓存包为単位写入磁盘;读缓存队列由读缓存包组成,对读缓存的访问使用最近最少使用算法(LRU),读缓存包用于暂存磁盘访问命中的索引记录包,组织成散列表和双向队列两种形式,以读缓存包为単位写入或读出;
布隆过滤器ー种快速判断集合中元素是否存在的概率型数据结构,可以产生准确的否认和概率性的肯定,用于快速识别新的指紋;
反向映射集合反向映射的集合,存储在内存中,用于访问磁盘时提取指纹对应的索引记录包标识;反向映射指哈希值到索引记录包标识的映射,对每个指纹进行散列(哈希运算)后得到对应的哈希值,该哈希值要短于其对应的指紋,能够减少内存消耗,提高内存利用率;动态标识集存放内存中所有索引记录包的标识,用于排除不必要的磁盘访问;索引记录包多条索引记录的集合,每个索引纪录包都有一个标识, 称为索引记录包标识;索引记录由指纹、索引记录包标识、数据块长度和数据块偏移组成,用于描述一个数据块;其中,索引记录包标识为索引记录包唯一标志,数据块偏移为该数据块相对所在文件文件头的位置;指纹用于唯一标识ー个数据块的数据块标识,客户端使用分块算法对文件切分得到数据块后,使用MD5 (Message-Digest Algorithm 5,信息-摘要算法5)或SHA(SecureHash Algorithm,安全散列)系列等消息摘要算法计算出指纹;采样率索引记录包中的索引记录添加到反向映射集合中的概率,用于控制反向映射集合的大小;重删率数据在重复数据删除前和重复数据删除后的大小比;

发明内容
本发明提供ー种数据块索弓I的检索方法,解决现有数据块索引检索方法重复数据删除系统的规模受到限制、重删率降低;或者在重复数据删除系统的规模增大的情况下,索引记录检索速度较慢的问题,以提高重复数据删除系统在大規模数据存储时的效率和扩展能力,并降低其成本。本发明所提供的ー种数据块索引的检索方法,其特征在于,包括以下步骤(I)指纹检索步骤检索输入的指纹是否已存在于索引系统中,是则表明为旧指纹,向检索者返回旧指纹对应的索引记录,将旧指纹所在的索引记录包存入读缓存队列,结束;否则表明为新指纹,进行步骤(2);(2)存储新索引记录步骤,包括以下子步骤(2-1)创建索引记录子步骤为新指纹创建一条索引记录;(2-2)写缓存包判断子步骤判断当前写缓存包是否已满,是则进行步骤(2-3),否则将新指纹对应的索引记录写入当前写缓存包,向检索者返回新指纹对应的索引记录,结束;(2-3)写缓存队列判断子步骤判断写缓存队列是否已满,是则进行步骤(2-4),否则将新指纹对应的索引记录写入写缓存队列队尾写缓存包,向检索者返回新指纹对应的索引记录,结束;(2-4)磁盘刷新子步骤将写缓存队列中所有写缓存包写入磁盘,成为索引记录包;释放写缓存队列空间,将新指纹对应的索引记录写入写缓存队列队尾写缓存包,向检索者返回新指纹对应的索引记录,结束。所述的检索方法,其特征在于,所述指纹检索步骤⑴包括以下子步骤(1-1)布隆过滤器判断子步骤判断输入的指纹是否在布隆过滤器中,是则视为旧指纹,转子步骤(1-2);否则为新指纹,进行步骤⑵;(1-2)读缓存队列判断子步骤判断旧指纹是否在读缓存队列中,是则转子步骤(1-3),否则转子步骤(1-4);(1-3)移动复制子步骤将命中的读缓存包移动到读缓存队列尾部,复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,结束;(1-4)写缓存队列判断子步骤判断旧指纹是否在写缓存队列中,是则从命中的写缓存包中复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,结束;否则转子步骤(1-5);(1-5)反向映射集合判断子步骤判断旧指纹是否在反向映射集合中,是则从反向映射集合中获得该旧指纹所在的索引记录包标识,转子步骤(1-6);否则判定为新指紋,进行步骤⑵;
(1-6)动态标识集判断子步骤判断所述索引记录包标识是否存在于动态标识集中,是则表示对应的索引记录包已在内存中,该旧指纹应为新指纹,进行步骤⑵;否则转子步骤(1-7);(1-7)磁盘访问子步骤根据索引记录包标识,检索对应的该旧指纹是否已存在于磁盘中,是则复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,将旧指纹所在的索引记录包存入读缓存队列,结束;否则判定该旧指纹为新指纹,进行步骤⑵。所述的检索方法,其特征在于,所述磁盘访问子步骤(1-7)包括以下过程(1-7-1)根据索引记录包标识定位磁盘索引文件,从磁盘索引文件读出索引记录包;(1-7-2)判断旧指纹是否在索引记录包中,是则复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,转过程(1-7-3);否则该旧指纹应为新指纹,进行步骤⑵;(1-7-3)判断读缓存队列是否已满,是则转过程(1-7-4);否则转过程(1_7_5);(1-7-4)将读缓存队列中第一个读缓存包写入磁盘,释放该读缓存包空间,转过程(1-7-5);(1-7-5)将旧指纹所在的索引记录包存入读缓存队列中第一个读缓存包,再将该读缓存包移至读缓存队列队尾,结束。所述的检索方法,其特征在于,所述创建索引记录子步骤(2-1)包括以下过程(2-1-1)将索引记录中的指纹添加到布隆过滤器中;(2-1-2)将索引记录添加到写缓存队列的写缓存包中;(2-1-3)判断采样时刻是否已到,是则转子步骤(2-1-4);否则转子步骤(2-1-5);(2-1-4)将索引记录添加到反向映射集合中,转子步骤(2-1-5);(2-1-5)修改索引系统元信息,索引系统元信息包括索引系统的总索引记录数目、索引系统对应的总数据量、存储在磁盘上的索引纪录包的个数及起始位置;结束。所述的检索方法,其特征在于,所述磁盘刷新子步骤(2-4)包括以下过程(2-4-1)开始遍历写缓存队列;
(2-4-2)将当前写缓存包写入磁盘索引文件,成为当前索引记录包;(2-4-3)从写缓存队列移除当前写缓存包,递减内存写缓存包计数值;(2-4-4)从动态标识集中移除当前索引记录包标识;(2-4-5)释放当前写缓存包占用的内存;(2-4-6)判断写缓存队列是否遍历完,是则转子步骤(2-4-7),否则访问写缓存队列中下ー个写缓存包,转子步骤(2-4-2);(2-4-7)将新指纹对应的索引记录写入写缓存队列队尾写缓存包,向检索者返回新指纹对应的索引记录,结束。
(I)高效稳定本发明结合了布隆过滤器,并利用反向映射集合快速定位磁盘,利用动态标识集进行局部排除,能够高效完成指纹的检索处理;在内存中分配两块同样大小的缓存空间作为写缓存队列和读缓存队列,读缓存队列和写缓存队列分别构成内存池,在写缓存队列写入吋,同时可以从读缓存队列读取,加快了索引记录包的读写速度,同时避免了内存碎片,使得内存分配效率得到提升,极大提升了系统的稳定性。(2)内存占用低、可扩展性高反向映射集合中对指纹进行第二次哈希运算和从索引记录包中挑选索引记录,并将其加入反向映射集合中以减少反向映射集合所占用的内存空间,极大降低了系统的内存占用,在数据存储容量扩张时,索引系统维持较为平稳的内存消耗,使用2 4GB的内存,可支持数十TB的独立数据存储。(3)不影响重删率本发明考虑到数据流的局部性,即把索引记录存储为ー个索引记录包,把对索引记录的处理转变为索引记录包的处理;采用索引记录打包存放和按照索引记录包整体换入换出缓存的策略,維持了较好的数据流局部性,对重删率无影响。


图I为本发明的流程框图;图2为指纹检索步骤的流程框图;图3为指纹检索步骤中的磁盘访问子步骤流程框图;图4为创建索引记录子步骤流程框图;图5为磁盘刷新子步骤流程框图。
具体实施例方式以下结合附图对本发明进ー步说明。如图I所示,本发明包括指纹检索步骤和存储新索引记录步骤,存储新索引记录步骤又包括创建索引记录子步骤、写缓存包判断子步骤、写缓存队列判断子步骤和磁盘刷新子步骤。如图2所示,本发明的指纹检索步骤包括布隆过滤器判断子步骤、读缓存队列判断子步骤、移动复制子步骤、写缓存队列判断子步骤、反向映射集合判断子步骤、动态标识集判断子步骤以及磁盘访问子步骤。如图3所示,所述磁盘访问子步骤包括以下过程(1-7-1)根据索引记录包标识定位磁盘索引文件,从磁盘索引文件读出索引记录 包;
(1-7-2)判断旧指纹是否在索引记录包中,是则复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,转过程(1-7-3);否则该旧指纹应为新指纹,进行步骤⑵;(1-7-3)判断读缓存队列是否已满,是则转过程(1-7-4);否则转过程(1_7_5);(1-7-4)将读缓存队列中第一个读缓存包写入磁盘,释放该读缓存包空间,转过程(1-7-5);(1-7-5)将旧指纹所在的索引记录包存入读缓存队列中第一个读缓存包,再将该读缓存包移至读缓存队列队尾,结束。如图4所示,创建索引记录子步骤包括以下过程(2-1-1)将索引记录中的指纹添加到布隆过滤器中;
(2-1-2)将索引记录添加到写缓存队列的写缓存包中;(2-1-3)判断采样时刻是否已到,是则转子步骤(2-1-4);否则转子步骤(2-1-5);(2-1-4)将索引记录添加到反向映射集合中,转子步骤(2-1-5);(2-1-5)修改索引系统元信息,索引系统元信息包括索引系统的总索引记录数目、索引系统对应的总数据量、存储在磁盘上的索引纪录包的个数及起始位置;结束。如图5所示,磁盘刷新子步骤包括以下过程(2-4-1)开始遍历写缓存队列;(2-4-2)将当前写缓存包写入磁盘索引文件,成为当前索引记录包;(2-4-3)从写缓存队列移除当前写缓存包,递减内存写缓存包计数值;(2-4-4)从动态标识集中移除当前索引记录包标识;(2-4-5)释放当前写缓存包占用的内存;(2-4-6)判断写缓存队列是否遍历完,是则转子步骤(2-4-7),否则访问写缓存队列中下ー个写缓存包,转子步骤(2-4-2);(2-4-7)将新指纹对应的索引记录写入写缓存队列队尾写缓存包,向检索者返回新指纹对应的索引记录,结束。
权利要求
1.一种数据块索引的检索方法,其特征在于,包括以下步骤 (1)指纹检索步骤检索输入的指纹是否已存在于索引系统中,是则表明为旧指纹,向检索者返回旧指纹对应的索引记录,将旧指纹所在的索引记录包存入读缓存队列,结束;否则表明为新指纹,进行步骤(2); (2)存储新索引记录步骤,包括以下子步骤 (2-1)创建索引记录子步骤为新指纹创建一条索引记录; (2-2)写缓存包判断子步骤判断当前写缓存包是否已满,是则进行步骤(2-3),否则将新指纹对应的索引记录写入当前写缓存包,向检索者返回新指纹对应的索引记录,结束; (2-3)写缓存队列判断子步骤判断写缓存队列是否已满,是则进行步骤(2-4),否则将新指纹对应的索引记录写入写缓存队列队尾写缓存包,向检索者返回新指纹对应的索引记录,结束; (2-4)磁盘刷新子步骤将写缓存队列中所有写缓存包写入磁盘,成为索引记录包;释放写缓存队列空间,将新指纹对应的索引记录写入写缓存队列队尾写缓存包,向检索者返回新指纹对应的索引记录,结束。
2.如权利要求I所述的检索方法,其特征在于,所述指纹检索步骤(I)包括以下子步骤 (1-1)布隆过滤器判断子步骤判断输入的指纹是否在布隆过滤器中,是则视为旧指纹,转子步骤(1-2);否则为新指纹,进行步骤⑵; (1-2)读缓存队列判断子步骤判断旧指纹是否在读缓存队列中,是则转子步骤(1-3),否则转子步骤(1-4); (1-3)移动复制子步骤将命中的读缓存包移动到读缓存队列尾部,复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,结束; (1-4)写缓存队列判断子步骤判断旧指纹是否在写缓存队列中,是则从命中的写缓存包中复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,结束;否则转子步骤(1-5); (1-5)反向映射集合判断子步骤判断旧指纹是否在反向映射集合中,是则从反向映射集合中获得该旧指纹所在的索引记录包标识,转子步骤(1-6);否则判定为新指纹,进行步骤⑵; (1-6)动态标识集判断子步骤判断所述索引记录包标识是否存在于动态标识集中,是则表示对应的索引记录包已在内存中,该旧指纹应为新指纹,进行步骤⑵;否则转子步骤(1-7); (1-7)磁盘访问子步骤根据索引记录包标识,检索对应的该旧指纹是否已存在于磁盘中,是则复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,将旧指纹所在的索引记录包存入读缓存队列,结束;否则判定该旧指纹为新指纹,进行步骤⑵。
3.如权利要求2所述的检索方法,其特征在于,所述磁盘访问子步骤(1-7)包括以下过程 (1-7-1)根据索引记录包标识定位磁盘索引文件,从磁盘索引文件读出索引记录包;(1-7-2)判断旧指纹是否在索引记录包中,是则复制该旧指纹对应的索引记录项,向检索者返回该旧指纹对应的索引记录,转过程(1-7-3);否则该旧指纹应为新指纹,进行步骤(2); (1-7-3)判断读缓存队列是否已满,是则转过程(1-7-4);否则转过程(1-7-5);(1-7-4)将读缓存队列中第一个读缓存包写入磁盘,释放该读缓存包空间,转过程(1-7-5); (1-7-5)将旧指纹所在的索引记录包存入读缓存队列中第一个读缓存包,再将该读缓存包移至读缓存队列队尾,结束。
4.如权利要求I所述的检索方法,其特征在于,所述创建索引记录子步骤(2-1)包括以下过程 (2-1-1)将索引记录中的指纹添加到布隆过滤器中; (2-1-2)将索引记录添加到写缓存队列的写缓存包中; (2-1-3)判断采样时刻是否已到,是则转子步骤(2-1-4);否则转子步骤(2-1-5); (2-1-4)将索引记录添加到反向映射集合中,转子步骤(2-1-5); (2-1-5)修改索引系统元信息,索引系统元信息包括索引系统的总索引记录数目、索引系统对应的总数据量、存储在磁盘上的索引纪录包的个数及起始位置;结束。
5.如权利要求I所述的检索方法,其特征在于,所述磁盘刷新子步骤(2-4)包括以下过程 (2-4-1)开始遍历写缓存队列; (2-4-2)将当前写缓存包写入磁盘索引文件,成为当前索引记录包; (2-4-3)从写缓存队列移除当前写缓存包,递减内存写缓存包计数值; (2-4-4)从动态标识集中移除当前索引记录包标识; (2-4-5)释放当前写缓存包占用的内存; (2-4-6)判断写缓存队列是否遍历完,是则转子步骤(2-4-7),否则访问写缓存队列中下一个写缓存包,转子步骤(2-4-2); (2-4-7)将新指纹对应的索引记录写入写缓存队列队尾写缓存包,向检索者返回新指纹对应的索引记录,结束。
全文摘要
一种数据块索引的检索方法,本发明属于计算机数据存储和备份方法,解决现有数据块索引检索方法重复数据删除系统规模受到限制、重删率降低;或者在重复数据删除系统的规模增大的情况下,检索速度较慢的问题。本发明包括指纹检索步骤和存储新索引记录步骤,指纹检索步骤包括布隆过滤器判断、读缓存队列判断、移动复制、写缓存队列判断、反向映射集合判断、动态标识集判断以及磁盘访问子步骤;存储新索引记录步骤又包括创建索引记录、写缓存包判断、写缓存队列判断和磁盘刷新子步骤。本发明提高了大数据量环境下重复数据删除索引检索的效率,维持了较低的内存占用,保证了重删率,具有良好的可扩展能力,可以提供大规模重复数据删除索引检索服务。
文档编号G06F17/30GK102663086SQ20121010090
公开日2012年9月12日 申请日期2012年4月9日 优先权日2012年4月9日
发明者周可, 夏德军, 宋兵强, 王桦 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1