AT32(File Allocation Table 32)的文件分配表结构是其核心机制,负责管理磁盘空间和文件存储位置。以下从底层原理到实际应用进行详细解析:
FAT32 文件系统由以下核心部分组成(按扇区顺序排列):
+---------------------+ | 引导扇区(Boot Sector)| +---------------------+ | FAT表区域 | +---------------------+ | 根目录区域 | +---------------------+ | 数据区 | +---------------------+
引导扇区位于分区的第 0 扇区(512 字节),包含以下关键信息:
示例 BPB 参数(1GB 分区,4KB 簇):
Bytes per sector: 512 Sectors per cluster: 8 (4KB/cluster) Reserved sectors: 32 Number of FATs: 2 Sectors per FAT: 655 (FAT表大小) Root directory clusters: 2 (从簇2开始)
FAT 表是一个数组,每个条目(Entry)对应一个簇号,记录该簇的状态和后续簇链接关系。
0x00000000 → 未分配簇 0x00000002~0x0FFFFFF6 → 数据簇(指向下一个簇号) 0x0FFFFFF7 → 坏簇(不可用) 0x0FFFFFF8~0xFFFFFFFF → 文件最后一个簇
文件存储时会被分割成多个簇,FAT 表用链表记录这些簇的顺序:
FAT[2] = 7 → 簇2的下一个簇是7 FAT[7] = 9 → 簇7的下一个簇是9 FAT[9] = 0xFFFFFFF → 簇9是文件的最后一个簇
每个目录项占 32 字节,包含:
+----------------+--------+----------------------------------+ | 字段 | 长度 | 描述 | +----------------+--------+----------------------------------+ | 文件名 | 11字节 | 8.3格式(8字节主名+3字节扩展名) | | 属性 | 1字节 | 文件属性(如只读、隐藏、目录) | | 创建时间 | 6字节 | 文件创建时间戳 | | 起始簇号 | 4字节 | 文件数据的第一个簇号 | | 文件大小 | 4字节 | 文件大小(字节) | +----------------+--------+----------------------------------+
长文件名支持:
数据区是实际存储文件内容的区域,从第一个数据簇(通常是簇 2)开始。
簇编号规则:
数据区大小:由 BPB 中的参数计算:
数据区总簇数 = (分区总扇区数 - 保留扇区数 - FAT表扇区数×FAT表数量) / 每簇扇区数
特性 | FAT32 | NTFS | exFAT |
---|---|---|---|
最大分区大小 | 32GB | 256TB | 128PB |
最大文件大小 | 4GB | 16EB | 16EB |
文件分配表结构 | 链表式 | B + 树 | B + 树 |
元数据保护 | 无 | 事务日志 | 有限日志 |
安全性 | 无 | ACL 权限、加密 | 基本权限 |
兼容性 | 所有系统支持 | Windows 为主 | 主流系统支持 |
FAT32 的分配表结构通过简单的链表机制实现了文件存储管理,但受限于其设计: