纠错:文件存储的迫切需求

大多数业内参会者都认为,随着时间的推移,数字数据将不可避免地发生变化(例如0变成1,或者1变成0)。长此以往,1个2个或者更多字位将发生变化,或者被错误读取,文件可能会变成不可读的,或因为某个不可读取的点而损坏。丢失文件中的一个字位是一回事,而丢失了文件定义部分(通常被成为应用头或者文件头)就是另外一回事了,因为在文件生成之初,如果这一部分丢失或者不可读的话,整个文件就有可能丢失。
  一位来自电影行业的参会者提到,即使是有100年之久并且不那么完美的电影通常也是可以播放的,而且这部电影的大部分都是可以观看的,对于一般人来说也足够清晰。这位参会者提问说,为什么数字电影格式(jpg、mpeg-3、mpeg-4和jpeg2000)为什么不能持续这么长时间并保证是可观看的呢?很好地问题,但是没有人能够回答这个问题。
  文件头和文件系统超级块
  我的一位来自仿真行业的厂商朋友告诉我,早在70年代的时候,他参与的一个项目对他们生成的每个仿真文件使用两个文件头。这让我想到,文件系统是如何写入多个超级块(实际上它的功能和数字文件的文件头是一样的)的副本?几乎每个文件都有一个头,从文件应用文件到数字音频和视频,再到用于生成天气预报所使用的数据、生产汽车和飞机所使用的数据等等。文件系统的超级块让文件成为可读取和可处理的,如果你丢失了超级块所在的一个磁盘,那么文件系统会就尝试读取其他磁盘,判断是否还有这个超级块的有效副本。
  这种需求和音频或者视频数字格式或者其他任何文件的头没有什么区别。不过这只是问题的一部分,如果一个文件可以用多个头写入、应用程序知道在哪里可以找到头的话,会怎样?你可能需要在文件不同结尾处的多个文件头,因为如果一个扇区损坏的话,同一个扇区上的两个头可能是毫无帮助作用。
  那么,你可以在文件开始和结尾处各设一个头;你怎么知道哪一个头是好的呢?答案显然是创建一个头数据的检验和,然后对比校验和,这意味着你需要读取文件头,然后验证校验和。另外一种方法是,向文件中中添加ECC(纠错代码),这样即使非常微小的损坏也可以被修复了。这种方法已经被用于不少电信系统和航天飞机中所采用,被称为表决法:读取三个或者更多个文件头,通过对比看看哪两个或者更多有相同的结果。我认为,向文件头中添加ECC是最好的方法,原因如下:
  ·你读取的数据更少了
  ·你寻找的文件更少了,因为你只需要读取一个文件头,而不是多个
  ·ECC可以删除和修复故障,因此要比使用验证校验和的方法更可靠
  ·显然现在我们拥有足够的处理能力在ECC发生故障的时候验证和修复文件头
  缺点是,如果文件头所在的扇区损坏严重,你可能就无法重建文件了,因此对于最关键的文件来说,解决方案应该是同时使用两个文件头外加ECC。与应对一些字位发生变化相比,使用多个文件头来应对扇区故障的好处是取决于你使用了多少ECC。
  这种方法的另外一个特点就是,文件头可能很大,甚至可能会占满整个磁盘硬件扇区,这个扇区现在有512字节,但很可能会在未来某个时候变成4096字节。
广播行业的先例
  ECC方法存在已经有十几年的时间,现在是时候开始使用这种方法,这样文件就不会在字位出错的时候丢失。由于现在各种压缩技术的普遍应用,丢失一个字位可能就意味着丢失整个文件。你遇到过多少次在家里打开一个数字图片却发现它是不可读的?
  回溯到90年代的时候,当时有不少RAID厂商忽略了广播行业的读取错误问题。这些厂商之所以这么做是因为,如果你正在一个播放超级杯的商业广告,那么在重播的时候丢失几个字位总比无法正常播放这个商业广告而丢掉几百万美元收入要强得多吧。而且通常丢失几个字位甚至不会被注意到。众所周知,在广播行业丢掉几个字位总比失去正常发送广播的机会要好。现在我们面临的难题是,由于需要对图片、视频和音频的压缩算法,现在丢失几个字位所带来的影响可比90年代处理未压缩格式数据丢失字位大得多了。
  一些应用为每个文件生成一个校验和,但是这并不能解决文件中的问题,它只会在你无法播放的时候告诉你文件已经发生变更。我是压缩技术的狂热爱好者,也许我们需要做的就是从重复数据删除领域学到一些经验。很多重复数据删除产品都采用了ECC,可以对每个块进行修正。不同厂商使用的ECC数量各有不同,但是你为岳母的照片文件创建的误差校正码也许跟美国政府保存归档文件所需的误差校正码是不同的。
  当然我希望在IRS记录上使用比水下照片更多的ECC,不过我更愿意牺牲磁盘空间、CPU、内存带宽和时间来处理这些ECC。如果有一种在需求变化的时候设置和重新设置误差校正码数量的方法就好了,但是文件格式仍然在某个误差校正码所处扇区出现故障时显示文件。这种情况下我不会丢失整个文件,以我的水下照片为例,如果一张鱼的照片鱼眼部分无法显示,那么至少显示其余部分的图片,这样我可以使用Photoshop来修补一下。
  在我看来,文件和数据完整性必须有所改变,否则最终我们将丢掉所有长期归档数据。对于全球的各个行业和政府来说,丢失这些数据的潜在成本和丢失我们共享历史的威胁意味着我们必须做些什么。所有都开始变成数字化的,从医疗记录到老电影、图片和文件。现在的方法在过去也许是有效的,但是在将来并不一定奏效。

立升  发表于: 2009-12-16

我要回答

电子邮件地址不会被公开。 必填项已用*标注

敬请读者进行回答,本站保留删除与本问题无关和不雅内容的权力。

相关推荐