原文:A Study on Data Deduplication in HPC Storage Systems.

这是今年Super Computing上的文章,目的不是提出一种在数据中心去重的解决方案,而是分析数据中心的数据集,去指导未来的设计。作者似乎很喜欢写这类分析数据集文章,他在SYSTOR’09比较过备份环境下各级去重的效果。他开源了fs-c,这两篇文章的分析工具。这篇文章可以和微软、EMC的2篇文章进行比较,都是对数据集进行研究,但环境不一样,特点也不一样。文章的数据规模很大,达到1212TB,迄今为止最大的数据集,作者拿到了多个欧/美数据中心的数据。

1.发现


关于文件大小、文件后缀的分析也是老生常谈了,这里主要记录下去重方面的发现。


发现一:在大多数数据集,有15%和30%的数据是重复的,可以通过数据去重移除。


去重率和普通PC的文件系统类似,当然和备份环境没法比,但也是很可观了。


发现二:小文件通常有更高的去重率,但是对全局去重率贡献很小。中等规模的文件同游也有很高的去重率。对于大文件,去重率没有规律。


去重的生力军是中等规模文件,大型文件的去重率视数据集而定。


发现三:NetCDF文件和无类型文件是去重率最高的文件类型,但并不是唯一有重复数据的文件类型。压缩文件(.gz等)去重率一般很低。


压缩文件的结果显而易见,NetCDF我也不知道是什么类型。


发现四:多个数据集之间存在重复数据,但是数据去重的主要来源仍是单数据集内部。


提示我们可以缩小去重范围。


发现五:文件级去重一般可以达到5%~10%的去重率,和块级去重差距很大。


微软的研究表明PC中文件级去重占据主导,这说明HPC与PC的特点有很大不同。


发现六:当块长增加,去重率缓慢下降;定长分块的去重率比基于内容分块少6-8%。


与其他环境相比,块长对去重率的影响不大,提示我们可以加大块长,减少元数据开销;定长分块的效果很一般。


发现七:大概3.1%到9.4%的数据块是零块。


零块的特点是基本都为最大块长,一部分来源是稀疏文件,但仍有其它未知来源。


发现八:数据块的引用分布十分不均匀,一小部分数据块贡献了大多数去重率。


90%的数据块只被引用了一次,即无重复数据;被多次引用的数据块中,有72%只被引用2次。

2.结论

  • 离线去重:备份环境中常用在线去重,避免额外的存储。但是在HPC环境,这不是严重的问题,而且离线去重可以减少对写性能的影响。但是如果计算能力持续增长,而存储和传输能力跟不上步伐,则可以考虑在线去重。
  • 大数据块:使用大数据块可以减少去重的开销,但是牺牲一些去重率。我们相信HPC环境的最佳块长应该比8KB更大。
  • 工程内部去重:跨工程、跨数据集存在重复数据,但是大多数重复数据还是来自内部。提示我们可以缩小索引的查找范围,一个更小的数据集内部索引就能发现大多数重复数据。
  • 特定卷:HPC提供多个独立卷,各有特点,有些卷只存放临时数据不适合去重。
  • 零块:稀疏文件可以看做某种形式的数据去重,但是如今仍有大量的零块没有按稀疏块处理,检测零块的开销很小,又可以获得不错的收益。