“重复数据删除”这个词是根据英文“De-Duplication”翻译过来的,更直白一点说就是消除副本。ESG将重复数据删除定义为删除或擦去冗余文件、字节或数据块的流程,确保只有“独有”的数据存储在磁盘上。重复数据删除最基本的形式是出现在CAS(内容寻址存储)设备中的单一实例存储(single-instance store),例如,EMC的 Centera。当每个文件存储到CAS系统上时,CAS系统会为存储的文件内容生成一个散列(hash);如果系统中已经存在具有相同散列(hash)的文件,系统就会再创建一个表示副本的指针指向已存在的文件,而不是保存另一个副本。下面,我们通过对重复数据删除的时间,算法和软硬件形式讨论一下现有的重复数据删除产品及互相的关系:
一、 重复数据删除技术的发生时间
重复数据删除技术的发生时间有三种:inline、post-processing以及两者的结合体。
如果一款产品是inline重复数据删除产品,这就是说在应用接收数据的时候,如果冗余数据是相同的,那么就创建一个指针,只有唯一的数据被写入磁盘——重复数据永远不会被写入到磁盘中。Post-processing是指所有数据以最初的格式第一次被写入到磁盘,然后一个独立的、连续的流程对这些数据进行分析,将重复数据删除掉。一些厂商推出了不同版本的Post-processing重复数据删除产品,利用缓存来在整个本分完成数据接收之前启动post-processing流程。
如果想减少网络的传输问题,应该选用inline的方式。让我看看现有的厂家和他们采用的技术吧:
现在做重复数据删除有9个主流的厂家: Data Domain, Diligent, Exagrid, FalconStor, HP, NEC, NetApp, Quantum & SEPATON。 其他厂家的都是通过不同的方式OEM或者使用他们的技术。 Data Domain是做这个行业时间最长的,而且已经有了近2000个用户。 Diligent是2005年开始主推重复数据删除的,虽然客户没有Data Domain那么多,但是总的TB数和Data Domain相差无几。 其他几家紧随其后。 IBM今年5月份收购了Diligent,EMC在6月就宣布使用昆腾的技术来研发他们的VTL和NAS。 SUN 采用的是FalconStor的技术,而HP者使用SEPATON(只使用在大型的项目上)。 HDS以前是基于Diligent的技术,即使在Diligent被IBM收购后,HDS还是宣称会继续和Diligent合作,结果如何,我们拭目以待。 NetApp的WAFL就自带16bit的校验码,所以做数据重复删除可以说是轻车熟路。
也就是说真正有技术是7家公司: Data Domain, Diligent, Exagrid, FalconStor,NetApp, Quantum & SEPATON.
Domain、Diligent等提供的Inline processing和由Sepaton、FalconStor, Exagrid等提供的Post processing。目前,只有昆腾能够在一个解决方案中既提供Inline processing技术又提供Post processing技术。
Data Domain那样采用in-line处理方式和哈希算法,但哈希算法有可能带来的哈希冲突给这个技术的发展设置了不小的门槛, 而且DATA DOMAIN在数据处理速度上面一直没有突破,D690系统每秒每个单口备份任务的重复数据删除处理量可以达到170MB,但是Diligent已经将数据吞吐量提高到了每秒200MB,并表示已经赢得了很多企业级用户的青睐。
在重复数据删除技术的算法方面,IBM Diligent的字节级数据比较算法应该是处于领先。而且In-line(前段数据处理)方式更加美好:大大提高备份效率、缩短备份时间。但是作为全球VTL领域领先的厂商Sepaton选择的Post-Processing方式是有一定道理的。in-line方式备份时间缩短、备份窗口的增多给系统性能提出了很高的要求,更为重要的是可能会牺牲数据备份的准确性。Sepaton DeltaStor更为看重的也正是备份数据的准确性。
不像IBM Diligent那样采用In-line处理方式和字节级比较算法;也不像Data Domain那样采用in-line处理方式和哈希算法,Sepaton选择的是Post-Processing处理方式和字节级比较算法,一个看似中庸的选择,但也许也是最贴近用户的选择。
二、 重复数据删除的算法
厂商采纳的执行重复数据删除的基本方法有三种。第一种是基于散列(hash)的方法,Data Domain、飞康、昆腾的DXi系列设备都是采用SHA-1, MD-5 等类似的算法将这些进行备份的数据流断成块并且为每个数据块生成一个散列(hash)。如果新数据块的散列(hash)与备份设备上散列索引中的一个散列匹配,表明该数据已经被备份,设备只更新它的表,以说明在这个新位置上也存在该数据。
基于散列(hash)的方法存在内置的可扩展性问题。为了快速识别一个数据块是否已经被备份,这种基于散列(hash)的方法会在内存中拥有散列(hash)索引。当被备份的数据块数量增加时,该索引也随之增长。一旦索引增长超过了设备在内存中保存它所支持的容量,性能会急速下降,同时磁盘搜索会比内存搜索更慢。因此,目前大部分基于散列(hash)的系统都是独立的,可以保持存储数据所需的内存量与磁盘空间量的平衡,这样,散列(hash)表就永远不会变得太大。
第二种方法是基于内容识别的重复删除,这种方法主要是识别记录的数据格式。它采用内嵌在备份数据中的文件系统的元数据识别文件;然后与其数据存储库中的其它版本进行逐字节地比较,找到该版本与第一个已存储的版本的不同之处并为这些不同的数据创建一个增量文件。这种方法可以避免散列(hash)冲突(请参阅下面的“不要惧怕冲突”),但是需要使用支持的备份应用设备以便设备可以提取元数据。
ExaGrid Systems的InfiniteFiler就是一个基于内容识别的重复删除设备,当备份数据时,它采用CommVault Galaxy 和Symantec Backup Exec等通用的备份应用技术从源系统中识别文件。完成备份后,它找出已经被多次备份的文件,生成增量文件(deltas)。多个 InfiniteFilers合成一个网格,支持高达30 TB的备份数据。采用重复删除方法的ExaGrid在存储一个1GB的 .PST文件类的新信息时表现优异,但它不能为多个不同的文件消除重复的数据,例如在四个.PST文件具有相同的附件的情况下。
Sepaton 的用于它的VTL 的DeltaStor也采用内容识别方法,但是它将新文件既与相同位置上的以前的文件版本进行比较,同时也与从其它位置上备份的文件版本进行比较,因此它能够消除所有位置上的重复数据。
第三种方法是Diligent Technologies用于其ProtecTier VTL的技术,它像基于散列(hash)的产品那样将数据分成块,并且采用自有的算法决定给定的数据块是否与其它的相似。然后与相似块中的数据进行逐字节的比较,以判断该数据块是否已经被备份。应该也可以看成字节比较类型的算法。
三、 硬件或软件
各大厂商除了采用的方法不同外,他们物理架构的备份目标也不同。Data Domain、ExaGrid 和昆腾是包含磁盘阵列的monolithic appliances(单块集成电路设备)。 Data Domain和昆腾有NAS或VTL接口,而ExaGrid就是一个NAS设备。Diligent和FalconStor销售的是软件产品,运行在Intel 或 Opteron服务器上。
尽管带有VTL接口的备份设备看起来更高级并且更易于与现存的基于磁带的备份环境集成,但是采用NAS 接口,会为您的备份应用提供更多的控制。当备份文件过了保存期时,一些像赛门铁克的NetBackup之类的备份产品能够从它们的磁盘存储库中删除这些过了保存期的备份文件。当重复删除的NAS设备发现这个删除行为时,它可以重新分配它的自由空间和散列(hash)索引。而对于VTL接口的设备来说,因为您没有删除磁带,所以无法在VTL上释放出空间,直到虚拟磁带被复写,空间才能得以释放。
当然,在1TB的空间内容纳25TB的数据是要付出一些代价的,不只是在金钱方面。将数据切成块并进行索引来消除重复数据的所有工作会使备份速度减慢。Overland REO 9000 等中级VTL的数据备份速度是300 MBps甚至更快些。Diligent在其ProtecTier上已经具有200-MBps的备份速度,但是需要一个四核Opteron服务器来实现,该服务器前端是装有100多个磁盘驱动器的阵列。
其它厂商解决该问题的办法是把重复数据删除当做一个独立的过程在备份后运行。在一个系统上运行FalconStor的 VTL 软件,进行备份的数据被写到一个压缩的虚拟磁带文件而不是一个删除重复的虚拟磁带文件上。然后在后台将数据流切成块,消除重复数据并且创建虚拟磁带,该虚拟磁带是执行删除重复数据块在原虚拟磁带上的索引。一旦虚拟磁带的数据执行了删除重复处理,它所占有的空间就返回到可用的空间池。Sepaton的DeltaStor和 ExaGrid也把它们的重复删除当成一个后备份过程来执行。
尽管后处理能够提高备份速度,但同样也要消耗成本。执行后处理重复删除的系统必须有足够的磁盘空间,因为除了删除重复的数据外,它还需要保存全部标准的备份。如果您希望继续执行每周的全天增量备份的计划,那么一个在后台进行重复删除处理的系统上,你可能需要双倍多的磁盘空间来保存全部的备份直到处理完成为止。
正因为重复删除在后台运行,所以千万不要忽视重复删除的性能。例如,如果到星期一的晚上您开始再次备份您的服务器时,您的VTL还没有完成对周末备份的处理,这时您会遇到您不想看到的情况,如磁盘空间不可用或重复删除处理使您的备份速度变慢等。
四、 子文件重复删除技术
子文件重复删除技术不仅用于在备份应用中节省磁盘空间。新一代的备份应用,包括Asigra的 Televaulting,EMC的 Avamar Axion和赛门铁克的NetBackup PureDisk都采用基于散列(hash)的重复数据删除技术来减少通过WAN发送备份所需要的带宽。
首先,像生成增量备份的传统备份应用技术一样,新一代的备份应用技术也采用常用的办法如归档位,最后修改的日期,并且文件系统更改从最后一次备份起已经发生改变的文件ID日志。然后它们将文件切成更小的块并且为每个块生成散列(hash)。
然后,将这些散列(hash)与已经备份在本地的数据块的散列(hash)对象进行比较。没有出现在本地缓存和文件系统元数据中的散列(hash)被发送到中央备份服务器,再将数据与散列(hash)表进行比较。如果没有发现相同的散列,备份服务器发回一个散列表;然后被备份的服务器发送那些散列代表的数据块到中央服务器进行保存。
与对被备份到多个目标的服务器数据(它们甚至被备份到整个企业的各个目标)进行“重复删除”的备份方案相比,上述这些备份方案缩减数据的程度更高。例如,如果CEO发送100 MB的PowerPoint文件到500个分支机构,只有第一个会被备份,所有其它的只会发送散列到总部并且告知“我们已经收到,谢谢。”
这种方法几乎避免了影响基于散列的系统的可扩展性问题。因为每个远程服务器只保存其本地数据的散列(hash),散列表不会增长到超出可用的空间,中心位置的磁盘I/O系统比传送备份的WAN 的速度快得多,在磁盘上搜索一个巨大的散列索引也比发送数据快得多。
尽管Televaulting, Avamar Axion 和 NetBackup PureDisk 共享一个相似的架构,并且都是根据重复数据删除存储的大小进行定价,但是还是存在一些不同的地方。NetBackup PureDisk采用固定的128KB的数据块,而elevaulting 和 Avamar Axion采用可改变大小的数据块,这会使重复删除技术性能更好。PureDisk 支持NetBackup,赛门铁克承诺未来进行更好的整合,即提供我们希望的可以将重复删除与数据中心备份工作整合的设备。Asigra也向服务提供商销售Televaulting产品,以便不想建立自己架构的小企业也可以利用重复删除技术。