FAT32文件系统的存储组织结构

合集下载

FAT32文件系统结构研究

FAT32文件系统结构研究

收稿日期:2000-07-22作者简介:邓 波(19622),男,副教授FAT32文件系统结构研究邓 波(四川经济管理学院信息及计算机系,四川成都610041) 摘要:Windows98操作系统引入了FAT 32文件系统,它解决了FAT 16文件系统存在的诸多问题.但有关FAT 32文件系统技术实质的文章尚未见诸报端.对FAT 32文件系统的结构和技术实质进行了详细分析,揭示了FAT 32文件系统存储和管理文件的算法.掌握FAT 32文件系统的内部结构,可以使读者在更高层次上发挥操作系统的功能.关键词:文件分配表;文件目录表;文件系统;操作系统中图分类号:TP333 文献标识码:A 文章编号:100128395(2000)06206652051 概述FAT32文件系统实际上就是用32位数据来描述磁盘簇的分配,而传统的磁盘管理是用16个二进制位(2个字节)来描述一个簇.从操作系统的结构上进行分析,可以知道FAT32文件系统并非仅仅简单地将FAT 表转换成32位(即用4个字节来描述一个簇),而是带来了分区和FDT 表及文件系统其它方面的巨大变化.为了彻底了解FAT32文件系统对操作系统的哪些方面进行了改变,本文对FAT32文件系统的完整结构进行了深入分析,其中包括对构成FAT32文件系统的主引导扇区(分区扇区)、分区引导扇区、FA T 和FDT 表4个组件的分析.FAT32文件系统是Windows98操作系统为改善磁盘管理而推出的一项新的文件管理系统.由于它抛弃了与MS 2D0S 操作系统传统的FAT16文件系统的兼容性,采用了一些新的系统管理技术,所以更加适用于微机当前环境下新的硬件机制,必将给文件系统的管理带来新的活力和新的性能.通过理论分析可以知道,FAT32文件系统具有以下特点[1]:(1)FAT32文件系统支持更大的磁盘分区,最大可以支持2048G B 的分区和逻辑磁盘.如此大容量的分区不但可以满足个人计算机的需要,而且可以满足网络服务器对分区大小的需要.(2)FAT32文件系统使用32位数据来描述簇,对于一个2G B 大小的硬盘来讲,理论上每个簇的大小可以是1个扇区(在FAT16文件系统中是64个扇区).按较小的簇空间来进行分配,将大大减少磁盘空间的浪费.当然为了在节约磁盘空间的情况下不降低系统性能,系统实际使用每个簇为4K B 的存储空间分配方案.当磁盘容量超过8G B 时,每个簇为6K B.使用4K B 的簇将使磁盘空间的利用率提高约15%.(3)FAT32文件系统采用浮动的FDT 表,即FDT 表不是固定在磁盘的控制区,而是可以在磁盘中浮动,并且可以根据根目录存储的文件数量调整其长度.(4)FAT32文件系统可以使用FAT 表的备份(FAT16文件系统中也有两份完全相同互为备份的FAT 表,但操作系统一般不使用第2份FAT 表)来校正和检查FAT 表,从而降低了系统文件丢失的可能性.FAT32文件系统虽然带来了诸多好处,但也存在诸如不支持MS 2D0S 操作系统、不支持双操作系统的引导环境、不支持磁盘的休眠模式等诸多缺点.但这些缺点属于白壁微瑕,随着大容量硬盘的日益普及,使用FAT32文件系统将是大势所趋.2 对FAT32文件系统主引导扇区的分析主引导扇区是硬盘独有的一个磁盘控制数据存储区域,通常位于硬盘的0磁头0柱面1扇区.由于主引导扇区存放硬盘分区的有关数据,因此又称为分区扇区.在使用FAT32文件系统后磁盘的主引导扇区有什么变化呢?2.1 主引导扇区的传统功能与作用 通过对硬盘 2000年11月 第23卷 第6期四川师范大学学报(自然科学版)Journal of S ichuan N ormal University (Natural Science )N ov.,2000 V ol.23,N o.6 主引导扇区程序的分析,主引导扇区存储的数据主要由以下3个部分构成[2]:(1)引导系统启动的程序代码;(2)硬盘的分区数据;(3)主引导扇区的有效标志.主引导扇区的首要功能是存储有关硬盘分区的数据,这些分区数据对硬盘是至关重要的.分区数据的丢失或破坏将导致硬盘上的逻辑磁盘不能被系统识别,当然也就无法访问磁盘上存储的文件和数据.2.2 FAT32文件系统对主引导扇区的改变 根据对FAT32文件系统主引导扇区的分析可知,FAT32文件系统的主引导扇区在保持与FAT16文件系统主引导扇区兼容的的基础上,针对FAT32文件系统的特点作了适当的扩展.FAT32文件系统主引导扇区对分区表数据结构的扩展仅限于增加的3个标识32位分区的分区类型标志,这3个增加的分区类型标志分别为OBH、OCH和OEH,用于描述FAT32文件系统的3种分区情况.对于扩展分区,则增加了一个类型标识OFH,表示Windows98操作系统扩展分区.类型标志为OBH表示分区是FAT32分区,最大分区容量可以达到2047G B;OCH表示的意义与OBH相同,但是对于I NT13H指令使用扩展的逻辑地址(LBA)方式;OEH表示的意义与06H相同,但是对于I NT13H指令使用扩展的逻辑地址(LBA)方式;OFH 表示的意义与05H相同(扩展分区),但是同样对于I NT13H指令使用扩展的逻辑块地址方式.使用扩展的逻辑块地址方式是为了支持容量超过8G B的大容量硬盘.由于文件系统转化为FAT32后,分区的类型标志变化为OBH、OCH和OEH,这些新的类型标志是原来FAT16文件系统所不能识别的,所以当用户使用MS2DOS操作系统的软盘启动系统后,机器不能识别硬盘的分区数据,当然也不能对硬盘的数据以文件为单位进行访问.3 对FAT32文件系统分区引导扇区的分析分区引导扇区用于启动存放在系统分区内的操作系统,每一个分区,实际上是每一个逻辑磁盘都包括一个引导扇区.分区引导扇区通常驻留在分区的第1个扇区———逻辑0扇区处.3.1 FAT16文件系统的分区引导扇区 FAT16文件系统分区引导扇区是由引导系统启动的程序代码、逻辑磁盘参数和分区引导扇区有效标志3个部分构成.在分区引导扇区中最重要的部分是逻辑磁盘读写(称为I/O)参数,引导系统启动的程序代码将使用这些参数来访问存储在磁盘上各文件的数据.I/O参数从扇区偏移地址O3H开始存放,共有18个数据项,占用58个字节(从扇区偏移地址03H 到3DH).3.2 FAT32文件系统的分区引导扇区 在Win2 dows98操作系统中,当文件系统从FAT16转化为FAT32后,分区引导扇区的功能和作用并没有改变,但是考虑到FAT32文件系统的特性和为了解决FAT16文件系统存在的问题,操作系统对FAT32文件系统的分区引导扇区进行了扩展.3.2.1 分区引导扇区所占的扇区数从1个扇区扩展为6个扇区 分区扇区的核心功能是通过磁盘读写参数加载启动操作系统的文件,为了使加载文件的操作更加灵活,加上FAT32文件系统采用“活动”的FDT表,需要对分区引导扇区的引导程序代码进行重新的设计.同时考虑到引导程序的代码量和为今后发展保留适量的余量,FAT32文件系统将分区引导扇区所占的扇区数从1个扇区扩展为6个扇区.当前版本的Windows98使用了前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用.3.2.2 采用双重分区引导扇区 根据对分区引导扇区功能和作用的研究,我们知道分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用.引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写.由于分区引导扇区的重要性,FAT32文件系统借鉴系统处理FAT表的经验,在磁盘保留了两份分区引导扇区,并且在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统.由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小.3.2.3 根据FAT32文件系统的特点对磁盘读写参数作了进一步的扩展 FAT32文件系统的磁盘读写参数在部分保持与FAT16文件系统磁盘读写参666 四川师范大学学报(自然科学版)23卷数兼容的基础上,为了适应FAT32文件系统的需要,对磁盘读写参数作了适当的扩展,所使用的字节数也从FAT16文件系统的58个字节扩展为87个字节.FAT32文件系统的磁盘读写参数占用扇区偏移地址03H至59H的存储空间,各参数的含义如表1所示.表1 FAT32文件系统磁盘读写参数编号起始偏移地址占字节数意 义103H8操作系统的版本号20BH2每个扇区的字节数30DH1每簇扇区数40EH2为操作系统保留的扇区数510H1FAT表的个数611H2FAT16中存放系统根目录中允许登记的目录项个数, FAT32中用于标注系统采用的是否为FAT32文件系统,其值为0000H表示磁盘使用FAT32文件系统713H2值为00H,为保持兼容性而保留,未使用815H1磁盘介质标志,硬盘为F8H9162未使用,值为00H1018H2每个磁道的扇区数111AH2磁盘的磁头个数121CH4分区前隐藏扇区的个数1320H4逻辑磁盘中的扇区总数1424H4每个FAT表所占的扇区数1528H2FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表162AH2文件系统的主次版本(保留)172CH4磁盘根目录的起始簇号1830H2文件系统参数的扇区号,通常位于引导扇区的下一个扇区1932H2备份分区引导扇区的逻辑扇区号2034H12保留,未使用2140H2磁盘的物理驱动器号2242H1磁盘读写参数扩展标志,其值为29H2343H4磁盘卷的序列号2447H11磁盘卷标号2552H8文件系统的标识号(FAT32)4 对FAT32文件系统FAT表的分析FAT表是一张磁盘空间分配情况登记表,它以簇号的方式记录了簇的分配情况.在FAT16文件系统中,通常用2个字节来标记簇号分配的链表.对于FAT32文件系统来讲,其核心的改变就是使用4个字节来标记簇号分配的链表.FAT32文件系统的命名就源自系统采用32位的FAT表结构,但是FAT表的变化反而不如其它磁盘控制区域数据的变化大.除了采用32位4个字节作为一个簇的记录项和标记项等参数略有改变外,FAT表中没有任何其它变化.根据FAT32文件系统的特点,32位的FAT表中以下数据发生了变化.4.1 保留簇的改变 在FAT16文件系统中,FAT 表中前4个字节为保留值,其中第1个字节作为磁盘的标志.采用4个字节作为保留值的理论依据来源于系统将编号为0和1的两个簇作为保留,文件数据区从第2个簇开始,故根据簇号链的计算公式766第6期邓 波:FAT32文件系统结构研究 (簇号入口地址=簇号×2),FAT表的前4个字节就设计为保留值.使用与FAT16文件系统相同的原理,32位FAT 表也将0簇和1簇作为保留簇,故FAT表的前8个字节为保留值,其中第1个字节仍然作为磁盘标记.同时,为了满足特殊文件系统的要求,FAT32文件系统将第2个簇也同时作为保留簇,用于记录FDT表的空间分配簇链登记项.4.2 登记项的改变 32位的FAT表用“00000000”项表示对应的簇号未分配;用“0FFFFFF8H”至“0FFFFFFFH”表示对应的簇是文件分配的最后一簇;而“FFFFFFF7H”则表示已损坏不能分配的簇.由于FAT表中登记项的32位值中高4位为保留(总是0),故理论上FAT32文件系统可以表示的最大簇号为268435450(228),即用于实际描述簇号的位数为28位,用前述公式读者不难计算出FAT32文件系统可以表示的最大磁盘空间.5 对FAT32文件系统FDT表的深入分析FDT表的作用是记录文件的主名、扩展名、日期、属性、起始簇号和长度等信息,从记录的内容来看,除了文件的起始簇号外,其它参数没有任何变化.另外,从文件系统的结构来看.FDT表本身将从磁盘控制区域内的固定位置变化为磁盘数据区中的浮动空间位置,以解决磁盘根目录文件数量受到FDT表空间限制的问题.因此,下面我们重点对浮动的FDT表和目录登记项中的起始簇号参数进行讨论.5.1 浮动的FDT表 在FAT16文件系统中,记录根目录文件参数的FDT表位于磁盘上FAT表和文件数据存储区之间的固位置中,通常为32个或38个扇区,可以记录512个或608个文件的数据.由于存放根目录文件FDT表的空间是固定的,因此根目录上存储的文件或文件夹的数量是有限的.对于各子目录下的FDT表,操作系统采用文件管理的方式管理FDT表,即使用FAT表来管理各子目录下FDT 表所需要的存储空间,当子目录下的文件数量超出当前FDT表允许的登记项的数量时,操作系统为FDT表再分配一个簇,用于存储目录项参数,并同时在系统FAT表中登记上FDT表的分配簇链.所以,从理论上讲,子目录下存放的文件除了受到磁盘空间的限制外,不受其它任何条件的限制.FAT32文件系统为了解决根目录FDT表空间受到限制的问题,借鉴了子目录下FDT表的经验,将根目录FDT表也以文件的形式来管理,从而形成浮动的根目录FDT表.浮动FDT表的结构实际上是固定部分和动态部分的有机结合,其中固定部分通常为1个簇.在FAT32文件系统中,1个簇通常由8个扇区4K B的存储空间构成,所以固定部分可以记录的最大目录项数为128个.当然由于受Windows98长文件名附加目录项的影响实际允许记录的文件目录项将大大低于理论上的128个,但这部分固定的FAT表空间确实可以满足基本的系统需要.根目录FDT表的固定部分同FAT16文件系统一样,仍然位于最后一个FAT表的后面与数据存储空间之间的磁盘存储区域中. 在磁盘格式化时格式化程序将自动创建固定部分的FDT表,如果系统是从FAT16文件系统转换为FAT32文件系统,由于原来的FDT表已经位于该位置,所以FDT表的固定部分也将优先建立在紧接FAT表的位置.浮动FDT表主要体现在其动态部分,即当根目录上存储的文件超过固定部分所能记录的数量后,操作系统将为根目录的FDT表增加1个簇或多个簇的存储空间,这部分新增加的存储空间不在原来固定部分的后面(那一部分存储空间早已分配给其它文件了),而是磁盘数据存储区域中的任意一个未使用的存储空间.同时系统在FAT表的第3项(扇区偏移地址08H)处记录了动态部分第一个簇的簇号,动态部分其它簇的簇号则由操作系统根据FAT表的簇链登记准则进行相应的登记.由于动态部分实际上已经是一个可以按FAT簇链进行访问的文件,因此从理论上分析,根目录FDT表中允许登记的项数也就除了受磁盘空间限制外,没有其它的任何限制了.但是,为了避免由于根目录中登记项太多造成系统文件访问性能的下降(文件管理系统必须通过FAT表查找整个FDT表的存储空间), Windows98操作系统规定根目录中的文件登记项数不能超过65535个,也就是根目录FDT表的存储空间不超过4096个扇区.另外,值得特别关注的是,在分区引导扇区的磁盘读写参数表中也同时存储了FDT表在FAT表中起始簇号的位置(参见表1中的第17项),因此866 四川师范大学学报(自然科学版)23卷操作系统完全可以改变FDT 表的位置,不使用FDT表的固定部分.5.2 32位的文件存储空间起始簇号 FDT 表中另一个重要的参数是文件的起始簇号.在操作系统访问文件的数据时,将通过FDT 表中存储的文件起始簇号计算出文件后续存储空间在FAT 表中的偏移地址,并通过FAT 表按顺序计算出存储文件数据的所有簇,然后才能对文件的数据进行读写操作.Windows98操作系统中实际采用的是一套折衷解决办法,即在FDT 表的32字节目录项中寻找未使用的空间作为4个字节起始簇号的高16位,而将原有的2个字节起始簇号作为新的起始簇号的低16位,两者组合构成32位的起始簇号.这种在现有存储空间中寻找补充字节方案的优点在于完全保持了与原有文件系统的兼容性,操作系统内核和文件系统不必做大的改变,也不必增加系统的资源开销.其缺点是文件的起始簇号没有在连续的字节空间中存放,而是分隔在两处,使用户不易理解,同时也不可能解决FDT 表固有的问题和不能给FDT 表融入新的特性.从Windows98操作系统FDT 表的结构来看,每个32字节的目录项中只有1处还有两个连续的字节空间尚未使用,这两个字节就是目录项中的第21和第22字节,即位于记录文件修改日期和时间前面的2个字节.FAT32文件系统就使用了这两个字节作为文件起始簇号的高16位,它们与原有的起始簇号(位于第27和第28字节)一起组合成32字节的文件起始簇号.6 总结根据本文对FAT32文件系统内部结构的分析可以知道,FAT32文件系统对传统的FAT16文件系统进行了较为彻底地改造,除了通过减少每簇的容量降低了大容量磁盘存储空间的浪费外,同时也自动解决了FAT16文件系统对根目录512个文件记录项的限制,其优点是非常明显的.另外,由于系统可以使用的簇号资源增加,也自然解决了操作系统对大容量硬盘的支持问题.虽然FAT32文件系统不支持传统的MS 2DOS 操作系统,但在Windows98操作系统占绝对优势的今天,这个小小缺陷不可能阻碍FAT32文件系统的普及.可以预计,随着大容量硬盘的不断降价,FAT32文件系统必将成为主流的文件系统.因此,本文所分析的FAT32文件系统的内部结构,不但可以使用户理解FAT32文件系统的实现机理,而且对高层次的用户开发直接访问F A T32文件系统数据的软件也具有非常重要的意义.参考文献[1] [美]Jim B ,K yle B.Windows95高级适用指南[M].北京:清华大学出版社,1996.[2] 张载鸿.DOS 高级技术分析[M].北京:国防工业出版社,1998.Investigation of FAT32File System StructureDE NG Bo(Department o f Information and Computer ,Sichuan Economic Management Institute ,Chengdu 610041,Sichuan )Abstract :The windows98operating system has used FAT 32file system.The new file system has s olved many problems of traditional FAT 16file system.N o article about file system structure of FAT 32has been reported.This paper analyzed file system structure and technology essence in detail ,and revealed alg orithm of storage ,and management files in FAT 32.K ey w ords :FAT;FDT;File system ;Operating system(编辑 李德华)966第6期邓 波:FAT 32文件系统结构研究 。

