zoukankan      html  css  js  c++  java
  • 论文WAN Optimized Replication of Backup Datasets Using Stream-Informed Delta Compression

         这是EMC的备份小组发表在FAST12上的论文,主要是结合重删和差量数据压缩的方法,达到更高的数据压缩率。并且作者使用了一种基于数据流的差量数据压缩,消除了对索引的需求。通过测试达到的压缩效果是重删和本地压缩结合效果的两倍。
         数据流的压缩过程在备份服务器和远端资料库之间交互进行,有重删——差量压缩——本地压缩三个过程。具体过程如下(文中Figure 3):
    • 备份服务器上,将即将备份的数据流分块后计算指纹,发送至远端资料库。
    • 远端资料库通过Bloom Filter对指纹索引进行查找,将命中的指纹所在容器载入缓存(容器中块的指纹和缩略图,块内容不载人缓存),并将命中指纹信息告知备份服务器。
    • 备份服务器对未命中数据块,计算缩略图,发送缩略图至远端资料库。
    • 远端资料库在cache中查找与发送至缩略图相似的缩略图,将其对应的指纹发送给备份服务器,称为基础指纹(base fingerprint)。
    • 备份服务器接收到基础指纹后,以基础指纹对应的数据块为基准,对相应数据块进行差量压缩;对于远端资料库中没有查找到基础指纹的数据块,不进行差量压缩(当然啦,没有找到足够相似性的基准块嘛!)。
    • 差量压缩完成后,对所有数据块进行本地压缩(文中使用的是GZ压缩算法)后上传至远端资料库。
    • 远端资料库对差量压缩过的数据块进行解码,最后将数据写入磁盘。
     
         上面左图为数据流压缩流程图,右图为备份资料库中数据结构图,包括数据块、指纹、缩略图、container和cache(备份资料库即为EMC Data Domain)。
         其中还有一些细节,比如根据缩略图进行相似性比较,我的理解是每个缩略图包含若干个super-feature(一般3个),每个super-feature中包含若干个feature,通过缩略图间super-features和features的比较判断两块的相似性;还有只使用单重或双重差量压缩,不使用多重差量压缩,因为多重差量压缩会带来对基准块的多次读,得不偿失;还有关于缩略图缓存,只需要一个较小的缓存就可以实现较完美的性能……类似的小细节分析还有很多,不再一一赘述。
         这样一个架构,结合重删和差量压缩,以很小的代价大大提升数据压缩率,大大减少通过广域网传输的数据量。文中最大的创新,就是根据备份数据流特性设计了缩略图缓存,将重删和差量压缩以很小的代价完美结合在一起。详细解释就是,直觉上用户和应用对文件的修改往往是很少部分的修改,这样文件分块后有些块和以前版本完全重复,有些不一样,重删时备份资料库通过指纹配对将相同数据块所在container整个移入缓存,而这个container往往存放的就是同一文件未修改之前版本,那么在未被重删的块和contianer之中的块之间进行差量压缩检测实际上就是在一个文件被修改前和修改后的两个版本间进行差量检测,当然可以检测出绝大部分的相似性。好处显而易见,虽然牺牲一部分相似性检测性能,但不需要额外添加缩略图索引,且带来的开销极小(12MB cache就可实现很好性能)。这样trade-off,极为划算。
         在related work中作者归纳了许多参考文献,通过重删、压缩和差量压缩来减少网络传输的例子很多,结合重删和压缩来做的也不少,但作者同时也提到了一篇利用数据流的局部性减少磁盘存取的论文,可见作者自己的思想和灵感也是在一大堆前人成果的基础上整合得来的。主要就是将数据流局部性和在重删系统中做差量压缩实现了完美结合。这提醒我,论文的积累量很不够啊,还是要多读paper!
         文中也有一些地方让我困惑:
    1. 在压缩流程中,返回基础指纹给备份服务器后,在进行差量压缩时,新旧数据块之间是要进行逐字节比较的,那么旧数据块应该是从远端资料库获取的,这必然会带来网络开销,为何文中没有说明?是不是作者有意回避?即使备份服务器中有数据块的缓存,命中率也难说,并且这样的缓存维护也会带来大量的网络开销。
    2. 文中反复出现seeding,我实在不懂重删过程中seeding到底是什么意思,有什么作用?这个明天还要查资料搞明白。
         

         seeding从字面意思上看是“播种”的意思,在备份系统中seeding实际上就是指将一部分备份数据不通过WAN传输的方式先运送至备份数据中心(比如先拷贝至USB磁盘再运送磁盘),这样备份资料库中有了一部分数据,通过重删等技术就可大大减少通过WAN传播的数据,这就是seeding的过程。seeding已广泛运用在备份系统中。
         备份资料库中虽使用重删,但两周的全备之间是真正意义上的全备,不是通过重删后存放差量。
  • 相关阅读:
    AtomicInteger
    Android利用ViewPager实现滑动广告板
    modelsim实用教程--前言
    信号的抽取和插值
    FPGA与simulink联合实时环路系列——实验三 按键key
    FPGA与simulink联合实时环路系列——实验二LED
    FPGA与simulink联合实时环路系列——实验一 测试
    FPGA与simulink联合实时环路系列—开篇
    格雷码原理与Verilog实现
    基于FPGA的飞机的小游戏
  • 原文地址:https://www.cnblogs.com/qiyukun/p/3413033.html
Copyright © 2011-2022 走看看