发布时间:1996年8月发布(Windows 95 OSR2)
分区标识: 0x0B, 0x0C(MBR)EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(GPT)
最大单文件大小: 4 GB (Fat16分区是2 GB )
最大文件数量: 268,435,437
最长档名限制: 8.3 或者 长文件名255个字符
最大卷大小: 8 TB (在windows 2000和windows XP环境下格式化程序只能创建最大32GB的FAT32
文件系统,不过可以用如
PQ等分区软件分出大于32GB的FAT32分区,大于32GB的FAT32分区在WIN2000/XP下使用完全正常)
记录日期: 创建、修改、访问
日期范围: 1980年1月1日至2107年12月31日
属性: 只读,隐藏,系统,卷标,
子目录,档案
透明加密:不支持
透明压缩:不支持
访问许可:无限制
性能特点
FAT32具有一个最大的优点:在一个不超过8GB 的分区中,FAT32分区格式的每个簇容量都固定为4KB,与FAT16相比,可以大大地减少磁盘的浪费,提高磁盘利用率。目前,支持这一
磁盘分区格式的操作系统有Win95、Win98、Win2000、Win2003和Win7。但是,这种分区格式也有它的缺点,首先是采用FAT32格式分区的磁盘,由于文件分配表的扩大,运行速度比采用FAT16格式分区的磁盘要慢。
约束
windows 2000和windows XP能够读写任何大小的FAT32文件系统,但是这些平台上的格式化程序只能创建最大32GB的FAT32文件系统。
在dos系统下可直接访问fat32分区,而ntfs分区则不能在dos下直接访问。
缺点
但FAT有一个严重的缺点:当文件删除后写入新资料,FAT不会将档案整理成完整片段再写入,长期使用后会使档案资料变得逐渐分散,而减慢了读写速度。
硬盘碎片整理是一种解决方法,但必须经常整理来保持
FAT文件系统的效率。
主启动区 文件 分配表 #1 文件 分配表 #2 根目录 其他所有资料...剩下磁盘空间
一个FAT文件系统包括四个不同的部分。
1、保留扇区
位于最开始的位置。第一个保留
扇区是引导区(分区启动记录)。它包括一个称为基本输入输出参数块的区域(包括一些基本的文件系统信息尤其是它的类型和其它指向其它扇区的指针),通常包括操作系统的启动调用代码。保留扇区的总数记录在
引导扇区中的一个参数中。引导扇区中的重要信息可以被DOS和OS/2中称为
驱动器参数块的操作系统结构访问。
2、FAT区域
它包含有两份文件分配表,这是出于系统冗馀考虑,尽管它很少使用,即使是磁盘
修复工具也很少使用它。它是分区信息的映射表,指示簇是如何存储的。
3、根目录区域
它是在根
目录中存储文件和目录信息的目录表。在FAT32下它可以存在分区中的任何位置,但是在早期的版本中它永远紧随FAT区域之后。
4、数据区域
这是实际的文件和目录数据存储的区域,它占据了分区的绝大部分。通过简单地在FAT中添加文件链接的个数可以任意增加文件大小和子目录个数(只要有空簇存在)。然而需要注意的是每个簇只能被一个文件占有,这样的话如果在32KB大小的簇中有一个1KB大小的文件,那么31KB的空间就浪费掉了。
格式如下
偏移(字节) 长度(字节) 说明
0x00 3 跳转指令(跳过开头一段区域)
0x03 8 OEM名称(空格补齐)。
MS-DOS检查这个区域以确定使用启动记录中的哪一部分数据。常见值是IBM 3.3(在“IBM”和“3.3”之间有两个空格)和MSDOS5.0.
0x0b 2 每个扇区的字节数。
基本输入输出系统参数块从这里开始。
0x0d 1 每簇
扇区数
0x0e 2 保留扇区数(包括启动扇区)
0x10 1 文件分配表数目
0x11 2 最大根目录条目个数
0x13 2 总扇区数(如果是0,就使用偏移0x20处的4字节值)
0x15 1 介质描述 0xF8 单面、每面80磁道、每磁道9扇区
0xF9 双面、每面80磁道、每磁道9扇区
0xFA 单面、每面80磁道、每磁道8扇区
0xFB 双面、每面80磁道、每磁道8扇区
0xFC 单面、每面40磁道、每磁道9扇区
0xFD 双面、每面40磁道、每磁道9扇区
0xFE 单面、每面40磁道、每磁道8扇区
0xFF 双面、每面40磁道、每磁道8扇区
同样的介质描述必须在重复复制到每份FAT的第一个字节。有些操作系统(MSX-DOS 1.0版)全部忽略启动扇区参数,而仅仅使用FAT的第一个字节的介质描述确定文件系统参数。
0x16 2 每个文件分配表的扇区(FAT16)
0x18 2 每磁道的扇区
0x1a 2 磁头数
0x1c 4 隐藏扇区
0x20 4 总扇区数(如果超过65535,参见偏移0x13)
0x24 4 每个文件分配表的扇区(FAT32)。扩展基本输入输出系统参数块从这里开始。
0x24 1 物理驱动器个数(FAT16)
0x25 1 当前磁头(FAT16)
0x26 1 签名(FAT16)
0x27 4 ID (FAT16)
0x28 2 Flags (FAT32)
0x2a 2 版本号 (FAT32)
0x2c 4 根目录启始簇 (FAT32)
0x2b 11 卷标(非FAT32)
0x30 2 FSInfo 扇区 (FAT32)
0x32 2 启动扇区备份 (FAT32)
0x34 12 保留未使用 (FAT32)
0x36 8 FAT文件系统类型(如FAT、FAT12、FAT16)
0x3e 2 操作系统自引导代码
0x40 1 BIOS设备代号 (FAT32)
0x41 1 未使用 (FAT32)
0x42 1 标记 (FAT32)
0x43 4 卷序号 (FAT32)
0x47 11 卷标(FAT32)
0x52 8 FAT文件系统类型(FAT32)
0x1FE 2 扇区结束符(0x55 0xAA)
这里描述的启动扇区能在如OS/2 1.3的
启动盘上看到。早期的版本使用一个较短的基本输入输出系统参数块,它们的启动代码在前面开始(如OS/2 1.1中是偏移0x2b)。
一个分区分成同等大小的簇,也就是连续空间的小块。簇的大小随着FAT文件系统的类型以及分区大小而不同,典型的簇大小介于2KB到32KB之间。每个文件根据它的大小可能占有一个或者多个簇;这样,一个文件就由这些这些(称为单链表)簇链所表示。然而,这些链并不一定一个接着一个在磁盘上存储,它们经常是在整个数据区域零散的储存。
文件分配表(FAT)是映射到分区每个簇的条目列表。每个条目记录下面五种信息中的一种。
●链中下一个簇的地址
●一个特殊的文件结束符(EOF)符号指示链的结束
●一个特殊的符号标示坏簇
●一个特殊的符号标示保留簇
●0来表示空闲簇
FAT32条目值:
FAT32 描述
0x?0000000 空闲簇
0x?0000001 保留簇
0x?0000002 - 0x?FFFFFEF 被占用的簇;指向下一个簇
0x?FFFFFF0 - 0x?FFFFFF6 保留值
0x?FFFFFF7 坏簇
0x?FFFFFF8 - 0x?FFFFFFF 文件最后一个簇
注意FAT32只使用32位中的28位。高4位通常是0但它们是保留位,不要更改它们。在上面的表中它们用问号表示。
目录表是一个表示目录的特殊类型文件(现今通常称为
文件夹)。它里面保存的每个文件或目录使用表中的32位条目表示。每个条目记录名字、扩展名、属性(档案、目录、隐藏、只读、系统和卷)、创建的日期和时间、文件/目录数据第一个簇的地址,最后是文件/目录的大小。
除了FAT12和FAT16文件系统中的根目录表占据特殊的根目录区域位置之外,所有其它的目录表都存在数据区域。
合法的DOS文件名包括下面一些字符:
●大写字母A-Z
●数字0-9
●空格(尽管结尾的空格被作为填充而不是文件名的一部分)
●! # $ % & ( ) - @ ^ _ ` { } ~ '
●数值 128-255
●DOS文件名位于OEM
字符集。
长文件名(LFN)使用一个技巧存储在FAT文件系统上——在目录表中添加假的条目。这些条目使用一个普通文件无法使用的卷标属性标识,普通文件无法使用是由于它们被大多数旧的MS-DOS程序忽略。很显然,一个只包含卷标的目录被当作空卷,这样就允许删除;使用长文件名创建的文件在从普通的DOS删除就会发生这样的情形。
校验和也允许检验长文件名是否与8.3文件名匹配;当一个文件删除之后使用DOS在同一个目录位置重新创建之后就会出现不匹配现象。校验和使用下面的算法计算。(注意pFcbName是指向如正常目录条目中所显示的文件名的指针,例如前八个字符是文件名,最后三个是扩展名。点是隐含的。文件名中没有使用的空间将使用空格(ASCII 0x20)补齐。例如,“Readme.txt”将记录为"README TXT"。
FAT32实际上是文件
分区表采取的一种形式,它是相对于
FAT16而言的。众所周知,Dos和Windows95采用的都是FAT16格式。至于FAT32,准确地说是在Windows95OSR2中第一次出现的,之所以没有宣传是因为当时该文件系统还不够成熟,尚处于试探阶段。那么为什么一定要推出FAT32呢?这主要是由其自身的优越性决定的。
首先,它可以大大地节约磁盘空间。文件在磁盘上是以簇的方式存放的,簇里存放了一个文件就不能再存放另外的文件。假如一个磁盘的分区大小为512MB,基于FAT16的系统的簇的大小为8KB,而FAT32系统的簇的大小仅是4KB,那么,现在我们存放一个3KB的文件,FAT16系统就会有5KB的空间被浪费,而FAT32的浪费则会少一些。如果分区达到1GB,FAT16的簇为16KB,而FAT32还是4KB,节省的也就更多了。
在推出FAT32文件系统之前,通常PC机使用的文件系统是FAT16。像基于MS-DOS,Win 95等系统都采用了FAT16文件系统。在Win 9X下,FAT16支持的分区最大为2GB。我们知道
计算机将信息保存在硬盘上称为“簇”的区域内。使用的簇越小,保存信息的效率就越高。在FAT16的情况下,分区越大簇就相应的要增大,存储效率就越低,势必造成存储空间的浪费。并且随着计算机硬件和应用的不断提高,FAT16文件系统已不能很好地适应系统的要求。在这种情况下,推出了增强的文件系统FAT32。同FAT16相比,FAT32主要具有以下特点:
1. 同FAT16相比FAT32最大的优点是可以支持的磁盘大小达到2TB(2048GB),但是不能支持小于512MB的分区。基于FAT32的Win 2000可以支持分区最大为32GB;而基于 FAT16的Win 2000支持的分区最大2GB。
2. 由于采用了更小的簇,FAT32文件系统可以更有效率地保存信息。如两个分区大小都为2GB,一个分区采用了FAT16文件系统,另一个分区采用了FAT32文件系统。采用FAT16的分区的簇大小为32KB,而FAT32分区的簇只有4KB的大小。这样FAT32就比FAT16的存储效率要高很多,通常情况下可以提高15%。
3. FAT32文件系统可以重新定位根目录和使用FAT的备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了
计算机系统崩溃的可能性。
稍作补充:
与以前的 FAT 文件系统实现相比,FAT32 提供了以下增强功能: · FAT32 支持最大为 2 TB 的驱动器。
注意:Microsoft Windows 2000 仅能支持最大为 32 GB 的 FAT32 分区。
· FAT32 可以更高效地使用空间。FAT32 使用较小的簇(即,对于大小在 8 GB 以内的驱动器,使用 4 KB 的簇),这与大的 FAT 或 FAT16 驱动器相比,可将磁盘空间的
使用率提高 10% 到 15%。
· FAT32 更稳定可靠。FAT32 可以重新定位
根文件夹,而且它使用
文件分配表的备份副本,而不是使用默认副本。此外,FAT32 驱动器上的引导记录也得到扩展,包括了关键
数据结构的备份副本。因此,与现有的 FAT16 驱动器相比,FAT32 驱动器不容易受单点故障的影响。
· FAT32 更灵活。FAT32 驱动器上的根文件夹是普通的簇链,因此它可以位于驱动器上的任何位置。以前对根文件夹数量的限制不复存在。此外,可以禁用文件分配表
镜像,这样就可以让文件分配表的副本而不是让第一个文件分配表处于活动状态。这些功能允许您动态重调 FAT32 分区的大小。不过要注意,虽然 FAT32 的设计允许这一功能,但 Microsoft 将不在初始版本中实现此功能。
编辑本段FAT32 兼容性注意事项
软硬件的兼容问题
为了与现有程序、网络和
设备驱动程序保持最大程度的兼容性,FAT32 尽可能不改动现有的 Windows 体系结构、内部数据结构、
应用程序编程接口(API) 和磁盘上的格式。然而,因为现在需要 4 字节来存储簇值,所以许多内部的和磁盘上的数据结构以及发布的 API 都作了修改或扩展。某些情况下,现有的 API 无法在 FAT32 驱动器上运行。大多数程序不会受这些更改的影响。现有工具和驱动程序在 FAT32 驱动器上应能够继续正常运行。不过,MS-DOS 块设备驱动程序(例如 Aspidisk.sys)和
磁盘工具需要经过修改才能支持 FAT32 驱动器。
所有 Microsoft 捆绑磁盘工具(格式化、Fdisk、碎片整理、基于 MS-DOS 和 Windows 的磁盘扫描)已经过修改,可以在 FAT32 中正常运行。此外,Microsoft 正在与一些主要设备驱动程序和磁盘工具厂商协作,帮助他们修改其产品以支持 FAT32。
注意:不能使用 Microsoft DriveSpace 或 DriveSpace 3 压缩 FAT32 卷。
FAT32 性能
转换到 FAT32 文件系统是您可以在基于 Windows 98 的计算机上实现的最大的一种性能增强。
双启动计算机
目前,在 Microsoft 操作系统中,只有 Windows 95 OSR2、Windows 98、Windows 2000 和 Windows Me 可以访问 FAT32 卷。MS-DOS、Windows 95 原始版和
Windows NT 4.0不识别 FAT32 分区,它们无法从 FAT32 卷启动。此外,如果使用其他操作系统(例如,Windows 95 或 MS-DOS 启动盘)启动计算机,也无法正确访问 FAT32 卷。
Windows 95 OSR2 和 Windows 98 可以在实模式下启动(例如为了运行游戏)并可以使用 FAT32 卷。
创建 FAT32 驱动器
在 Windows 95 OSR2、Windows 98 和 Windows Me 中,如果在大小超过 512 兆字节 (MB) 的硬盘上运行 Fdisk 工具,Fdisk 将提示您是否启用大磁盘支持。如果回答“是”(启用大磁盘支持),您创建的任何大于 512 MB 的分区都将被标记为 FAT32 分区。
Windows 98 和 Windows Me 中还带有一种 FAT32 转换工具,您可以使用该工具将现有驱动器转换为 FAT32 文件系统。要使用该转换工具,请按照下列步骤操作: 1. 单击开始,依次指向程序、附件、系统工具,然后单击驱动器转换器 (FAT32)。
2. 单击下一步。
3. 单击希望转换为 FAT32 文件系统的驱动器,然后单击下一步。
4. 按照屏幕上的说明操作。
支持范围
Microsoft 将支持 FAT32 文件系统的功能,以实现无错读取和在实模式或保护模式下保存文件。Microsoft 支持 Windows 95 中所带的实模式和保护模式工具。
对于旧式(较早的)程序,如果它们无法在 FAT32 卷上安装,或者无法正确保存文件或读取文件,则您必须与
软件包的生产厂商联系。
注意:虽然 FAT32 文件系统所支持的硬盘容量最高可以达到 2 TB,但有些硬盘可能会因为计算机基本输入/输出系统 (BIOS) INT13 接口的限制而无法包含大于 7.8 GB 的可启动分区。请与硬件制造商联系,以确定您计算机的 BIOS 是否支持更新后的 INT13 扩展。
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;184006
Windows 操作系统使用 FAT32 文件系统时存在以下限制: · 簇不能是 64 千字节 (KB) 或更大。如果簇为 64 KB 或更大,有些程序(例如安装程序)在计算磁盘空间时可能会出错。
· 卷必须包含至少 65,527 个簇,才能使用 FAT32 文件系统。您不能增加使用 FAT32 文件系统的卷上的簇大小,以致于该卷的最终簇数小于 65,527。
· 在使用 FAT32 文件系统的卷上,簇最多是 268,435,445 个。对于文件分配表 (FAT) 的空间,每簇最大为 32 KB,据此计算出的最大磁盘大小大约为 8 太字节 (TB)。
· Microsoft Windows 95 和 Microsoft Windows 98 附带的“磁盘扫描”工具是 16 位程序。这样的程序有一个内存块,该内存块的最大分配大小等于 16 MB 减去 64 KB。因此,Windows 95 或 Windows 98 的“磁盘扫描”工具无法处理使用 FAT32 文件系统(其 FAT 大小大于 16 MB 和 64 KB 之差)的卷。使用 FAT32 文件系统的卷上的 FAT 项使用 4 字节,因此 ScanDisk 无法处理使用定义的簇数大于 4,177,920(包括两个保留的簇)的 FAT32 文件系统的卷上的 FAT。将 FAT 本身包括在内,按每簇最大 32 KB 计算,卷大小为 127.53 吉字节 (GB)。
· 您不能减少使用 FAT32 文件系统的卷上的簇大小,以致于 FAT 的最终大小大于 16 MB 与 64 KB 之差。
· 在 Windows 2000 中您无法使用 FAT32 文件系统格式化大于 32 GB 的卷。Windows 2000 FastFAT 驱动程序可以安装和支持使用 FAT32 文件系统且大于 32 GB的卷(受到其他限制),但是您不能使用格式化工具创建一个这样的卷。这种现象是设计使然。如果需要创建大于 32 GB 的卷,请改用 NTFS 文件系统。
备注:在尝试格式化大于 32 GB 的 FAT32 分区时,在进程快结束时格式化会失败,并出现以下错误:
Logical Disk Manager:Volume size too big.
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;314463
Windows XP 中 FAT32 文件系统的限制
当您在 Windows XP 中使用 FAT32 文件系统时,请注意下列限制: · 簇不能等于或大于 64 KB。如果簇大小为 64 KB 或更大,则有些程序(例如安装程序)可能会不正确地计算磁盘空间。
· FAT32 卷必须至少包含 65,527 个簇。您不能增加使用 FAT32 文件系统的卷上的簇大小,这样会导致卷上的簇数少于 65,527 个。
· 如果考虑到以下可变因素,则最大磁盘大小大约为 8 TB:一个 FAT32 卷上允许的最大簇数为 268,435,445,每个簇最大为 32 KB,另外还有文件分配表 (FAT) 所需的空间。
· 您不能减少 FAT32 卷上的簇大小,这样会导致 FAT 的大小大于 16 MB 减去 64 KB。
· 在 Windows XP 安装过程中,您不能使用 FAT32 文件系统格式化大于 32 GB 的卷。Windows XP 可以装入和支持大于 32 GB 的 FAT32 卷(受到其他限制),但是您不能在安装期间使用 Format 工具创建大于 32 GB 的 FAT32 卷。如果您需要格式化大于 32 GB 的卷,请使用 NTFS 文件系统来格式化。另一种方法是从 Microsoft Windows 98 或 Microsoft Windows Millennium Edition (Me) 启动盘启动,然后使用该磁盘上包含的 Format 工具。
有关如何使用 Microsoft Windows 98 或 Microsoft Windows Millennium Edition (Me) 启动盘格式化硬盘的其他信息,请单击下面的
文章编号,以查看 Microsoft 知识库中相应的文章:
255867 如何使用 Fdisk 和 Format 工具对硬盘进行分区或重新分区
注意:当您在 Windows XP 安装过程中试图格式化大于 32GB 的 FAT32 分区时,在格式化过程快结束时操作将会失败,并且您可能会收到以下错误信息:
Logical Disk Manager:Volume size too big.
· MS-DOS(Microsoft Windows 95 的原始版本)和 Microsoft Windows NT 4.0 及更低版本都不能识别 FAT32 分区,因此无法从 FAT32 卷启动。
· 您不能在 FAT32 分区上创建大于 (2^32)-1 字节(即 4 GB 减去 1 个字节)的文件。
FAT32格式理论上可以支持128TB的磁盘,即簇的大小乘簇的数量32K*(2^32),但由于受到软硬件的限制和其他方面的原因,不可能达到理论值。
FAT32数据恢复原理
由于FAT与FDT对数据的链式存储管理的,可以通过链式搜索查找。只有FAT表和FDT配合使用,才能可以统一管理整个磁盘文件,也就可以准确定位被删除的文件的确切位置。
在 Window操作系统下对文件的删除工作,是将FDT中该文件的第一个字符改“E5”来表示该文件已经删除,同时改写引导扇区的第二个扇区中表示该分区点用空间大小的相应信息。因此,在设计的时候,根据其存储结构,对相应的地方进行修改,搜索E5删除标志,再按被删文件数据链进行恢复。
具体步骤如下:
(1) 获取磁盘分区类型,分区存储空间,FAT、FDT、文件等存储的起始扇区。
(2) 获取FAT、FDT表项内的簇信息,即簇的删除、未使用、坏簇、以及文件占用簇的起始扇区信息等。
(3) 通过FAT、FDT计算不同文件在物理扇区的起始位置,包括有标识E5的删除文件起始位置、文件类型、占用大小和存储的所在簇。
(4) 改变删除位,通过第3步得到的结果,并按FAT表对文件进行链式查找并缓存,当达到文件所在簇尾时,停止操作。
(5) 对存储的数据进行转换,生成文件。
(6) 对文件进行异区存储。 而操作系统在读写文件时,会根据FDT中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置,然后顺序读取每个簇的内容,文件的查找如图4-1所示。具体的方法如下:
(1)在文件目录项FDT中找到存放在FAT表中的文件File的地址M(2)2*M得到FAT表中File文件数据链表首地址B。
(3)在FAT表中的B地址中,存放有文件FILE数据链表头P。
(4)P*4得到在FAT表项中的下一个偏移位置,即下一个数据链表。
(5)如果下一个数据链表内的信息为0FFFFFFH,则表示文件存储已经结束图4-1查找文件流程需要说明的是,新建文件时,系统在FAT表中查找未用的簇记录在新文件目录项中做为首簇;FDT文件目录项中,第0~7字节为文件名(若有剩余字节用20填充)第1字节表明了该文件的状态,第1字节又表明了文件的状态,00HE5H及其它字符。当该字节为00H时,表示该目录项是空表项,可以使用。当为E5H时,表示该目录项以前用过,但是文件被已经删除了。
小知识:
在FAT32下,一个目录只能够容纳65536个文件。微软的官方文档没有给出。