Deduplication(重复数据删除)技术

举报
Jet Ding 发表于 2020/09/29 10:48:14 2020/09/29
【摘要】 在计算中,重复数据删除是一种消除重复数据的技术。一个相关的、有点同义的术语是单实例(数据)存储。这种技术用于提高存储利用率,也可以应用于网络数据传输,以减少必须发送的字节数。在重复数据删除过程中,识别并存储唯一的数据块或字节模式。随着分析的继续进行,其他的chunks会与存储的副本进行比较,每当出现匹配的情况时,冗余的chunks就会被一个指向存储chunks的小引用所取代。鉴于同一个字节模式可能

在计算中,重复数据删除是一种消除重复数据的技术。一个相关的、有点同义的术语是单实例(数据)存储。这种技术用于提高存储利用率,也可以应用于网络数据传输,以减少必须发送的字节数。在重复数据删除过程中,识别并存储唯一的数据块或字节模式。随着分析的继续进行,其他的chunks会与存储的副本进行比较,每当出现匹配的情况时,冗余的chunks就会被一个指向存储chunks的小引用所取代。鉴于同一个字节模式可能出现几十次、几百次甚至几千次(匹配频率取决于块大小),可以大大减少必须存储或传输的数据量。

重复数据删除与LZ77LZ78等数据压缩算法不同。压缩算法可以识别单个文件内部的冗余数据,并对这些冗余数据进行更有效的编码,而重复数据删除的意图是检查大量数据,并识别出大段的数据(比如整个文件或大段的文件)是相同的,并将其替换为共享副本。例如,一个典型的电子邮件系统可能包含100个相同的1 MB(兆字节)文件附件实例。每次邮件平台备份时,附件的100个实例全部保存,需要100MB的存储空间。在数据重复数据删除的情况下,实际上只需保存附件的一个实例,后续的实例会被引用到保存的副本上,重复数据删除的比例大概是1001。重复数据删除通常与数据压缩配合使用,以节省额外的存储空间。重复数据删除首先用于消除大块重复数据,然后使用压缩技术对每个存储的数据块进行有效编码。

1      好处

基于存储的重复数据删除技术减少了给定文件集所需的存储量。在应用中,当许多非常相似甚至相同的数据副本被存储在一个磁盘上时,这种技术是最有效的。在为防止数据丢失而例行进行的数据备份中,特定备份中的大部分数据与之前的备份相比没有变化。常见的备份系统试图利用这一点,省略(或硬链接)没有变化的文件或存储文件之间的差异。然而,这两种方法都没有定位所有的冗余。

硬链接对那些只发生了微小变化的大文件没有帮助,例如电子邮件数据库;差异只能在单个文件的相邻版本中找到冗余(考虑一个被删除的部分,后来又加进去了,或者在许多文件中包含了一个标志图片)。

在线网络重复数据删除用于减少在端点之间传输的字节数,这可以减少所需的带宽。

虚拟服务器和虚拟桌面受益于重复数据删除技术,因为它允许每个虚拟机上独立的系统文件被存放到一个单一的存储空间。

同时,如果一个给定的虚拟机定制了一个文件,重复数据删除技术将不会改变其他虚拟机上的文件。这是硬链接或共享磁盘等替代技术所不能提供的功能。此处,备份或制作虚拟环境的副本也同样得到了改进。

2      重复数据删除技术的种类,方法和关注点

2.1    后处理与在线重复数据删除技术的比较

重复数据删除可以在数据流动时 "在线"进行,也可以在数据写入后"再处理"

后处理重复数据删除的步骤是,新的数据首先存储在存储设备上,然后在以后的时间里,一个进程会分析数据,寻找重复的数据。这样做的好处是不需要等待哈希计算和查找完成后再存储数据,从而保证存储性能不降低。

提供基于策略的操作的实现可以让用户能够推迟对 "活动"文件的优化,或者根据类型和位置来处理文件。一个潜在的缺点是,重复的数据可能会在短时间内被不必要地存储,如果系统接近满负荷,就会出现问题。

