重复数据删除是一种目前主流且非常热门的存储技术,可对存储容量进行有效优化。它通过删除数据集中重复的数据,只保留其中一份,从而消除冗余数据。
一、重复数据删除的原理
每一个数据块通过散列算法(例如MD5 或者SHA-1)为每一个数据产生一个特定的散列值。将这个散列值与现有的散列值索引相比较,如果它已经存在于索引中,那么这个数据就是重复的,不需要进行存储。否则,这个新的散列值将被添加到索引中,这个新的数据也因此被存储。
要使重复删除平台处理更精确,就需要更大的索引。例如,基于文件的重复删除只需要一个百万大小或千万大小的单一散列值索引。相比之下基于块的重复删除会涉及到更多的单一数据块,这个数字通常会达到十亿级。这样精确的重复删除需要更强的处理能力以便可以为其提供更大的索引。除非硬件的设计与对索引的要求相适应,否则随索引的不断扩展,平台的性能将随之下降。
一般而言,散列算法很少会将两个不同的数据块产生出相同的值。当这样的“散列碰撞”发生时,系统就不会存储新的数据,因为系统看到同一个散列值已经存在。这被称为“false positive”(误报),会导致数据丢失。一些厂商结合不同的散列算法,以降低散列碰撞的可能性。另一些厂商还会检查元数据来确认数据,从而避免散列碰撞。
二、in-band(带内)重复删除和out-of-band(带外)重复删除的对比
目前重复数据删除有两种技术架构,即在线处理(in-line)和后处理(Post-Processing)。也有叫源端消重技术和目标端消重技术。In-line是指数据保存到二级存储系统前进行重复数据删除。这样降低了对存储性能和容量的需求,但是却增加了一个需要管理的设备,有可能影响备份的性能;而Post-process 是指在数据备份处理之后才进行重复数据删除。它需要暂时存储全部数据,因而需要更大的存储空间,所以虽然对备份性能影响较小,但减少备份介质数量的效果并不明显。In-band 处理效率较高,但处理速度会稍慢一些,因为额外的处理需要更多的存储时间,从而导致备份窗口占用更久的时间。Out-of-band 处理不会影响系统的性能,但它需要略多一些的磁盘空间。
In-band 的优点在于它只对数据执行一次处理。而缺点是,它会减慢写入备份的速度,影响备份窗口,具体情况视实施而定。在线(inline)阵营认为,虽然它们可能会在某种程度上减慢备份速度,但它们执行完成后,就完成工作了。但是out-of-band 仍然还有重要的工作未完成,即存储数据。In-band能够减少需要传输的备份数据量,从而简化了传统的远端备份问题。对移动办公的用户、远程的服务器和工作站,能高效地通过现有广域网(WAN)把数据传输给数据中心。
Out-of-band 处理的方式为,写入原始数据,读取,并确认其是否为冗余数据,若是,则用一个或多个指针进行代替。其优点是,out-of-band 能够提供并行处理(多处理器)能力解决问题,而in-band 只能为每个备份流提供一种处理能力。其缺点是,需要对数据进行多次读写,而多次的读写会导致磁盘空间的占用。另外,由于out-of-band 系统在完成重复数据删除之前,必须有足够的磁盘空间来存储最新的备份集,所以,out-of-band 处理方式需要比in-band 处理方式需要多一些磁盘空间。Out-of-band 阵营反驳说,减慢原始备份速度是不能接受的,但是他们能够为第二天的备份及时完成重复数据删除。
正因为In-band、Out-of-band各有优势,现在很多软件备份产品具有源端和目标端的重复数据删除功能,例如,CommVault的Simpana、EMC的NetWorker,IBM的Tivoli(TSM)管理系统和赛门铁克的NetBackup,都会在他们的软件中提供源和目标端重复数据删除功能。源端重复数据删除主要是适用于小数据集以及远程数据,而目标端重复数据删除主要是用于对大量的数据集合备份的情况下,这时备份客户端和备份服务器之间不受带宽限制。
虽然重复数据删除是一项对吞吐量很高的技术,大多数用户表示他们在这方面的体验并不明显。在选择重复数据删除产品的时候,我们建议用户首先考虑切身需求,这就包括了估算的数据增长速度、预算以及所需要的特性。相对而言,备份软件、虚拟带库的兼容性、可靠性、可操作性等更加重要。最后,要对重复删除产品进行足够数据量的输入的检测,以检验其是否满足你每天的备份数据量。如果你所购买的产品无法在第二天晚上备份任务开始之前,及时完成重复数据删除工作,那你肯定要有麻烦了