FAT32文件系统详细介绍

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),其中盘片和磁头密封在无尘的金属壳中。

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

详解FAT32文件系统

详解FAT32文件系统

详解FAT32⽂件系统详解FAT32⽂件系统硬盘是⽤来存储数据的,为了使⽤和管理⽅便,这些数据以⽂件的形式存储在硬盘上。

任何操作系统都有⾃⼰的⽂件管理系统,不同的⽂件系统⼜有各⾃不同的逻辑组织⽅式。

例如:常见的⽂件系统有FAT,NTFS,EXT,UFS,HFS+等等。

下⾯就来学习⼀下基于Windows的FAT32⽂件系统。

FAT32⽂件系统由DBR及其保留扇区,FAT1,FAT2和DATA四个部分组成,其机构如下图:这些结构是在分区被格式化时创建出来的,含义解释如下:DBR及其保留扇区:DBR的含义是DOS引导记录,也称为操作系统引导记录,在DBR之后往往会有⼀些保留扇区。

FAT1:FAT的含义是⽂件分配表,FAT32⼀般有两份FAT,FAT1是第⼀份,也是主FAT。

FAT2:FAT2是FAT32的第⼆份⽂件分配表,也是FAT1的备份。

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

⼀、分析FAT32⽂件系统的DBRFAT32⽂件系统的DBR有5部分组成,分别为跳转指令,OEM代号,BPB,引导程序和结束标志。

