基于哈希算法的重复数据删除
基于哈希算法的重复删除技术的代表厂商有昆腾、Data domain 、飞康等,其基本原理是利用SHA 、MD5 等算法将备份数据流切分成“块”,并且为每一块数据生成一组哈希码序列,不同厂商的技术可能对块大小的划分不同。
当备份新的数据时,将按照索引把新数据的哈希码和已存数据的哈希码进行比较,如果发现有相同的哈希码存在,则说明该数据块已经存在相同的实例,此时新备份的数据将被放弃而在相应的位置代之以指向原有实例的指针。
这种算法的优势在于算法简单,而缺点在于当磁盘容量不断增长时,数据块产生的哈希码表可能会超出内存的负载容量,这意味着进行哈希比对时需要去访问磁盘——这势必造成重复删除性能的迅速下降。
另外,哈希算法可能会产生哈希冲突——简单的讲就是不同的数据块产生了相同的索引,这会导致有用的数据被错误的丢弃,从而造成文件的损坏。当然,产生哈希冲突的概率是非常低的,以 128 位的 MD5 码为例,两个哈希码产生冲突的概率为 2E-128,假设一个阵列中存储了 N 个数据块的哈希码,那么其中包含冲突的概率可以按照(1/2)*(N/2e64)e2 进行计算,这意味着只有数据块的数量级达到 2E64 时才可能产生一个冲突。
基于内容识别的重复数据删除
基于内容识别的重复删除技术的代表厂商有 Sepaton、ExaGrid Systems 等,其基本原理是对记录的数据格式进行比对。在备份数据时,该技术会读取数据并从中提取出每组备份集以及备份集中数据对象的元数据,存入到内嵌文件系统的数据库内。当有新的数据进入时则对新的元数据与数据库中的元数据进行版本比对。
不同厂商技术的比对范围会有差别,有的只能在相同文件内进行比对,有的可以在整个阵列空间内进行比对。如果发现相同的元数据,接下来会对数据对象进行逐字节的比较,从而发现发生变化的数据——即使它们的元数据是形同的。如果数据对象确实是重复的,则删除该数据对象并代之以相应的指针。这种算法的优势在于可以避免哈希冲突,并可以利用元数据之间的联系更快的查找重复数据。
从上面两种技术的原理来看,用户完全没有必要担心数据损失问题,并且,各大厂商也采取了严格的措施来确保数据删除的准确性——以 Sepaton 的Delta Store 技术为例,在删除重复数据时首先会做一次模拟删除,从而生成一份删除后的数据视图,只有验证表明该视图确实可以准确的恢复原始数据后才进行真正的重复数据删除并回收磁盘空间。