为什么很少使用FAT#2?

时间:2016-05-26 15:22:41

标签: assembly filesystems fat

我从Peter Abel的书“ IBM PC汇编语言和编程”中读到了FAT#2的单行解释。

它说:

  

虽然仍然保留了FAT2,但它的使用从未实现过。

维基百科说:

  

FAT地区。

     

这通常包含文件分配表的两个副本(可能会有所不同),以便进行冗余检查,尽管很少使用,即使是磁盘修复实用程序也是如此。

我可以想到使用它的两个强有力的理由

  1. 所有FAT系统都有一个(除非一个禁用它)
  2. 内置
  3. 我意识到FAT是一个非常古老的文件系统,但为什么FAT#2 从不很少实现?

1 个答案:

答案 0 :(得分:4)

假设" FAT2"表示FAT(文件分配表)的第二个副本,那么基本问题是它没有什么实际用途,但是如果它实际上从未使用过,我不确定它是否属实。 / p>

FAT是FAT文件系统中的中央数据结构,因此文件系统本身就是以它为中心命名的。它不仅是已分配或未分配群集的表,还存储构成每个文件的群集的链接列表。如果FAT中的单个扇区损坏,可能会丢失大量文件,因此有人认为拥有FAT的备份副本是个好主意。

问题是如果FAT损坏了,你怎么知道哪个FAT副本是正确的?这限制了备份副本在从主FAT读取时导致读取错误的情况的有用性。因此,至少在理论上,如果在读取文件时操作系统在读取FAT时遇到错误,则可以尝试备份副本。

然而,物理磁盘错误并不是FAT可能损坏的唯一方式。特别是,磁盘修复实用程序(如chkdsk)并未真正用于修复因读取错误而导致的文件系统损坏。它们仅用于修复由于将错误数据写入磁盘而导致的损坏。最常见的情况是计算机在写入磁盘的过程中关闭。在这种情况下,文件系统很容易成为不一致的状态。特别是如果操作系统正在更新FAT,它可能已更新主副本但不更新备份副本,或者它可能已更新备份副本但不更新主副本。没有办法知道哪个。

我不确定操作系统在读取错误后是否真的费心去检查备份FAT。这很难说,因为它在实践中很少有所作为。单扇区读取错误在过去20年左右的硬盘上并不常见,因为它们会在失败之前重新映射失败的扇区。驱动器在完全失败之前往往没有磁盘错误。即使在软盘上,物理磁盘错误也会影响整个磁道,这会消除FAT的两个副本。

查看Linux和FreeBSD FAT文件系统实现的来源,如果从主FAT读取失败,它似乎既没有尝试备份FAT。我不知道微软的三个主要实现(MS-DOS,Windows 95或Windows NT)是做什么的。