如下图是我U 盘上⼀个完整的FAT32⽂件系统的DBR。

E8 58 90 :(跳转指令) 本⾝占2字节它将程序执⾏流程跳转到引导程序处。

“EB 58 90″清楚地指明了OS引导代码的偏移位置。

jump 58H加上跳转指令所需的位移量,即开始于0x5A。

4D 53 57 49 4E 34 2E 31 :(OEM代号) 这部分占8字节,其内容由创建该⽂件系统的OEM⼚商具体安排。

跳转指令之后是8字节长的OEM ID,它是⼀个字符串, OEM ID标识了格式化该分区的操作系统的名称和版本号。

为了保留与MS-DOS的兼容性,通常Windows 2000格式化该盘是在FAT16和FAT32磁盘上的该字段中记录了“MSDOS 5.0”,在NTFS磁盘上(关于ntfs,另述),Windows 2000记录的是“NTFS”。

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文件系统的存储机制及其在单片机上的实现(于振南)

_No; //装入第一个 FAT 表扇区号到 FirstFATSector 中
arg->RootDirCount
=lb2bb((bpb->BPB_RootEntCnt) ,2);
//装入根目录项数到 RootDirCount 中
arg->RootDirSectors
=(arg->RootDirCount)*32>>9;
这就是大端模式与小端模式在作怪。上面我们合成 int 型变量的方法(00 为 高字节,02 为低字节)为小端模式。而如果我们改用大端模式来进行合成的话,
结果就会不同:将 02 作高字节,而把 00 作低字节,变量值就成了 0x0200(十进 制的 512),这样就和实际数据吻合了。可见 FAT32 中字节的排布是采用小端模式 的。在我们程序中需要将它转为大端模式的表达方式。在笔者的程序有这样一个
offset:19
unsigned char BPB_Media[1];
//存储介质
offset:21
unsigned char BPB_FATSz16[2]; //FAT32 为 0
offset:22
unsigned char BPB_SecPerTrk[2]; //磁道扇区数
offset:24
unsigned char BPB_NumHeads[2]; //磁头数
offset: 0
unsigned char BS_OEMName[8]; //
offset: 3
unsigned char BPB_BytesPerSec[2];//每扇区字节数
offset:11
unsigned char BPB_SecPerClus[1]; //每簇扇区数

读FAT32中的文件

读FAT32中的文件

读FAT32中的文件1.引言FAT32文件系统是微软比较成功的一个文件系统,虽然现在有被NFS代替的趋势,但由于广泛的认知性及易实现性,在嵌入式、便携产品上还广泛适用(几乎所有的基于windows 平台上的都是FAT32)。

FAT32文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。

引导区和文件分配表区又合称为系统区。

FA T32 文件系统DBR(引导扇区),FAT,FDT,DATA这四个基本结构:1.DBR:DBR记录了当前FA T32 磁盘的一些基本信息,在通常情况下,DBR位于磁盘分区的0号逻辑扇区在附件中有幅DBR的图形信息,里面详细说明了在DBR中我们能获取到哪些主要信息,当然,还有很多信息希望读者自己去查阅详2 FDT:FDT区简单的说就是记录的目录(文件夹)的信息,里面记录了当前目录下所有的文件(包括当前目录下的文件夹名)的信息,说通俗一点就是记录了当前目录下的所有文件的文件名,我们定位文件,必须要定位到该文件所在目录的FDT区的位置。

3 FA T:FA T区在FA T32文件系统中有2个:FA T1与FA T2,FA T2是FA T1的备份,所以我们只需要获取FA T1的位置,FA T区所在的扇区号我们可以由DBR获取,那FA T区究竟是什么呢?首先,我们知道磁盘是由扇区组成的,若干的扇区组成一簇,当一个目录的FDT 区需要占据多个簇的时候,FA T区记录了多个簇的连接信息,具体可以详细去查阅有关资料。

4 DA TA:DA TA区是由FDT区定位的,上面说过FDT区记录了某个目录下文件的信息,若这个信息记录的是文件而非文件夹(目录),则这个信息的一部分记录了这个文件的DA TA 区的位置,顾名思义,DA TA区储存了文件的内容,当一个簇无法记录一个完整的文件内容时,就要用到FA T区进行簇连。

