与往常一样,我不会对不同厂商的技术或者产品进行对比,但是我会详细谈一谈你在考虑采购重复数据删除硬件或者软件产品时必须向厂商询问的一个最重要的问题,那就是数据损坏。也许你会问,重复数据删除和数据损坏有什么联系?我将花几分钟的时间向你解释一下。但是有重要的一点,我是从硬件和软件的普遍角度来撰写这篇文章的。一些厂商的产品也许可以或者不可以解决我在这篇文章中提到的所有或者部分问题,这取决于你是否了解你所购买的产品,或者向厂商询问了正确的问题。
探索数据之路
也许有一些读者曾经读过我撰写的一篇关于数据损坏的文章。(参看文章:无形中的数据损失 何时突破技术局限?)文章中我对发生明显变化的字节和ASCII码进行了对比,事实上我提到的这个事例中大部分的字节都被损坏了。
那篇文章的观点是数据偶尔发生损坏,而有时候是迟早要损坏的。这与它是不是高端企业光纤通道没有关系,光纤通道发生数据损坏的几率要远远低于廉价的SATA设备。这甚至与驱动器或者控制器没有关系,而是设备的内存或者CPU什么的损坏了数据。然而,有时候你的数字环境下的数字信息也可能损坏。虽然操作系统、硬件和软件的类型不同发生几率也不同,有时候甚至在运行着MVS的IBM大型主机上也可能发生,但是考虑到计算和检测的奇偶校验数等因素,在这些环境下发生的几率要更低一些。
瑞士一家实验室去年发表了一份关于数据损坏和其根源的文章很值得一读。
你可能会想,这些和重复数据删除又有什么关系呢?简而言之,如果你进行重复数据删除操作,那些软硬件结合的区域发生故障,你就可能会丢失数据。如果你想删除冗余数据,那么确保数据完整性是很重要的。
例如,如果哈希算法对比的对象是那么在数据读取过程中已经被损坏的数据,而不是磁盘中的完整数据,那么会怎样呢?如果你再次读取这些数据,你也许会获得这些正确的数据,但是如果写入磁盘的哈希数据已经发生损坏,那么你还能正常读取文件吗?让我们来看看这两个例子,看会发生怎样的情形。提醒一下,我是从一个普通用户的角度来进行分析,这些例子也许或者并不适用于某些基于他们自己硬件或者软件的厂商。
案例一:损坏数据读取
如果你从一个磁盘中读取已经因为某种原因损坏了的数据,然后将损坏的数据当作新数据,那么你就会遇到一个大麻烦。如果你再次从磁盘上读取数据或者进行重复数据删除的话,就会发生不同的情况。
如果你将读取数据与输入数据作一下对比,你就会发现内存中的数据会发生损坏,所以你发现任何匹配数据都将与那些下一次读取时不同的数据进行对比。如果因为某些原因重读哈希算法并且正确读取的话,后来任何读取的数据都是完整的。除此之外,这对调试工作来说也是一个挑战,而且我可以肯定地说这是不可恢复的,并且将丢失大量数据。你会惊讶地发现,有些数据是完整的,而有些数据是损坏的,而且如果没有认真的检测工作你就无法发现这种情况。
案例二:损坏数据的哈希计算
如果磁盘上的数据被损坏或者从一开始就是不完整的话会怎样?这与第一个案例用某些类似之处,不同的是,案例一中你的数据先后是完整的、损坏的、然后可能又是完整的。在这个案例中,所产生的哈希数据是在内存中的,并且是好的,但是在磁盘上的哈希数据却是损坏的。也就是说,数据是由一个好的哈希算法产生的,可是一旦从磁盘上读取的话就数据就成损坏的了。不过,如果是从磁盘读取然后再回到内存中的话就不会发生变化,所以这个问题是分情况而论的。但是最早在内存哈希计算中产生的数据并不能被重复数据删除。因此,几个月或者几年之后当你再次读取这些未经过重复数据删除操作的数据时,从磁盘读取的话就是损坏的。而且这也是对调试工作的一个挑战,并且很难被发现。
你需要向厂商询问的问题
我坚信有很多未被发现的数据损坏的存在。不仅我自己还有其他很多人都曾经有过这种经历,而且迟早也将在你身上发生。而且我也是最新的T10 Data Integrity Field标准的坚定拥护者,这项标准将从主机发送一个检验数字到磁盘,然后磁盘确认校验码。今年年底许多厂商都将开始采用这项标准。就我个人来说很支持这项标准,它有时候是在磁盘驱动器等硬件设备的数据路径中执行的,并且是来自发送SCSI协议的同一个来源。
有很多系统都可以进行这种校验,但是如果一个文件系统进行校验和修正数据的话,你就会遇到两个问题:
·文件系统必须在确认或者拒绝校验之前在服务器后端读取数据。一些硬件设备在数据路径中写入的数据是不经过校验的。
·服务器CPU必须对校验进行计算,并且当文件重新读取进来的时候进行确认。所有这些校验活动都会对服务器产生很大的影响,例如增加内存带宽需求和占有CPU缓存等,校验计算可能会引起应用重新负载,导致内存和内存带宽使用增加。
如果你正在运行某些很占服务器资源的应用,那么这就会是一个难题。
有些产品有自己的文件系统和校验方法,这也就解决了我担心的数据损失问题,但是并非所有厂商的产品都具备这种内嵌的功能性。这只是你必须了解的关于重复数据删除的一个方面。这并不是评估一款产品的唯一标准,但却应该是最先考虑的因素之一。当你就这个问题询问厂商的时候,他也许会说这是你自身的问题,你的环境应该采用T10 DIF之类的标准。这个回答完全是错误的。
在很多环境下重复数据删除技术是一项很棒的技术工具,但是每个事物都有复杂的一面,重复数据删除技术也需要谨慎的计划和执行。