FAT、HPFS 和 NTFS 文件系统概述


摘要


本文介绍了 Windows NT 下的 FAT、HPFS 和 NTFS 文件系统的不同之处及其各自的优缺点。 本文分为以下几个部分:


  • FAT 概述
  • HPFS 概述
  • NTFS 概述
注意: 只有 Windows NT 3.1、3.5 和 3.51 版支持 HPFS。 Windows NT 4.0 不支持且无法访问 HPFS 分区。 此外,只有 Windows 98/95 和 Windows 2000 才支持 FAT32 文件系统。

更多信息


FAT 概述

FAT 是迄今 Windows NT 支持的最简单的文件系统。 FAT 文件系统的特点在于文件分配表 (FAT),这是一个真正的表,它位于卷的最“顶端”。 为了保护卷,最好保留两份 FAT 副本,以防其中之一损坏。 此外,两个 FAT 表和根目录必须存储在一个固定位置,以方便正确找到系统的启动文件。


使用 FAT 格式化的磁盘以簇为单位进行分配,簇的大小由卷的大小决定。 当一个文件被创建时,在目录中就会创建一项,而包含数据的第一个簇号也会建立。 FAT 表中的该项或者指示这是文件的最后一个簇,或者指向下一个簇。


更新 FAT 表非常重要,但也相当耗时。 不定期更新 FAT 表会导致数据丢失。 而费时的原因在于,每次更新 FAT 表时,磁盘读取头都必须重新回到驱动器的 0 逻辑磁道处。


FAT 目录结构没有组织,而且赋予文件的是驱动器上的第一个打开位置。 此外,FAT 只支持只读、隐藏、系统和存档文件属性。

FAT 命名规则

FAT 使用传统的 8.3 文件命名规则,所有文件名必须使用 ASCII 字符集创建。 文件或目录的名称最多可为 8 个字符,之后是一个句点 (.) 分隔符,再加上最多 3 个字符的扩展。 名称必须以字母或数字打头,其中可以包含除以下字符外的任何字符:


. " / \ [ ] : ; | = ,
使用上述字符可能会产生意外结果。 名称中不能包含空格。


下列名称为系统保留名称:


CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN, NUL
所有字符都将转换为大写。

FAT 的优点

不能在 Windows NT 下的任何一种受支持的文件系统上执行撤消删除操作。 撤消删除实用工具试图直接访问硬件,这在 Windows NT 下是不可行的。 但是,如果文件位于 FAT 分区,并且系统重新启动为 MS-DOS 模式,就可以撤消删除文件。 FAT 只需极少的开销就可以启动,因此,FAT 文件系统最适用于大约 200 MB 以下的驱动器和/或分区。 有关 FAT 优点的进一步讨论,请参见下列文章:

  • 《Microsoft Windows NT Server Concepts and Planning Guide》第 5 章“Choosing a File System”
  • 《Microsoft Windows NT Workstation 4.0 Resource Kit》第 18 章“Choosing a File System”
  • 《Microsoft Windows NT Server 4.0 Resource Kit Resource Guide》第 3 章“Which File System to Use on Which Volumes”

FAT 的缺点

使用超过 200 MB 的驱动器或分区时,还是不要使用 FAT 文件系统。 这是因为当卷容量增大时,FAT 的性能会快速降低。 您无法对 FAT 分区的文件设置权限。


在 Windows NT 下,FAT 分区大小的上限为 4 GB,在 MS-DOS 中为 2 GB。 有关此限制的其他信息,请参见下面的 Microsoft 知识库文章:

文章 ID: 118335
标题: MS-DOS 的最大分区大小
有关 FAT 的其他缺点的进一步讨论,请参见下列文章:

  • 《Microsoft Windows NT Server Concepts and Planning Guide》第 5 章“Choosing a File System”
  • 《Microsoft Windows NT Workstation 4.0 Resource Kit》第 18 章“Choosing a File System”
  • 《Microsoft Windows NT Server 4.0 Resource Kit Resource Guide》第 3 章“Which File System to Use on Which Volumes”

HPFS 概述

HPFS 文件系统最早是随 OS/2 1.2 引入的,目的是提高访问当时市场上出现的更大硬盘的能力。 此外,当时也需要一个新的可以扩展命名系统、组织性和安全性的文件系统,以便满足网络服务器市场日益增长的需求。 HPFS 保留了 FAT 的目录组织,同时增加了基于文件名的自动目录排序功能。 文件名扩展到最多可为 254 个双字节字符。 HPFS 还允许由“数据”和特殊属性组成文件,从而在支持其他命名规则和安全性方面增加了灵活性。 此外,分配单位也从簇改为物理扇区(512 字节),这减少了磁盘空间的浪费。


