重复数据删除技术(Data Deduplication)

2023-05-16

 我相信所有人都会同意,数据存储正在以飞快地,甚至是令人震惊的速度在增长。
 这意味着为了不影响普通用户的正常使用,存储管理员们不得不加班加点地在幕后
 工作着。他们的鲜为人知的工作包括:配额管理,快照(snapshots),数据备份,
 数据复制(replication),为灾难时数据恢复而做的数据备份,离线数据拷贝,
 已删除的用户数据的恢复,监测数据增长和数据使用率,以及其他为确保应用平稳
 运行所做的数以千计的工作(正如花样游泳,从水上看起来非常优雅美观,而在
 水下,运动员的腿和手臂不得不飞快地摆动。)

 我把存储专家与花样游泳运动员类比,可能会让两方面的人都不高兴(我得
 道歉)。现在让我们来看一下这项新技术是如何使得存储管理人员的工作轻松
 而又节约企业预算的。这项新技术叫做重复数据删除。虽然这是一项新技术,
 但通过我的介绍你会知道它其实也是已有技术的变形,虽然它对多数存储系统
 产生了巨大影响。闲话少说,让我们来看一下重复数据删除这项技术。

 简介
 重复数据删除,其实很简单,遇到重复数据时不是保存重复数据的备份,
 取而代之,增加一个指向第一份(并且是唯一一份)数据的索引。从根本
 上讲,它能减少存储数据所占用的空间。这会带来如下好处:
     节约IT经费(不需要为所需要的额外空间增加投资)
     减少备份数据,数据快照等的大小(节约经费,节约时间,等)
     较少电源压力(因为更少的硬盘,更少的磁带等)
     节约网络带宽(因为只需要更少的数据)
     节约时间
     因为需要较少的存储空间,磁盘备份成为可能。

 上面这些好处也正是重复数据删除技术风靡当前的根本原因。又有谁会不喜欢节约
 经费,时间,网络带宽呢?但是像很多美好的东西一样,魔鬼存在于细节中。本文
 将会介绍重复数据删除方面的概念及存在的问题。

 重复数据删除绝不是新事物,事实上它只是数据压缩的衍生品。数据压缩在单个
 文件范围内删除重复的数据,代之以指向第一份数据的索引。重复数据删除把这
 个概念进行如下扩展:
     单个文件范围内(跟数据压缩完全一致)
     跨文件
     跨应用
     跨客户端
     跨时间

 重复数据删除与数据压缩的主要区别在于:假如你有两个完全相同的文件,数据
 压缩会对每个文件进行重复数据的排除并代之以指向第一份数据的索引;而重复
 数据排除则能分辨出两个文件完全相同,从而只保存第一个文件。而且,它还跟
 数据压缩一样,排除掉第一个文件里的重复数据,从而减小所存储数据的大小。

 下面是个简单的重复数据删除的例子,来自EMC视频。


 图1 重复数据删除

 该例中一共有三个文件。第一个文件,document1.docx,是个大小为6MB的简单的
 word文档。第二个文件,document2.docx,是第一个文件的拷贝,只是文件名
 不同。最后那个文件,document_new.docx,在document1.docx基础了进行某些
 小的修改,其大小仍旧为6MB.

 假设重复数据删除程序会把文件分割成6个部分(6在实际应用中可能太小,这儿
 只是为了说明用)。现在第一个文件有A,B,C,D,E和F六个部分。第二个文件既然
 是第一个文件的拷贝,所有有会被分成完全相同的六个部分。第三个文件相比
 前两个文件只有一部分发生了变化(标记为G),其大小仍旧是6MB. 在不使用
 重复数据删除的情况下,备份这些文件需要18MB的空间,而是用重复数据删除
 技术的情况下,只需要备份第一个文件和第三个文件的G部分,大约只需要7MB.

 重复数据删除技术还有一个特性:备份后,A,B,C,D,E,F,G存储在一个列表中
 (有时也称为索引)。当新的文件被备份到该同一系统时,A,B,C,D,E,F,G各部
 分分别会于新文件进行比较。这就是跨时间的数据重复删除。

 关于重复数据删除,“什么是重复数据删除?“之后的下一个问题通常是”它能
 带来多大程度的数据删除?” 这个问题的答案依赖于使用场合和重复数据删除
 技术的具体实现。据EMC的统计,经过一段的稳定运行后,重复数据排除率
 在20:1到50:1之间。

 细节之魔

 重复数据删除技术无论从哪一种角度看都不是一种标准技术,因此它的所有
 实现技术都是有专利权的。从而,每一种产品的实现都不一样。理解这些基本
 差异对于决定是否和何时要应用到你的环境非常重要。重复数据删除技术最
 典型的应用是在数据备份方面,但绝不仅限于备份。记住这一点,我们一起来
 看一下重复数据删除技术的实现方式。

 事实上,应用在备份领域的重复数据删除技术主要由两类:基于目标数据和基于
 源数据。其实这两种类型的区别很简单:基于目标数据的重复数据删除,是在
 数据在经过网络传输后进行充数数据删除;而基于源数据的重复数据删除,则是
 在数据备份前进行重复数据的删除工作。这两者的区别对于理解重复数据删除的
 典型部署方式非常重要。

 基于目标数据的重复数据删除的情况下,重复数据删除的工作通常由类似虚拟
 带库的单元来完成。备份数据被传输到备份服务器之后,虚拟带库才做重复数据
 的删除工作。因此,数据在网络传输中并没有经过重复数据删除,这增大了需要
 传输的数据量。但有一个优点:它允许我们使用现有的备份工具和备份程序。

 还有一种情况:你通过广域网进行远程的数据备份。此时,网络带宽资源异常
 重要。如果你仍然想使用基于目标数据的重复删除,虚拟带库单元可以放置于
 备份服务器附近,以便在数据通过广域网传输之前首先进行重复数据删除。

 与基于目标数据的重复删除相反的是基于源数据的重复数据删除。此时,重复
 数据的删除工作需要由备份软件来完成。客户端的备份软件首先需要告诉服务器
 端的备份软件在数据传输之前先进行重复数据的删除。基本上客户端首先把数据
 分成块,然后传给备份软件,由备份软件来比较是否已经有相同的块。如果已经
 有相同的块,备份软件则增加一个指向已有数据块的索引。

 基于源数据的重复数据删除很大程度上降低了传输数据所使用的网络带宽,虽然
 增加了客户端和备份软件之间的通信。而且,由于重复数据删除由备份软件来
 完成,因此不需要额外的软件支持。但是,为了使用重复数据删除,你不得不
 放弃当前的备份工具而是用专门的支持重复数据删除的备份软件。

 直到现在,重复数据删除看上去很简单。的确,基本概念非常容易理解。但是,
 还有很多细节没有被提及。对于重复数据删除这项技术来说需要很多部件被
 开发,集成,和可靠性测试(毕竟,这关系到你的数据)。重复数据删除技术
 的公司的主要区别就在于这些实现。比如,重复数据删除技术的实现是基于源数据
 的还是基于目标数据的?承担重复数据删除工作的部件或软件的特性有何不同?
 重复数据删除在数据哪一层次上实现?数据块如何与已有数据数据进行比较的?
 等等。

 在深入讨论重复数据删除的具体部署之前,先让我们来谈一下重复数据删除的
 算法。前面已经提到,重复数据删除可以实现在文件层次上,也可以实现在
 块层次上(块的定义依赖于具体的实现),甚至实现在位层次上。如果只是
 简单地把整个数据块与已有的数据进行比较并生成索引的话,效率非常低。
 为了提高效率,重复数据删除通常利用如MD5,SHA-1等算法对每个数据块生成
 唯一的一个Hash值。从而可以利用这个Hash值与存储在索引中的已有数据块
 的Hash值进行比较。

 但是,使用这些Hash算法的一个潜在问题,就是Hash值冲突。Hash值冲突类似错误
 的肯定。也就是说,两个不同的数据块产生出相同的Hash值。因而,由于数据块的
 Hash值已经存在于已有数据的索引中,因此该数据块可能不被备份,虽然事实上数
 据没有被存储。显然,由于本应该备份的数据没有被备份,会导致数据的损坏。
 对于这一点,重复数据删除公司一般都采用几种Hash算法或它们的组合,来确保
 只有真的是重复的数据才不会被再存储。另外,也有厂商使用元数据来辅助确认
 以防止出现Hash值冲突。

 详细解释这种Hash值冲突的发生概率需要一点数学知识。基本结论是Hash值冲突
 的发生概率是1/2^160.这是个非常非常非常小的概率。换句话说,如果你有95EB
 的数据(1EB=1000PB),你会有0.00000000000001110223024625156540423631668090820313%
 的机会发生Hash值冲突,导致你扔掉了本应该保存的数据。即使你有95EB的数据,
 在给定的时间内几乎不可能发生。但是,永远不要说永远不。(毕竟,有人曾经
 预言我们只需要640KB的内存。)

 实现

 解决方案的选择是一种艺术,需要结合你的实际运用环境和运用过程来考虑。
 上面提到的视频里面介绍了基于基于源数据的重复删除和基于目的数据
 的重复删除的基本差异而提出的一些基本准则。基于源数据的重复删除
 适用于网络带宽资源紧张的场合:比如,共享文件系统的备份(并非把整个
 文件系统的数据重新备份),VMware存储,分支机构间(这种情况下可使用的
 网络带宽异常受限)。但是不要忘记:为了使用基于源数据的重复删除,你
 必须从现有的数据备份软件转换到支持重复数据删除的备份软件。

 而基于目的数据的重复删除则非常适用于SAN,LAN,数据库的场合。这是因为
 在LAN,SAN网络内移动数据非常容易,你也可以继续使用已有的备份程序或
 软件。

 最后视频里说基于源数据的重复数据删除可以达到50:1的重复排除率,而
 基于目的数据的重复删除则只能达到20:1的重复删除率。两种技术的重复
 数据删除率的效果都很显著。而且,有很多讨论如何估计你能达到的最大
 重复数据删除率的文章。应该说20:1的压缩率是可以预见的。

 市场上已经有很多重复数据删除的产品。本文中的列表虽然不完全叶很难
 说没有一丝倾向性。但我还是给出一个提供重复数据删除产品的公司列表:

 Exagrid

 NEC HydraStor

 Symantec Netbackup Puredisk

 Data Domain (owned by EMC)

 FalconStor

 EMC Avamar

 Sepaton

 Commvault

 Netapp (可以在他们公司的产品中使用重复数据删除)

 Quantum

 这些公司都会提供重复数据删除的解决方案。同时,也有一些
 中小公司提供重复数据删除的产品。

 重复数据删除和开源

 在开源世界里目前还没有几个(一个也没有?)重复数据删除的开源项目。
 但如果你使用基于目的数据的重复数据删除,因为你可以使用已有的备份
 软件,而这个备份软件有可能是开源的。但是,还是建议你在使用之前先
 跟提供商确认他们是否在linux上做过测试。

 目前被发现的唯一的开源项目叫做LessFS.它是一个内建支持重复数据
 删除的FUSE文件系统。它仍让在开发初期,虽然已经展示了它的重复数
 据删除能力和内建的加密。

 小结

 这只是关于重复数据删除的简单介绍。而重复数据删除是现在存储业界最
 热门的技术。它承诺由于能够减少备份数据所需要的物理空间和传输数据
 所需要的带宽,因而可以为企业或组织节约IT花费。

 本文只是蜻蜓点水式的介绍了重复数据删除和它是否适用于你的IT环境。
 请多看看其他的文章--有很多关于重复数据删除的天花乱坠般的宣传。你
 需要就对你是否有用来做出自己的判断。如果你想试试开源项目,那么很
 不幸,并没有多少开源项目可供你选择。我唯一发现的就是集成了重复
 数据删除功能的基于FUSE的文件系统项目 -- LessFS。它值得你去调查

 一下,虽然它也许只能用于你的二级存储。


