1.FAT32文件系统数据结构

合集下载

FAT32分区基本构成与FAT32存储原理

FAT32分区基本构成与FAT32存储原理

作者:非常可乐本文来自网络整理。

FAT32是个非常有功劳的文件系统,Microsoft成功地设计并运用了它,直到今天NTFS 铺天盖地袭来的时候,FAT32依然占据着Microsoft Windows文件系统中重要的地位。

FAT32最早是出于FAT16不支持大分区、单位簇容量大以致空间急剧浪费等缺点设计的。

实际应用中,FAT32还是成功的。

FAT32与FAT16的原理基本上是相同的,下图标出了FAT32分区的基本构成。

FAT32分区的基本构成FAT32在格式化的过程中就根据分区的特点构建好了它的DBR,其中BPB参数是很重要的,可以回过头来看一下表4和表5。

首先FAT32保留扇区的数目默认为32个,而不是FAT16的仅仅一个。

这样的好处是有助于磁盘DBR指令的长度扩展,而且可以为DBR扇区留有备份空间。

上面我们已经提到,构建在FAT32上的win98或win2000、winXP,其操作系统引导代码并非只占一个扇区了。

留有多余的保留扇区就可以很好的拓展OS引导代码。

在BPB中也记录了DBR扇区的备份扇区编号。

备份扇区可以让我们在磁盘遭到意外破坏时恢复DBR。

FAT32的文件分配表的数据结构依然和FAT16相同,所不同的是,FAT32将记录簇链的二进制位数扩展到了32位,故而这种文件系统称为FAT32。

32位二进制位的簇链决定了FAT 表最大可以寻址2T个簇。

这样即使簇的大小为1扇区,理论上仍然能够寻址1TB范围内的分区。

但实际中FAT32是不能寻址这样大的空间的,随着分区空间大小的增加,FAT表的记录数会变得臃肿不堪,严重影响系统的性能。

所以在实际中通常不格式化超过32GB的FAT32分区。

WIN2000及之上的OS已经不直接支持对超过32GB的分区格式化成FAT32,但WIN98依然可以格式化大到127GB的FAT32分区,但这样没必要也不推荐。

同时FAT32也有小的限制,FAT32卷必须至少有65527个簇,所以对于小的分区,仍然需要使用FAT16或FAT12。

FAT32文件系统学习(3)——数据区(DATA区)

FAT32文件系统学习(3)——数据区(DATA区)

FAT32⽂件系统学习(3)——数据区(DATA区)FAT32⽂件系统学习(3) —— 数据区(DATA区)今天继续学习FAT32⽂件系统的数据区部分(Data区)。

其实这⼀篇应该是最有意思的,我们可以通过在U盘内放⼊⼀些⽂件,然后在程序中读取出来;反过来也可以⽤程序在U盘内写⼊⼀下数据,然后在windows下可以看到写⼊的⽂件。

这些笔者都会在这篇⽂章中演⽰(后来发现并没有成功,不过笔者也找到相关的原因,详见后来的更新部分吧:) )。

同时,在写这篇⽂章的时候笔者也发现了许多意想不到的规律。

1、本⽂⽬录2、读取根⽬录两张FAT之后的所有扇区都是数据区部分。

我们再通过来回顾⼀下整个FAT32⽂件系统的分布规则。

图 1 FAT32⽂件系统分布图通常情况下根⽬录都是位于数据区头部的,前⾯也提到过,有⽂献上说是因为⼀旦U盘格式化完毕之后,根⽬录就创建好了。

本着探究的精神,笔者尝试格式化了⼀下U盘,发现其实并没有创建根⽬录。

不过⼀旦有⽂件操作,马上就会创建根⽬录,因为这时整个数据区都是空的,所以⾃然是写⼊数据区的头部。

到头来其实道理是⼀样的,也就是说根⽬录⼀般情况下都是在数据区的头部(第2簇)。

数据区偏移计算经过前两篇关于BPB和FAT部分学习之后,我们就可以计算出数据区头部的偏移:数据区偏移 = (保留扇区数 + FAT表扇区数 * FAT表个数(通常为2) + (起始簇号-2) * 每簇扇区数) * 每扇区字节数笔者⾸先格式化了U盘,通过偏移读取出了数据区的头部,发现都是0x00。

题外话这⾥⼜要插⼀些题外话了,笔者试着改了⼀下U盘的卷标,把它改名为“FAT”。

然后还记得BPB当中有⼀个参数叫做卷标吗?笔者看了下发现卷标这个参数还是“NO NAME”并没有改变。

这时笔者把数据区的头部读取了出来,如所⽰:图2 卷标原来被写在了这⾥。

