FAT表的作用及结构特点

FAT(File Allocation Table)即文件分配表,对于ExFAT文件系统来讲也是很重要的一个组成部分,其主要作用及结构特点如下:

①ExFAT文件系统一般只有一份FAT,它们由格式化程序在对分区进行格式化时创建。

②FAT表跟在DBR之后,其具体地址由DBR的BPB参数中偏移量为50H~53H的4字节描述。

③FAT表是由FAT表项构成的,我们把FAT表项简称为FAT项,ExFAT的每个FAT项由4字节构成,也就是32位的表项。

④每个FAT项都有一个固定的编号,这个编号从0开始,也就是说,第一个FAT项是0号FAT项,第二个FAT项是1号FAT项,以此类推。

⑤FAT表的前两个FAT项有专门的用途,0号FAT项通常用来存放分区所在的介质类型,比如硬盘的介质类型为“F8”,那么硬盘上分区的FAT表第一个FAT项就以“F8”开始;1号FAT项一般都是4字节的“FF”。

⑥分区的数据区中每一个簇都会映射到FAT表中的唯一一个FAT项。因为0号FAT项和1号FAT项有特殊用途,无法与数据区中的簇形成映射,只能从2号FAT项开始于数据区中的第一个簇映射,所以数据区中的第一个簇也就编号为2号簇,这也是没有0号簇和1号簇的原因,然后3号簇与3号FAT项映射,4号簇与4号FAT项映射,以此类推,直到数据区中的最后一个簇。

⑦分区格式化后,分区的两个元文件及用户文件都以簇为单位存放在数据区中,一个文件至少占用一个簇。当一个文件占用多个簇时,这些簇的簇号可能是连续的,也可能是不连续的。如果文件存放的簇不连续,这些簇的簇号就以簇链的形式登记在FAT表中;而如果文件存放在连续的簇中,FAT表则不登记这些连续的簇链。

⑧综合上面的说明可以看出,ExFAT文件系统FAT表的功能主要是记录不连续存储的文件的簇链,所以在FAT中看到数值为0的FAT项,并不能说明该FAT项对应的簇是可用簇。

FAT表的实际应用

要分析FAT表,就需要找到FAT表,下面模拟一下操作系统定位FAT表的方法。这里以图4-519中的DBR所在分区为例,定位FAT表的步骤如下:

①系统通过该分区的分区表信息,定位到其DBR扇区。

②读取DBR的BPB,主要读取“FAT表起始扇区号”这个参数,它在DBR的50H~54H偏移处,当前值为2048(具体参数可以查看图4-521中的DBR模板)。

③读取到“FAT表起始扇区号”这个参数的值为2048之后,跳转到该分区的2048号扇区,这里就是FAT表的开始。

下面就跳转到2048号扇区,具体分析这个扇区的数据结构。

该分区是刚格式化的一个分区,把分区格式化为ExFAT文件系统时,格式化程序会把分配给FAT表的第一个扇区清零,然后写入0号FAT项和1号FAT项,另外还会写入簇位图文件、大写字符文件及根目录所占簇对应的FAT项,其内容如图4-522所示。

ExFAT文件系统的FAT表分析-数据恢复迷

图4-522 ExFAT文件系统的FAT表

可以看出每个FAT项占用4字节:其中0号FAT项描述介质类型,其首字节为“F8”,表示介质类型为硬盘;1号FAT项写入4个“FF”;从2号FAT项开始对应2号簇,3号FAT项对应3号簇,一直到最后一个簇。目前2、3、4三个FAT项中都是结束标志,说明簇位图文件、大写字符文件、根目录各占一个簇。

除了这5个FAT项以外,其他FAT项都是0,但这并不能说这些FAT项对应的簇就是空簇。