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

  forward referencing:即完整写入最新的数据:当系统发现当前处理的数据块与已保存的数据块内容相匹配时,将新数据块写入磁盘,删除旧数据块并将旧数据替换成一个指向新数据块的指针。去重过程是不断写入新数据、删除旧数据、替代旧数据为指针的过程。最新备份的数据物理上保持连续,恢复最新数据备份比reverse referencing更快,但是旧备份对应的数据在物理上将变得越来越随机。

  文件级去重:通常也称为单实例存储(SIS),在文件系统中检查并判断两个文件是否完全相同,如果发现两个相同的文件,其中一个就会被指向另一个文件的指针所取代。

  块级去重:将所有的文件分解成数据块,然后通过散列算法,为每个块创建一个哈希值,并与其他所有数据块的哈希值进行比对,如果两个数据块的哈希值完全一致,其中一个块就会被删除,并用指向另一个块的指针来代替。不同产品检查数据块大小各不相同,一些供应商选择固定大小的数据块,一些则使用不同大小的数据块。

  固定块:大小可能为4KB、8 KB 或更大。块大小越小,被判定为冗余的几率越大,存储的数据也更少。

  可变块:各种规模的块能够提高冗余的检测几率,尤其是在文件发生变化之后。即使文件或数据块发生变化,也能发现重复的数据块。

  固定块vs.可变块:如果文件发生变化,固定块可能无法检测出新的数据冗余,影响去重效果。可变块通过调整块大小,能够发现更多的数据冗余;但会增加去重计算时间,这影响了去重效率。

  字节级去重:通过逐个字节的比较实现去重,是能够保证充分去除冗余数据的唯一方法,但是对性能影响较大。

  备份存储举例:EMC Data Domain,基于8K大小的块,采用Inline 重复数据删除技术,在网络上仅发送经过去重且已压缩的数据块。能够与所有主流的企业备份和归档应用程序配合运行,轻松集成到现有存储基础架构中;借助Stream-Informed Segment Layout (SISL) 扩展体系结构,磁盘库的性能主要取决于CPU频率,最大限度减少了实现关键单数据流操作的吞吐量性能所需的磁盘轴数量。

  主存储举例:NetApp FAS和V系列,提供了基于Data ONTAP 操作系统的重复数据删除,利用并改进了已有的WAFL(write anywhere file layout)文件系统技术。基于4K大小的块,通过一个低优先级的后台进程在系统非高峰时期运行Post-process去重,对系统性能无明显影响。对可能存在冗余的数据块将再次进行逐位(bit)比较,丢弃完全相同的数据块。

  主存储vs.备份存储:由于主存储系统中没有那么多的数据可以去重,磁盘空间的节省程度通常难以达到在备份系统中使用重复数据删除一样的水平。随着数据中心VMware服务器虚拟化技术的广泛应用,而虚拟磁盘VMDK 文件中通常存在大量冗余数据,在VMware主存储上去重是主存储数据简缩的一个主要应用,一般可节省50%–70% 存储空间。

  选择重复数据删除产品

  硬件vs.软件

  数据中心通常部署了备份软件对业务数据进行备份,咨询备份软件厂商数据备份过程中是否支持对重复数据进行删除。如果正在使用的备份软件中不提供重复数据删除功能,那么更换备份软件将是一项复杂的工程,采用基于硬件的数据去重设备可能一项相对轻松的工作。这种情况下通过备份软件直接把数据备份到去重硬件设备(通常为VTL),由硬件设备进行重复数据删除操作是更为合理的选择。

  如何选择硬件

  通过上述介绍我们发现,无论是哪种重复数据删除处理方式都没有绝对的优势,选择相关产品时需要根据生产环境进行具体分析。对于主存储,重复数据删除对性能的影响必须在可接受的范围内;对于备份存储,首要的一点是必须满足备份窗口的要求,在实际备份环境中进行最大备份负荷测试以确定哪种处理方式更适合实际的备份窗口要求。

  在满足性能和备份窗口要求的前提下,考虑数据容量、性价比、服务支持以及厂商的专业背景等,同时产品的可扩展性也是需要关注的重点。

  对备份硬件来讲,同时还需要关注现有备份软件集成度以及数据恢复时的性能表现。从重复数据删除系统中恢复数据,实际上是一个从包含有大量数据碎片的磁盘中读取数据的过程。在磁盘容量和碎片达到一定的数量级后,可能需要从数百个磁盘中经过数百次的磁盘寻道才能读出与之前同样多的数据。