2.提出问题2.1FA T32文件系统的结构,主引导记录(MBR)、引导扇区、FA T表、FDT表的结构。

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分区结构
1. 搜寻FAT和数据区的起始位置。 2. 根据得到的数据算出每FAT占用扇区数。 3. 将保留扇区数、每FAT占用扇区数、每簇占用扇区数写
入到BPB中对应的位置。 4. 检查分区访问是否正常。
总结
1.FAT32分区的组成结构 2.引导扇区中的重要BPB参数 3.计算数据区起始扇区位置
二、分析引导扇区
跳转指令,跳至 引导程序处 BPB记录了该分 区的参数信息
DBR负责执行系统 引导功能
引导扇区结束标志 55H AAH
二、分析引导扇区
偏移 0H 3H 0BH 0DH 0EH 10H 11H 13H 15H 16H 18H 1AH 1CH 20H 24H 28H 长度 3B 8B 2B 1B 2B 1B 2B 2B 1B 2B 2B 2B 4B 4B 4B 2B 描 述 跳转指令,跳至后面引导记录开始处(FAT32从5AH处开始) 文件系统和版本的OEM标志(MSDOS 5.0或MSWIN4.1) 每扇区字节数(通常为200H) 每簇扇区数(值为2的N次方,通常小于64)* 保留扇区数(本分区中FAT表之前的扇区总数,通常FAT16为1,FAT32为20H或24H)* FAT表个数(通常为2) FAT16系统为根目录最大项,FAT32系统为0 小卷(<32MB)的分区扇区总数,大硬盘为0 介质描述,恒为F8 在小卷中为每FAT占用扇区数,大硬盘为0 每磁道扇区数(通常为3FH,63) 磁头数(通常为FFH,255) 隐含扇区数(本分区前的扇区总数,也就是本分区的起始逻辑扇区号) 大卷的本分区占用扇区数* 大卷的每FAT占用扇区数* 延迟标记(通常为0)
二、分析引导扇区
引导扇区,也称DBR扇区,它由BPB(BIOS参数 块)、DBR(磁盘引导记录)、以及引导扇区结束 标志(55 AA)组成。 BPB中记录了该分区的各项参数信息,因此至关重 要,如果BPB部分被破坏,此分区将不可用。 DBR在安装系统的时候写入,这是一段系统引导代 码,如果这部分缺失或被破坏,则该分区不可用 于启动系统。 引导扇区结束标志用于引导程序判断该扇区是否 为引导扇区。

FAT32存储原理.

FAT32存储原理.

★FAT32存储原理:图4.3.13 Fat32的组织形式1扇区31个扇区实际情况取大小同F AT1第2簇不足一簇保留扇区┗━━━━━━━━数据区━━━━━━━━┛(这和FAT16是不同的,FAT16的根目录并不占簇区空间,32个扇区的根目录以后才是簇区第1个簇)FAT32的文件寻址方法与FAT16相同,但目录项的各字节参数意义却与FAT16有所不同,一方面它启用了FAT16中的目录项保留字段,同时又完全支持长文件名了。

* 此字段在短文件目录项中不可取值0FH,如果设值为0FH,目录段为长文件名目录段说明:(1)、这是FAT32短文件格式目录项的意义。

其中文件名、扩展名、时间、日期的算法和FAT16时相同的。

(2)、由于FAT32可寻址的簇号到了32位二进制数。

所以系统在记录文件(文件夹)开始簇地址的时候也需要32位来记录,FAT32启用目录项偏移0x12~0x13来表示起始簇号的高16位。

(3)、文件长度依然用4个字节表示,这说明FAT32依然只支持小于4GB 的文件(目录),超过4GB的文件(目录),系统会截断处理。

FAT32的一个重要的特点是完全支持长文件名。

长文件名依然是记录在目录项中的。

为了低版本的OS或程序能正确读取长文件名文件,系统自动为所有长文件名文件创建了一个对应的短文件名,使对应数据既可以用长文件名寻址,也可以用短文件名寻址。

不支持长文件名的OS或程序会忽略它认为不合法的长文件名字段,而支持长文件名的OS或程序则会以长文件名为显式项来记录和编辑,并隐藏起短文件名。

当创建一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:(1)、取长文件名的前6个字符加上"~1"形成短文件名,扩展名不变。

(2)、如果已存在这个文件名,则符号"~"后的数字递增,直到5。

(3)、如果文件名中"~"后面的数字达到5,则短文件名只使用长文件名的前两个字母。

FAT32文件系统基本结构

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引导程序,结束标志几部分组成。

解读FAT32文件系统(二)

解读FAT32文件系统(二)

解读FAT32文件系统(二)接着我们来看看FAT32文件系统特有的长文件名。

结构如下图:为研究方便,先在我的1G的u盘建一个长文件名的文本文件。

如图:文本文件的内容还是:0123456789十个字节,简单明了。

然后用Winhex打开我们的u盘看看根目录区有什么奇迹出现了。

如下图:这样4组32字节数据才表示了一个文件名,是不是很复杂了。

每一个32字节的数据就叫这个文件的子目录项。

按照Microsoft的白皮书,我们来看看这些数字的含义。

与短文件名中文件名的编码不同,长文件名文件的文件名采用的是Unicode 编码,这样一个32字节的目录项里可以存13个字节的文件名字符。

看上图,在字节地址0x001f5480到0x001f5490这32个字节子目录项里,只存了abcdefghijklm这13个字符。

刚好是我建的26个字符文件名的一半。

那放不下的文件名字符就安排在下一个32个字节里面。

于是我们可以在0x001f5460到0x001f5470可以看到nopqrstuvwxyz。

文件的扩展名即txt安排在0x001f5440到0x001f5450。

大家发现没有,按字节地址顺序从0x001f5440到0x001f5490,文件名的排列顺序是txt_nopqrstuvwxyz_abcdefghijklm(注意:为了方便大家看,我加了红色标识的下划线,实际存放中不存在)。

这就是书上说的长文件名按倒序来排列文件名字。

这种排列方式符合小端格式原则,即高字节地址存放高为字节。

既然安排文件名是有前后顺序的。

这样长文件名目录项的开头一个字节专门放这个排列顺序。

看图:我标了红圈圈的位置,这个就是长文件名子目录项排列顺序的编号。

按递推的关系存文件扩展名的0x001f5440到0x001f5450应该是0x03打头才对,我们看到的却是0x43。

这是一个规定就是长文件名子目录项最后一组32字节的顺序是本组数据序号(这里是0x03)和0x40(这个40是长文件名专有)做个与运算的结果,0x03|0x40就是我们看到的0x43了。

FAT32文件系统结构

FAT32文件系统结构

浅析FAT32文件系统结构【摘要】fat32文件系统是windows系列操作系统中最常用的文件系统之一。

为了彻底了解fat32文件系统,本文将对fat32文件系统的存储结构进行分析,让大家对fat32的存储原理及数据恢复有所了解。

【关键词】存储结构;mbr;dbr;fat;fdt数据恢复技术是指将硬盘上由于病毒、误删除、以及其它各种原因导致数据丢失的数据还原的技术,恢复它本来的“面目”。

这需要对存储结构有一定了解才能操作。

1、 fat32存储结构硬盘在fat32文件系统管理下,其数据信息由磁盘主引导记录mbr、dos引导记录dbr、文件分配表fat、文件目录表fdt及用户数据区五部分组成。

