FAT32是Windows平台下相对古老的一种文件系统,由于存在诸多使用弊端,例如分区大小不能超过32GB、单文件无法超过4GB等等,现在其使用 空间已萎缩至小容量闪存介质中,超过32GB的闪存出厂已默认格式化为exFAT这种针对FAT32短板进行过优化的文件系统。
FAT32文件系统可分为三个主要区域:
(1)分区头DBR(全称:DOS Boot Recoder,DOS引导记录)及分区头预留空间。这里记录了分区的重要参数,例如分区大小、分区簇大小、FAT表及数据区起始位置等,系统读取到分区 头DBR中的参数,就能正确解析这个分区,DBR位于FAT32的第一个扇区,即0号扇区,由于DBR的作用非常重要,被避免它被破坏而造成分区结构损 坏,FAT32在其6号扇区中对DBR进行了备份。但实际上,这个6号扇区同样是个不安全的位置,在DBR被破坏时,备份DBR通常也会跟着遭殃。
(2)FAT表(全称:File Allocation Table,文件分配表)。这是FAT分区体系的灵魂所在。简单说,其作用是描述文件存储链表,用来记录文件存储的簇链信息,若文件存在碎片,FAT可以 准确将所有碎片正确拼接。基于FAT表的重要性,FAT32文件系统将其完整做了备份,分别为FAT1和FAT2,其内容完全相同且同步更新(注释:在小 容量存储介质中,为节省空间,FAT表可能只有一个)。
我们可以简单将FAT表理解为一个一个小抽屉,抽屉中除了存储了我们的数据,还给出了找到该数据下一碎片的线索。数据在读取时,会先读取到目录区中数据的 启示簇号,即对应的FAT表号,例如上图中,数据起始位置存储在抽屉1中,我们定位到抽屉1中将数据读取出来,并且获取到下一碎片存储的位置是抽屉3,以 此类推,当最后一个碎片被读取到时,抽屉里会留下一个结束标志,告知系统数据到此结束。这样系统就可以把一个存在了很多碎片的数据完整找到了。
这个时候,如果FAT32被格式化了,那么FAT表就被初始化了,造成的结果是抽屉里的不在存有数据的碎片链表,当我们读取到数据的起始簇后,无法继续找寻碎片数据,那么
数据恢复软件只能根据目录中记录的数据字节大小提取一个错误的数据出来。
(3)数据区。FAT表结束后就是数据区了,数据区用来存储用户数据,以簇为单位来管理,数据区第一个簇(2号簇)用来存储根目录,如果根目录文件很多, 超出一个簇的存储空间,那么系统会在数据区的其它位置上开辟一个新的区域来继续存储根目录。根目录之后为数据区,用来存储用户数据。当硬盘格式化时,位于 2号簇的根目录会被初始化,造成的结果是存储于根目录中的数据全部游离,但根目录中的子目录由于存储在数据区的其它位置上而不受影响。
FAT32是一类非日志型文件系统,结构被破坏的概率相对于NTFS要高很多。FAT32在格式化时,根目录清空,导致原始根目录下文件目录丢失。同 时,FAT表被初始化,导致原来存在碎片的文件恢复后可能无法正常打开。FAT32格式化的恢复,正常思路是先通过R-studio类的文件目录恢复软件 进行全盘扫描,将子目录以及没有位于2号簇的其他根目录恢复,在丢失目录内寻找原始位于根目录下的文件夹,然后按照文件类型全盘扫描丢失文件。