一种基于数据压缩和数据去冗协同的存储优化方法

文档序号:9304399阅读:628来源:国知局
一种基于数据压缩和数据去冗协同的存储优化方法
【技术领域】
[0001]本发明涉及计算机数据处理领域,特别是一种基于数据压缩和数据去冗协同的存储优化方法。
【背景技术】
[0002]提高物理介质的有限的容量的利用率,当前有两种主流的方法,分别为数据去冗余(Data Deduplicat1n)和数据压缩(Date Compress1n)。其中数据去冗余是通过对数据块进行扫描检查,以hash值作为特征组织数据块,发现多个相同的数据块,通过间接引用的方式合并成一块,进而节省整个存储的空间,。而数据压缩依赖于现有的数据压缩算法(如LZW),尝试压缩数据块,如果压缩率高于阈值,就保存压缩后的数据块,并释放原来数据块空间,以达到节省空间的目的。数据压缩技术相比较数据块去冗技术在节约存储资源上有不同的特性差异:前者相对反应迅速,有较稳定的数据压缩比,;而后者需要找到两个完全相同的数据块,因此必须扫描所有数据块,扫描过程持续时间长,且在不同的场景下数据压缩比有较大差异,在某些场景下有前者无法比拟的压缩比,然在另外一些场景下则几乎没有压缩效果。因此,实际的应用中,这两种方法无法互相替代。在考虑压缩速度、计算代价、压缩比等多种因素的情况下,为了达到更高效率的存储压缩,需要考虑这两种方法在实际应用中的协同性问题。实际中要同时使用这两种方法并不能简单的让它们先后执行。如果单纯的先用数据压缩,再进行数据去冗余,会导致节约数据空间效果没有达到最好。而单纯的先进行数据去冗余,再进行数据压缩又不能保证时间效率。在同时使用这两种方法时需要一种方法来协调调度它们,在进行数据去冗余前需要做出判断,只有判断认为消耗时间进行数据去冗余是有价值的,再进行数据去冗余,否则进行数据压缩。

【发明内容】

