除非您最近像鸵鸟一样把头埋在沙子里,否则您或许会发觉重复数据删除是个非常热门的话题。似乎您有所耳闻的每个存储供应商(还有很多您不知道的公司)都在兜售重复数据删除技术,用于降低磁盘到磁盘备份的成本。
您或许也曾怀疑重复数据删除技术是否安全?在从已删除重复数据的备份还原数据时,您是否真的可以取回自己的数据?
评估重复数据删除技术的相对安全性可分为两个基本部分:
? 识别并消除重复数据所用的算法
? 基础软硬件的可靠性
这篇文章中,我将根据这两条标准评估重复数据删除技术。此外,我还将讲解 NetApp 为增强其重复数据删除技术的可靠性所作的选择。大多数其他供应商提供的重复数据删除仅用于备份,而我们却支持用于主存储和二级存储的重复数据删除,因此我们格外注重数据安全性。
识别重复数据
大多数现有重复数据删除产品都是在块级操作,即用新块比较上次存储的块,以判断是否存储过相同的块。万一上次存储过相同的块,则指针将指向这个存储的块,“新”块将被丢弃。
那么如何判断两个块是否完全相同?最常用的方法是计算每个块的指纹,即每个数据块中包含的哈希值。万一两个块有相同的指纹,则通常认为它们是相同的。
但是,两个不同的数据块也可能具有相同的指纹或哈希值,这种可能性虽然很低,但却是存在的。我们称之为“哈希冲突”,这将导致唯一的数据块被意外删除。
正如我们所预料,降低哈希冲突的可能性必需有更为复杂的算法,这通常会耗费更多的 CPU 资源来计算哈希值,并会得出较大的输出值。显然,可靠性与速度之间存在某个平衡点。此外,哈希值越长,指纹存储所需的空间也越大。
在评估重复数据删除技术时,您必需清楚供应商识别重复数据的方式,以及所选算法带来哈希冲突的风险。很多供应商辨称磁盘故障、磁盘驱动器或磁带错误造成数据块损坏的概率要比哈希冲突的概率高。我不知道这是否只是令人宽慰的想法,但我相信绝大部分人都希望将风险降至最低。
由于 NetApp 支持主存储和备份存储的重复数据删除,因此我们需要采取一种更为积极的方法来防范哈希冲突。与大多数其他公司一样,我们也采用指纹算法,但只用于识别潜在的重复数据。发生哈希冲突时,我们会首先对两个块进行逐个字节的比较,核查它们是否完全相同,然后才会决定是否废弃任何块。NetApp 的技术总监 Blake Lewis 在上一篇文章中曾详细阐述 NetApp 如何识别重复数据块。
基础软硬件的可靠性
重复数据删除技术的可靠性程度取决于基础软硬件有多可靠。事实上,尽管这一点可能不会即刻体现,但是对于实施重复数据删除,可靠性确实变得更为关键。
例如,假设您按照比较标准的备份日程进行每晚的增量备份和每周的完整备份, 现在假设您在月初创建了一个文件,之后没有做过任何修改, 按照传统的备份方式,每周的完整备份都会产生一个副本,因此在月底这个文件将会有四个副本。万一您需要将文件还原至该点,则即使备份介质不可靠,您也可以至少恢复四个副本中的一个。