转自:http://article.yeeyan.org/view/156578/109158

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重复数据删除技术(Data Deduplication) 的相关文章

随机推荐

  • 堆栈区别

    堆和栈的区别 一 预备知识 程序的内存分配 一个由c C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区 xff08 stack xff09 由编译器自动分配释放 xff0c 存放函数的参数值 xff0c 局部变量的值等 其操作
  • 用四个砝码称出1—40克所有重量,四个砝码分别为多少? 梅氏砝码问题

    这个在数学上叫做梅氏砝码问题 xff0c 其叙述如下 xff1a 若有n个砝码 xff0c 重量分别为M1 M2 xff0c Mn 且能称出从1到 xff08 M1 43 M2 43 43 Mn 的所有重量 xff0c 则再加一个砝码 xf
  • Linux 文件夹 压缩 命令

    from http hi baidu com no fear no hope blog item 8182155aec16a7c59d82046d html Linux 文件夹 压缩 命令 2011年08月28日 星期日 22 02 Lin
  • mysql 分库分表

    分表是分散数据库压力的好方法 分表 xff0c 最直白的意思 xff0c 就是将一个表结构分为多个表 xff0c 然后 xff0c 可以再同一个库里 xff0c 也可以放到不同的库 当然 xff0c 首先要知道什么情况下 xff0c 才需要
  • MySQL的数据库引擎的类型

    你能用的数据库引擎取决于mysql在安装的时候是如何被编译的 要添加一个新的引擎 xff0c 就必须重新编译MYSQL 在缺省情况下 xff0c MYSQL支持三个引擎 xff1a ISAM MYISAM和HEAP 另外两种类型INNODB
  • Fast-Planner安装、环境配置以及问题解决

    Fast Planner是香港科技大学沈劭劼老师团队开源的项目 旨在复杂的未知环境中实现四旋翼快速飞行 Fast Planner的github网址为 https github com HKUST Aerial Robotics Fast P
  • 安装双系统出现的一些问题(显卡和无法连接WIFI)

    显卡 问题1 xff1a 安装双系统之后开机黑屏 xff0c 由于显卡引起 xff0c 显卡不支持 解决办法 xff1a 禁用独立显卡或者更改显卡设置 xff0c 进入文件 boot grub grub cfg xff0c 按下图加入标亮字
  • ros没装全,gazebo模型加载不出来

    ros没装全 xff0c gazebo模型加载不出来 安装ros 关于rosdep update 首先换热点试一下 xff0c 在来回切换wifi 按照https blog csdn net yufeng1108 article detai
  • catkin_make遇到 gazebo_ros_controlConfig.cmake相关的问题

    现象 xff1a Could not find a package configuration file provided by gazebo ros control with any of the following names 解决方法
  • 一些vscode自动提示报错

    Pointer to incomplete class type is not allowed 通常是由于类声明了但是没有定义造成的 xff0c 需要做的是在错误文件里面引用下这个类 xff1a class Test xff1b a poi
  • bazel一些用法

    1 编译东西 要在根目录下 xff0c 和WORKSPACE在同一级 例如 xff0c 对于bazelbuild examples 而BUILD文件一般与源文件并列 examples cpp tutorial stage1 main BUI
  • 第十一节std::atomic原子操作

    一 原子操作 1 1原子操作概念例子 互斥量 xff1a 多线程编程中保护共享数据 xff1a 锁 xff0c 操作共享数据 xff0c 开锁 有两个线程 xff0c 对一个变量进行操作 xff0c 这个线程读 xff0c 另一个线程往变量
  • 用Ceres实现PnP

    在ceres中实现PnP优化 xff08 仅优化位姿 xff09 视觉SLAM十四讲 课后习题 ch7 xff08 更新中 xff09
  • deque insert()函数几种用法

    C 43 43 deque insert 用法及代码示例
  • Matplotlib error: No such file or directory: ‘latex‘: ‘latex‘

    Matplotlib error No such file or directory latex latex span class token function sudo span apt span class token function
  • 在ROS下Intel RealSense D435i 驱动的安装,避免踩坑,避免缺少imu话题等各种问题(适用于D400系列、SR300和T265跟踪模块等)

    版权声明 本文为博主原创文章 未经博主允许不得转载 https blog csdn net AnChenliang 1002 article details 109454465 目录 背景 方法1 使用apt安装 不建议使用此方法 了解一下
  • wsl作为开发主机与开发板联调

    linux开发经历记录 wsl作为开发主机与开发板联调 uboot使用nfs网络挂载时使用hanewin搭建win10的nfs servers 背景介绍 小白学习linux开学 xff0c 不想用VM虚拟机作为开发平台 xff0c 恰好了解
  • weka中文乱码解决办法

    由于weka的默认字符集编码是Cp1252 xff0c 所以如果你导入的数据中有中文字符 xff0c 就会出现乱码的情况 xff0c 所以需要weka的RunWeka ini文件 将cp1252替换成你的数据对应的字符集编码 xff0c 比
  • 动态库和静态库的区别

    静态库 xff1a 这类库的名字一般是libxxx a xff1b 1 利用静态函数库编译成的文件比较大 xff0c 因为整个函数库的所有数据都会被整合进目标代码中 xff0c 他的优点就显而易见了 xff0c 2 即编译后的执行程序不需要
  • 重复数据删除技术(Data Deduplication)

    我相信所有人都会同意 xff0c 数据存储正在以飞快地 xff0c 甚至是令人震惊的速度在增长 这意味着为了不影响普通用户的正常使用 xff0c 存储管理员们不得不加班加点地在幕后 工作着 他们的鲜为人知的工作包括 xff1a 配额管理 x