这是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已广泛运用在备份系统中。

     备份资料库中虽使用重删,但两周的全备之间是真正意义上的全备,不是通过重删后存放差量。

论文WAN Optimized Replication of Backup Datasets Using Stream-Informed Delta Compression的更多相关文章

  1. MySQL主从复制(Replication for Backup)

    环境:MySQL5.7,VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5 1. 基本概念和操作思路 主从复制能做什么 数据库的主从复制,是 ...

  2. 文件类似的推理 -- 超级本征值(super feature)

         基于内容的变长分块(CDC)技术,能够用来对文件进行变长分块.而后用来进行反复性检測,广泛用于去重系统中.后来又出现了对相似数据块进行delta压缩,进一步节省存储开销. 所以就须要一种高效 ...

  3. Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

    前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 ...

  4. ICCV 2019|70 篇论文抢先读,含目标检测/自动驾驶/GCN/等(提供PDF下载)

    虽然ICCV2019已经公布了接收ID名单,但是具体的论文都还没放出来,为了让大家更快得看论文,我们汇总了目前已经公布的大部分ICCV2019 论文,并组织了ICCV2019论文汇总开源项目(http ...

  5. LIST OF NOSQL DATABASES [currently 150]

    http://nosql-database.org Core NoSQL Systems: [Mostly originated out of a Web 2.0 need] Wide Column ...

  6. Unity 5 Game Optimization (Chris Dickinson 著)

    1. Detecting Performance Issues 2. Scripting Strategies 3. The Benefits of Batching 4. Kickstart You ...

  7. Exam E05-001 Information Storage and Management Version 3 Exam

    Emc 考试 e05-001信息存储和管理版本3考试 [总问题:171] 哪种 emc 产品提供软件定义的存储基础架构的自动监视和报告? A. viprSrmB. 斯纳普内C. 阿瓦马尔D. 快速副总 ...

  8. vyos User Guide

    vyos User Guide 来源 https://wiki.vyos.net/wiki/User_Guide The VyOS User Guide is focused on providing ...

  9. Percona XtraBackup User Manual 阅读笔记

    XtraBackup XtraBackup 2 安装XtraBackup 2.1 安装XtraBackup binary版本 2.1.1 yum的安装方法: 2.1.2 直接下载rpm包安装 3 Xt ...

随机推荐

  1. TensorFlow Lite demo——就是为嵌入式设备而存在的,底层调用NDK神经网络API,注意其使用的tf model需要转换下,同时提供java和C++ API,无法使用tflite的见后

    Introduction to TensorFlow Lite TensorFlow Lite is TensorFlow’s lightweight solution for mobile and ...

  2. LMDB中的mmap、Copy On Write、MVCC深入理解——讲得非常好,常来看看!

    LMDB基本架构 lmdb的基本架构如下:  lmdb的基本做法是使用mmap文件映射,不管这个文件存储实在内存上还是在持久存储上.lmdb的所有读取操作都是通过mmap将要访问的文件只读的映射到虚拟 ...

  3. HTML中的文本框textarea标签

    转自:https://www.jb51.net/web/183411.html <textarea></textarea>用来创建一个可以输入多行的文本框,此标志对用于< ...

  4. Arranging Your Team

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=35800#problem/D #include <iostream> #inc ...

  5. codevs1688 求逆序对(权值线段树)

    1688 求逆序对  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 给定一个序列a1,a2,…, ...

  6. 制作一个 JavaScript 小游戏

    简评: 作者学习了编程两个月,边学边做了一个 JavaScript 小游戏,在文中总结了自己在这个过程中的一些体会,希望能给其他初学者一些帮助. 对于很多想学编程但一直没下定决心的同学来说,最大的问题 ...

  7. POJ 2230 DFS

    题意: Bessie 最近做了农场看守,他每天晚上的工作就是巡视农场并且保证没有坏人破坏农场.从谷仓出发去巡视,并且最终回到谷仓. Bessie 视力不是很好,不能像其他农场的看守一样,对农场的每一条 ...

  8. invoke与call

    “调用一个委托实例” 中的 “调用” 对应的是invoke,理解为 “唤出” 更恰当.它和后面的 “在一个对象上调用方法” 中的 “调用” 稍有不同,后则对应的是call.在英语的语境中,invoke ...

  9. 文字水平居中和垂直居中的CSS

    首先选择一个需要显示文字的选择器,我这里选择的是微信小程序里面的<view>选择器,在其他语言(如html)的选择器里是一样的做法: <view class="btn-it ...

  10. nodejs脚手架express-generator

    1.安装生成器 npm install express-generator -g 2. 创建名称为APP的应用: express my-project 3.安装依赖包 cd my-project np ...