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

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

你可能感兴趣的:(Linux)