磁盘的排列如图所示:其中,mbr占用63个扇区(实际只使用一个扇区),dbr占用了32个扇区(实际只使用第1扇区和第6扇区,第6扇区是第1扇区的备份),fat的长度是可以改变的,其随着分区大小,每簇扇区数的变化而变化,dir属于data区的一部分,采用和子目录一样的方式来管理。

1.1 mbr(masterbootrecord)mbr即硬盘主引导记录,位于整个硬盘的0柱面0磁头1扇区,一共占用63个扇区,实际它只使用一个扇区。

其主要作用是:检查硬盘分区表是否完好;在分区表中寻找可引导的活动分区;并将活动分区的第一逻辑扇区(dbr)装入内存中加以运行,mbr由主引导程序、硬盘分区表dpt、有效结束标志(55aa)三部分组成。

(1)引导程序:引导程序占用第一扇区446个字节。

它的功能是检查分区表是否正确以及确定引导分区,并将引导分区上的操作系统引导扇区调入内存中执行,即执行ntldr(操作系统加载器)文件。

(2)分区表:分区表dpt(diskpartitiontable)共占用第一扇区64个字节,在mbr中,从地址be开始到fd结束的64个字节就是分区表。

分为4个分区表项,每个分区表项占用16字节。

一个硬盘最多只能分成四个主分区,其中扩展分区也是一个主分区。

FAT文件系统结构分析

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 文件系统结构分析摘要文件系统设计的好坏,直接影响到操作系统的运行效率、复杂程度和系统中数据的安全性。

Windows 98 操作系统引人了FAT32文件系统.它解决了FAT16文件系统存在的诸多问题,通过对FA T32 文件系统内部结构的分析,可知FAT32 文件系统除降低了大容量磁盘存储空间的浪费外还解决了FA T16 文件系统对根目录文件记录项的限制。

揭示了FAT32文件系统存储和管理文件的算法.掌握FAT32文件系统的内部结构,可以使读者在更高层次上发挥操作系统的功能.本文对FAT32文件系统的结构和技术实质进行了详细的分析,对FAT32文件系统和FAT16、NTFS文件系统做了详细的对比,对FAT32文件系统的访问文件原理、对系统的影响、和兼容性做了详细的分析,另对对FAT32文件系统的完整结构进行了分析,如:FAT32的主引导扇区、分引导扇区、FAT表和对FAT32文件系统的FDT 表进行了深入的分析。

关键字:FAT32 文件系统簇存储格式兼容性文件分配表文件目录表FAT32 file system structure analysisAbstractThe quality of the file system, directly affect the operating efficiency of the system, complexity and data security systems. Windows 98 operating system introduced a FAT32 file system. FAT16 file system, it solves the existing problems, through the internal structure of the FAT32 file system, the analysis shows that in addition to lowering the FAT32 file system, high capacity disk storage space for waste things, to solve the root directory of FAT16 file system limits file record entry . Reveals the FAT32 file system to store and manage files algorithms. FAT32 file system's internal control structure that allows readers to play at a higher level operating system functions.In this paper, FAT32 file system structure and a detailed technical analysis in real terms, on the FAT32 file system and FAT16, NTFS file system, a detailed comparison of FAT32 file system on the principle of access to files, the impact on the system, and compatibility to do a detailed analysis, and the other FAT32 file system pairs a complete analysis of the structure, such as: FAT32 master boot sector, sub boot sector, FAT and FAT32 file system table of the FDT table depth analysis.Keywords: FAT32 file system cluster storage w file allocation table file format compatibility table of contents目录概述 (1)第一章 FAT32 文件系统 (3)1.1 FAT32文件系统结构 (3)1.2 FAT32 中操作系统访问文件的原理 (4)1.3 FAT32 对系统的影响 (5)1.4 FAT32 文件系统的兼容性 (5)1.5 FAT32 文件系统与NTFS文件系统的对比 (6)1.6 FAT32 文件系统与FAT16 的对比 (7)第二章对FAT32文件系统完整结构的分析 (8)2 .1 对FAT32文件系统主引导扇区的分析 (8)2.1.1 主引导扇区的传统功能与作用 (8)2.1.2 FAT32文件系统对主引导扇区的改变 (8)2.2 对FAT32文件系统分区引导扇区的分析 (9)2.2.1 FAT16文件系统的分区引导扇区 (9)2.2.2 FAT32文件系统的分区引导扇区 (10)2.3 对FAT32文件系统FAT表的分析 (12)2.3.1 保留簇的改变 (12)2.3.2 登记项的改变 (13)2.4 对FAT32文件系统FDT表的深入分析 (13)2.4.1 浮动的FDT表 (13)2.4.2 32位的文件存储空间起始簇号 (15)第三章总结 (16)参考文献 (17)附录 (18)致谢 (21)概述文件系统在操作系统中体现文件命名、存贮和组织的整体结构,由文件、目录和对这些项目定位及存取所需的信息组成。

FAT32文件系统的存储组织结构(一)

FAT32文件系统的存储组织结构(一)

FAT32⽂件系统的存储组织结构(⼀)对磁盘的物理结构。

逻辑结构和存储结构有了⽐較深⼊的了解后,我们来细致探讨FAT32⽂件系统的存储组织结构。

说到⽂件系统的组织结构,我们应该⽴即意识到。

这指的是⽂件系统在同⼀个分区内的组织结构,在这个话题上,我们全然能够⽆论分区之外的全部事情。

为了分析FAT32⽂件系统的存储组织结构,我们来建⽴⼀个实实在在的⽂件系统:将U盘插⼊电脑,将U盘格式化成FAT32分区格式:以建好的U盘FAT32⽂件系统为基础,以下从⽂件系统的各个组成来分别加以介绍。

分区引导扇区DBR⽤winhex打开U盘显演⽰样例如以下:这是FAT32分区引导记录,定义例如以下:偏移00H: 3字节的跳转指令 EB 58 90,跳过以下的BPB和扩展BPB部分偏移03H:8字节的硬盘分区类型⽂本字符名:4D 53 44 4F 53 35 2E 30 即: MSDOS5.0偏移0BH: 25字节的分区參数块(BPB),细分例如以下:偏移0BH:扇区字节数 00 02 即0X0200,512字节偏移0DH:每簇扇区数 08即每簇包含8个扇区偏移0EH:保留扇区数 24 00即保留36个扇区偏移10H:FAT表份数 02即两个FAT表偏移11H:未⽤ 00 00偏移13H:未⽤ 00 00偏移15H:介质类型 F8即本地硬盘偏移16H:未⽤ 00 00偏移18H:每磁道扇区数 3F 00 即每磁道63扇区偏移1AH:磁头数 FF 00即255个磁头偏移1CH:隐藏扇区数 80 1F即8064个隐藏扇区偏移20H:磁盘总扇区数 80 F0 77 00即总共7860352个扇区(7860352*512=4024500224。

因为我的U盘是4G)偏移24H:52字节的扩展分区參数块(扩展BPB)。