最后经笔者的测试,卷标最长长度是11个字节,偏移从0x00~0x0A,⽽偏移0x0B处的值0x08值的意思就是卷标(关于此处值的意思相⾯还会详细描述)。

FAT32文件系统

FAT32文件系统
• 1 跳转指令 跳转指令本身占用2个字节,它将程序执行流程跳转到 引导程序处,比如当前DBR中的“EB 58”,就是代表汇 编语言的“JMP 58”。需要注意该指令本身占用2字节, 计算跳转目标地址时以该指令的下一个字节为基准,所 以实际执行的下一条指令应该位于5A。紧接着跳转指令 的是一条空指令NOP(90H)。
FAT32文件系统结构实例图
2.2 FAT32文件系统DBR
• 2.2.1 DBR的概念和组成 • 什么是DBR? DBR(DOS Boot Record),含义是DOS引导记录, 也称为操作系统引导记录 • FAT32文件系统的DBR(即操作系统引导记录)大体 可以分为5个部分,分别为:跳转指令,OEM代号, BPB(BIOS Parameter Block,BIOS参数块),引导程 序,结束标志(55AA)。 FAT32文件系统DBR结构模块图 请参照下图
第二章 FAT32文件系统
2.1 FAT32文件系统结构总揽 FAT32文件系统是从微软Windows 95系统的OSR2版本开 始使用的,它能够支持大于32MB小于32GB的分区。虽然 第三方的格式化程序可以把超过32GB的分区格式化为 FAT32,但微软自身的系统不允许将大于32GB的分区格 式化为FAT32文件系统。 FAT32文件系统由DBR及其保留扇区,FAT1,FAT2, DATA区 四个部分组成。
具体结构如下图:
• 长文件名FDT项结构图
具体内容如下:
• 每一个长文件名登记项有26个字节记录长文件名称,表示 13个Unicode格式的文件名(每个文件名字符需要2个字节)。 顺序字节低5位指明长文件名登记项序号,第6位置“1”表 明本登记项是最后一个,“顺序号”数据结构如下:
• (“顺序号”字节含义图)

FAT32文件系统详细介绍

FAT32文件系统详细介绍

初识FAT32文件系统Abstract: File System is used to manage files software and data ,it is part of the operating system.FAT32 file system is a kind of format that it manage disk files. And the corresponding other file system format such as NTFS,EXT2 etc.Key words: File System; FAT32 File System; Disk摘要: 文件系统是用于管理文件的软件和数据的统称,它是操作系统的一部分。

FAT32文件系统是一种管理磁盘文件的一种格式。

还有相应的其他文件系统格式比如NTFS,EXT2等。

关键词: 文件系统;FAT32文件系统;磁盘1 硬盘结构1.1 硬盘物理结构[1]图1 硬盘的内部结构硬盘基本上由两大部分组成:控制电路板和盘体。

1.控制电路板控制电路板由接口,DSP处理器,ROM,缓存,磁头驱动电路和盘片电机驱动电路等等组成。

2.盘体盘体由盘腔,上盖,盘片电机,盘片,磁头,音圈和其他辅助组件组成。

一般硬盘的接口分为几种,有IDE接口(Integrated Drive Electronics),SCSI接口(Small Computer System Interface),SATA接口(Serial-ATA)(目前是主流),SAS接口,IEEE1394接口。

硬盘存储数据是根据电、磁转换原理实现的。

硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。

硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。

FAT文件系统的组织结构

FAT文件系统的组织结构

FAT文件系统的组织结构 1. 软盘数据的逻辑存储 软盘无须低级格式化和分区操作,只需用FORMAT命令做高级格式化即可。

经过格式化操作之 后,系统将在软磁盘上建立以下的数据结构: (1) 引导记录(DBR):位于0面0道1扇区,说明磁盘结构信息。

 (2) 文件分配表(FAT):用于记录磁盘空间的分配情况,指示硬盘数据信息存 放的柱面及扇区的信息指针。

其表项可以是以下四种表示方式之一: A.一个数字,代表指向另一个簇的指针。

 B.数字0,表示一个未使用的簇 C.一个坏扇区标记 D.文件结束标记符EOF (3) 文件根目录表FDT:一个指示以存入数据信息的索引。

记录磁盘上存储文 件的大小,位置,日期和时间等数据。

 (4) 数据区:存放数据信息。

 2. 硬盘中的数据组织 刚刚从厂商处购来的新硬盘既无任何数据,也不能写入任何数据,必须先进行低级格 式化,FDISK分区,FORMAT高级格式化后方可使用。

