FAT32文件系统之结构初探

时间:2021-11-07 05:22:18

FAT32文件系统总结

FAT32能够支持大于32M小于32G的分区。虽然第三方的格式化程序可以把超过32G的分区格式化为FAT32,会是微软的系统不允许将大于32G的分区格式化为FAT32文件系统。

FAT32文件系统由DBR及保留扇区,FAT1,FAT2,DATA区四个部分组成,结构如图

 

FAT32文件系统之结构初探

DBR及保留扇区:DOS Boot Record,含义是DOS结构引导记录,也称为操作系统引导记录,在DBR之后往往有一些保留扇区存在

FAT1: File AllocationTable,含义是文件分配表。FAT32一般有两份FAT表,

FAT2:FAT32的第二份分配表,也就是FAT1的备份,称为备份FAT。

DATA:数据区,是FAT32文件系统的主要区域,其中也包含目录区。

FAT32文件系统的DBR分析

1:跳转指令

         跳转指令本身占用2字节,它将程序执行流程跳转到引导程序处。例如,当前DBR中的“EB 58”,就是代表汇编语言中的“JMP 58”。需要注意该指令本身占用2个字节,计算跳转目标地址时该指令的下一个字节为基准,所以实际上执行的下一条指令应该位于 5A。紧接着跳转是一条空的指令NOP(90H)

2:OEM代号

         占用8个字节,这个说明了微软不同的操作系统版本。修改这个值不影响文件系统的使用。

3:BPB(BIOSParameter Block,BIOS参数块)

         BPB从DBR的第12个字节开始,占用79个字节,记录了有关该文件系统的重要信息,其中各个参数的含义见下表

 

字节偏移

字段长度(字节)

字段名与定义

0X0B

2

每扇区字节数

0X0D

1

每簇扇区数

0X0E

2

DOS保留扇区数

0X10

1

FAT个数

0X11

2

未用

0X13

2

未用

0X15

1

介质描述符

0X16

2

未用

0X18

2

每磁道扇区数

0X1A

2

磁头数

0X1C

4

隐藏扇区数

0X20

4

该分区的扇区总数

0X24

4

每FAT扇区数

0X28

2

标记

0X2A

2

版本

0X2C

4

根目录首簇号

0X30

2

文件系统信息扇区号

0X32

2

DBR备份扇区号

0X34

12

保留

0X40

1

BIOS驱动器号

0X41

1

未用

0X42

1

扩展引导标记

0X43

4

卷序死列号

0X47

11

卷标

0X52

8

文件系统类型

 

 

下面对这些参数做详细的分析

(1)每扇区字节数

每扇区字节数记录每个逻辑扇区的大小,其常见的值为512,但是并不是固定的值。该值可以由程序定义,合法值包括512,1024,2048,4096。

(2)每簇扇区数

每簇扇区数记录着文件系统的簇大小,即由多少个扇区组成一个簇。

簇是FAT12,FAT16及FAT32文件系统下数据的最小存储单元,一个簇由一组连续的扇区组成,簇所含的扇区数必须是2的整数次幂,如1,2,4,8,16,32,64,128.

在Windows 2000以前族最大值为64扇区,之后最大值为128.

FAT文件系统中,所有的族是从2开始编号,每个簇都有一个自己的地址编号,但是所有的族都位于数据区,在数据区之前没有族。

(3)DOS保留扇区数

DBR及保留扇区数是DBR到FAT1表之间的扇区数,或者说是FAT1的开始扇区号

对于FAT32文件系统来说,该值的范围是32扇区到38扇区之间。

(4)FAT个数

一般为2.

(5)未用

(6)未用

(7)介质描述符

介质描述符是描述磁盘介质的参数,根据磁盘性质的不同,取不同的值

(8)未用

(9)每磁道扇区数   一般其值为63.

 

(10)磁头数         其值一般为255.

 

(11)隐藏扇区数

是MBR到DBR之间的扇区数,对于扩展分区中逻辑驱动顺来说,是其EBR到DBR

(12)分区总扇区数

扇区总数是指分区的总扇区数,也就是FAT32分区的大小。

(1)      每FAT扇区数

(14)标志

FAT2是否可用,2为可用。

(15)版本     通常为0.

(16)根目录首簇号

                .分区在格式化的时候,格式化程序会在数据区中指派一个簇作为FAT32的根目录的开始,并把该簇号记录在BPB中。通常都是把数据区中的第一人簇分配给根目录使用,也就是2号簇。

(17)文件系统信息扇区号

                FAT32文件系统在DBR的保留扇区中安排了一个文件系统信息扇区,用以记录数据区中空闲簇的数量及下一个可用的空闲簇的簇号,该扇区一般在分区的1号扇区,也就是紧跟在DBR之后的一个扇区。

               

字节偏移

字段长度(字节)

字段名与定义

0x00

4

扩展引导标签52 52 61 41RRaA

0X04

480

未用

0X1E4

4

文件系统签名72 72 41 61rrAa

0X1E8

4

空闲簇数

0X1EC

4

下一个空闲簇号

0X1F0

14

未用

0X1FE

2

结束标志“55 AA

 

(18)DBR备份扇区号

                FAT32文件系统在DBR的保留扇区中安排了一个DBR的备份,一般在6号扇区,也就是分区的第7个扇区,该备份扇区与原DBR扇区的内容完全一样,如果原DBR遭到破坏,可以用备份扇区号修复。

(19)未用

(20)BIOS驱动器号

                这是BIOS的INT 13H所描述的设备号码,一般把硬盘定义为8xh.

(21)未用

(22)扩展引导标记

                用来确认后面的三个参数是否有效,一般值为29H

(23)卷序列号

(24)卷标

                不在这里进行记录,放到目录项中来管理

(25)文件系统类型

                使用ASCII码记录当前分区的文件系统类型

 

4:引导程序

                Fat32的DBR引导程序占用420个字节,在98 之前的系统之下,这段代码负责完成DOS三个系统文件的装入; 2000之后的系统中,其负责完成将系统文件NTLDR装入。对于一个没有操作系统的分区来讲,这段代码是没有作用的。

5:结束标志