DoSTOR专家博客:Henry Newman是国外专业存储网站的撰稿人,在高性能计算和存储行业从事了27年的顾问工作。
最近,我听我夫人说起她的一些照片(她是一位半专业的摄影师)不能正确显示了,而她马上要举办一次展览,急需将那些照片打印出来装框。Photoshop的预览窗口中只能显示那些照片的部分内容,而且在打开文件的过程中出现了一个出错信息。 如果你跟我一样,那么这种涉及客户的数据失效问题就是个大问题了。从另一方面来说,如果这个问题与你的夫人有关的话,那问题的性质就更严重了。
这就是我写这篇关于数据失效的文章的起因。我们这些计算机行业的从业者们知道这不是你的文件是否会失效或者丢失的问题,而是一个文件什么时候会失效或者丢失的问题。我发现这种问题在家庭电脑领域体现的特变明显。
我告诉我夫人不用担心,因为我备份了多个副本而且可以在回家时解决那个问题。正如所料,那个问题并不容易解决,这不由让我想到了文件系统、硬件和数据失效。
事故分析
我在下班时认为这个问题是个容易解决的问题。 我在家里的保险箱中备份了一份资料,而且还通过Carbinite公司的服务在因特网上做了备份。在回家的路上,我在银行停了一下,取回了保持在保险箱的备份硬盘。 我想我现在已经可以应付各种突发事件了。 我每月都会更新一次备份。
第一步是首先搞清楚磁盘失效的原因。我在几个月之前更换了电脑的电源,从那个时候开始就没有再使用过那些文件了。 为了保证性能,我在电脑中配备了一个由两块磁盘组成的RAID-0 SATA-2 250G硬盘。我猜想是不是RAID控制器出了什么问题导致文件失效了。 我想最好从对硬件进行一整套的诊断分析开始入手,没想到一无所获。然后我运行了一整套微软公司的文件系统差错和分析程序,结果立刻在五个步骤中都发现了许多错误。 对于我来说,一个错误都是很多了,要知道NTFS是一种定期文件系统,日志应该可以避免出现数据失效和速度恢复。我在过去几个月一直没有进行过完整的差错,我认为这可能就是这次磁盘出问题的原因。 数据的失效会不会是因为我在几个月之前弄出的某个硬件或者软件问题所引起的呢?
我觉得我已经完成了分析,因为我没有发现硬件问题而且进行了完整的磁盘检查。我仍然弄不清楚问题是什么以及它是为什么而发生的,我必须尽快解决这个问题,时间已经不多了,我通过fsck磁盘检查程序查出了更多失效的文件。 现在不是一个大问题了,而是十个或者更多的大问题接踵而来。我对我夫人说我会在她早上起床时弄好她的文件,当时差不多是晚上8点钟了。 时间一分一秒地在流逝。
数据修复
当我开始从本地UBS硬盘上修复那些数据时,我不禁悲观地想到如果硬盘等下又出错失效了怎么办,我现在所做的只是将错误的数据从系统中的硬盘上复制到外部磁盘上。那好像是对的,但是我仍然在外部硬盘上保留了一份一个月之前备份的数据。 天,硬盘上的数据也是坏的。
我看了一下那些文件的最新一次访问时间,根据文件系统显示,它们一直都没有被修改过。自从那些照片被拍摄出来到现在已经有一年多的时间了,但是在几个月之前我们还知道那些文件是绝对没有什么问题的。 时间仍在流逝,现在已经解决晚上10点钟了,而且我明早必须在6点钟一过就起床。 由于备份的副本都是坏的,我唯一的选择就是去调保持在网络上的副本了。 我将最重要的数据下载下来,几分钟之后用Photoshop打开发现它是完好无损的。我将我发现的那些坏文件进行了修复。 我最后终于在晚上11点钟刚刚过的时候完成了工作上床睡觉。
这件事说明了什么
我那天晚上睡得很不好,一直在考虑这件事说明了什么问题、我还碰到这种事情还能做些什么以及那些文件到底是为什么失效的。下面就是我的思考结果:
我意识到我应该平时多做些增量备份而不是完全备份,没次去掉那些老的备份文件,因为我的USB硬盘空间大约只有硬盘空间的75%。而我在修复这次的问题时大概只用了一半的空间,因此我认为一个USB硬盘应该是足够了。 如果我以前进行了增量备份的话,我就可以回到文件被创建的时候。因为我比较看重备份的速度,因此我才没有选择进行增量备份;进行增量备份的话,要花更多时间去管理和修复。 我发现对于系统崩溃之后的完全恢复来说,几乎肯定要用到完全备份和修复,但是增量备份只有在数据发生失效的时候才会用到。问题是,我如何才能知道那些文件是完好的呢? 增量备份也许可以帮到我,但是我搞不清楚我要想保证文件完好得进行多少增量备份。也许需要一年的增量备份吧。
我明白了如果备份的副本有问题,那么再多的备份也没有用的道理。 正是由于我比较偏执而且在银行保险箱保留了一份备份副本并不意味着那些副本上的数据就是好的。别人可能会将我的电脑偷走、我们家可能被这种或者那种原因而毁坏、或者遇到其他一些灾难(我说了我是比较偏执的一个人),那么保险箱里的备份也没有用,因为上面的数据也是坏的。 这并不是说我不能取回99.9%的数据了(保险箱中的备份副本里的数据只有0.1%失效了),但是对某些人来说,那还是不够的。比如对我来说就是不够的。
保留一份网络备份不失为一个好主意。我将所有的数据备份到网络上几乎花了2个月的时间,而且我的电脑通常都整夜在工作。 这样做当然比较浪费能源,但是它可能会在关键的时候救我一把,还有挽救了我的婚姻,因为我在家里是负责电脑并且确保它的用户(就是我夫人)可以在任何时候使用它。
这些问题中,有些是显而易见的,有些则不是。我现在仍然在考虑的问题是:
我在将一个文件备份之前,如何知道它是否是完好的? 我在备份坏数据时浑然无知。我的备份操作正确无误,而且时候还测试了一遍,但是我如何保证备份的海量文件中每一个文件都是完好的呢? 显然,我不可能逐一将那些文件打开。 我知道查日志的方法是可行的,但是我除了进行增量备份之外还能有别的什么办法呢? Sun公司打算用其ZFS文件系统来检查文件和的方式来解决数据失效问题。FC /SAS社区也试图用T10DIF标准来解决这个问题,但是这两种方法都帮不了我。
是什么原因导致了数据失效? 到今天我也没搞清楚这个问题。我们已经发现其他一些文件也失效了,但是据我们所知,失效的都是些旧文件。 它可能是由于电源故障引起的,也可能是因为电压不正常变化引起的,也可能是因为控制器或者磁盘失效引起的,还可能是因为电源或者别的什么部件出现问题导致系统同步出错而引起的,SATA控制器也许出了问题,硬盘也许也出了问题,也有可能上述几个方面同时出现问题。
我永远也不能弄清楚那次的数据失效是为什么发生的,让我感到高兴的是那个问题最后终于解决了。你应该从我的经历中学到一些教训,在数据失效问题发生之前就做好各项准备。