细分例如以下:偏移24H:FAT表占⽤扇区数 EE 1D 00 00即FAT表占7662个扇区偏移28H:未⽤ 00 00 00 00偏移2CH:根⽂件夹⼊⼝簇号 02 00 00 00即根⽂件夹从02号簇開始偏移30H:⽂件系统信息扇区号 01 00即扇区1偏移32H:备份引导扇区的位置 06 00即6号扇区(第7个扇区)。

FAT16 FAT32结构

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文件系统的存储机制及其在单片机上的实现(于振南)

FAT32文件系统的存储机制及其在单片机上的实现(于振南)

含义 跳转指令 这是一个字符串,标识了格式化该分 区的操作系统的名称和版本号 每扇区字节数 每簇扇区数 保留扇区数目 此卷中 FAT 表数 FAT32 为 0
偏移量 0 3
11 13 14 16 17
TotSec16 2
FAT32 为 0
19
Media
1
存储介质
21
FATSz16 2
FAT32 为 0
以下面实际的 DBR 内 图所示:
上面的数据看起来杂乱不堪,无从下手,其实对我们有用的数据只不过 90
个字节(如图中彩色线标记的字节)。仅仅是这 90 个字节就可以告诉我们关于
磁盘的很多信息,比如每扇区字节数、每簇扇区数、磁道扇区数等等。对于这
些信息的读取,只要遵循 DBR 中的字段定义即可。(比如图中紫色字段的两个
_No; //装入第一个 FAT 表扇区号到 FirstFATSector 中
arg->RootDirCount
=lb2bb((bpb->BPB_RootEntCnt) ,2);
//装入根目录项数到 RootDirCount 中
arg->RootDirSectors
=(arg->RootDirCount)*32>>9;
2
文件系统信息
48
BkBootSec 2
通常为 6
50
Reserved 12 扩展用
52
DrvNum 1

64
Reserved1 1

65
BootSig
1

66
VolID
4

67
FilSysType 11 -
71

磁盘结构与FAT文件系统

磁盘结构与FAT文件系统

磁盘结构与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个部分组成。

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

FAT32文件系统的存储组织结构(一) (2012-05-19 16:57)标签: FAT32 文件系统分类:文件系统对磁盘的物理结构,逻辑结构和存储结构有了比较深入的了解后,我们来仔细探讨FAT32文件系统的存储组织结构。

说到文件系统的组织结构,我们应该马上意识到,这指的是文件系统在同一个分区内的组织结构,在这个话题上,我们完全可以不管分区之外的所有事情。

为了分析FAT32文件系统的存储组织结构,我们来建立一个实实在在的文件系统:将U盘插入电脑,将U盘格式化成FAT32分区格式:以建好的U盘FAT32文件系统为基础,下面从文件系统的各个组成来分别加以介绍。

分区引导扇区DBR用winhex打开U盘显示如下:这是FAT32分区引导记录,定义如下:偏移00H: 3字节的跳转指令 EB 58 90,跳过下面的BPB和扩展BPB部分偏移03H:8字节的硬盘分区类型文本字符名:4D 53 44 4F 53 35 2E 30 即:MSDOS5.0偏移0BH: 25字节的分区参数块(BPB),细分如下:偏移0BH:扇区字节数 00 02 即0X0200,512字节偏移0DH:每簇扇区数 08即每簇包括8个扇区偏移0EH:保留扇区数 24 00即保留36个扇区偏移10H:FAT表份数 02即两个FAT表偏移11H:未用 00 00偏移13H:未用 00 00偏移15H:介质类型 F8即本地硬盘偏移16H:未用 00 00偏移18H:每磁道扇区数 3F 00 即每磁道63扇区偏移1AH:磁头数 FF 00即255个磁头偏移1CH:隐藏扇区数 80 1F即8064个隐藏扇区偏移20H:磁盘总扇区数 80 F0 77 00即总共7860352个扇区(7860352*512=4024500224,因为我的U盘是4G)偏移24H:52字节的扩展分区参数块(扩展BPB),细分如下:偏移24H:FAT表占用扇区数 EE 1D 00 00即FAT表占7662个扇区偏移28H:未用 00 00 00 00偏移2CH:根目录入口簇号 02 00 00 00即根目录从02号簇开始偏移30H:文件系统信息扇区号 01 00即扇区1偏移32H:备份引导扇区的位置 06 00即6号扇区(第7个扇区),从WINHEX中我们也可以看到,6号扇区的内容和0号引导扇区内容是一样的偏移34H:未用 00 00 00 00 00 00 00 00 00 00 00 00偏移40H:物理磁盘号 00偏移41H:未用 00偏移42H:扩展引导标志 29即0X29偏移43H:磁盘序列号F1 2A 27 04通常为一随机数偏移47H:卷标ASCII 4E 4F 20 4E 41 4D 45 20 20 20 20 即NO NAME偏移52H:文件系统格式ASCII 46 41 54 33 32 20 20 20即FAT32偏移5AH:分区引导代码 420字节:33C98ED1BCF47B8EC18ED9BD007C884E028A5640B408CD1 37305B9FFFF8AF1660FB6C640660FB6D180E23FF7E286CDC0ED0641660FB7C96 6F7E1668946F8837E16007538837E2A007732668B461C6683C00CBB0080B90100 E82B00E94803A0FA7DB47D8BF0AC84C074173CFF7409B40EBB0700CD10EBEEA0FB 7DEBE5A0F97DEBE098CD16CD196660663B46F80F824A00666A0066500653666 810000100807E02000F852000B441BBAA558A5640CD130F821C0081FB55AA0F8514 00F6C1010F840D00FE4602B4428A56408BF4CD13B0F96658665866586658EB2A66 33D2660FB74E1866F7F1FEC28ACA668BD066C1EA10F7761A86D68A56408AE8C0E40 60ACCB80102CD1366610F8254FF81C300026640490F8571FFC34E544C44522020 202020200000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000D0A52656D6F7665206469736B73206F72 206F74686572206D656469612EFF0D0A4469736B206572726F72FF0D0A50726573732 0616E79206B657920746F20726573746172740D0A0000000000ACCBD80000偏移1FEH:有效扇区结束标志 55 AA到此分区引导扇区介绍结束。

文件分配表FAT简介:FAT表(文件分配表),是FAT文件系统中用于磁盘数据索引和定位而引进的一种链式结构。

在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行。

同时,FAT文件系统将组织数据时使用的目录也抽象为文件,以简化对数据的管理。

FAT1表位置的定位:在我们前面介绍分区引导记录的时候提到,在偏移0EH处存储了保留扇区的个数,这个保留扇区数指的就是当前分区内DBR到FAT表之间的所有扇区的个数(包括DBR但不包括FAT表)。

因此,我们可以定位FAT表所在的起始偏移位置了,即24H*200H=4800H。

我们贴出4800H处得部分内容如下:显然没有错,这就是我们FAT1所存储的位置,只是当前没有存储文件,所以FAT比较简单罢了。

FAT2表位置的定位:在我们前面介绍分区引导记录的时候提到,在偏移24H处存储了FAT表所占用的扇区个数,我们又知道FAT2是紧邻FAT1的,所以可以很容易得到FAT2的存储位置的偏移地址:FAT1的起始偏移地址+FAT1的大小=4800H+1DEEH*200H=3C2400H,我们贴出3C2400H处的部分内容如下:显然没有错,这就是我们FAT2所存储的位置,内容与FAT1相同。

FAT表的特性:FAT表由一系列大小相等的FAT表项组成,它有如下特性:FAT32中每个簇的簇地址,使用32bit(4个字节)记录在FAT表中。

FAT表中的所有字节位置以4个字节为单位进行划分,并对所有划分后的位置由0进行地址编号。

0 号地址与1号地址被系统保留并存储特殊标志内容。

从2号地址开始,每个地址对应于数据区的簇号,FAT表中的地址编号与数据区中的簇号相同。

我们称FAT中的这些地址为FAT表项,FAT表项中记录的值称为FAT表项值。

当文件系统被创建,也就是进行格式化操作时,分配给FAT区域的空间将会被清空,在FAT1与FAT2的0号表项与1号表项写入特定值。

由于创建文件系统的同时也会创建根目录,也就是为根目录分配了一个簇空间,通常为2号簇,所以2号簇所对应的2号FAT表项也会被写入一个结束标记。

如果某个簇未被分配使用,它所对应的FAT表项内的FAT表项值即用0进行填充,表示该FAT表项所对应的簇未分配使用。

当某个簇已被分配使用时,则它对应的FAT表项值也就是该文件的下一个存储位置的簇号。

如果该文件结束于该簇,则在它的FAT表项中记录的是一个文件结束标记,对于FAT32而言,代表文件结束的FAT表项值为0x0FFFFFFF。

如果某个簇存在坏扇区,则整个簇会用FAT表项值0x0FFFFFF7标记为坏簇,不再使用,这个坏簇标记就记录在它所对应的FAT表项中。

由于簇号起始于2,所以FAT表的0号表项与1号表项不与任何簇对应。

FAT32的0号表项值总是“F8FFFF0F”。

1号表项可能被用于记录脏标志,以说明文件系统没有被正常卸载或者磁盘表面存在错误。

不过此值似乎并不重要,因此我们只要了解就可以。

正常情况下,1号表项值为“FFFFFFFF”或“FFFFFF0F"。

在文件系统中新建文件时,如果新建的文件只占用一个簇,为其分配的簇所对应的FAT表项将会被写入结束标记。

如果新建的文件不只占用一个簇,则在其所占用的每个簇对应的FAT表项中写入为其分配的下一簇的簇号,在最后一个簇对应的FAT表项中写入结束标记。

新建目录时,只为其分配一个簇的空间,对应的FAT表项中写入结束标记。

当目录增大超出一个簇的大小时,将会在空闲空间中继续为其分配一个簇,并在FAT表中为其建立FAT表链以描述它所占用的簇情况。

对文件或目录进行删除操作时,它们所对应的FAT表项将会被清空,设置为0以表示其所对应的簇处于未分配状态。

根目录区简介:在FAT32文件系统中,根目录的位置不再硬性地固定,可以存储在分区内可寻址的任意簇内,不过通常根目录是最早建立的(格式化就生成了)目录表。

所以,我们看到的情况基本上都是根目录首簇紧邻FAT2,占簇区顺序上的第1个簇(即2号簇)。

同时,FAT32文件系统将根目录当做普通的数据文件来看,所有没有了目录项数的限制,在需要的时候可以分配空簇,存储更多的目录项。

起始偏移地址定位:根目录起始扇区=保留扇区数+FAT×2+(起始簇-2)x每簇的扇区数,在我们前面介绍分区引导记录的时候提到,偏移2CH处保存了根目录起始簇号是2,所以求得根目录起始扇区是24H+1DEEH*2H+(2-2)*8H=3C00H,即求得偏移地址3C00H*200H=780000H,我们贴出780000H处的部分内容如下:目录区的一个目录项占用32个字节,可以是长文件名目录项、文件目录项、子目录项等。

短文件名格式的目录项对于短文件名格式的目录项。

其参数意义如下:根据参数定义,我们来分析一下上图的目录项 54 45 53 54 5F 46 41 54 33 32 20 08 00 00 00 00 00 00 00 00 00 00 19 95 10 3F 00 00 00 00 00 00。

其中起始11字节54 45 53 54 5F 46 41 54 33 32 20 是卷标TEST_FAT32;第12字节08指示当前目录项保存的是卷标;第23-24字节19 95即9519H,是最近修改时间:19点40分50秒;第25-26字节10 3F即3F10H,是最近修改日期:2011年8月16日;长文件名格式的目录项FAT32的一个重要的特点是完全支持长文件名。

长文件名依然是记录在目录项中的。

为了低版本的OS或程序能正确读取长文件名文件,系统自动为所有长文件名文件创建了一个对应的短文件名,使对应数据既可以用长文件名寻址,也可以用短文件名寻址。

相关文档
最新文档