为什么很少使用 FAT#2?

Why is FAT#2 rarely used?

我从 Peter Abel 的书 IBM PC Assembly Language and Programming.

中读到了 FAT#2 的单行解释

它说:

Although FAT2 is still maintained, its use has never been implemented.

维基百科说:

The FAT Region.

This typically contains two copies (may vary) of the File Allocation Table for the sake of redundancy checking, although rarely used, even by disk repair utilities.

我可以想到使用它的两个重要理由

  1. 所有FAT系统都有一个(除非一个禁用它)
  2. 它是内置的

我知道 FAT 是一个非常古老的文件系统,但为什么 FAT#2 从未很少 被实施?

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

FAT 是 FAT 文件系统中的核心数据结构,其核心地位以至于文件系统本身都以它命名。它不仅是 table 哪些簇已分配或未分配,它还存储构成每个文件的簇的链表。如果 FAT 中的单个扇区损坏,可能会丢失大量文件,因此在某些时候有人认为拥有 FAT 的备份副本是个好主意。

但问题是,如果 FAT 已损坏,您如何判断 FAT 的哪个副本是正确的?这将备份副本的用途限制为从主 FAT 读取导致读取错误的情况。因此,至少在理论上,如果 OS 在读取文件时在读取 FAT 时遇到错误,它可以尝试备份副本。

然而,物理磁盘错误并不是 FAT 损坏的唯一途径。特别是,磁盘修复实用程序,如 chkdsk,并非真正设计用于修复由读取错误引起的文件系统损坏。它们只是为了修复由于将错误数据写入磁盘而导致的损坏。最常见的情况是计算机在写入磁盘的过程中关机。在那种情况下,文件系统很容易处于不一致状态。特别是如果 OS 正在更新 FAT,它可能更新了主副本但没有更新备份副本,或者它可能更新了备份副本但没有更新主副本。没办法知道是哪个。

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

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