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

2009-12-08    来源:存储时代    
前不久我参加了一个由美国政府机构主办关于 归档 保留(设备必须永远用数字格式保存信息)的研讨会,在我看来,文件需要被更好地保护以确保这种 归档 是有意义的。 这次研讨会

       前不久我参加了一个由美国政府机构主办关于归档保留(设备必须永远用数字格式保存信息)的研讨会,在我看来,文件需要被更好地保护以确保这种归档是有意义的。

       这次研讨会讨论了保留归档所面临的一些挑战,这些归档在文件从原始格式转化为数字格式之后就不能再变更了。

       大多数业内参会者都认为,随着时间的推移,数字数据将不可避免地发生变化(例如0变成1,或者1变成0)。长此以往,1个2个或者更多字位将发生变化,或者被错误读取,文件可能会变成不可读的,或因为某个不可读取的点而损坏。丢失文件中的一个字位是一回事,而丢失了文件定义部分(通常被成为应用头或者文件头)就是另外一回事了,因为在文件生成之初,如果这一部分丢失或者不可读的话,整个文件就有可能丢失。

       一位来自电影行业的参会者提到,即使是有100年之久并且不那么完美的电影通常也是可以播放的,而且这部电影的大部分都是可以观看的,对于一般人来说也足够清晰。这位参会者提问说,为什么数字电影格式(jpg、mpeg-3、mpeg-4和jpeg2000)为什么不能持续这么长时间并保证是可观看的呢?很好地问题,但是没有人能够回答这个问题。

       文件头和文件系统超级块

       我的一位来自仿真行业的厂商朋友告诉我,早在70年代的时候,他参与的一个项目对他们生成的每个仿真文件使用两个文件头。这让我想到,文件系统是如何写入多个超级块(实际上它的功能和数字文件的文件头是一样的)的副本?几乎每个文件都有一个头,从文件应用文件到数字音频和视频,再到用于生成天气预报所使用的数据、生产汽车和飞机所使用的数据等等。文件系统的超级块让文件成为可读取和可处理的,如果你丢失了超级块所在的一个磁盘,那么文件系统会就尝试读取其他磁盘,判断是否还有这个超级块的有效副本。

       这种需求和音频或者视频数字格式或者其他任何文件的头没有什么区别。不过这只是问题的一部分,如果一个文件可以用多个头写入、应用程序知道在哪里可以找到头的话,会怎样?你可能需要在文件不同结尾处的多个文件头,因为如果一个扇区损坏的话,同一个扇区上的两个头可能是毫无帮助作用。

       那么,你可以在文件开始和结尾处各设一个头;你怎么知道哪一个头是好的呢?答案显然是创建一个头数据的检验和,然后对比校验和,这意味着你需要读取文件头,然后验证校验和。另外一种方法是,向文件中中添加ECC(纠错代码),这样即使非常微小的损坏也可以被修复了。这种方法已经被用于不少电信系统和航天飞机中所采用,被称为表决法:读取三个或者更多个文件头,通过对比看看哪两个或者更多有相同的结果。我认为,向文件头中添加ECC是最好的方法,原因如下:

       ·你读取的数据更少了
·你寻找的文件更少了,因为你只需要读取一个文件头,而不是多个
·ECC可以删除和修复故障,因此要比使用验证校验和的方法更可靠
·显然现在我们拥有足够的处理能力在ECC发生故障的时候验证和修复文件头

       缺点是,如果文件头所在的扇区损坏严重,你可能就无法重建文件了,因此对于最关键的文件来说,解决方案应该是同时使用两个文件头外加ECC。与应对一些字位发生变化相比,使用多个文件头来应对扇区故障的好处是取决于你使用了多少ECC。

       这种方法的另外一个特点就是,文件头可能很大,甚至可能会占满整个磁盘硬件扇区,这个扇区现在有512字节,但很可能会在未来某个时候变成4096字节。

1
3