[0003]发明目的:本发明所要解决的技术问题是当前数据压缩机制与数据去冗余机制并不协同工作的缺陷,用一种基于数据压缩和数据去冗协同的存储优化方法来协调调度,在进行数据去冗余前需要做出判断,只有判断认为消耗时间进行数据去冗余是有价值的,再进行数据去冗余,否则进行数据压缩。
[0004]为了解决上述技术问题,本发明公开了一种基于数据压缩和数据去冗协同的存储优化方法,包括以下步骤:
[0005]步骤1,假设计算机在某个情况下需要回收释放存储介质(内存、磁盘)中N个数据块的空间来存储更多的新数据,候选的可用于释放的数据块集合DSet包含M个数据块(M>N),则此次处理期望释放出的数据存储比率S = N/M。设置采样比率阈值R,0%< 100%,数据去冗余执行百分比阈值P,0%< P彡100% ;
[0006]步骤2,使用系统提供的随机发生器,产生随机种子,填入伪随机算法产生一个数据块随机扫描序列Block1'Block”…BlockM;
[0007]步骤3,选择一个快速的去冗扫描的哈希算法H,对前MXR个数据块Block1'Block2'…BlockMXR进行扫描,计算每个数据块的哈希值H (Block !)、H(Block2)...H(BlockMXR);
[0008]步骤4,将所有数据块哈希值,逐个插入到查找数据结构;在插入过程中,如果有相同的哈希值,则进一步判断是否哈希函数为加密强度哈希算法(如MD5、SHA1),如果是加密强度,则将其中一个数据块作为冗余数据块处理,并跳转至步骤6 ;如果不是加密强度则继续步骤5 ;如果没有相同的哈希值,则将该哈希值作为查找数据结构的一个键值插入到结构中;
[0009]步骤5,逐字节比对哈希值相同的数据块内容,如果数据块内容也相同,那么将其中一个数据块作为冗余数据块处理;如果数据块内容不相同,则将该哈希值作为查找数据结构的一个键值插入到结构中;
[0010]步骤6,统计步骤4和5中的所有冗余数据块的数量,计数为C ;计算实际冗余度E=C/(MXR),如果P < E,则扫描数据块序列BlockMXR+1、BlockMXR+2、…BlockM,计算每个数据块对应的哈希值,将所有数据块哈希值,插入到查找数据结构;在插入过程中,如果有相同的哈希值,则进一步判断是否哈希函数为加密强度哈希算法(如MD5、SHA1),如果是加密强度,则将其中一个数据块作为冗余数据块处理,如果不是加密强度则需要进一步逐字节比对所对应的内存数据块内容,如果内存数据块内容也相同,那么将其中一个数据块作为冗余数据块处理;如果没有相同的哈希值或者逐字节比较的数据块内容不一样,则将该哈希值作为查找数据结构的一个键值插入到结构中;并统计剩余冗余计数为C’,所有数据块扫描完成以后,得出的尚未释放的数据块集合,定义为Dset’;如果P>E那么,令实际节省的数据存储空间比率Q = 0,并跳转至步骤8 ;
[0011]步骤7,计算出实际节省的数据存储空间比率Q,Q = (C+C’) /M,如果S彡Q,则已经回收超过N个数据块,结束,否则,如果S>Q,则继续步骤8 ;
[0012]步骤8,选择针对内存的快速压缩算法Z,逐个扫描并压缩数据块集合Dset’,针对每个数据块压缩以后的数据块BZ1= Z(Block J,其中i为Dset’中任意一个合法的索引值即Block1G Dset’。释放数据块Block1并将数据块BZ1写入至存储设备。此过程持续直到释放空闲出的数据块数量大于N。
[0013]数据块集合DSet的载体为任意用以存储数据的物理设备。
[0014]有益效果:本发明适用于需要进一步节省存储空间的软件系统中,其主要有益效果体现在:对数据压缩和数据去冗余两种方法进行协作,比简单组合这两种方法,提供更好的时间效率和存储效率。本方法能够协同两类不同的存储优化方法,优化更加完善。根据不同的具体实施场景,数据去冗机制与数据压缩可以自适应不同的阈值S与P进行协同工作。本方法不限定特定的数据去冗机制算法与压缩算法,具有具体算法的普遍适用性。
【附图说明】
[0015]图1为本发明处理流程图。
【具体实施方式】
[0016]本发明提出了一种基于数据压缩和数据去冗协同的存储优化方法。本方法会在数据压缩机制起作用之前判断是否需要进行数据去冗余。给定一批需要压缩的数据块,本方法首先会基于采样来估算性能开销较高的数据去冗余机制的收益,并判断是否值得进行数据去冗余:如果值得,就对全部给定数据块先进行去冗余,然后再压缩,否则就直接进行压缩。本发明通过协同原本独立的两套减少数据存储量的机制,能够最大化数据存储的效率。
[0017]如图1所示,本发明公开了一种基于数据压缩和数据去冗协同的存储优化方法,包括以下步骤:
[0018]步骤1,假设计算机在某个情况下需要回收释放存储介质(内存、磁盘)中N个数据块的空间来存储更多的新数据,候选的可用于释放的数据块集合DSet包含M个数据块(M>N),则此次处理期望释放出的数据存储比率S = N/M。设置采样比率阈值R,0%
<100%,数据去冗余执行百分比阈值P,0%< P彡100% ;
[0019]步骤2,使用系统提供的随机发生器,产生随机种子,填入伪随机算法产生一个数据块随机扫描序列Block1'Block”…BlockM;
[0020]步骤3,选择一个快速的去冗扫描的哈希算法H,对前MXR个数据块Block1'Block2'…BlockMXR进行扫描,计算每个数据块的哈希值H (Block !)、H(Block2)...H(BlockMXR);
[0021]步骤4,将所有数据块哈希值,逐个插入到查找数据结构;在插入过程中,如果有相同的哈希值,则进一步判断是否哈希函数为加密强度哈希算法(如MD5、SHA1),如果是加密强度,则将其中一个数据块作为冗余数据块处理,并跳转至步骤6 ;如果不是加密强度则继续步骤5 ;如果没有相同的哈希值,则将该哈希值作为查找数据结构的一个键值插入到结构中;
[0022]步骤5,逐字节比对哈希值相同的数据块内容,如果数据块内容也相同,那么将其中一个数据块作为冗余数据块处理;如果数据块内容不相同,则将该哈希值作为查找数据结
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1