Zhu B, Li K. In: Proc. of the 6th Usenix Conf. on File and Storage Technologies (FAST 2008). Berkeley: USENIX Association, 2008. 269–282.
文件描述的 DDFS 文件系统中用于减轻磁盘瓶颈的 3 种技术:摘要向量、基于流的块排列和局部性保持。应用这 3 种技术,实现了一个高吞吐率、低开销的相同块删除存储系统。
1) 摘要向量技术
摘要向量技术用于减少在磁盘中查找不存在块的次数。摘要向量可以看作是一种处于内存中,对块索引的摘要。如果摘要向量指出一个块不在索引内,则不需要进一步查找。如果摘要向量指出这个块在块索引中,那么很有可能这个块就在块索引内,但并不是一定的。为摘要向量利用 Bloom filter 来实现。一个 Bloom filter 用一个 m 位向量来概括在块索引中 n 个块指纹值的存在信息,且 Bloom filter 的特点是允许错误肯定 ( 认为一个不在集合中的元素在集合中 ) 的存在。因为摘要向量是在内存中的数据结构,所以系统关机后,会将其写到 disk 上,启动后,又会从 disk 上读入内存中。为了处理停电和不正常的关机情况,系统会周期性地将摘要向量备份到磁盘上,并设置检查点。当恢复时,系统会载入最近备份的副本,并处理从最近一个检查点添加到系统中的数据,将其信息加入到摘要向量中。
2) 基于流的块排列技术
基于流的块排列技术 (stream-informed segment layout ,简称 SISL) 为块数据和块描述符提供了更好的空间局部性,并且使局部 cache 缓存成为可能。 SISL 主要特点是针对同一个数据流,使得新数据块被存放在一起,块描述符也被存放在一起。 SISL 能够带来以下益处:
i. 当同一个数据流的多个数据块被写入到同一个容器中时,在进行读取操作重建这个数据流时,可以大幅减少磁盘 I/O 次数,使系统达到较高的读性能。
ii. 在同一数据流中,相邻新数据块的块描述符和压缩数据分别被线性地装入相同容器的元数据段和数据段。这种装入方法为其后相似的数据流提供了一种访问局部性,使得 cache 的局部缓存工作更有效。
iii. 元数据段和数据段分开存储,而且元数据段比数据段要小得多。
3) 局部性保持技术
系统利用局部性保持技术 (locality preserved caching ,简称 LPC) 来加速辨认重复块的过程。针对重复数据检测,传统的 Cache 并不适用于缓存指纹值、哈希值或者描述符,因为指纹值在本质上是随机的。因此,如果没有进行完全的索引访问,预言下一个块的索引位置是非常困难的,从而也导致了传统 cache 的命中率是非常低的。 LPC 的应用使得块重复局部性提高,如果一个块是重复的,那么附近的块很可能已经被缓存了。
实验结果表明,在重复数据删除的现实环境中,把以上 3 种技术结合在一起,可以省去 99% 的磁盘访问。这些技术对于一个双核计算机系统而言,就是利用其 90% 的 CPU 性能和一个 15 个磁盘的磁盘柜,即可达到 100MB/s 的单工流吞吐率和 210MB/s 的双工流吞吐率。
PPT