重复数据删除已然成为了时下最热门的焦点词,人们纷纷在议论着它是如何如何的好,给我们带来了多少的便利。但是,冷静的思考一下,难道重复数据删除技术缺点就真的不存在吗?
跟以前一样,我不打算对比不同厂商的产品或者技术,我只想谈谈你在考虑购买重复数据删除软件或硬件时必须向厂商咨询的一个重要问题,即数据损坏的问题。你可能会想,重复数据删除与数据损坏有什么关系呢,不用着急,我马上就给你解释。 但是必须说明的是,我是从通用硬件和软件的角度来写这篇文章的。有些厂商的产品也许可以或者不可以接近我在文中谈到的全部或者部分问题。 选购哪家厂商的产品以及向厂商咨询什么问题的决定权在你自己手中,笔者不承担任何责任。
有些人也许读过我曾经写过的一篇关于我自己经历过的数据损坏的文章。 我稍微对比了一下正确的数据和损坏后的数据,数据的ASCII码发生了很大变化。实际上,大部分字节都损坏了。
本文讨论的是数据不定期损坏的问题,并非一定会发生,即使是发生数据损坏事故的概率远低于廉价SATA的高端企业光纤信道驱动器也不能例外。 另外,发生问题的部件不一定是驱动器或者控制器,也可能是内存、CPU或者别的什么部件。归结为一点就是,数字世界中的数字资料肯定有可能会损坏。 虽然发生数据损坏事故的情况跟使用的操作系统、硬件和软件都有关系,即使是运行在基于MVS多重虚拟存储系统的IBM大型机上也可能发生数据损坏事故,只是概率要比系统低很多。
瑞士一家实验室去年发表了一篇关于数据损坏的论文,其中有些内容值得一读。
你可能会想,这些跟重复数据删除技术缺点有什么关系。问题是,如果重复数据删除的硬件或者软件损坏了,你可能会失去所有的数据。 如果你打算删除重复的数据,你就必须保证你拥有的那些数据是完好的。
例如,加入数据在被读出时损坏,而存储在磁盘上的数据仍是好的,那么在进行数据对比时会怎么样? 如果再次读取,可能就能够得到正确的数据。但是如果数据被写入磁盘时的日期出错,你是否还能读取那些文件呢? 让我们一步一步分析这两个例子,看看到底发生了什么事。
实例1:受损数据读取
如果从磁盘读取数据,而且那些数据由于某种原因损坏了,然后开始将受损的数据应用于新数据,你可能会遇到一个大问题。当你再次从磁盘读取数据,进行重复数据删除的操作时,它可能就不同了。
如果将读取的数据与新数据进行对比,内存中的数据将是坏的,所以你找到的所有一样的数据在下次被读取时都将变成其他的数据。因此,基本上从受损数据中读取的任何数据都将被错误的对比,因而变得无法读取。
如果那些数据由于某种原因被重新读取,而且读取的是正确的数据的话,那么后续数据都将是正确的。除此之外,就会发生无法恢复的调试,你将丢失大量的数据。 令人担心的是,一部分数据是好的,一部分数据是坏的,要想区分开来,非要进行非常细致的检查工作。
实例2:受损数据重复数据
但是,如果数据从一开始就出错,在磁盘上就已经受损了怎么办? 这个问题与第一个实例很相似,只是第一个实例中的数据是好的,后来才读取了坏的数据,令所有数据都受损了。在这个实例中,重复数据是在内存中创建的,是好的,但是磁盘上的数据是坏的。 也就是说,你用一个好的重复数据建立了数据,但是一旦从磁盘读取数据,数据就变成坏的了。好的一面是,一旦从磁盘重新读取数据到内存,数据就一样了,所以这个问题不是很严重。 但是在利用内存中的原始数据创建数据时,你不能进行恢复已经删除的重复数据。当你下个月恢复删除的重复数据时,你会获得错误的数据,除非从磁盘读取正确的数据才行。 再次强调一点,这是个调试问题,可能无法解决。
你需要向厂商咨询哪些有关重复数据删除技术缺点的问题
我自己遇到过数据受损的事故,我也看到其他人遇到过同样的问题,你迟早也会遇到。 我也非常相信新的T10 Data Integrity Field标准,这个标准会从主机向磁盘进行8字节的检验,让磁盘来验证数据,估计很多厂商都将在今年晚些时候提供基于这种标准的产品。我个人很喜欢这个标准,因为有些部分已经应用于硬件的数据通道中,它是由为你提供SCSI协议的同一个厂商提供的。