对硬盘的这一系列初始化工作,称之为 硬盘准备。

过程如下: 低级格式化---------------FDISK分区-------------------FORMAT高级格式化 (1)低级格式化:对硬盘划分磁道和扇区,在扇区的地址域上标注地址信息,并剔出坏磁 道。

 (2)FDISK:允许整个物理硬盘在逻辑上划分成多个分区(最多4个),以实现多个操作系 统共享硬盘空间。

如果将整个物理盘全部划归DOS/WINDOWS管理,则FDISK分区的作用是将一 个物理盘划分一个主分区和一个扩展分区,然后再将扩展分区划分成一个或多个逻辑盘。

在 硬盘上建立分区表的同时,FDISK把主引导记录MBR写到硬盘的主引导记录(柱面0,磁头0, 扇区1),并激活一个用户指定的分区。

 (3)FORMAT:在DOS分区空间划分逻辑扇区,生成DOS引导扇区(即逻辑0扇区)DBR,文件 分配表FAT和根文件目录表FDT。

 硬盘在DOS/WINDOWS的管理下,数据信息由MBR,DBR,FAT,FDT和数据区5 个部分组成。

FAT32

FAT32

数据区是被用来存放用户数据的,位于FAT2后,同样被划分成簇,从2开始编号,即2号簇起始位置即是数据 区的真正起始位置。
(1)根目录
通常情况下根目录位于2号簇,但是原则上FAT32文件系统中的根目录可以位于数据区的任意位置。根目录区 保存根目录下的各文件的目录项,每个目录项占用32字节。FAT32文件系统中,根目录作为数据区的一部分,采 用与子目录相似的管理方式,这一点与FAT12、FAT16明显不同,如FAT16文件系统的根目录区(ROOT区)是固定 区域、固定大小的,占用从FAT区之后紧接着的32个扇区,最多保存512个目录项(其根目录保存的文件数受限的 原因在此),作为系统区的一部分。
磁盘结构
文件分配表区
引导区
数据区
FAT32文件系统的第一个扇区就是引导扇区,其内存放了一个文件系统的很多具体信息,例如FAT表个数、每 个FAT表的大小(扇区数目)、每扇区内的字节数目、每簇中所包含的扇区数目、被保留的扇区数目、文件系统 大小(扇区数目)、根目录的起始簇号及一些其它的附加信息。引导区(BOOT区)从第一扇区(逻辑扇区号0) 开始使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。之后还留有 若干保留扇区,其中有一至三扇区的备份,
文件分配表区(FAT区)是FAT文件系统管理磁盘空间和文件的最重要区域,它保存逻辑盘数据区各簇使用情 况信息,采用位示图法来表示,文件所占用的存储空间及空闲空间的管理都是通过FAT实现的。FAT区共保存了两 个相同的文件分配表,便于第一个损坏时,还有第二个可用。FAT表的大小由该逻辑盘数据区共有多少簇所决定, 取整数个扇区。数据区中每簇的使用情况通过查找其在FAT表中相应位置的填充值可知晓。FAT32表中每簇占用四 个字节(32位)表示,开头的8个字节(0H-07H字节)用来存放该盘介质类型编号了,因此有效簇号从02H开始使 用。02H簇的使用情况由08H-0BH字节组成的32位二进制数指示出来,03H簇的使用情况由0CH一0FH字节组成的32 位二进制数指示出来,依此类推。未被分配使用和已回收的簇相应位置写零,坏簇相应位置填入特定值 0FFFFFF7H标识,已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为 0FFFFFFFH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用 的各簇构成一个簇链,保存在FAT32表中。

U盘FAT32文件系统

U盘FAT32文件系统

U盘FAT32⽂件系统⼀、FAT⽂件系统分为四个部分参考别⼈的博客1. 保留扇区(引导区)最开始的位置,第⼀个保留扇区是引导区。

包括基本的⽂件系统信息,⽐如它的类型和其它指向其它扇区的指针。

通常包括操作系统启动调⽤代码。

保留扇区的总数记录在引导扇区中的⼀个参数中。

2. FAT区(⽂件分配表)包含两份⽂件分配表,分区信息的映射表,指⽰簇是如何存储的。

3. 根⽬录区在根⽬录中存储⽂件和⽬录信息的⽬录表。

4. 数据区域实际⽂件和⽬录数据存储的区域。

需要注意的是每个簇只能被⼀个⽂件占有。

主引导记录(主引导扇区),读设备时最开始读这个分区。

