1.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⽂件系统的数据区部分(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文件系统结构实例图
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文件系统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文件系统的组织结构 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
数据区是被用来存放用户数据的,位于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⽂件系统⼀、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文件系统详细介绍(专业)资料
通过使用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 分区的总扇区数(可以计算扇区的总大小)。
FAT32文件系统基本结构
FAT32文件系统基本结构见表1。
注:上表中的超过1字节的数据都以实际数据显示,就是按高位到地位的方式显示。
存储时是按低位到高位存储的。
两者表现不同,请仔细看清楚。
以后出现的表,图均同。
也可以在winhex中看到这些参数的意义:系统启动过程主要由一下几步组成(以硬盘启动为例):1.开机2.BIOS加电自检(Power On Self Test--POST),内存地址为0ffff:00003.将硬盘第一个扇区(0头0道1扇区,也就是BootSector)读入内存地址0000:7c00处.4.检查(WORD)0000:7dfe是否等于0xaa55,若不等于,则转去尝试其他启动介质,如果没有其他启动介质则显示"No ROM BASIC"然后死机.5.跳转到0000:7c00处执行MBR中的程序.6.MBR首先将自己复制到0000:0600处,然后继续执行.7.在主分区表中搜索标志为活动的分区.如果发现没有活动分区或有不止一个活动分区,则转停止.8.将活动分区的第一个扇区读入内存地址0000:7c00处.9.检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示"Missing Operating System"然后停止,或尝试软盘启动.10.跳转到0000:7c00处继续执行特定系统的启动程序.11.启动系统...以上步骤中2,3,4,5步是由BIOS的引导程序完成.6,7,8,9,10步由MBR中的引导程序完成.附:分区表类型标志如图4DBR区(DOS BOOT RECORD)即操作系统引导记录区的意思,通常占用分区的第0扇区共512个字节(特殊情况也要占用其它保留扇区,我们先说第0扇)。
在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOS Parameter Block),扩展BPB,os引导程序,结束标志几部分组成。
FAT文件系统结构分析
17、文件恢复注意事项
• 如果某文件被删除,而该分区又被写入了新文件,则误删文 件的目录项和簇位置可能被覆盖,导致文件无法被恢复。因 此在文件被误删除后是禁止往该分区写入任何信息的。 • 恢复文件时,为了避免恢复错误带来的影响,应当将恢复的 数据写入到其他盘的新文件中,即尽量不对原数据造成影响。 • 有的情况下数据是不可能恢复的,如数据被覆盖、低级格式 化、磁盘该位置物理损坏等。
2、簇
• 在FAT文件系统中,存储文件的基本单位是簇。一个簇由 1~128个扇区组成,但必须是2的n次方倍。 • 软盘的一个簇由一个扇区组成,硬盘分区的簇通常由8个扇 区组成,计4KB。 • 在一个分区中的簇大小是固定的,其大小在引导扇区的BPB (BIOS参数块)中给出。
3、簇大小
• 操作系统以簇为单位给文件分配空间,通常每个文件会浪费 掉0.5簇空间。 • 如果把簇空间设置的大些,则会造成浪费空间较多,如果簇 空间过小,则会造成FAT表增大,使得链表加长,同样会浪 费空间,而且使访问速度降低。 • 簇大小一般由格式化程序自动指定,在32位系统中一般为 4KB~16KB。
FAT32的BPB参数描述-1
偏移 0H 3H 0BH 0DH 0EH 10H 11H 长度 3B 8B 2B 1B 2B 1B 2B 跳转指令,跳至后面引导记录开始处(FAT32从5AH处开始) 文件系统和版本的OEM标志(MSDOS 5.0或MSWIN4.1) 每扇区字节数(通常为200H) 每簇扇区数(值为2的N次方,通常小于64) 保留扇区数(本分区中FAT表之前的扇区总数,通常FAT16为1,FAT32为20H或24H) FAT表个数(通常为2) FAT16系统为根目录最大项,FAT32系统为0 描 述
FAT系统簇号标记说明
fat32默认单元大小
fat32默认单元大小
FAT32文件系统是微软公司开发的一种经典的磁盘文件系统,它利用32位的文件分配表来管理和追踪文件和目录。
在FAT32文件系统中,默认的存储单元大小(簇大小)是4KB,即2的12次方字节。
这个簇大小是FAT32文件系统中的默认设置,但可以通过特定方法进行修改。
在FAT32文件系统中,每个簇都包含一个32位的文件分配表项,用于标记该簇是否已被分配给某个文件或目录。
当创建文件或目录时,它们会被分配一个或多个簇。
由于FAT32文件系统中的每个簇大小都是4KB,因此每个文件和目录的最小存储需求也是4KB。
需要注意的是,尽管FAT32文件系统允许修改簇大小,但在使用时需要谨慎对待。
在格式化分区并选择簇大小时,用户可以选择16KB、32KB、64KB等不同的值。
然而,需要小心的是,过小的簇大小可能会导致磁盘空间的浪费,因为即使文件小于簇大小,也会占据整个簇的空间。
而过大的簇大小可能会导致磁盘空间的浪费和性能下降,因为当文件大于簇大小时,会占据多个簇的空间,这会增加寻道时间和磁盘I/O负载。
因此,在设定簇大小时,需要综合考虑磁盘空间利用率和性能需求等因素。
FAT32文件格式示例解析
FAT32⽂件格式⽰例解析1.前⾔本⽂主要以⼀个⽰例来分析FAT32⽂件系统的格式,对FAT32⽂件系统的各个区域详细分析。
2.FAT32⽂件系统典型分区3.FAT32⽂件系统⽰例按如下步骤在ubuntu下创建FAT32⽂件系统:1.chenbo@chenbo-ThinkPad-R61:~$ cd /tmp/2.创建⽂件test.imgchenbo@chenbo-ThinkPad-R61:/tmp$ sudo dd if=/dev/zero of=test.img bs=512 count=80000 3.创建FAT32⽂件系统chenbo@chenbo-ThinkPad-R61:/tmp$ sudo mkfs.vfat -F 32 test.img4.将test.img挂载在/mntchenbo@chenbo-ThinkPad-R61:/tmp$ sudo mount test.img /mnt5.创建test1 test2 test3三个⽬录chenbo@chenbo-ThinkPad-R61:/mnt$ sudo mkdir test1 test2 test36.在test1下创建test1-1 test1-1-1⽬录chenbo@chenbo-ThinkPad-R61:/mnt$ cd test1chenbo@chenbo-ThinkPad-R61:/mnt/test1$ sudo mkdir test1-1chenbo@chenbo-ThinkPad-R61:/mnt/test1$ cd test1-1/chenbo@chenbo-ThinkPad-R61:/mnt/test1/test1-1$ sudo mkdir test1-1-17.创建hello.txt⽂件,写⼊内容,拷贝到test1/test1-1/test1-1-1下chenbo@chenbo-ThinkPad-R61:/tmp$ touch hello.txtchenbo@chenbo-ThinkPad-R61:/tmp$ echo you are my friend! > hello.txtchenbo@chenbo-ThinkPad-R61:/tmp$ sudo cp hello.txt /mnt/test1/test1-1/test1-1-1/8.执⾏完如上步骤后,通过hexdump查看⽂件系统内容chenbo@chenbo-ThinkPad-R61:/tmp$ sudo umount /mntchenbo@chenbo-ThinkPad-R61:/tmp$ hexdump -C test.img00000000 eb 58 90 6d 6b 66 73 2e 66 61 74 00 02 01 20 00 |.X.mkfs.fat... .| 00000010 02 00 00 00 00 f8 00 00 20 00 40 00 00 00 00 00 |........ .@.....| 00000020 80 38 01 00 68 02 00 00 00 00 00 00 02 00 00 00 |.8..h...........| 00000030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 80 00 29 80 73 bc 92 4e 4f 20 4e 41 4d 45 20 20 |..).s..NO NAME | 00000050 20 20 46 41 54 33 32 20 20 20 0e 1f be 77 7c ac | FAT32 ...w|.| 00000060 22 c0 74 0b 56 b4 0e bb 07 00 cd 10 5e eb f0 32 |".t.V.......^..2| 00000070 e4 cd 16 cd 19 eb fe 54 68 69 73 20 69 73 20 6e |.......This is n| 00000080 6f 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 64 69 |ot a bootable di| 00000090 73 6b 2e 20 20 50 6c 65 61 73 65 20 69 6e 73 65 |sk. Please inse| 000000a0 72 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 66 6c |rt a bootable fl| 000000b0 6f 70 70 79 20 61 6e 64 0d 0a 70 72 65 73 73 20 |oppy and..press | 000000c0 61 6e 79 20 6b 65 79 20 74 6f 20 74 72 79 20 61 |any key to try a| 000000d0 67 61 69 6e 20 2e 2e 2e 20 0d 0a 00 00 00 00 00 |gain ... .......| 000000e0 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 aa |..............U.| 00000200 52 52 61 41 00 00 00 00 00 00 00 00 00 00 00 00 |RRaA............| 00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*000003e0 00 00 00 00 72 72 41 61 89 33 01 00 08 00 00 00 |....rrAa.3......| 000003f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*00000c00 eb 58 90 6d 6b 66 73 2e 66 61 74 00 02 01 20 00 |.X.mkfs.fat... .| 00000c10 02 00 00 00 00 f8 00 00 20 00 40 00 00 00 00 00 |........ .@.....| 00000c20 80 38 01 00 68 02 00 00 00 00 00 00 02 00 00 00 |.8..h...........| 00000c30 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000c40 80 00 29 80 73 bc 92 4e 4f 20 4e 41 4d 45 20 20 |..).s..NO NAME | 00000c50 20 20 46 41 54 33 32 20 20 20 0e 1f be 77 7c ac | FAT32 ...w|.| 00000c60 22 c0 74 0b 56 b4 0e bb 07 00 cd 10 5e eb f0 32 |".t.V.......^..2| 00000c70 e4 cd 16 cd 19 eb fe 54 68 69 73 20 69 73 20 6e |.......This is n| 00000c80 6f 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 64 69 |ot a bootable di| 00000c90 73 6b 2e 20 20 50 6c 65 61 73 65 20 69 6e 73 65 |sk. Please inse| 00000ca0 72 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 66 6c |rt a bootable fl| 00000cb0 6f 70 70 79 20 61 6e 64 0d 0a 70 72 65 73 73 20 |oppy and..press | 00000cc0 61 6e 79 20 6b 65 79 20 74 6f 20 74 72 79 20 61 |any key to try a| 00000cd0 67 61 69 6e 20 2e 2e 2e 20 0d 0a 00 00 00 00 00 |gain ... .......| 00000ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*00000df0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*00004000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f ff ff ff 0f |................|00004010 ff ff ff 0f ff ff ff 0f ff ff ff 0f ff ff ff 0f |................|00004020 ff ff ff 0f 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00004030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*00051000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f ff ff ff 0f |................|00051010 ff ff ff 0f ff ff ff 0f ff ff ff 0f ff ff ff 0f |................|00051020 ff ff ff 0f 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00051030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0009e000 41 74 00 65 00 73 00 74 00 31 00 0f 00 2e 00 00 |At.e.s.t.1......| 0009e010 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................|0009e020 54 45 53 54 31 20 20 20 20 20 20 10 00 00 ba 23 |TEST1 ....#| 0009e030 4d 4c 4d 4c 00 00 ba 23 4d 4c 03 00 00 00 00 00 |MLML...#ML......| 0009e040 41 74 00 65 00 73 00 74 00 32 00 0f 00 9a 00 00 |At.e.s.t.2......| 0009e050 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................|0009e060 54 45 53 54 32 20 20 20 20 20 20 10 00 00 a1 23 |TEST2 ....#| 0009e070 4d 4c 4d 4c 00 00 a1 23 4d 4c 04 00 00 00 00 00 |MLML...#ML......| 0009e080 41 74 00 65 00 73 00 74 00 33 00 0f 00 76 00 00 |At.e.s.t.3...v..| 0009e090 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................|0009e0a0 54 45 53 54 33 20 20 20 20 20 20 10 00 00 a1 23 |TEST3 ....#| 0009e0b0 4d 4c 4d 4c 00 00 a1 23 4d 4c 05 00 00 00 00 00 |MLML...#ML......| 0009e0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0009e200 2e 20 20 20 20 20 20 20 20 20 20 10 00 00 a1 23 |. ....#|0009e210 4d 4c 4d 4c 00 00 a1 23 4d 4c 03 00 00 00 00 00 |MLML...#ML......| 0009e220 2e 2e 20 20 20 20 20 20 20 20 20 10 00 00 a1 23 |.. ....#|0009e230 4d 4c 4d 4c 00 00 a1 23 4d 4c 00 00 00 00 00 00 |MLML...#ML......| 0009e240 41 74 00 65 00 73 00 74 00 31 00 0f 00 a7 2d 00 |At.e.s.t.1....-.| 0009e250 31 00 00 00 ff ff ff ff ff ff 00 00 ff ff ff ff |1...............|0009e260 54 45 53 54 31 2d 31 20 20 20 20 10 00 64 c3 23 |TEST1-1 ..d.#| 0009e270 4d 4c 4d 4c 00 00 c3 23 4d 4c 06 00 00 00 00 00 |MLML...#ML......| 0009e280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0009e400 2e 20 20 20 20 20 20 20 20 20 20 10 00 00 a1 23 |. ....#|0009e410 4d 4c 4d 4c 00 00 a1 23 4d 4c 04 00 00 00 00 00 |MLML...#ML......| 0009e420 2e 2e 20 20 20 20 20 20 20 20 20 10 00 00 a1 23 |.. ....#|0009e430 4d 4c 4d 4c 00 00 a1 23 4d 4c 00 00 00 00 00 00 |MLML...#ML......| 0009e440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0009e600 2e 20 20 20 20 20 20 20 20 20 20 10 00 00 a1 23 |. ....#|0009e610 4d 4c 4d 4c 00 00 a1 23 4d 4c 05 00 00 00 00 00 |MLML...#ML......| 0009e620 2e 2e 20 20 20 20 20 20 20 20 20 10 00 00 a1 23 |.. ....#|0009e630 4d 4c 4d 4c 00 00 a1 23 4d 4c 00 00 00 00 00 00 |MLML...#ML......| 0009e640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0009e800 2e 20 20 20 20 20 20 20 20 20 20 10 00 00 ba 23 |. ....#|0009e810 4d 4c 4d 4c 00 00 ba 23 4d 4c 06 00 00 00 00 00 |MLML...#ML......| 0009e820 2e 2e 20 20 20 20 20 20 20 20 20 10 00 00 ba 23 |.. ....#|0009e830 4d 4c 4d 4c 00 00 ba 23 4d 4c 03 00 00 00 00 00 |MLML...#ML......| 0009e840 41 74 00 65 00 73 00 74 00 31 00 0f 00 0e 2d 00 |At.e.s.t.1....-.| 0009e850 31 00 2d 00 31 00 00 00 ff ff 00 00 ff ff ff ff |1.-.1...........|0009e860 54 45 53 54 31 2d 7e 31 20 20 20 10 00 64 45 24 |TEST1-~1 ..dE$| 0009e870 4d 4c 4d 4c 00 00 45 24 4d 4c 07 00 00 00 00 00 |MLML..E$ML......| 0009e880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0009ea00 2e 20 20 20 20 20 20 20 20 20 20 10 00 64 c3 23 |. ..d.#|0009ea10 4d 4c 4d 4c 00 00 c3 23 4d 4c 07 00 00 00 00 00 |MLML...#ML......| 0009ea20 2e 2e 20 20 20 20 20 20 20 20 20 10 00 64 c3 23 |.. ..d.#|0009ea30 4d 4c 4d 4c 00 00 c3 23 4d 4c 06 00 00 00 00 00 |MLML...#ML......| 0009ea40 41 68 00 65 00 6c 00 6c 00 6f 00 0f 00 f1 2e 00 |Ah.e.l.l.o......|0009ea50 74 00 78 00 74 00 00 00 ff ff 00 00 ff ff ff ff |t.x.t...........|0009ea60 48 45 4c 4c 4f 20 20 20 54 58 54 20 00 64 45 24 |HELLO TXT .dE$| 0009ea70 4d 4c 4d 4c 00 00 45 24 4d 4c 08 00 13 00 00 00 |MLML..E$ML......| 0009ea80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0009ec00 79 6f 75 20 61 72 65 20 6d 79 20 66 72 69 65 6e |you are my frien| 0009ec10 64 21 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 |d!..............|0009ec20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|*0271000044.⽰例解析对如上创建的⽂件系统进⾏解析如下。
读写U盘(FAT32)引导扇区
读写U盘(FAT32)引导扇区分类:操作系统2010-09-28 22:31 1109人阅读评论(2) 收藏举报看了《自己动手写操作系统》后,也想自己打造一个迷你操作系统,但是书中使用的软盘现在基本已经绝迹了,而U盘成为一种喜闻乐见的工具。
因此想将操作系统写入U盘中,而读写U盘的引导扇区成为成功的关键。
将U盘格式化为FAT32文件系统,要读写U盘的引导扇区,需要首先了解FAT32的格式。
它包含四个部分:保留扇区| FAT1 | FAT2 | 数据区。
需要注意的是:保留扇区的第一个扇区是引导扇区(DBR)。
其中引导扇区的数据结构为:数据区的开始为主目录区,主目录区包含了文件的熟悉,数据结构如下:根据每个文件起始的簇号,就可以找到文件内容的绝对扇区起始位置文件的簇号在FAT表中安装链表的形式存放,文件的属性在主目录区安装数组的形式存放。
文件内容的绝对扇区起始位置= 保留扇区+ FAT1 + FAT2 + (起始簇号-2)*每簇的扇区数然后编写引导程序,读入U盘引导扇区,选择从U盘启动,就可以看到自己打造的U盘操作系统了引导程序的汇编代码如下:view plaincopy to clipboardprint? 07c00h2.jmp short LABEL_START3.nop4.5.OEM db 'Dirichet' ;//8Bytes6.Bytes_per_sector dw 5127.Sectors_per_cluster db 88.Reserved_sectors dw 5849.Number_of_FATs db 210.R oot_entries dw 011.S ectors_small dw 012.M edia_descriptor db 0f8h13.S ectors_per_FAT_small dw 014.S ectors_per_track dw 6315.H eads dw 25516.H idden_sectors dd 6317.S ectors dd 390291318.19.S ectors_per_FAT dd 380420.E xtended_flags dw 021.V ersion dw 022.R oot_dir_1st_cluster dd 223.F SInfo_sector dw 124.B ackup_boot_sector dw 625.t imes 12 db 026.27.B IOS_drive db 80h28.d b 029.E xt_boot_signature db 29h30.V olume_serial_number dd 1532955831.V olume_label db 'Dirichlet09' ;//11个字节32.F ile_system db 'FAT32 ' ;//8个字节33.34.L ABEL_START:35.m ov ax,cs36.m ov ds,ax37.m ov es,ax38.c all DispStr39.j mp $40.41.D ispStr:42.m ov ax,BootMessage43.m ov bp,ax44.m ov cx,1545.m ov ax,01301h46.m ov bx,000ch47.m ov dl,048.i nt 10h49.50.B ootMessage: db 'hello, kitty!', 13, 10, '$'51.t imes 510-($-$$) db 052.d w 0xaa55Windows 7: Setting up a USB bootable device for installsJeffadudeJeffadudeMicrosoft AustraliaMSFT57,132Recent Achievements423New Blog RaterBlogs All-StarBlog Party StarterView Profile22 Apr 2009 6:26 AMComments7These days I install, re-install and install Windows 7 again and I wanted a quicker way of doing this without having to use a DVD all the time. Plus I wanted to be able to install x64 and x86 for both server and client. And I have a HP Mini 2140 on loan which of course does not have a DVD drive. So enter the humble USB key to solve this task.You will need at least a 4GB USB key to fit the entire contents of the Windows 7 DVD. In Australia you can pick these up for under $25 now so it’s not a huge outlay. We have a bunch in the office as part of apromotion so I have one for x86 and x64. So the next thing you are going to need to do is format this disk using DISKPART. Follow the steps below:1.Insert the Windows 7 DVD into the optical drive on your computer.2.Insert the USB drive and make sure you can see it in explorer.3.Run DISKPART –I’ll use screenshots to explain the rest of the steps.∙At a command prompt type DISKPART∙Now before you do anything else make sure you have inserted the USB drive and you can see it in explorer.Type LIST DISK to see a list of available disksType SELECT DISK 3 ( in my case it happens to be disk 3)Type CLEAN which will wipe the diskType CREATE PARTITION PRIMARYType SELECT PARTITION 1Type ACTIVE to make this partition the active partition.Type FORMAT FS=FAT32 (wait for it to get to 100% complete)Type ASSIGN so a drive letter gets assigned in explorer.Now you should have a USB disk ready for the Windows 7 source files. If you have the DVD load that into your DVD drive and copy the entire contents to the root of the USB drive. Once that is done you will have a bootable USB disk ready for you to build your machines much much faster with Windows 7.I find this a useful and quick way to get machine s build and it’s portable as well!Technorati Tags: Windows 7,Setup,USBJeffa。
(完整版)1.FAT32文件系统数据结构
FAT32文件系统结构
FAT32DBR的数据结构
偏移(16进制) 描述
00-02
转跳指令(EB5890)
03-0A
文件系统版本
0B-0C
每扇区字节数
0D
每簇扇区数
0E-0F
FAT表的起始扇区号
10
FAT表个数
偏移(16进制) 24-27 28-29 2A-2B 2C-2F 30-31 32-33
Winhex手工数据恢复之FAT32文件系统 FAT32文件系统结构
初识文件文件
• 文件系统就是对数据存储进行管理的一种机制
• 格式化的目的就是建立文件系统从而管理文件 • 我们平时看到的 NTFS、FAT32、ExFat的分区格
式都是文件系统,每种文件系统都有不同的管理 方式。 • NTFS、FAT32、Exfat文件系统的第一个扇区叫 DBR 系统引导扇区
重要概念
• 扇区:扇区是硬盘读写的基本单位,一般情况下 每扇区的大小是512字节。在硬盘中每个扇区都 有自己的编号,从零开始编号。
• 簇:文件系统中用簇来做数据存储的单位 FAT表:文件分配表( File Allocation Table)用
11-12 13-14 15 16-17 18-19 1A-1B 1C-1F
保留 保留 介质描述符 保留 每磁道扇区数 磁头数 隐含扇区(0到DBR的 扇区)
34-3F 40 41 42 43-46 47-51 52-59
描述 FAT表的大小 标记 版本 根目录所在的簇号 DBR的大小 DBR的备份扇区位 置 保留 BIOS设备 未使用 扩展引导标记 卷序列号 卷标 文件系统格式
来描述文件系统内存储单元的分配状态及文件内 容的前后链接关系的表格
FAT32文件系统详解
FAT32⽂件系统详解第⼋章FAT32⽂件系统详解Description:OS: Microsoft windows 7、Microsoft Professional xp sp3Software: winhex15.2 SR-10Hardware: Mega16、Kingston 2G sd cardAuthor: FGDTime: 200908088.1 Microsoft⽐尔·盖茨于2008年6⽉27⽇退休了,他在微软同事的⼼⽬中是⼀个什么形象呢?这个当属与他⼀起共同执掌了微软28年之久的CEO鲍尔默最有话语权了。
“他是⼀个⽐较内向的⼩伙⼦,不太爱说话,但浑⾝充满了活⼒,尤其是⼀到晚上就活跃起来。
当时的情况是,经常在我早上醒来时,他才准备睡觉。
”鲍尔默在最近接受《华尔街⽇报》采访时,如此形容⽐尔·盖茨。
鲍尔默说的对,也许只有活⼒才是成功的最关键因素,这是⽐尔·盖茨留给⼤家最好的礼物!1. Life is unfair, you want to adapt it.2. The world will not take your self-esteem, but for the self-satisfaction before you have success.3. Just returned from the school come out when you can not earn 60,000 U.S. dollars a month, but will not become any company vice president, also owned a car until you have won the hand of those that day.4. If you think school teachers is too harsh, then you have to think back to the boss.5. Selling hamburger and not detrimental to your dignity. Your grandparents had a different understanding to sell hamburger, they called it "opportunity".6. If you get into difficulties, it is not the fault of your parents, you should not be the responsibility onto others, and to learn to learn from it.7. Before you were born, your parents do not like so boring. They look into this today because these years have been for you to pay bills, to your laundry. So, in talking to parents, or whatever cleaning your own house?8. You may no longer host school hours and poor health themselves, but life is not the case. In some schools had not "fail" concept, the school will continue to give you the opportunity for you to progress, but real life is not like that.9. Unlike in the life out of school after a semester of the same school hours, nor that the summer. No boss to help you find some self-and you must rely on its own to complete.10. Many of the scenes on television is not real life. In real life, people must do their buried in his work, not like TV where my daily dwell in the case of coffee Lane.11. Treat your aversion to the people, because there days you will work for sucha person.8.2 先说说硬盘【笔者按:这部分知识基本是笔者对《数据重现》⼀书(作者:马林)读书笔记的整理,要了解详更详细的细节,可参考该书或求助互联⽹。
FAT16 FAT32结构
一:FAT16/FAT32数据组织结构FAT32 与FAT16 文件系统变化不大,文件系统仍然将逻辑盘的空间划分为DBR引导(BOOT 区)/文件分配表(FAT)根目录表(FDT)和数据区(DATA 区)但有以下的区别:1:FAT16 只有一个DBR 且只占用逻辑0 扇区,FAT32中的DBR 多了一个副本分别起始于逻辑0 扇区xx 柱0 头1 扇区和逻辑6 扇区xx 柱0 头7 扇区2:FAT32 在DBR 副本和FAT1 之间有保留扇区FAT16 没有保留扇区;3:FAT16 文件系统中的FAT1 从逻辑0 扇区yy 柱1头1扇区开始FAT32文件系统中的FAT1 从逻辑32 扇区yy 柱1 头33 扇区开始如下图分别所示:FAT16文件系统的数据组织结构数据区注释:DBR:从逻辑0扇区开始FAT1:从逻辑1扇区开始FAT32文件系统的数据组织结构数据区注释: DBR从逻辑0扇区开始DBR副本从逻辑6扇区开始FAT1从逻辑32扇区开始(win2000建立分区在36个扇区)20482938+36=20482974二:DBR在FAT中的结构DBR区(DOS BOOT RECORD):操作系统引导记录区的意思,通常占用分区的第0扇区共512个字节(特殊情况也要占用其它保留扇区,我们先说第0扇)。
在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOS Parameter Block),扩展BPB,OS引导程序,结束标志几部分组成。
以用的最多的FAT32为例说明分区DBR各字节的含义。
FAT32分区DBR中各部分位置表0x00 3个字节 跳转指令0x03 8个字节 厂商标志/OS版本号0x0B 53个字节 BPB0X40 26个字节 扩展BPB0X5A 420个字节 引导程序代码0X01FE 2个字节 有效结束标志FAT32 中的DBR有多个副本(根据分区多少而变化)而且从偏移量0BH 开始的BPB 参数及一些相关地址的表示方法也有区别下表所示:FAT16 和FAT32 文件系统中的DBR中相关地址参数分配表如下:0B~0CH2每个扇区的字节数每个扇区的字节数0DH1每簇的扇区数每簇的扇区数0E~0FH2保留扇区数保留扇区数10H1FAT个数FAT 个数11~12H2根目录登记项个数13~14H2磁盘总扇区数15H1磁介质类型说明符磁介质类型说明符16 17H2每个FAT 表的扇区数18 19H2每个磁道的扇区数每个磁道的扇区数1A 1BH2磁头的个数磁头的个数1C 1FH4当前分区前隐含扇区数当前分区前隐含扇区数20 23H4逻辑盘总扇区数24 25H2每个FAT 表的扇区数27 2AH 4FAT16 格式磁盘系列号2B 35H11FAT16 卷标名36 3AH5FAT16磁盘格式标志43 46H4FAT32格式磁盘系列号47 51H11FAT32 卷标名52 56H5FAT32磁盘格式标志三:保留扇区在上述FAT文件系统DBR的偏移0x0E处,用2个字节存储保留扇区的数目。
FAT32文件系统磁盘I/O参数
FAT32文件系统磁盘I/O参数揭密Windows 98操作系统引入了FAT32文件系统,它彻底解决了FAT16文件系统存在的诸多问题。
所谓FAT32文件系统实际上就是用32位数据来描述磁盘簇的分配,而传统的磁盘管理是用16个二进制位(2个字节)来描述一个簇。
从操作系统的结构上进行分析,可以知道FAT32文件系统并非仅仅简单地将FAT表转换成32位(即用4个字节来描述一个簇),而是带来了磁盘I/O参数、分区和FDT表及文件系统其它方面的变化。
为了彻底了解FAT32文件系统对磁盘I/O参数的修改,本文对FAT32文件系统的结构进行了深入分析,揭示了FAT32文件系统存储和管理文件的算法。
读懂FAT32文件系统的磁盘I/O参数,不但可以掌握直接访问磁盘文件的方法,而且可以在更高层次上发挥操作系统的功能。
FAT32文件系统对主引导扇区的改变主引导扇区是硬盘独有的一个磁盘控制数据存储区域,其首要功能是存储有关硬盘分区的数据,它通常位于硬盘的0磁头0柱面1扇区。
由于主引导扇区存放硬盘分区的有关数据,因此又称为分区扇区。
分区数据对硬盘是至关重要的,分区数据的丢失或破坏将导致硬盘上的逻辑磁盘不能被系统识别,当然也就无法访问磁盘上存储的文件和数据。
根据对FAT32文件系统主引导扇区的分析可知,FAT32文件系统的主引导扇区在保持与FAT16文件系统主引导扇区兼容的基础上,针对FAT32文件系统的特点作了适当扩展。
FAT32文件系统主引导扇区对分区表数据结构的扩展仅限于增加了3个标识32位分区的类型标志,这3个增加的分区类型标志分别为0BH、0CH和0EH,用于描述FAT32文件系统的三种分区情况。
对于扩展分区,则增加了一个类型标志0FH,表示Windows 98操作系统扩展分区。
类型标志为0BH表示分区是FAT32分区,最大分区容量可以达到2047GB;为0CH 表示的意义与0BH相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0EH 表示的意义与06H相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0FH 表示的意义与05H相同(扩展分区),但是同样对于INT 13H指令使用扩展的逻辑块地址方式。
FAT32文件系统简介
FAT32文件系统简介Windows95 OSR2和Windows 98开始支持FAT32 文件系统,它是对早期DOS的FAT16文件系统的增强,由于文件系统的核心--文件分配表FAT由16位扩充为32位,所以称为FAT32文件系统。
在一逻辑盘(硬盘的一分区)超过 512 兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。
本人对Windows 98下的FAT32 文件系统做了分析实验,总体上与FAT16文件系统变化不大,现将有关变化部分简介如下:(一)FAT32 文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。
引导区和文件分配表区又合称为系统区。
(二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。
之后还留有若干保留扇区。
而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。
(三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT 如此重要,保存两个以便第一个损坏时,还有第二个可用。
文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余的空间就不再使用,而是浪费掉了。
从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低。
因此,簇的大小决定了该盘数据区的利用率。
FAT16系统簇号用16位二进制数表示,从0002H到FFEFH个可用簇号(FFF0H到FFFFH另有定义,用来表示坏簇,文件结束簇等),允许每一逻辑盘的数据区最多不超过FFEDH(65518)个簇。
FAT32系统簇号改用32位二进制数表示,大致从00000002H到FFFFFEFFH个可用簇号。
FAT32FAT区__FAT表解析
FAT32FAT区__FAT表解析⼀、 FAT 表概述位置:紧跟在⽂件系统的“保留区”之后;有两个数据结构完全相同的FAT(FAT,File Allocation Tbale ⽂件分配表)组成。
作⽤:FAT表项,描述⽂件系统内的簇分配状态,说明⽂件系统内数据所分配的连续簇的顺序关系(即表明⽂件或⽬录的下⼀簇的序号)。
常规规则:· 数量:通常情况下⼀个FAT ⽂件系统会有两个FAT 表,但有时候也会允许只有⼀个FAT 表, FAT 表的具体个数记录在引导扇区的偏移0x10 字节处。
· 位置:因为FAT区位于⽂件系统的保留区之后,所以FAT1在⽂件系统中的位置可以通过引导记录中偏移0x0E~0x0F 字节处的“保留扇区”数得到。
· FAT2 紧跟在FAT1之后,它的位置可以通过FAT1的位置加上每个FAT 表的⼤⼩扇区数获得。
FAT 表中记录了每个⽂件的簇链结构; FAT 表中记录的与数据区簇对应的表项,从0号标记开始⾄当前数据区所分配的簇的最⼤数值,记录簇信息到FAT 项;但是注意:其中 0号~1号簇的值都是操作系统预先不留设定的特殊标记,⽽数据区的起始簇是2号簇。
⼆、、FAT 表的特性FAT 表由⼀些列⼤⼩相等的表项组成,有如下特性:· FAT32 中每个簇的状态,使⽤32bit(4字节)记录在FAT表中。
FAT 表中的所有字节位置以 4个字节为单位进⾏划分;并以所有划分后的位置由0进⾏地址编号。
“0号和 1号” 地址被系统保留并存储特殊标识内容。
从 2号地址开始,每个地址对应于数据区的簇号, FAT 表中的地址编号与数据区中的簇号相同。
称FAT 中的这些四字节⼀组划分的项的地址为 FAT 表项, FAT表项中记录的值为FAT 表项值。
(簇编号与簇内内容关系如果 Map中的键-值关系相同)当⽂件系统创建时(就是格式化操作时),分配给FAT 区域的空间将会被清空,在FAT1与FAT2 的0号和1号表项写⼊特定值。
FAT32
FAT32数据恢复报告――FAT32简介FAT(File Alocation Table)即文件分配表,以这种文件分配表方式访问的文件系统被称为FAT文件系统结构,相应的磁盘分区也被称为FAT文件分区格式。
FAT格式是微软公司最早支持的分区格式,它依据FAT表中每个簇链所占的位数分为FAT12,FAT16和FAT32三种格式。
系统将磁盘划分为一个一个大小相等的块,这个块就是簇。
簇的大小并不唯一,具体占多少个扇区是在系统对分区进行格式化时根据分区的大小、文件系统类型等对簇的大小进行初始化的。
但大多数情况下,FAT32中每簇占用4KB大小。
文件占用磁盘时,最小的单位不是字节而是簇,即使某个文件只有一个字节,操作系统也会为其分配一个簇的空间。
每个簇都有一个逻辑编号。
FAT32系统采用FAT簇的方式来实现,过程大致如下:FAT 区中被逻辑的划分出若干个FAT项,每个FAT项有一个逻辑编号,FAT32结构的分区中每个FAT项占用32位,这个编号对应了数据区中的若干个簇。
FAT1和FAT2是两个完全一样的FAT,系统同时建立两条完全一样的FAT链,这样做是为了当FAT1损坏时可以用FAT2进行恢复。
在FAT区后面是系统的根目录区,由若干目录项组成。
在根目录区后面是文件的数据区,这个区域中存放的是用户和系统建立的文件数据,这个区被逻辑的划分成了若干个大小相等的簇,以便管理。
(一)引导扇区结构硬盘的主引导扇区MBS是硬盘的第一个扇区,由其中存放的内容包括MBR、出错信息数据区、磁盘分区表DPT和结束标志字四个部分。
主引导程序的偏移地址是0000H~0088H,它主要负责从活动分区中转载并运行系统的引导程序。
出错信息数据区偏移地址是0089H~00E1H。
磁盘分区表DPT含有4个分区项,它的偏移地址是01BEH~01FDH,每个分区表项长16个字节,共64字节。
结束标志是偏移地址为01FEH~01FFH的两个字节,结束标志是55AAH。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 系统引导扇区