FAT32文件系统详解

4个组成部分

  • 保留区域
  • 文件分配表区域 (File Partition Table,简称FAT)
  • 根目录区域
  • 数据区域

保留区域

保留区域的第一个扇区(sector)很重要。它的大小是512 byte,对这个扇区有多种叫法----启动扇区(boot sector),保留扇区(reserved sector),0号扇区(0th sector)等等,在DOS分区下,又被叫做操作系统引导记录区(DOS BOOT RECORD,简称DBR)。

表1 启动扇区定义
命名字节偏移字节长度功能描述
BS_jmpBoot03跳转指令
BS_OEMName38厂商标志与版本号
BPB_BytsPerSec112每个扇区的字节数,该值只能是512,1024,2048,4096
BPB_SecPerClus131每个簇的扇区数,合法值为1,2,4,8,16,32,64,128 。但必须保证(BPB_BytsPerSec*BPB_SecPerClus)<= 32KB。虽然有些操作系统支持64KB大小的簇,但很多应用安装程序无法在这样的FAT文件系统上正常运行
BPB_RsvdSecCnt142保留区域的扇区数。该值一定不为0。
BPB_NumFATs161FAT表的数量,通常为2。
BPB_RootEntCnt172FAT32该值为0
BPB_TotSec16192FAT32该值为0
BPB_Media211媒体描述符
BPB_FATSz16222FAT32该值为0
BPB_SecPerTrk242每磁道扇区数。用于BIOS中断0x13,只对特殊形状的存储介质有效。
BPB_NumHeads262磁头数。用于BIOS中断0x13,只对特殊形状的存储介质有效。
BPB_HiddSec284隐藏扇区数。
BPB_TotSec32324该分区总扇区数
BPB_FATSz32364一张FAT表所占扇区数
BPB_ExtFlags402BIT[3:0]:活跃FAT表编号。 BIT[6:4]:保留。 BIT[7]:0–>FAT表实时镜像到所有的FAT表;1–>只有一个FAT表活跃,即 BIT[3:0]所指的FAT表。BIT[15:8]:保留
BPB_FSVer422FAT32的版本号
BPB_RootClus444根目录的首簇簇号。通常是2。也可以是其它值。
BPB_FSInfo482保留区域中FSINFO结构的扇区号,通常为1。
BPB_BkBootSec502保留区域中备份引导扇区的扇区号,通常为6。
BPB_Reserved5212保留,以后扩展使用,目前都置0.
BS_DrvNum641驱动器号。
BS_Reserved1651保留。置0。
BS_BootSig661扩展引导标识(0x29),表示接下来的3个域是可用的。
BS_VolID674卷序列号
BS_VolLab7111卷标号
BS_FilSysType828文件系统类型。为“FAT12 ”, “FAT16 ”, or “FAT ”三者之一。
BS_BootCode90420启动代码
BS_Signature0x555101有效标志,固定为0x55
BS_Signature0xAA5111有效标志,固定为0xAA

注:BS(Boot Sector),BPB (BIOS Parameter Block)

文件分配表(FAT)

FAT32文件系统中,每条FAT表项占用4 byte,但实际上最高4bit是保留位,未使用。由于有效bits只有28位,所以最大簇号为0xFFFFFFFF(‭268435455‬),boot sector规定簇最大为32KB,折算下来最大容量约为8TB。
FAT表项从0开始编号,0 号地址与 1 号地址被系统保留并存储特殊标志内容。从 2 号地址开始,每个地址对应于数据区的簇号, FAT 表中的地址编号与数据区中的簇号相同。
如果某个簇未被分配使用,它所对应的FAT表项内的FAT表项值即用 0 进行填充,表示该 FAT 表项所对应的簇未被分配。当某个簇已被分配使用时,则它对应的 FAT 表项内的 FAT 表项值也就是该文件的下一个存储位置的簇号。
FAT表代表的是一种链式关系。例如一个70KB大小的文件A,假定此时簇大小为32KB,则当前文件需占用3个簇。在目录项中,会记录文件A的各种信息,包括文件的首簇号、时间等等。当拿到首簇号后,查找该簇号的FAT条目,该条目记录的就是下一个存储簇号。假设文件A依次占用的是簇3、4、5。则在目录项中,记录的首簇号是3,而在FAT表中,簇3对应的FAT条目里面记录的是4,,簇4对应的FAT条目记录的则是5,而簇5对应的FAT条目记录的则是结束标志 0x0FFFFFFF。

根目录

根目录的簇号在boot sector中有记录,通常位于2号簇。
根目录在文件系统建立时即已被创建,其目的就是存储文件夹或文件的目录项。每个目录项的大小为 32 个字节。目录项中除记录文件夹或文件起始簇号外,还记录它的名字、大小(文件夹没有大小)、时间值等信息。

每个子目录(文件夹)或文件除具有一个短文件目录项外,还会有长文件名目录项。短文件名目录项固定占用 32 字节,长文件名目录项则根据需要占用 1 个或者若干个 32 字节。

数据区域

该区域存储文件内容。以簇为最小存储单位,即使文件大小不足1个簇,也会占用1个簇。每一个簇都有一个对应的FAT表项。

参考资料

  1. Microsoft Extensible Firmware Initiative FAT32 File System Specification
    FAT: General Overview of On-Disk Format
    微软FAT文件系统白皮书

  2. 《数据重现 文件系统原理精解与数据恢复最佳实践》 马林

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值