exFAT 文件系统
1. 目的
由于闪存设备容量日益增加,微软于 1996 年发布的 FAT32 系统不再能够满足需求。FAT32 的最大不足在于只支持最大 4 GB 的单个文件,这在很多情况下是不可接受的,也不满足 SDHD 标准的要求。于是微软在 2006 年发布了 exFAT 文件系统,又名 FAT64,旨在解决 FAT32 的诸多问题。
2. 结构
2.1 简介
- 磁盘空间
- 主引导区域
- 主引导备份
- FAT 区域
- FAT 1
- FAT 2 (可选)
- 数据区域
- 簇堆对齐区
- 簇堆
- 簇堆分配位示图
- 大写转换表
- 数据区
2.2 详细说明
-
主引导区域
位置 大小 块名 0 1 引导扇区 1 8 扩展引导扇区 9 1 OEM 信息记录 10 1 保留 11 1 引导校验扇区 -
主引导备份区域
位置 大小 块名 12 1 引导扇区 13 8 扩展引导扇区 21 1 OEM 信息记录 22 1 保留 23 1 引导校验扇区 -
FAT 区域
位置 大小 块名 24 fat_offset - 24 FAT队列 fat_offset fat_length FAT 表1 fat_offset + fat_length fat_length FAT 表2 (仅 TexFAT) 注:TexFAT 为事务安全的 exFAT 文件系统(A transaction-safe exFAT)。
-
数据区域
位置 大小 块名 fat_offset + fat_length * fat_number cluster_heap_offset - (fat_offset + fat_length * fat_number) 簇堆对齐(Cluster Heap Alignment) cluster_heap_offset cluster_number $\times$ $2^{SectorsPerClusterShift}$ 簇堆 cluster_heap_offset + cluster_number $\times$ $2^{SectorsPerClusterShift}$ volume_length - (cluster_number $\times$ $2^{SectorsPerClusterShift}$) 数据区
2.3 簇堆
簇堆是 exFAT 文件系统设置簇是否保存数据的地方,其构造如下:
Root Directory 根目录
Files 文件
Directories 目录
Bitmap Allocation Table 簇堆分配位示图
UP-Case Table 大写转换表
簇的分配状态由簇堆自己的 Bitmap Allocation Table 追踪。
-
簇堆分配位示图
簇堆分配位示图,记录分区上所有簇的使用情况。每一个 bit 代表一个簇,0 表示空簇,1 表示该簇已被占用。起始簇号从 2 开始,也就是 BIT0 对应簇号 2,BIT1 对应簇号 3。簇堆分配位示图以文件存储的方式存在,一般对应根目录下第一个文件,也就是第二个目录项。他的大小由总簇数决定,占用 N 个簇的空间。
-
大写转换表
大写表是一张 Unicode 字符映射图,每一个字符占用 2 个字节。文件名比较时,先把文件名格式转换成 Unicode,再通过该表把文件名转成大写 Unicode,转换完成后才进行文件名比较。大写表中的数据进行了部分压缩,压缩起始标志码 FFFFh,随后跟一个压缩长度。
2.4 目录结构
exFAT 使用树状结构来描述文件和目录之间的关系。根目录树定义目录在 RootDirectoryCluster 之中。子目录单向连接到它,(.) 和 (..) 目录指向自己本身和父目录,这像 FAT16/FAT32一样。每个 directory 包括一系列的目录条目,目录条目的优先等级如下:
Primary Directory Entries
- Critical Primary Entries
- Benign Primary Entries
Secondary Directory Entries
- Critical Primary Entries
- Benign Primary Entries
Critical entries 是必须项,benign entries 是可选的,Primary directory entries 对应文件系统中的条目,Secondary directory entries 是 primary directory entry 数据扩展和关联。一组 primary/secondary entries 组成 directory entry 设置文件或目录,设置第一个 directory entry 为 primary directory entry,所有子条目必须是 Secondary directory entries 。
3. 优点
exFAT 相较于之前 FAT 文件系统的优势在于:
- 可拓展至更大的磁盘大小,理论上 64 ZB,推荐最大 512 TB。相较 32 位限制的 FAT32 分区的 2 TB(每扇区 512 字节)大了很多。
- 理论的文件大小限制为 $2^{64} - 1$ 字节(16 EB - 1),而 FAT32 文件系统中单一文件限制大小为 $2^{32} - 1$ 字节(4 GB)。
- 簇大小最大可为每扇区225字节,最大32 MB。
- 由于采用了空余空间寻址,空间分配和删除的性能得以改进。
- 在单一文件夹内支持超过 $2^{16}$ 个文件。
4. 缺点
exFAT 比过去的 FAT 文件系统的劣势在于:
- 某些旧设备无法使用exFAT格式的存储卡。
- exFAT 为微软专有,专利授权方式不明确。夏普、RIM 分别和微软达成了 exFAT 授权协议。存在专利费。微软曾经为 FAT 的一部分申请专利。
- Windows XP SP3 之前的旧版 Windows 暂时不支持 exFAT。
5. 应用
如果有跨平台使用 u 盘 / 硬盘的需求,那 exFAT 将会是一个很好的选择(如果需要使用 Windows XP 或者更老的系统,那还是请使用 FAT32)。exFAT 在 Windows,MacOS,Linux 上均有原生支持,并且支持大文件的存储。
#courses
本文总字数 1402
本文阅读量
本站访客量