为什么很少使用 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.
我可以想到使用它的两个重要理由
- 所有FAT系统都有一个(除非一个禁用它)
- 它是内置的
我知道 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)是做什么的。
我从 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.
我可以想到使用它的两个重要理由
- 所有FAT系统都有一个(除非一个禁用它)
- 它是内置的
我知道 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)是做什么的。