另外,重复数据删除的哈希计算也可以在线进行:在数据进入目标设备时同步进行。如果存储系统识别出一个已经存储过的块,则只存储对现有块的引用,而不是整个新块。

与后处理重复数据删除相比,在线重复数据删除的优势在于它需要较少的存储和网络流量,因为重复数据永远不会被存储或传输。不好的一面是,哈希计算可能在计算上很昂贵,从而降低了存储吞吐量。

然而,某些拥有在线重复数据删除功能的厂商已经展示了能够高速执行在线重复数据删除的设备。

后处理和在线重复数据删除方法经常引起大量的争论,褒贬不一。

2.2    数据格式对比

重复数据删除的两种方法:

l  内容无关的重复数据删除--一种不需要了解特定应用数据格式的重复数据删除方法。

l  内容感知重复数据删除--一种利用特定应用数据格式知识的重复数据删除方法。

2.3    源与目标重复数据删除

另一种重复数据删除方法的分类方式是根据重复数据删除的发生地来进行分类。在数据创建地附近发生的重复数据删除被称为 "源重复数据删除"。当它发生在数据存储的地方附近时,它被称为 "目标重复数据删除"

源重复数据删除确保数据源上的数据是重复数据删除的。这一般是直接在文件系统内进行的。文件系统会定期扫描新文件创建哈希值,并与现有文件的哈希值进行比较。当发现有相同哈希值的文件时,那么文件拷贝就会被删除,新文件指向旧文件。但与硬链接不同的是,重复的文件被认为是独立的实体,如果其中一个重复的文件后来被修改了,那么使用一个叫做copy-on-write的系统就会创建一个修改后的文件或块的副本。

重复数据删除过程对用户和备份应用是透明的。备份一个使用重复数据删除技术的文件系统经常会导致重复发生,导致备份比源数据更大。

对于复制操作,可以明确声明源重复数据删除,因为不需要计算就知道复制的数据需要重复数据删除。这就导致了文件系统上一种新的 "链接"形式,称为reflinkLinux)或clonefileMacOS),一个或多个inodes(文件信息条目)被做成共享部分或全部数据。它的命名类似于工作在inode级别的硬链接和工作在文件名级别的符号链接,各个条目的复制-写行为是非锯齿的,即更改一个副本后不会影响其他副本,微软的ReFS也支持这种操作。

目标重复数据删除是指当数据离开生成位置时,删除重复数据的过程。这方面的例子是连接到SAN/NAS的服务器。服务器不知道任何重复数据删除,一般来说,此时是一个备份存储,如数据存储库或虚拟磁带库。

2.4    重复数据删除方法

最常见的重复数据删除实现形式之一是通过比较数据块来检测重复数据。为此,每个数据块都被分配了一个标识,由软件计算,通常使用加密哈希函数。

在许多实现中,如果标识相同,则数据也是相同的,当然由于鸽子洞原则,这不可能在所有情况下都是正确的。

另一些实现并不假设具有相同标识的两个数据块是相同的,而是实际验证具有相同标识的数据是相同的。

具体来说这取决于实现方法,如果找到相同的快,算法程序将用一个链接替换该重复的块。

当被重复数据删除后,在回读文件时,无论在哪里发现链接,系统都会简单地用引用的数据块替换该链接。重复数据删除过程对终端用户和应用程序是透明的。

商业重复数据删除的实现因其分块方法和架构而不同。

l  分块。在某些系统中,分块是由物理层约束定义的(如WAFL中的4KB块大小)。在一些系统中,只比较完整的文件,这称为单实例存储或SIS。一般认为,分块最智能(但耗费CPU)的方法是滑动块。在滑动块中,沿文件流传递一个窗口,以寻找更自然的内部文件边界。

