您当前的位置:首页 > 电脑技术 > 硬件知识

硬盘分区FAT32文件系统DBR详解及手工重建

2019-01-03 16:57:35人浏览
简介  在磁盘分区格式中,FAT32格式是比较常见的一种分区格式,虽然现在的主流操作系统上以及大硬盘容量等原因,FAT32已基本被NTFS取代,但在U盘、SD卡等存储介质上,FAT32还是比较常用
  在磁盘分区格式中,FAT32格式是比较常见的一种分区格式,虽然现在的主流操作系统上以及大硬盘容量等原因,FAT32已基本被NTFS取代,但在U盘、SD卡等存储介质上,FAT32还是比较常用的格式之一。
  FAT32是FAT16格式的升级,采用32位的文件分配表,使其对磁盘的管理能力大大增强,突破了FAT16对每一个分区的容量只有2GB的限制。由于现在的硬盘生产成本下降,其容量越来越大,运用FAT32的分区格式后,我们可以将一个大硬盘定义成更大的分区使用,大大方便了对磁盘的管理。但由于FAT32分区内无法存放大于4GB的单个文件,且性能不佳,易产生磁盘碎片,目前已被性能更优异的NTFS分区格式所取代。

 FAT32文件系统由DBR 、FAT1 、FAT2、 FDT和数据区组成,结构如下图示。

1.DBR及其保留扇区。DBR的全称DOS Boot Record,含义是DOS引导记录,也称为操作系统的引导记录区。在DBR之后往往有一些保留扇区,其中6号扇区为DBR的备份。
2.FAT。FAT的全称为File Allocation Table,即文件分配表。FAT32一般有两个FAT。FAT1是主FAT, FAT2紧跟在FAT1之后,是FAT1的备份,称为备份FAT。
3.DATA。DATA是数据区,是FAT32文件系统的主要数据区域。其中包含着FDT(File Directory Table),含义是文件目录表,位于数据区的起始位置。
 

一)FAT32文件系统的DBR详解


如上图为FAT32系统的DBR图,DBR由五部分组成,从前到后依次为:
跳转指令 EB5890 占3个字节
OEM代号:占8个字节
BPB参数: 0BH-59H 共占用79个字节
引导程序:从5AH开始,共420个字节
结束标志55AA
 

二)BPB参数详细解析

(1)0BH~0CH:每扇区字节数
     每扇区字节数记录每个逻辑扇区的大小,其常见值为512字节,但512字节并不是固定值。该值可以由程序定义,合法值包括512、1024、2048和4096字节。
(2)0DH:每簇扇区数
    “簇”是FAT12、FAT16以及FAT32文件系统下数据的最小存储单元,一个“簇”由一组连续的扇区组成。
(3)0EH~0FH:DBR保留扇区数
      DBR保留扇区数是指DBR本身占用的扇区以及其后保留扇区的总和,也就是DBR到FAT1之间扇区总数,或者说是FAT1的开始扇区号。
(4)10H:FAT表个数
      FAT表个数描述了该文件系统有几个FAT表,一般在FAT文件系统中都有两个FAT,FAT1和FAT2。值默认为 02
(5)11H~12H:未用
     这个参数在FAT16中用来表示FDT中最大所能容纳的目录项数,FAT32没有固定的FDT,所以不用这个参数。
(6)13H~14H:扇区总数
     这两个字节在FAT16中用来表示小于32MB的分区的扇区总数,FAT32的总是大于32MB,所以不用这个参数。
(7)15H:介质描述符
     介质描述符是描述磁盘介质的参数,根据磁盘性质的不同,取值不同。如硬盘为F8
(8)16H~17H:未用
       这两个字节在FAT16中用来表示每个FAT表包含的扇区数,FAT32未用。
(9)18H~19H:每磁道扇区数
       这是逻辑C/H/S中的一个参数,其值一般为63。
(10)1AH~1BH:磁头数
(11)1CH~1FH:隐藏扇区数
     隐藏扇区数是指本分区之前使用的扇区数,该值与分区表中所描述的该分区的起始扇区号一致。对于主磁盘分区来讲,是MBR到该分区DBR之间的扇区数;对于扩展分区中的逻辑分区来讲,是其EBR到该分区DBR之间的扇区数。
