FAT文件系统

FAT文件系统

FAT文件系统(File Allocation Table,文件分配表)是一种由微软主导设计的磁盘文件系统,其核心是一张记录各簇使用状态与链接关系的分配表,并以此定位文件内容[1][2]。它结构简单、实现开销低,几乎被各类操作系统与嵌入式设备支持,长期担当跨平台数据交换的通用格式,U盘、存储卡与软盘中最为常见[2][3]。按分配表每个表项所占位数不同,形成了FAT12、FAT16、FAT32等版本,后来的exFAT则针对闪存介质重新设计[3][4]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

FAT文件系统是一种以文件分配表(File Allocation Table)为核心数据结构的文件系统,由微软开发,最初用于小型磁盘与层级简单的目录结构[1]。它把卷划分成若干固定大小的簇,并用一张与簇一一对应的表记录每个簇是空闲、占用、损坏,还是指向同一文件的下一个簇[3]。因为表在卷的最前端以固定位置存放,且通常保存两个副本,所以结构易于解析,也便于在其他平台上重新实现[5]。

「FAT」这个名称既指整套文件系统,也常被用来直接称呼那张分配表本身,两种用法在技术文献中并存[2]。

原理

FAT卷在逻辑上分为4个区域:引导扇区所在的保留区、保存分配表的FAT区、根目录区(仅FAT12与FAT16独立存在),以及存放文件实际内容的数据区[6]。引导扇区中的BIOS参数块记录着簇大小、FAT副本数、每份FAT的扇区数等几何参数,操作系统依靠这些字段定位其余结构[6]。FAT32把根目录移入数据区,因此根目录可以像普通目录一样增长,不再受固定表项数限制[6]。

文件的目录项只记录起始簇号与文件长度,后续内容靠分配表中的指针逐簇串联,形成所谓的簇链[3]。若簇号为 $c$,读取时先查分配表第 $c$ 项,得到的值若是有效簇号就继续跳转,若是文件结束标记则停止;0 值表示该簇空闲,另有保留值用于标记坏簇[7]。目录本身也是一种特殊文件,其内容由若干目录项组成。


flowchart LR

A[引导扇区 / BIOS参数块] --> B[FAT 副本 1]

B --> C[FAT 副本 2]

C --> D[根目录]

D --> E[数据区:簇链]

簇是分配空间的最小单位,其大小随卷容量增长,早期软盘上通常只有 1 个至数个扇区,而exFAT允许的簇可达 32 MB[4][8]。表项宽度决定了可寻址的簇数上限:12 位对应约 4000 余个簇,16 位对应 6 万余个,32 位版本则只用其中 28 位[9]。这正是各版本容量差异的根源[9]。

发展历程

原始的 8 位FAT由马克·麦克唐纳(Marc McDonald)在与其时同事讨论的基础上设计并实现,1977 年前后随微软为NCR数据录入终端配套的独立磁盘版BASIC投入使用,当时的目录项为 16 字节且不支持子目录[10][11]。1978 年该BASIC被移植到 8086 平台,1979 年起FAT亦被用于微软自研的MDOS/MIDAS系统[11]。

1980 年问世的QDOS/86-DOS采用FAT12作为8英寸与5.25英寸软盘的文件系统,此后随MS-DOS进入个人计算机,成为PC上的主流格式[9]。1984 年IBM PC AT与PC DOS 3.0发布,簇地址扩展到 16 位,可管理的簇数升至 6 万余个,FAT16由此成形[10]。VFAT扩展则在Windows 95中引入长文件名支持,使文件名可超出传统 8.3 格式的限制[4]。

FAT32于 1995 年随Windows 95 OSR2推出,将表项扩展至 32 位(实际使用 28 位),分区上限显著提高,Windows 2000起NT系列也提供支持[12][8]。不过Windows 2000及之后的格式化程序把可创建的FAT32卷限制在 32 GB,读写更大卷仍可进行[13]。为适应闪存与大文件需求,微软在 2006 年11 月随Windows Embedded CE 6.0引入exFAT,其后又被Windows Vista SP1采纳[4]。