l  客户端备份重复数据删除。这是最初在源机(客户端)上创建重复数据删除哈希计算的过程。与目标设备中已有的文件有相同哈希的文件不会被发送,目标设备只是创建相应的内部链接来引用重复的数据。这样做的好处是避免了数据不必要地在网络上发送,从而减少了流量负荷。

l  一次存储和二次存储。根据定义,主存储系统的设计是为了实现最佳性能,而不是最低成本。这些系统的设计标准是为了提高性能,而牺牲了其他方面的考虑。此外,主存储系统对任何可能对性能产生负面影响的操作的容忍度要低得多。同时从定义上看,二级存储系统主要包含数据的重复,或者说二级副本。这些数据副本通常不用于实际生产操作,因此对一些性能下降的容忍度较高,以换取效率的提高。

到目前为止,重复数据删除技术主要用于二级存储系统。原因有二。首先,数据重复删除过程需要系统开销来发现和删除重复数据。在主存储系统中,这种开销可能会影响性能。二级数据之所以使用重复数据删除技术,第二个原因是二级数据往往有更多的重复数据。尤其是备份应用,随着时间的推移,通常会产生大量的重复数据。

值得一提的是,在一些系统设计不需要大量开销,或者不影响性能的情况下,重复数据删除技术已经可以与主存储成功部署了。

2.5    单一实例存储

单实例存储(SIS)是指系统能够将内容对象的多个副本,用一个共享副本代替。它是消除数据重复、提高效率的一种手段。SIS经常在文件系统、电子邮件服务器软件、数据备份和其他存储相关的计算机软件中实现。单实例存储是重复数据删除技术的一种简单变体。重复数据删除可以在段或子块级工作,而单实例存储可以在对象级数据上工作,从而消除了对象的冗余副本,如整个文件或电子邮件信息。

2.6    缺点和关切

重复数据的一种方法是依靠使用加密哈希函数来识别数据的重复部分。

如果两个不同的信息产生相同的哈希值,也就是所谓的哈希碰撞,碰撞的概率主要取决于哈希长度。

因此,人们不得不担心如果发生哈希碰撞,就会出现数据损坏的情况,而没有采用额外的验证手段来验证数据是否存在差异。

在线和后处理架构都可以提供原始数据的位对位验证,以保证数据的完整性,使用的哈希函数包括SHA-1SHA-256等标准。

这个过程的计算资源强度可能是重复数据删除的一个缺点。为了提高性能,一些系统同时利用弱哈希和强哈希。弱哈希的计算速度更快,但哈希碰撞的风险更大。利用弱哈希的系统随后会计算出一个强哈希,并将其作为决定是否为同一数据的关键因素。

请注意,计算和查找哈希值相关的系统开销主要是重复数据删除工作流的任务。文件的重构开销不算在内,任何与重新组装数据块相关的增量性能惩罚都不应该计算在内。

另一个关注点是压缩和加密的相互作用。加密的目标是消除数据中任何可辨认的模式。因此,加密数据不能被重复复制,即使基础数据可能是冗余的。

虽然不是重复数据删除技术的缺点,但当对大型重复数据存储库使用不够安全和访问验证程序时,曾发生过数据泄露事件。在某些系统中,作为云存储的典型,攻击者可以通过探知或猜测所需数据的哈希值来检索他人拥有的数据。

2.7    执行情况

重复数据删除技术目前在一些文件系统中得到了实现,如ZFSWrite Anywhere File Layout以及不同的磁盘阵列模型中。

3      参考

https://en.wikipedia.org/wiki/Deduplication#:~:text=The%20term%20deduplication%20refers%20generally,in%20two%20or%20more%20files

https://en.wikipedia.org/wiki/Data_deduplication

https://www.netapp.com/us/info/what-is-data-deduplication.aspx

https://docs.microsoft.com/en-us/windows-server/storage/data-deduplication/overview

https://searchstorage.techtarget.com/definition/data-deduplication

https://en.wikipedia.org/wiki/Record_linkage


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。