论文部分内容阅读
随着信息全球化的到来,全球数据总量呈爆炸式增长,然而物理存储资源的增长速度远低于数据总量的增长速度,传统的存储方式也亟待改进。根据统计,存储系统中存在着大量的冗余数据,正是这些相同或者相似的冗余数据导致了数据总量的爆炸增长。重复数据的删除技术可以有效识别并删除存储系统中的重复数据,因此在各个存储相关领域中被普遍运用。但是作为一种新兴的技术,依然存在有很多需要改进的地方,如重复数据删除索引在未命中的情况下的额外开销、低效率的相似检测方案以及对于零引用数据块的存储造成的资源浪费等。针对文件备份系统,为了改进以上不足,从而提升系统性能,设计提出了基于重复数据块相邻数据块相似性的重复数据删除方案。重复数据的删除系统首先要将数据流进行一定处理——数据分块,使其能够更好地进行重复数据检测。由于不同的分块算法,所得到的数据块会有很大区别,并且会直接影响到删除重复的数据的效果。通过对不同分块算法对比后,本文所设计的方案选择滑动块技术对数据流进行划分。在对数据块进行检索之前需要对数据块进行散列运算得到其指纹。指纹代表着与之对应的数据块,是进行重复检测的基本单位。不同的散列运算算法计算出的指纹的精度也有不同,并且发生哈希碰撞的可能性也有区别。本文选用160位的SHA-1安全哈希算法,其发生哈希碰撞的概率分布区间为2-55-2-75,能够满足系统的需要。由于在PB级存储系统中,其指纹索引过大无法完全存放在内存中,导致需要访问硬盘,这就给检索带来了更多的开销。对此引入Bloom Filter。Bloom Filter能够快速的判断某个元素满足某集合与否。在进行重复数据删除相同检测之后,系统中依然存储有海量的相似数据。如果对所有数据块都进行相似检测是不实际的。为了更好更高效的检测相似数据,本文建立了一个数据块价值评价模型,基于此设定了一个相似检测的阈值。相似检测的阈值是根据数据块在某一期的热度值和前一期的历史价值以及重复率计算得出。其中热度值是通过该数据块在这一期的被引用次数和最后访问时间计算得出。前一期的历史价值是根据前一期该数据块的热度值乘以一个控制参数计算得出,是为了防止发生抖动而提出的。通过相似检测阈值判定数据块是否需要进行相似度检测,从而提高相似检测的效率。在进行重复的数据删除之后,系统中仍然会存在零引用的数据块。这些零引用的数据块需要进行清理。通过之前设定的序数参数可以判定数据块是否是零引用,即当序数参数等于零的时候,则表明该数据块没有被引用,所以可以被清理。但是如果直接删除该数据块可能会引起系统抖动,为防止系统出现抖动,再次引入前文中设置的时间参数和历史参数,避免删除当期被引用过的数据。本文结合分布式平台Hadoop构建实现了本方案。通过实验表明在引入布隆过滤器之后四次测验系统平均吞吐率从756.3MB/S提高到832.5MB/S,提升了10.08%;对比DDFS Indexing和Extreme Binning的重复数据删除率和吞吐率,Adj-Dedup的重复数据删除率高于Extreme Binning略低于DDFS Indexing,而Adj-Dedup的吞吐率高于800MB/S,Extreme Binning约为500MB/S,而DDFS Indexing吞吐率低于200MB/S。本文所设计的重复数据删除方案,具有较好的系统性能。