FAT文件系统,全称为File Allocation Table文件系统,是一种由微软开发的简单高效的文件系统格式,它广泛应用于各种存储设备,如U盘、SD卡等,以下是关于FAT文件系统的详细介绍:
关键术语
Volume(卷):存储设备上的一个逻辑分区。
Sector(扇区):存储设备上的最小存储单位,通常为512字节。
Cluster(簇):由一个或多个连续的扇区组成的逻辑存储单位。
BPB(BIOS Parameter Block):引导扇区的一部分,包含文件系统的基本参数。
FAT(File Allocation Table):用于管理文件簇链的表格。
Root Directory(根目录):文件系统的顶级目录,包含文件和子目录的元数据。
FAT文件系统结构
FAT文件系统卷包含四个基本区域,分别为保留区域、FAT区域、根目录区域和文件及目录数据区域。
保留区域:包括卷的第一个扇区,即引导扇区(BPB,BIOS参数块),保留区域通常包含引导代码、BIOS参数块和扩展的BPB结构等信息。
FAT区域:存储文件分配表(FAT),一个用于跟踪文件和目录存储位置的链表结构,FAT区域通常包含一个或多个副本,以提高数据的可靠性。
根目录区域:存在于FAT12和FAT16卷中,但在FAT32卷中不存在,包含卷的根目录条目,根目录是特殊的目录文件,用于存储根目录中的文件和子目录的条目。
文件和目录数据区域:存储实际的文件和目录数据,文件和目录的数据被分配在一个或多个簇中,并通过FAT区域中的链表进行管理。
文件分配表(FAT)
FAT是文件系统的核心部分,管理着每个簇的分配情况,FAT表中存储了以下内容:
空闲簇:表示为0x0000,表示该簇是空闲的,可以被分配使用。
已分配簇:范围在0x0002到最大值之间,表示该簇已被分配并且值为下一个簇的簇号,形成文件簇链。
保留簇:从最大值加1到0xFFF6之间,这些值是保留的,不应使用。
坏簇:表示为0xFFF7,表示该簇是坏簇,不能被使用。
文件结束簇:范围从0xFFF8到0xFFFE,表示文件的最后一个簇,指示文件结束。
FSInfo结构
FSInfo结构是FAT32文件系统的一部分,用于存储一些全局的文件系统信息,如剩余空闲簇数和下一个可用簇号,FSInfo结构通常位于卷的第三个扇区。
目录结构
目录结构存储文件和子目录的元数据,每个目录项包含以下字段:
DIR_Name:文件或目录名。
DIR_Attr:文件或目录属性。
DIR_FstClusLO:起始簇号的低16位(FAT32)。
DIR_FstClusHI:起始簇号的高16位(FAT32)。
DIR_FileSize:文件大小。
长文件名实现
FAT文件系统原本只支持8.3格式的短文件名,即最多8个字符的文件名和3个字符的扩展名,为了支持长文件名,FAT文件系统引入了VFAT(Virtual FAT)扩展,长文件名通过一系列特殊的目录项存储,这些目录项的属性设置为0x0F,表示这是长文件名条目,每个长文件名条目存储部分文件名,并使用校验和来验证完整性。
文件系统的工作方式
定位到文件的开始:要定位到文件的开始,需要读取根目录或子目录,获取文件的起始簇号,然后根据BPB中的信息计算文件数据区的起始位置,最后通过起始簇号定位文件数据。
创建文件:创建文件时,需要在目录中找到空闲条目,分配新的目录项,并在FAT表中为新文件分配簇链。
删除文件:删除文件时,将文件的目录项首字节设置为0xE5,并在FAT表中将对应的簇链标记为未使用。
增加文件内容:增加文件内容时,如果当前簇已满,则需要在FAT表中寻找新的空闲簇,并将其加入簇链。
减少文件内容:减少文件内容时,如果文件大小减小到不需要某个簇,则需要在FAT表中将该簇标记为未使用,并更新簇链。
FAQs相关问题及解答
Q1: FAT文件系统有哪些主要缺点?
A1: FAT文件系统的主要缺点包括:当文件删除后写入新数据,FAT不会将文件整理成完整片段再写入,长期使用后会使文件数据变得逐渐分散,减慢读写速度;太浪费磁盘空间;磁盘利用效率低;文件存储受限制;不支持长文件名,只能支持8个字符;安全性较差。
Q2: FAT文件系统是如何支持长文件名的?
A2: FAT文件系统通过引入VFAT(Virtual FAT)扩展来支持长文件名,长文件名通过一系列特殊的目录项存储,这些目录项的属性设置为0x0F,表示这是长文件名条目,每个长文件名条目存储部分文件名,并使用校验和来验证完整性。
小编有话说
FAT文件系统作为一种经典的文件系统格式,虽然存在一些缺点,但其简单高效的特点使其在嵌入式设备和移动存储设备中得到了广泛应用,随着技术的发展,虽然NTFS等更先进的文件系统逐渐取代了FAT在主流操作系统中的地位,但FAT文件系统仍然在某些特定领域发挥着不可替代的作用,对于想要深入了解文件系统原理和技术的人来说,学习和掌握FAT文件系统的相关知识无疑是非常有益的。