在 HPFS 下,目录项包含的信息比在 FAT 下更多。 至于属性文件,则还包括有关修改、创建、访问日期和时间的信息。 在 HPFS 下,目录项不是指向文件的第一个簇,而是指向 FNODE。 FNODE 可以包含文件的数据、指向文件的数据的指针或其他最终指向文件的数据的结构。


HPFS 试图将一个文件尽可能分配在连续的扇区内。 这样做是为了提高连续处理文件的速度。


HPFS 将一个驱动器组织成一系列的 8 MB 频带,并且只要有可能文件就包含在其中一个频带中。 频带与频带之间为 2K 的分配位图,用来跟踪一个频带内哪些扇区已分配,哪些扇区尚未分配。 分频带可以提高性能,原因是驱动器头不必回到磁盘的逻辑顶部(通常是 0 柱面),而只需回到最近的频带分配位图就可以判断文件的存储位置。


此外,HPFS 还包括两个唯一的特殊数据对象:

超级块

超级块位于逻辑扇区 16 处,它包含一个指向根目录的 FNODE 的指针。 使用 HPFS 的最大风险之一是,如果因坏扇区导致超级块丢失或损坏,分区的内容也会损坏,即使驱动器的其余部分都很好。 通过将所有内容复制到另一个具有好的扇区 16 的驱动器上并重建超级块的办法,有可能恢复驱动器上的数据。 但是,这是一个非常复杂的任务。

备用块

备用块位于逻辑扇区 17 处,它包含一个“修复”表和备用目录块。 在 HPFS 下,当检测到一个坏扇区时,“修复”项即被用来逻辑地指向一个现有的好扇区来替代坏扇区。 这种处理写入错误的技术称为修复。


所谓修复技术,就是在因坏扇区导致发生错误时,文件系统会将信息移到另一个扇区中,同时将原来的扇区标记为坏扇区。 这些过程对于所有正在执行磁盘 I/O 操作的应用程序而言都是透明的(也就是说,应用程序完全不知道硬盘出过问题)。 使用支持修复的文件系统可以消除像 FAT 遇到坏扇区时出现的“Abort, Retry, or Fail?”这样的错误消息。


注意: Windows NT 附带的 HPFS 版本不支持修复。

HPFS 的优点

HPFS 最适用于 200-400 MB 范围的驱动器。 有关 HPFS 的优点的更多讨论,请参见下列文章:

  • 《Microsoft Windows NT Server Concepts and Planning Guide》第 5 章“Choosing a File System”
  • 《Microsoft Windows NT Workstation 4.0 Resource Kit》第 18 章“Choosing a File System”
  • 《Microsoft Windows NT Server 4.0 Resource Kit Resource Guide》第 3 章“Which File System to Use on Which Volumes”

HPFS 的缺点

由于 HPFS 带来的系统开销,因此,大约 200 MB 以下的卷最好不要选择使用此文件系统。 此外,对于大约 400 MB 以上的卷,使用此文件系统会出现性能下降。 在 Windows NT 下,您不能对 HPFS 设置安全性。


只有 Windows NT 3.1、3.5 和 3.51 版支持 HPFS。 Windows NT 4.0 不能访问 HPFS 分区。


有关 HPFS 的其他缺点,请参见下列文章:


  • 《Microsoft Windows NT Server Concepts and Planning Guide》第 5 章“Choosing a File System”
  • 《Microsoft Windows NT Workstation 4.0 Resource Kit》第 18 章“Choosing a File System”
  • 《Microsoft Windows NT Server 4.0 Resource Kit Resource Guide》第 3 章“Which File System to Use on Which Volumes”

NTFS 概述

从用户的视角来看,NTFS 继续将文件组织成目录,目录也像在 HPFS 中一样被排序。 但是,与 FAT 或 HPFS 不同的是,NTFS 在磁盘上没有“特殊”对象,而且对诸如 512 字节扇区之类的基础硬件也没有依赖性。 此外,磁盘上没有像 FAT 表或 HPFS 超级块这样的特殊位置。


NTFS 主要是提供:

  • 可靠性,高端系统和文件服务器尤其需要这一点
  • 用于新增功能的平台
  • 支持 POSIX 要求
  • 消除 FAT 和 HPFS 文件系统的限制

可靠性

为确保 NTFS 的可靠性,解决了三个主要方面的问题:可恢复性、消除致命的单扇区故障以及热修复。


