重复数据删除产品技术漫谈

  重复数据删除市场可谓风起云涌,从备份厂商到存储厂商都推出了相应的产品,涵盖了软件和硬件,涉及主存储系统和备份存储设备,一时让人眼花缭乱,难以分辨孰优孰劣。本文透过产品,对重复数据删除的原理、相关术语、模式等要素进行了简明扼要的分析,最后为用户选择重复数据删除产品提供相关建议。

  数据缩减(data reduction)

  数据缩减(data reduction)是能够降低主存储系统磁盘使用空间的技术总称,数据简缩技术可以分为两类:压缩和重复数据删除。压缩通过把文件中一些无用的数据,例如前置零和空格等删除掉,减少文件占用空间;但压缩仅限于单个文件,无法跨越多个文件,这限制了压缩技术缩减数据的能力。

重复数据删除结构图

  了解重复数据删除

  目的:通过删除重复数据,节省磁盘使用空间,保护现有存储投资。

  原理:在某一级别(文件级、数据块、字节级)通过一次或多次使用哈希算法(MD5 或者SHA-1)或其他相关算法查找重复数据。重复数据只保留一份,其他重复数据用指针替代。

  应用:可以在数据备份时进行重复数据删除,同时主存储也支持重复数据删除。备份软件和备份介质(主要应用为虚拟带库(VTL))及主存储设备都提供数据去重功能。

  熟悉重复数据删除

  备份软件

  一般来讲,使用备份软件进行重复数据处理涉及以下4个步骤:(1)将需要备份的文件分割为“块”;(2)采用哈希算法为每个“块”计算一个哈希值;(3)和备份服务器哈希表数据库中的数据进行比对以确定是否存在重复数据;(4)用指针代替重复的数据块并将非重复的数据块传输到目标存储设备。

  备份软件可以在源端和目的端进行重复数据删除处理,其主要区别是:“源端去重”在备份客户端执行上述四个步骤,而“目的端去重”在备份服务器上处理。

  产品举例:Commvault Simpana 9.0,嵌入式块级重复数据删除解决方案,可以在客户端系统删除重复数据,极大减少网络中的数据传输量;统一的操作视图和启用重复数据删除的复选框简化了管理。

  硬件产品

  可以在三个技术维度对重复数据硬件进行划分:(1)按照写入数据的时间点可以分为联机去重(Inline,有些技术文章称之为in-band)和后处理去重(post-process,有些技术文章称之为out-of-band);(2)按照对重复数据处理方式的不同可以分为:逆向引用(reverse referencing)和前向引用(forward referencing);(3)按照去重粒度可以分为文件级、块级和字节级去重;块级去重按照数据块大小是否可改变分为固定块和可变块。

  Inline/in-band:首先进行“去重”操作,然后再进行“写入”操作。大量的备份数据流到达具有去重功能的硬件设备时,首先驻留在内存中;重复数据删除引擎对备份数据块进行辨识,判断是否存在已保存过的数据块:如果存在对应的数据块,写入指针代替实际数据块的写入过程。否则直接写入该新数据块。

  Post-process /out-of-band:大量的备份数据流直接写入具有去重功能的硬件设备,随后启动单独的进程读取已写入磁盘的数据块,进行重复数据删除处理过程:如果存在重复的数据块,删除该数据块并用指针替代;否则将该新数据块留在磁盘上,而无需任何其他操作。

  Inline vs.Post-process:Inline实际是实时消重,Post-process实际是异步消重。两者之间的根本区别是消重进程在哪里读取原始数据:如果是从内存中读取,那么就是实时消重;如果是从磁盘中读取,那么就是异步消重。需要指出的是,进行数据备份时,Post-process等待的是一份拷贝的结束,而不是所有备份任务结束后才能进行去重处理。去重和数据备份是可以并行进行的。

  reverse referencing:即数据只有第一次是完全写:当系统发现当前处理的数据块与已保存的数据块内容相匹配时,保留之前存储的旧数据块,在旧数据块处写入一个新指针,而不是将新数据块写入磁盘。去重过程是不断为新的冗余数据块写入指针的过程,这可能会导致新数据碎片不断增加。