一:数据重删技术概述
1.源端去重 && 宿端去重
源端去重(Source Deduplication)首先在客户端计算待传输数据的指纹并通过与服务端进行指纹比对发现和消除重复内容,然后仅向服务端发送非重复数据内容 , 从而达到同时节约网络带宽和存储资源的目标。2.当前去重方法突破性能瓶颈的主要技术手段包括(1)构造内存快速索引(布隆过滤器)、挖掘数据局部性(缓存)、利用数据相似性(extreme binning)和使用新型存储介质(chunkstash)。
上述这些技术使得共享数据块的文件之间产生了依赖性, 几个关键数据块的丢失或错误可能导致多个文件的丢失和错误发生, 因此它同时又会降低存储系统的可靠性, 为此, 一些研究者又引入了冗余复制技术和纠删码技术等来提高重复数据删除系统的可靠性.
二:五种重复数据删除技术
如今,经验丰富的IT人员都已经了解了重复数据删除的重要性,也深知当前市场上可以选择的重复数据删除方案各有利弊。无论厂商怎样美化自己的产品,能够自由的根据自己不断变化的独特需求而自由定制的重复数据删除处理,对于用户来说,绝对是具有非常重要的意义。本文,将对各种重复数据删除处理方式进行一一介绍。需要提请读者注意的是:我们这里介绍的去重方案,都是可以应用于业务系统的,从而使IT员工能够针对其管理的众多数据类型轻松的进行调节。
1.Inline重复数据删除
其主要优点是能够最大程度地降低存储需求,最多可达40%。这种处理方式非常适合需要即时复制的小型存储配置或环境。为了获得最高的性能水平,推荐的最佳做法是使用灵活的重复数据删除策略,在初始备份时采用后处理重复数据删除(post-process deduplication),以便提高速度,而后续的备份操作则切换到inline重复数据删除。
2.后处理(Post-process)重复数据删除
如果用户希望尽快完成备份,后处理的重复数据方式则是最为理想的选择。顾名思义,它是在备份过程完成后进行的,因而可在任何时间运行。
3.并发(Concurrent)重复数据删除
这种去重的运行方式与后处理重复数据删除相似,只不过它是在写入第一组记录时立即启动,并与备份同时运行。重复数据删除引擎会立即启动,充分利用所有可用的CPU资源,因而非常适合集群化的 VTL 环境。由于复制启动的非常快,因此数据能够快速地从远程站点进行恢复。
4.FalconStor Turbo 重复数据删除
这是飞康公司提供的一种非常独特的混合去重的方法,是从VTL本身而非重复数据删除引擎进行inline重复数据删除处理,从而提高后处理重复数据删除或并发重复数据删除的性能。FalconStor Turbo重复数据删除最适合CPU处理能力强劲的企业级环境或集群化环境,这种环境有足够的CPU处理能力进行inline预处理。 FalconStor Turbo 重复数据删除可以有效的减少重复数据删除的I/O需求,后处理和并发处理时的性能提升可以达到300%。
5.无重复数据删除
适用于重复数据删除效率不佳的数据,或者需要导出到物理磁带的数据,例如影像文件,以及预先经过压缩和加密的数据。这时,用户可以通过选择性地“关闭”重复数据删除功能,从而节省重复数据删除周期,而专注于为可以获得更高去重比率和价值的数据执行重复数据删除。
生活中常常会出现众口难调的情况,存储管理和重复数据删除更是如此。您也许还在担心,这么多种重复数据删除方式我如何选择,哪个才是最适合自己的?其实,您只要选择同时具备多种重复数据删除选项的产品,如近来市场中最新发布的FalconStor VTL v7.5解决方案,这一疑问即可迎刃而解!根据自己的切实需求,根据需要自由选择去重方式,随时调整最佳去重方案,用户将不会再被某一种类型的重复数据删除技术所局限,真正体会到灵活性的优势。
三:企业重删应用问题十大解疑
几年前,重复数据删除是一个独立的功能,是企业存储系统的一个选项,主要集中在备份和归档部分。随后,它在云网关中找到新用途,在进入阵列或者虚拟磁带库之前删除了不必要的数据块。现在,随着统一计算系统采用常见的预集成功能,人们需要关注如何最有效地利用这些技术。
1.重复删除技术对备份性能有什么影响?
对于需要快速增长的大型企业来说,高性能是很必要的,并在有限的备份窗口内,确保大规模数据量备份环境的安全。了解每个重复数据删除技术的性能差异,(特别是随着时间的变化)是特定环境选取最合适的技术的关键。
2.重复数据删除会降低恢复性能吗?
了解恢复备份(恢复请求最常见的类别)上周文件所需要的时间。询问供应商是否他们的技术能够保存前次用于即时恢复和快速磁带的备份。
3.随着环境的增长,容量和性能扩展怎么样?
通过特定的重复删除比率,数据类型和增长率,计算在单一的重复数据删除系统中能够存储多少数据。了解超额容量的含义。例如,如果超额容量需要你通过额外的系统传播备份,你必须要考虑额外管理的复杂性成本、资本开支和对环境的破坏。
4.针对大型数据仓库的重复数据删除效率怎么样?
确保您的重复数据删除IT是处理子8KB数据比较是最优化的,同时维持性能水平。大型的,关键的数据库,例如Oracle,SAP, SQL服务器和DB2通常更改8KB段的数据或者更少的数据。然而,许多数据重复删除功能不能提供少于16KB段的数据比较,没有明显地降低备份过程。
5.渐进的增量备份环境中重复数据删除效率怎么样?
有些重复数据删除技术软件包在重复数据删除TSM渐进的增量备份中和将数据分成碎片的应用程序中备份效率较低,例如NetWorker和HP数据保护。询问供应商是否重复数据删除技术能够使用来自备份应用程序的元数据,来确认可能包括重复删除数据的数据域,以便于他们执行字节级的数据比较实现最优化容量的减少,同时保持高性能。
6.对于容量减少,切实的期望是什么?
比起争取更高的重复删除技术比率,大型企业更有效的策略是选择确保将数据移动到备份窗口内安全的地方,同时提供高效的重复数据删除。并行处理、确定的接收速率、重复数据删除和复制是企业环境的关键因素。
7.管理员可以监视企业范围内的备份,重复数据删除,复制和恢复吗?
数据保护环境的整体视图使备份管理员管理更多数据,调整备份环境达到最佳利用率和效率,并为企业未来的性能和容量要求精确地计划。
8.重复数据删除技术可以帮助减少大型企业数据卷的复制带宽需求吗?
有些重复删除技术使企业通过WAN复制数据。只复制字节级的改变,减少WAN带宽需求和提高安全时间,实现高效复制。
9.IT是否能调整重复删除技术以满足需求?
企业数据保护环境可能有特殊的重复删除技术要求的数据类型。寻找解决方案,使IT能够选择他们想要的重复数据删除,通过备份政策,数据类型和那些自动检测被备份和执行的数据类型。选择技术使IT能够应用针对每个数据类型都最有效的重复数据删除方法。
10.实施过大型企业备份环境的供应商有多少经验?
有大规模数据卷和复杂策略的企业数据中心,需要一个专业的企业级备份应用程序的数据保护供应商,例如NetBackup、NetBackup OST和Tivoli存储经理人。他们应该提供数据评估和指导,对于在这些环境中优化需要最大量备份的整体备份基础设施,复制和数据重复删除性能。
四、重复数据删除对系统性能的影响
4.1 减轻磁盘瓶颈技术
在重复数据删除系统中,为了节约成本,一些系统仅有少量的内存,因而不能支持所有的数据索引一次性地进入内存进行检测,从而导致了大量的磁盘访问。针对这种情况,一些文献给出了它们认为合理的解决办法。
经典文献
uAvoiding the disk bottleneck inthe data domain deduplication file system
Zhu B, Li K. In: Proc. of the 6th Usenix Conf. onFile and Storage Technologies (FAST 2008). Berkeley: USENIX Association, 2008.269–282.
文件描述的DDFS文件系统中用于减轻磁盘瓶颈的3种技术:摘要向量、基于流的块排列和局部性保持。应用这3种技术,实现了一个高吞吐率、低开销的相同块删除存储系统。
a、摘要向量技术
摘要向量技术用于减少在磁盘中查找不存在块的次数。摘要向量可以看作是一种处于内存中,对块索引的摘要。如果摘要向量指出一个块不在索引内,则不需要进一步查找。如果摘要向量指出这个块在块索引中,那么很有可能这个块就在块索引内,但并不是一定的。为摘要向量利用Bloom filter来实现。一个Bloom filter用一个m位向量来概括在块索引中n个块指纹值的存在信息,且Bloom filter的特点是允许错误肯定(认为一个不在集合中的元素在集合中)的存在。因为摘要向量是在内存中的数据结构,所以系统关机后,会将其写到disk 上,启动后,又会从disk上读入内存中。为了处理停电和不正常的关机情况,系统会周期性地将摘要向量备份到磁盘上,并设置检查点。当恢复时,系统会载入最近备份的副本,并处理从最近一个检查点添加到系统中的数据,将其信息加入到摘要向量中。
b、基于流的块排列技术
基于流的块排列技术(stream-informed segment layout,简称SISL)为块数据和块描述符提供了更好的空间局部性,并且使局部cache缓存成为可能。SISL主要特点是针对同一个数据流,使得新数据块被存放在一起,块描述符也被存放在一起。SISL能够带来以下益处:
i.当同一个数据流的多个数据块被写入到同一个容器中时,在进行读取操作重建这个数据流时,可以大幅减少磁盘I/O次数,使系统达到较高的读性能。
ii.在同一数据流中,相邻新数据块的块描述符和压缩数据分别被线性地装入相同容器的元数据段和数据段。这种装入方法为其后相似的数据流提供了一种访问局部性,使得cache的局部缓存工作更有效。
iii.元数据段和数据段分开存储,而且元数据段比数据段要小得多。
c、局部性保持技术
系统利用局部性保持技术(locality preserved caching,简称LPC)来加速辨认重复块的过程。针对重复数据检测,传统的Cache并不适用于缓存指纹值、哈希值或者描述符,因为指纹值在本质上是随机的。因此,如果没有进行完全的索引访问,预言下一个块的索引位置是非常困难的,从而也导致了传统cache的命中率是非常低的。LPC的应用使得块重复局部性提高,如果一个块是重复的,那么附近的块很可能已经被缓存了。
实验结果表明,在重复数据删除的现实环境中,把以上3种技术结合在一起,可以省去99%的磁盘访问。这些技术对于一个双核计算机系统而言,就是利用其90%的CPU性能和一个15个磁盘的磁盘柜,即可达到100MB/s的单工流吞吐率和210MB/s的双工流吞吐率。
4.2 提高数据搜索速度技术
重复数据的检测比对过程给系统带来了巨大的时间开销。当数据的所有特征存在于1个索引中时会导致系统的可扩展性差,同时导致特征值匹配的时间开销过大,因此一些研究者提出了提高数据搜索匹配速度的关键技术:把索引分片为多个小索引,并存储在多个服务器上,增加搜索的可扩展性及可并行性。同时,当有新文档加入系统时,选择一部分分片服务器来存储它的特征;在重复数据搜索时,也只在一部分分片服务器上查询。
经典文献
uContent-Based document routingand index partitioning for scalable similarity-based searches in a largecorpus.
Bhagwat D, Eshghi K, Mehra P. In: Berkhin P,Caruana R, Wu XD, Gaffney S, eds. Proc. of the 13th ACM SIGKDD Int’l Conf. onKnowledge Discovery and Data Mining (KDD 2007). New York: ACM Press, 2007.105–112.
此文的主要目的是描述一种将文件的索引分区并且路由的方法,但文中提到了如何提取文件的相似性特征的方法。文中为了实现大数据的扩展性,将大数据的index打散到多个不同的server上,这样可以实现index的并行更新和查询。
它将一个文档的所有特征路由在一起,而并不把文档的每个特征独立地路由。在吸收文档时,文档路由策略用特征提取算法提取出文档的特征集,基于这些特征,选择一部分索引分片。文档被路由到这些分片上,并加入那里的索引中。在查询时,用同样的特征提取和文档路由算法选择查询的分片,在所选择的分片上查询该文档的特征,并把结果进行归并。
原有的路由方法(基于前缀的DHT)存在问题:假设同一个文件有多个特征,由于hash的随机性和雪崩性,各个特征之间毫无关联性。如果按照这样的key、value对分配文件特征,同一个文件的特征会被打散到不同的服务器上,这样如果查询新来的A文件与系统已有B文件的相似,可能为了查B文件的特征值访问很多个server。文中希望做到可以一次路由,一次访问就提取到某一个文件的所有特征。
另外,特征的索引结构中,用特征值(唯一的)作为索引结构的主键。同一个文件可以有多个特征值,同一个特征值也可以属于多个文件。
当一个新来的文件q查询系统中,按照与文件q的雅克比系数将相似文件排序。
实验结果表明,快速搜索技术解决了数据匹配中时间复杂度较高的问题,并且扩展性很好,对搜索结果的准确性和回取的影响很小。
1.算法描述
一个empty bloom filter是一个有m bits的bit array,每一个bit位都初始化为0。并且定义有k个不同的hash function,每个都以uniform random distribution将元素hash到m个不同位置中的一个。在下面的介绍中n为元素数,m为布隆过滤器或哈希表的slot数,k为布隆过滤器重hash function数。
为了add一个元素,用k个hash function将它hash得到bloom filter中k个bit位,将这k个bit位置1。
为了query一个元素,即判断它是否在集合中,用k个hash function将它hash得到k个bit位。若这k bits全为1,则此元素在集合中;若其中任一位不为1,则此元素比不在集合中(因为如果在,则在add时已经把对应的k个bits位置为1)。
不允许remove元素,因为那样的话会把相应的k个bits位置为0,而其中很有可能有其他元素对应的位。因此remove会引入false negative,这是绝对不被允许的。
当k很大时,设计k个独立的hash function是不现实并且困难的。对于一个输出范围很大的hash function(例如MD5产生的128 bits数),如果不同bit位的相关性很小,则可把此输出分割为k份。或者可将k个不同的初始值(例如0,1,2, … ,k-1)结合元素,feed给一个hash function从而产生k个不同的数。
当add的元素过多时,即n/m过大时(n是元素数,m是bloom filter的bits数),会导致false positive过高,此时就需要重新组建filter,但这种情况相对少见。
2.时间和空间上的优势
当可以承受一些误报时,布隆过滤器比其它表示集合的数据结构有着很大的空间优势。例如binary_search_tree, tries, hash table或者array, chain,它们中大多数至少都要存储元素本身,对于小整数需要少量的bits,对于字符串则需要任意多的bits(tries是个例外,因为对于有相同prefixes的元素可以共享存储空间);而chain结构还需要为存储指针付出额外的代价。对于一个有1%误报率和一个最优k值的布隆过滤器来说,无论元素的类型及大小,每个元素只需要9.6 bits来存储。这个优点一部分继承自array的紧凑性,一部分来源于它的概率性。如果你认为1%的误报率太高,那么对每个元素每增加4.8 bits,我们就可将误报率降低为原来的1/10。add和query的时间复杂度都为O(k),与集合中元素的多少无关,这是其他数据结构都不能完成的。
附2:trie树简介
Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本特性:
1.根节点不包含字符,除根节点外每一个节点都只包含一个字符。
2.从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。
3.每个节点的所有子节点包含的字符都不相同。