这是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. C# winform listBox中的项上下移动(转)

    C# winform listBox中的项上下移动 分类: C# winform2009-06-24 12:37 876人阅读 评论(0) 收藏 举报 winformc#object //上移节点   ...

  2. 实现泛型IEnumerable接口

    用C#实现一个类的IEnumerable接口时有两种方法:1)实现非泛型IEnumerable接口:2)实现泛型IEnumerable(T)接口.如果采用方法1,当集合元素T是值类型时,将涉及到巨多的 ...

  3. DCOM 找不到 office word 的解决方法

    1. 在运行里面  输入     comexp.msc -32  2.在“DCOM配置”中,为IIS账号配置操作Word(其他Office对象也一样)的权限. 具体操作:“组件服务(Component ...

  4. 微信小程序获取当前所在城市

    本篇文章主要讲解在微信小程序中,如何利用微信自带的api(wx.getLocation())结合百度地图的逆地址解析api来获取当前所在城市名. 实现起来也比较简单,步骤为: 1--利用微信小程序接口 ...

  5. Win10重置 系统诸多设置或者菜单点击无效或者异常信息回复办法

    cmd: 输入下列脚本重新注册DLL文件,待执行完毕后重启电脑 for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

  6. Spring Boot (9) mybatis全注解化

    ORM对比图 框架对比 Spring JDBC Spring Data Jpa Mybatis 性能 性能最好 性能最差 居中 代码量 多 少 多 学习成本 低 高 居中 推荐指数 ❤❤❤ ❤❤❤❤❤ ...

  7. elasticearch 归并策略

    归并线程配置 segment 归并的过程,需要先读取 segment,归并计算,再写一遍 segment,最后还要保证刷到磁盘.可以说,这是一个非常消耗磁盘 IO 和 CPU 的任务.所以,ES 提供 ...

  8. 关于jquery的clone()和javascript的cloneNode()

    区别: jquery的clone( ),如果是true就是深克隆,把事件都会克隆过去:如果是false,则仅仅克隆的是结构: javascript的cloneNode( ),如果是true,会将子节点 ...

  9. Vue掉坑记

    本文章汇总学习过程中掉入和不理解的坑,会持续更新,请保持关注 1.过滤器类 搜索过滤 2.修饰符 修饰符汇总 3.webpack webpack+vuecli打包路径 4.Vue后台管理框架 组件后台 ...

  10. avaScript中变量的声明和赋值

    变量是指程序中一个已经命名的存储单元,它的主要作用就是为数据操作提供存放信息的容器.变量是相对常量而言的.常量是一个不会改变的固定值,而变量的值可能会随着程序的执行而改变.变量有两个基本特征,即变量名 ...