NTFS 是一个可恢复的文件系统,因为它能跟踪针对文件系统的事务。 在 FAT 或 HPFS 上执行 CHKDSK 时,系统会检查目录、分配和文件表中指针的一致性。 在 NTFS 下,系统会维护针对这些组件的事务日志,因此,CHKDSK 只需将事务回滚到上一个提交点就可以恢复文件系统中的一致性。


在 FAT 或 HPFS 下,如果文件系统的一个特殊对象所在的扇区发生故障,就会发生单一扇区故障。 NTFS 通过两种方式避免这个问题:一是不在磁盘上使用特殊对象,二是跟踪并保护磁盘上的所有对象。 其次,在 NTFS 下保存主文件表的多个副本(数量视卷大小而定)。


与 OS/2 版本的 HPFS 相似,NTFS 也支持修复。

新增功能

Windows NT 在各级别上的主要设计目的之一,就是提供一个可以在上面新增与建立的平台,就此而言,NTFS 也不例外。 NTFS 提供了一个可供其他文件系统使用的丰富而灵活的平台。 此外,NTFS 完全支持 Windows NT 安全模式和多重数据流。 一个数据文件不再只是一个数据流。 最后,在 NTFS 下,用户可以将自己定义的属性添加到文件中。

POSIX 支持

在所有受支持的文件系统中,NTFS 最符合 POSIX.1,原因是它支持以下 POSIX.1 要求:


区分大小写的命名:


在 POSIX 下,README.TXT、Readme.txt 和 readme.txt 代表不同的文件。


额外的时间戳:


额外的时间戳提供上次访问文件的时间。


硬链接:


硬链接是指两个可以位于不同目录的不同文件名指向相同的数据。

消除限制

首先,NTFS 大大增加了文件和卷的大小,文件和卷现在可以达到 2^64 字节(16 EB 或 18,446,744,073,709,551,616 字节)。 NTFS 也恢复了 FAT 的簇概念,以避免发生固定扇区大小的 HPFS 问题。 这样做的原因是 Windows NT 是一个便携式操作系统,并且很可能在某点上遇到不同的磁盘技术。 因此,每扇区 512 个字节的分配被认为很可能在某些时候不妥当。 允许将簇定义为硬件自然分配大小的倍数就可以解决此问题。 最后,在 NTFS 中,所有文件名都基于 Unicode,您可以使用 8.3 文件名,也可以使用长文件名。

NTFS 的优点

NTFS 最适合在大约 400 MB 或更大的卷上使用。 这是因为在 NTFS 下性能不降低,而 FAT 对于较大的卷则是低效的。


NTFS 的可恢复性设计是指用户在 NTFS 分区上完全不必运行任何磁盘修复工具。 有关 NTFS 的其他优点,请参见下列文章:

  • 《Microsoft Windows NT Server Concepts and Planning Guide》第 5 章“Choosing a File System”
  • 《Microsoft Windows NT Workstation 4.0 Resource Kit》第 18 章“Choosing a File System”
  • 《Microsoft Windows NT Server 4.0 Resource Kit Resource Guide》第 3 章“Which File System to Use on Which Volumes”

NTFS 的缺点

小于大约 400 MB 的卷不适合使用 NTFS,原因是 NTFS 会带来空间开销。 该空间开销的形式为 NTFS 系统文件,通常在 100 MB 分区上至少用掉 4 MB 的驱动器空间。


目前 NTFS 不含文件加密。 因此,人们可以在 MS-DOS 或其他操作系统下启动,然后使用低级磁盘编辑工具来查看 NTFS 卷上存储的数据。


不能使用 NTFS 文件系统格式化软盘;Windows NT 会使用 FAT 文件系统格式化所有软盘,原因是软盘承担不了 NTFS 带来的开销。


有关 NTFS 缺点的进一步讨论,请参见下列文章:

  • 《Microsoft Windows NT Server Concepts and Planning Guide》第 5 章“Choosing a File System”
  • 《Microsoft Windows NT Workstation 4.0 Resource Kit》第 18 章“Choosing a File System”
  • 《Microsoft Windows NT Server 4.0 Resource Kit Resource Guide》第 3 章“Which File System to Use on Which Volumes”

NTFS 命名规则

文件和目录的名称长度最多可以为 255 个字符(包括任何扩展)。 名称保留大小写,但是不区分大小写。 NTFS 不根据大小写来区分文件名。 名称可以包含除下列字符以外的任何字符:


? " / \ < > * | :
目前,您只能从命令行上创建最多 253 个字符的文件名。

注意: 基础硬件限制可能会对任何文件系统施加额外的分区大小限制。 尤其是,引导分区大小限于 7.8 GB,分区表大小限于 2 TB。


有关 Windows NT 支持的文件系统的更多信息,请参见 Windows NT Resource Kit。