FAT表
文件分配表
文件分配表FAT(File Allocation Table)用来描述文件系统内存储单元的分配状态及文件内容的前后链接关系的表格(也可以笼统的说成是记录文件所在位置的表格)。它对于FAT文件系统来讲是至关重要的一个组成部分,并且它对于硬盘的使用也非常重要,假若丢失文件分配表,那么硬盘上的数据就无法定位,也就不能使用了。
FAT表类别
FAT文件系统有FAT12、FAT16、FAT32。其所包含的这三种类型皆是由FAT表中每个FAT表项所占长度来分类的,也就是说,FAT12的FAT表中的每个FAT表项占用12位,FAT16中的FAT表每个FAT表项占用16位,FAT32的FAT表中的每个FAT表项占用32位。
FAT表位置
FAT文件系统将逻辑盘的空间大致划分为三部分,依次是DBR及保留扇区、文件分配表区(FAT1、FAT2)、数据区(DATA区)。
DBR只占一个扇区,之后还留有31个保留扇区。文件分配表区紧跟在DBR及保留扇区后,FAT1的具体地址偏移量为0EH~0FH的两字节,FAT2跟在FAT1之后,其地址可以用FAT1的所在扇区号加上每个FAT所占的扇区数获得。(需要注意的是,FAT16文件系统只有DBR,占一个扇区,没有保留扇区。)
FAT表是由格式化程序在对分区进行格式化时创建,具体数量在引导扇区的偏移0x10字节处FAT1是活动FAT,FAT2是备份FAT[1]。FAT文件系统一般有两份FAT表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用,但对于一些较小的存储介质允许只有一个FAT表。
FAT表组成
FAT表由FAT表项构成。每个FAT表项的大小有12位、16位、和32位三种情况。每个FAT表项都有一个固定的编号,这个编号从0开始。
FAT表的0号和1号FAT表项有专门的用途。0号FAT表项通常用来存放分区所在的介质类型;1号FAT表项用来存储文件系统的肮脏标志,表明文件系统被非法卸载或者磁盘表面存在错误。
每一个FAT表项都会映射FAT数据区的一个簇中。因为0号FAT表项和1号FAT表项有特殊用途,无法与数据区中的簇形成映射,所以从2号FAT表项开始跟数据区中的第一个簇映射,正因为如此,数据区中的第一个簇也就编号为2号簇,这也是没有0号簇和1号簇的原因。然后3号簇跟3号FAT表项映射,4号簇跟4号FAT表项映射,以此类推,直到数据区中的最后一个簇。
FAT表的功能
FAT表的使用
如果一个FAT表项为非零,则表示这个簇已被分配使用。一个非零的FAT表项可能会是一个文件的下一个簇号,也有可能是一个好的文件的结束标记,或者是一个坏簇标记。如果要找一个文件的下一个簇,只需要查看该文件的目录项中描述的起始簇号所对应的FAT项,如果该文件只有一个簇,则此处的值为一个结束标记;如果该文件不只一个簇,则此处的值是它下一个簇的簇号。
对于FAT表项的管理,以FAT16文件系统的为例,其FAT表项是16位的,也就是每个FAT项占2个字节。16位的FAT表项项最多管理65535个簇。在Windows 2000系统之前簇大小最大为64个扇区(32KB),这样,采用FAT16操作系统最多能管理32*65535=209120KB=2048MB=2GB的分区。对于容量超过2GB的硬盘,必须将其划分成多个不超过2GB的分区。从Windows 2000系统开始,簇大小可以达到128个扇区(64KB),FAT16文件系统就可以管理4GB的分区了,但这种分区在Windows 2000之前的系统不可访问。
参考资料
最新修订时间:2023-02-06 20:02
目录
概述
FAT表类别
FAT表位置
参考资料