1. MBR(master boot record)MBR ⼜称作主引导记录占⽤ Boot Sector 的前 446 个字节 ( 0 to 0x1BD ), 存放系统主引导程序 (它负责从活动分区中装载并运⾏系统引导程序).2. DPT 即主分区表占⽤ 64 个字节 (0x1BE to 0x1FD),记录了磁盘的基本分区信息,主分区表分为四个分区项,,每项 16 字节,分别记录了每个主分区的信息(因此最多可以有四个主分区).3. Boot Record ID 即引导区标记占⽤两个字节 (0x1FE and 0x1FF), 对于合法引导区,它等于 0xAA55,这是判别引导区是否合法的标志。

⼆、主引导扇区(MBR)的具体结构如下图所⽰:OffsetDescription Size000h Executable Code (Boots Computer)446 Bytes1BEh1st Partition Entry (See Next Table)16 Bytes1CEh2nd Partition Entry16 Bytes1DEh3rd Partition Entry16 Bytes1EEh4th Partition Entry16 Bytes1FEh Executable Marker (55h AAh) 2 BytesUSB hound 得到的数据512 IN fa 31 c0 8e d8 8e c0 8e d0 bc 00 7c fb fc 89 e6 .1.............. 55.1.0(2)bf 00 06 b9 00 01 f3 a5 ea dc 06 00 00 10 00 01 ................ 55.1.1600 00 7c 00 00 00 00 00 00 00 00 00 00 80 3f 00 ..............?. 55.1.32ff 00 b4 03 1e 0e 1f 3a 16 10 00 74 06 1f ea 36 .......:...t...6 55.1.48e7 00 f0 3d fb 54 75 05 8c d8 fb eb 1d 80 fc 08 ...=.Tu......... 55.1.6475 1b e8 81 00 8a 36 13 00 fe ce 8b 0e 15 00 86 u.....6......... 55.1.80cd c0 e1 06 0a 0e 11 00 31 c0 f8 eb 65 80 fc 02 ........1...e... 55.1.9672 cb 80 fc 04 77 c6 60 80 cc 40 50 be 00 00 c7 r....w.`..@P.... 55.1.11204 10 00 30 e4 89 44 02 89 5c 04 8c 44 06 66 31 ...0..D..\..D.f1 55.1.128c0 66 89 44 0c 88 f0 f6 26 11 00 88 cf 88 eb c0 .f.D....&....... 55.1.144ef 06 81 e1 3f 00 01 c8 48 89 c7 a1 13 00 f7 26 ....?...H......& 55.1.16011 00 f7 e3 01 f8 81 d2 00 00 89 44 08 89 54 0a ...........D..T. 55.1.17658 30 c0 8a 16 10 00 e8 0c 00 88 26 03 00 61 a1 X0.........&..a. 55.1.19202 00 1f ca 02 00 9c ff 1e 22 00 c3 80 fa 8f 7f ........."...... 55.1.20804 88 16 2d 06 be 87 07 e8 8d 00 be be 07 31 c0 ...-..........1. 55.1.224b9 04 00 f6 04 80 74 03 40 89 f5 81 c6 10 00 e2 ......t.@....... 55.1.240f2 48 74 02 cd 18 bf 05 00 be 1d 06 c7 44 02 01 .Ht..........D.. 55.1.25600 66 8b 46 08 66 89 44 08 b8 00 42 8a 16 2d 06 .f.F.f.D...B..-. 55.1.272cd 13 73 0d 4f 74 49 30 e4 8a 16 2d 06 cd 13 eb ..s.OtI0...-.... 55.1.288d8 a1 fe 7d 3d 55 aa 75 37 fa 66 a1 4c 00 66 a3 ....=U.u7.f.L.f. 55.1.3043f 06 be 13 04 8b 04 48 89 04 c1 e0 06 8e c0 31 ?......H.......1 55.1.320ff be 1d 06 b9 60 00 fc f3 a5 c7 06 4c 00 17 00 .....`......L... 55.1.336a3 4e 00 fb 8a 16 2d 06 89 ee fa ea 00 7c 00 00 .N....-......... 55.1.352be aa 07 e8 02 00 eb fe ac 20 c0 74 09 b4 0e bb ......... .t.... 55.1.36807 00 cd 10 eb f2 c3 53 74 61 72 74 20 62 6f 6f .......Start boo 55.1.38474 69 6e 67 20 66 72 6f 6d 20 55 53 42 20 64 65 ting from USB de 55.1.40076 69 63 65 2e 2e 2e 0d 0a 00 42 6f 6f 74 20 66 vice......Boot f 55.1.41661 69 6c 65 64 00 00 00 ea eb d4 ca 00 00 00 00 ailed........... 55.1.432 第⼀分区硬盘分区表 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 55.1.448 第⼆分区00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 55.1.464 第三分区00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 04 ................ 55.1.480 第四分区05 00 0b fe ff b3 00 01 00 0080 8c e8 00 55 aa ..............U. 55.1.496过256扇区后是这个分区 *512byte=7.2G硬盘分区表地址字节数描述00~001可引导标志0x00不可引导,0x80可引导01~033分区起始CHS地址04~041分区类型05~073分区结束CHS地址08~0B4分区起始LBA地址0C~0F4分区⼤⼩扇区数分区起始CHS地址(U盘可以直接根据扇区,簇来寻址。

FAT32文件系统详细介绍(专业)资料

FAT32文件系统详细介绍(专业)资料

通过使用DiskEditor对硬盘的分析,现对硬盘的MBR区及FAT32文件系统做一个详细的介绍。

新硬盘->低格后变化:所有扇区中的字节数据填充为0x00低格后->分区后变化:写硬盘的MBR(主引导扇区)区分区后->格式华变化:写硬盘的FAT(文件分配表)区MBR区介绍:起始位置:0柱面0磁头1扇区(硬盘的第一个扇区)结束位置:0柱面0磁头1扇区大小:512(硬盘每个扇区的所占用的字节数)个字节00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00000000 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00000010 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 ………………………………-……………………000001b0 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 80 01 000001c0 01 00 0c ff ff fe 3f 00 -00 00 fc 8a 38 01 00 00 000001d0 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 000001e0 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 000001f0 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 55 aa000 ~ 1bd (446字节)executable code(我们不使用,固定填写0x00)1be ~ 1cd (16字节)1st partition entry(参数解释见下面)1ce ~ 1dd (16字节)2st partition entry(同第一个分区)1de ~ 1ed (16字节)3st partition entry(同第一个分区)1ee ~ 1fd (16字节)4st partition entry(同第一个分区)1fe ~ 1ff (2字节)boot record signature(固定值:55 aa)现以第一个分区的入口参数为例:80 分区状态(80H表示为激活分区,00H表示为非激活分区)01 分区的开始磁头01 00 分区的开始柱面和扇区(0 ~ 5位为扇区号、8 ~ 15位为柱面号的低8位,6 ~ 7位为柱面号的高两位)0c 分区的类型(0c表示为FAT32,用LBA方式)ff 分区的结束磁头ff fe 分区的结束柱面和扇区(表示同开始磁头)3f 00 00 00 从MBR到第一个分区扇区的扇区个数(一般为硬盘扇区的最大值)fc 8a 38 01 分区的总扇区数(可以计算扇区的总大小)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FAT32文件系统结构
FAT32DBR的数据结构
偏移(16进制) 描述 00-02 03-0A 0B-0C 0D 0E-0F 转跳指令(EB5890) 文件系统版本 每扇区字节数 每簇扇区数 FAT表的起始扇区号 偏移(16进制) 24-27 28-29 2A-2B 2C-2F 30-31 描述 FAT表的大小 标记 版本 根目录所在的簇号 DBR的大小
卷标
文件系统格式
重要概念
• 扇区:扇区是硬盘读写的基本单位,一般情况下 每扇区的大小是512字节。在硬盘中每个扇区都 有自己的编号,从零开始编号。 • 簇:文件系统中用簇来做数据存储的单位 。 • 簇大小是2的整数次幂,最大是128扇区每簇 • FAT表:文件分配表( File Allocation Table)用 来描述文件系统内存储单元的分配状态及文件内 容的前后链接关系的表格 • 根目录的起始簇号:也是数据区的开始位置(一 般为2号簇)
课后作业
• 默Байду номын сангаас一张 FAT32文件系统的结构图
再见!
10
11-12 13-14 15 16-17 18-19
FAT表个数
保留 保留 介质描述符 保留 每磁道扇区数
32-33
34-3F 40 41 42 43-46
DBR的备份扇区位 置
保留 BIOS设备 未使用 扩展引导标记 卷序列号
1A-1B
1C-1F
磁头数
隐含扇区(0到DBR的 扇区)
47-51
52-59
Winhex手工数据恢复之FAT32文件系统 FAT32文件系统结构
初识文件文件
• 文件系统就是对数据存储进行管理的一种机制 • 格式化的目的就是建立文件系统从而管理文件 • 我们平时看到的 NTFS、FAT32、ExFat的分区格 式都是文件系统,每种文件系统都有不同的管理 方式。 • NTFS、FAT32、Exfat文件系统的第一个扇区叫 DBR 系统引导扇区
相关文档
最新文档