(12)20H~23H:扇区总数
      扇区总数是指分区的总扇区数,也就是FAT32分区的大小。
(13)24H~27H:每个FAT扇区数
     这四个字节用来记录FAT32分区中每个FAT表占用的扇区数。
(14)28H~29H:标志
     这两个字节用于表示FAT32是否可用,当其二进制最高位置1时,表示只有FAT1可用,否则FAT2也可用。
(15)2AH~2BH:版本。通常为0。
(16)2CH~2FH:根目录首簇号
      分区在格式化为FAT32文件系统时,格式化程序会在数据区中指派一个簇作为FAT32 的根目录区的开始,并把该簇号记录在BPB中。通常是把数据区的第一个簇分配给根目录使用,也就是2号簇。值固定为02
(17)30H~33H:文件系统信息扇区号。
  FAT32 文件系统在DBR的保留扇区中安排了一个文件系统信息扇区,用以记录数据区中空闲簇的数量及下一个空闲簇的簇号。该扇区一般在分区的1号扇区,也就是紧跟在DBR后的一个扇区。
(18)32H:DBR备份扇区号
     FAT32 文件系统在DBR 的保留扇区中安排了一个DBR的备份,一般在6号扇区,也就是分区的第7个扇区。该备份扇区与原DBR 扇区的内容完全一样,如果原DBR 遭到破坏,可以用备份扇区修复。值默认为06
(19)34H~3FH:未用。这12个字节保留不用。
(20)40H:BIOS驱动器号
      这是BIOS 的INT 13H所描述的设备号码,一般从80H开始编号。
(21)41H:未用。这两个字节不使用,为0。
(22)42H:扩展引导标记
       扩展引导标记 用来确认后面的三个参数是否有效,一般值为29H。
(23)43H~46H:卷列序号
       卷列序号是格式化程序在创建文件系统时生成的一组4字节的随机数值。
(24)47H~51H:卷标
      卷标是由用户在创建文件系统时指定的一个卷的名称,原来的系统把卷标记录在这个地址处,现在的系统已经不再使用这个地址记录卷标,而是由一个目录项来管理卷标。
(25)52H~59H:文件系统类型
     BPB最后一个参数,直接用ASCⅡ码记录当前分区的文件系统类型。一般FAT32的标识均填写为:46 41 54 33 32 20 20 20
 

三)DBR参数的手工重建

    如果DBR的信息被破坏,可以通过手动恢复,如果DBR备份还在,可以直接从备份中恢复。如果DBR备份也被破坏,我们可以复制一个相同版本的FAT文件系统的DBR过来,然后修改BPB部分中的几个重要参数,如下图,用色框标出的五个参数为重要参数。


0DH:每簇扇区数
0EH~0FH:DBR保留扇区数
1CH~1FH:隐藏扇区数
20H~23H:扇区总数
24H~27H:每个FAT所占扇区数
填写方法:
1)1CH~1FH:隐藏扇区数,填写当前分区的起始扇区位置
2)20H~23H:扇区总数。填写当前分区的总扇区数。可由MBR的DPT中读取,或从备份中获取。
3)24H~27H:每个FAT所占扇区数=FAT2起始扇区-FAT1起始扇区
  十六进制向下查找“F8FFFF”所在扇区,且此值为扇区起始位置,记录下此扇区即为FAT1起始扇区。
  按F3继续查找,同样的方法,找到FAT1起始扇区,相减得到的值填入即可。
4)0EH~0FH:DBR保留扇区数。算法:FAT1起始扇区-DBR起始扇区
5)0DH:每簇扇区数。
  ①计算出该分区中数据区的大小。计算方法:分区总扇区数-DBR保留扇区数-每FAT扇区数×2
  ②计算出该分区的FAT表中记录的FAT项的个数
  计算方法:FAT表的大小×512/4。FAT表的大小乘以512是FAT表的总字节数,除以4是因为FAT32每个FAT项占32位即4个字节。
  ③每簇扇区数=①的结果/②的结果。一般结果不会刚好得到整数,需要取整数。每簇扇区数必为1,2,4,8,16,32,64中的一个,取相近的值即可。