在Windows NT系列上,NTFS逐步取代FAT承担系统盘角色,FAT退居可移动介质与兼容性场景[2]。微软至今仍在新版Windows中保留FAT与exFAT支持[2]。

应用

FAT最广泛的用途是可移动存储:软盘、U盘、闪存卡、记忆棒等介质普遍以FAT或exFAT格式化[3]。数字相机采用的DCF规范自 1998 年起要求物理层使用FAT12、FAT16、FAT32或exFAT之一,以保证存储卡能在不同厂商设备间通用[3]。便携播放器、摄像机、手机、游戏机以及车载音响、机顶盒等嵌入式系统也常读写该格式[14]。

在双系统或混合环境中,FAT因几乎被所有操作系统原生支持,常被选作Windows、macOS、Linux之间交换数据的中间格式[1]。固件与引导场景同样依赖其简洁性,因为存储需在操作系统加载之前被读取[15]。Windows还提供将FAT卷就地转换为NTFS的工具,但转换难以逆向[3]。

局限

容量与文件大小受表项位数与簇大小共同约束:FAT32单文件上限为 4 GiB,卷上限理论约 2 TiB,FAT16的分区上限则在 2 GB 量级[2][4]。文件按整簇分配,1 KB 的文件放在 32 KB 簇中会浪费 31 KB,小文件众多时空间利用率明显下降[6]。

FAT不提供文件级访问权限,也不支持日志、加密与压缩,因此难以满足多用户隔离与审计需求[16]。由于缺少日志机制,写入过程若被中断,分配表可能与其他结构不一致,造成簇丢失或数据损坏,需借助外部检查工具修复[15][17]。

簇链是单向链表,随机定位需要从头逐簇遍历,文件越大寻道次数越多,访问性能随之下降[7]。频繁改写还会造成文件碎片分散,通常要定期整理以维持效率[13]。此外,目录需顺序扫描,表项数量随卷容量增长,容量越大空闲空间统计与分配的开销越明显[17]。exFAT虽解除了容量瓶颈,但同样没有日志机制,可靠性仍不及日志式文件系统[18]。

参见

  • exFAT —— FAT系列为闪存介质设计的后继格式,突破单文件 4 GB 限制

  • NTFS —— Windows NT系列采用的文件系统,具备日志与权限控制

  • 簇 —— FAT及其他文件系统分配磁盘空间的基本单位

  • MS-DOS —— 使FAT成为个人计算机主流文件格式的操作系统

  • 文件系统 —— FAT所属的上位概念

参考资料

  1. 检查文件分配表 (FAT) 文件系统 [引用日期2026-10-29]
  2. What is File Allocation Table (FAT)? - TechTarget.com/whatis [引用日期2026-10-29]
  3. File Allocation Table [引用日期2026-10-29]
  4. exFAT [引用日期2026-10-29]
  5. FAT、HPFS 和 NTFS 文件系统概述 - Windows Client [引用日期2026-10-29]
  6. wikipedia.org 上的网页 [引用日期2026-10-29]
  7. [0024] 图4是表示FAT16的FAT(305,306)的结构图 [引用日期2026-10-29]
  8. 图文详情——科普中国资源服务 [引用日期2026-10-29]
  9. File Allocation Table – Wikipedia [引用日期2026-10-29]
  10. wikipedia.org 上的网页 [引用日期2026-10-29]
  11. File Allocation Table [引用日期2026-10-29]
  12. FAT32支持到2TB?exFAT格式才是你的首选 [引用日期2026-10-29]
  13. FAT(文件配置表)_百度百科 [引用日期2026-10-29]
  14. File Allocation Table [引用日期2026-10-29]
  15. ninjaone.com 上的网页 [引用日期2026-10-29]
  16. 了解文件系统 [引用日期2026-10-29]
  17. [CentOS] Re: software raid [引用日期2026-10-29]
  18. arstechnica.com 上的网页 [引用日期2026-10-29]
词条评价
词条统计

浏览次数:1 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:18:25Z

历史版本

本条目引用的词条
簇 BIOS参数块 MS-DOS exFAT NTFS 文件系统