exFAT文件系统原理详解,有哪些细节值得探究?

摘要:前言 exFAT是微软2006年推出的一种文件系统,距今已快二十年,相比于FAT16和FAT32,exFAT还是算年轻。exFAT一直是微软的一个专用文件系统,直到2019年微软发布它的规范,目前微软拥有exFAT多个元素的专利,如果产品上
前言 exFAT是微软2006年推出的一种文件系统,距今已快二十年,相比于FAT16和FAT32,exFAT还是算年轻。exFAT一直是微软的一个专用文件系统,直到2019年微软发布它的规范,目前微软拥有exFAT多个元素的专利,如果产品上使用exFAT,需要微软授权,否则有可能侵权。 exFAT被SD协会采用作为大于32GB SDXC卡的默认文件系统,在win11系统上,SDXC卡默认格式化选项已经没有FAT32选项,exFAT文件系统的使用范围正逐渐扩大。 为啥微软要用exFAT来代替FAT32呢? 因为exFAT数据结构开销比NTFS低,但它又可以突破FAT32 单个文件大小和分区大小的限制。 文件系统(一):存储介质、原理与架构 文件系统(二):分区、格式化数据结构 文件系统(三):嵌入式、计算机系统启动流程与步骤 文件系统(四):FAT32文件系统实现原理 (一)磁盘布局 在Windows系统上将一张TF卡格式化成exFAT文件系统,发现它是将整个TF格式化成了exFAT文件系统,没有前面介绍的MBR和GPT分区表信息。 整体分为5个部分: DBR及其保留扇区 FAT 文件分配表 簇号位图 大写字符 目录和文件(根目录在该区最开始位置) (1) DBR DBR 中主要有:跳转指令,OEM代号、BPB参数、引导程序、结束标志组成。这里只介绍BPB(BIOS Parameter Block,BIOS参数块),其它部分在前面其它文章中已经有介绍过了。 根据上面第0扇区的DBR信息,可以解析exFAT的BPB参数如下: 从上面解析的数据我们可以知道: FAT表在第2048扇区 簇位号图在第4096扇区=首簇起始扇区号=第2号簇 大写字符在第4160扇区=簇位号图的下一个簇=4096 + 64 = =第3号簇 根目录在第4224扇区=首簇起始扇区号 + 根目录首簇号 - 2 = 4096 +(4-2)*64 = 第4号簇 (2) FAT表 与FAT32不同,exFAT只有一个FAT表,没有备份 表项里的内容与FAT32的类似:4个字节表示一个簇,每个簇都有自己的编号,F8 表示介质类型为硬盘,写入4个FF,表示结束标志。具体可查看上一篇文件系统(四):FAT32文件系统实现原理 与FAT32不同的是:exFAT文件系统中FAT表中记录的是不连续存储文件的簇链,如果是连续的簇链,在FAT表中不会体现。 上面exFAT文件系统FAT表中为0的簇,并不能表示该簇是未使用,也有可能它是连续簇 exFAT文件系统的簇使用情况,是通过簇位号图来实现的 (3) 簇号位图 簇位图中的每一个位,实际映射到数据区中的每一个簇。 如果对应簇已经被使用,簇位图上对应该簇的位值就是1,否则就为0 上面我们看,簇位图上的值为:FF FF FF FF FF FF FF FF FF FF FF 03 FF = 11111111b = 8个簇,11个FF表示88个簇,03的二进制位11b,表示2个簇 FF FF FF FF FF FF FF FF FF FF FF 03表示从第2号簇到92号簇的90个簇号已经被使用了。 为什么这里是从第2号簇开始呢? 因为0号和1号FAT项有特殊用途,无法与数据区中的簇形成映射,只能从2号FAT项开始与数据区中的第一个簇映射,所以数据区中的第一个簇也就编号为2号簇。 (4)大写字符元文件 exFAT是一个大小写不敏感的文件系统 大写字符元文件(UPCASE file)里面存储的是一个全局字符映射表,包含了所有可能字符的大小写映射。 它主要作用是:大小写转换、文件名比较、国际化支持(跨语言) (5) 目录项 exFAT 包含4种目录项 卷标目录项(32字节) 簇位图文件的目录项(32字节) 大写字符文件的目录项(32字节) 用户文件的目录项(至少3个目录项) 前面三个是系统目录项我们就不分析了,简单介绍一下用户文件的目录项 以上图中test3目录为例进行分析: 用户目录项的三个目录项被称为三个属性, 第一个目录项称为“属性1”,目录项首字节的特征值为“85H”; 第二个目录项称为“属性2”,目录项首字节的特征值为“C0H”; 第三个目录项称为“属性3”,目录项首字节的特征值为“C1H”。 第一目录项 与FAT32 文件系统相比多了附属目录项数,校验和,这里重点介绍一下校验和的作用。 校验和 校验和是用来确保目录项数据的完整性和可靠性,防止和检测目录项数据损坏。 在目录项读取的时候,可以通过校验和确定目录项数据是否损坏或是被篡改。
阅读全文