重复数据删除和数据压缩之间的确切区别是什么。
据我所知,重复数据删除意味着当我们拥有完全相同的数据副本时,无论是相同的块(块级重复数据删除)还是相同的文件(文件级重复数据删除),那么只有一个副本保留在存储中,并且该副本的引用计数为每次不同用户使用块或文件时递增。
但是压缩如何在内部工作。
请帮我解决这个问题。提前致谢。
重复数据删除和数据压缩之间的确切区别是什么。
据我所知,重复数据删除意味着当我们拥有完全相同的数据副本时,无论是相同的块(块级重复数据删除)还是相同的文件(文件级重复数据删除),那么只有一个副本保留在存储中,并且该副本的引用计数为每次不同用户使用块或文件时递增。
但是压缩如何在内部工作。
请帮我解决这个问题。提前致谢。
简短的回答是,重复数据删除可以被认为是一种高度专业化的压缩形式,针对特定的上下文。接下来是长答案。
在对比这些技术之前,让我们先谈谈典型的压缩是如何工作的。
压缩本身是极其多样的。您有有损压缩算法,例如 JPEG 和 MP3,它们使用我们如何看到或听到的模型来丢弃一些对图像或声音可能不那么重要但仍会降低质量的信息。根据您的问题,这些技术大多超出了问题的范围。
您可能最关心的是我们所说的通用无损算法,例如 zip、LZMA、LZ4 等,它们以可逆的方式压缩任意文件。通常,这些压缩文件至少使用以下非详尽列表中的几种技术:
匹配查找。在(重复字节的字符串)中查找冗余并用较短的序列替换重复。例如,此类算法可能具有以下字符串:
developers developers developers developers
然后用类似的东西替换它:
developers (0,11)(0,22)
其中 (0,11) 表示“重新使用从位置 0 开始的 11 个字符”。这被称为“匹配查找”或 LZ77 式压缩,并且很简单。
熵编码。您可以从如下字符串开始:
AABCABBCABACBAAACBCCAABAAACBAA
这看起来很随意,对吧?但是,您可能会注意到,有些字母出现的次数比其他字母多 - A 出现的次数大约是 B 和 C 的 2 倍,而其他字母根本不出现!
使用该信息,您可以选择用较少信息表示字符串中字符的编码,例如,可以使用 binary 对 A 进行编码,而0
分别分配 B 和 C 。如果您最初每个字符使用 8 位,那将是一个很大的节省。10
11
大多数数据具有复杂的关系,不一定能通过上述简单技术很好地压缩,而是需要某种类型的模型。例如,您可能有各种模型来根据相邻像素预测图像中像素的值。您可能有一个模型,该模型根据该点的句子来预测句子中最有可能出现的下一个单词。例如,如果我说:Who let the dogs ___
,您可能能够准确地填空。
这些都不是相互排斥的——它们通常以互补的方式使用,并且还有上面没有提到的其他技术。
现在,在我们讨论什么是重复数据删除之前,值得注意的是压缩算法的典型特征。这些不是绝对规则,而是许多压缩算法的共同特征,除非它们是专门为避免它们而设计的:
输入字节和输出字节之间没有简单的关系。
输入和输出以复杂的方式相关(与 Base-64 编码不同,其中每 3 个连续的输入字节依次对应于 4 个连续的输出字节)。影响如下:
您通常不能简单地获取压缩数据并解压缩其中的任意部分,例如“解压缩此文件的最后 500 字节”。您可能需要从头开始读取整个压缩文件,或者至少从流中的某个众所周知的点开始。
未压缩输入的修改可能对压缩输出产生任意大的影响。例如,更改输入中的单个字节可能会更改输出中的每个后续字节。这通常意味着难以增量地更新大型压缩流(即,基于对输入的修改)。
那么鉴于以上对压缩的定义和讨论,重复数据删除通常是什么意思呢?
今天,您通常在存储设备或架构的竞赛中关注重复数据删除。例如,当存在大量重复数据时,这是一种节省磁盘空间的方法(想象一下,例如,在 SAN 上有 100 个 VM 映像 - 操作系统和其他常见的每个 VM 上的文件)。
重复数据删除是一种仅将这些冗余数据存储一次的方法。本质上,它在没有上述一些限制的情况下大规模地实现了上述技术(1)。因此,它只是一种压缩形式,可在大块、整个驱动器或整个存储主机,甚至是联网机器集群上运行。
但是,现在您不能只“gzip”整个驱动器,因为重复数据删除应该是透明的、功能和性能方面的。文件系统(例如,POSIX 或 Win32 等)提供的 API 允许用户写入文件的任意部分。如果用户修改了 1GB 文件中的 1 个字节,如果这需要一分钟或更长时间来解压缩然后压缩整个文件,他们会感到惊讶。
因此,重复数据删除的工作方式仍然可以随机访问文件。例如,通过具有一个索引,以便可以定位任何字节的位置)。这通常意味着重复数据删除仅适用于较大的匹配(块)大小,否则跟踪块的成本会变得过高。一些系统只检测符合其他标准的重复,例如在文件中具有相同的对齐方式。
重复数据删除通常是透明发生的(文件系统的用户不知道),也可能异步发生:即,当写入新数据时,它最初被视为唯一,只有稍后才会检查重复数据,并可能与现有数据合并。
简而言之,重复数据删除可以被认为是一种压缩类型的特定应用,针对将要使用的领域进行调整:消除典型压缩算法的一些限制以换取可接受的性能,但代价是仅删除大的重复区域,并且通常避免其他压缩机会,例如(2)熵编码或(3)建模。
有关 NetApp 压缩和重复数据删除的详细信息,请查看“NetApp 数据压缩和重复数据删除部署和实施指南”。对于 TL;DR 类型,简短的回答是,它dedupe
适用于 4k WAFL 块级别,基于每个卷,而压缩适用于多达 32k 压缩组,基于每个文件(但只能启用/每整个卷禁用)。从最新的 CDOT 版本开始,两者都compression
可以dedupe
在线运行和/或后处理运行。