论文部分内容阅读
摘要:FAT32文件系统是WINDOWS系列操作系统中最常用的文件系统之一, 为了彻底了解FAT32文件系统,本文对FAT32文件系统的完整结构进行了深入分析,其中包括对构成FAT32文件系统的主引导扇区、分区引导扇区、FAT 和FDT表4个组件的分析。
关键词:FAT32;文件系统;FDT;MBR
中图分类号:TP316文献标识码:A 文章编号:1009-3044(2008)24-1320-02
Research in FAT32 File System
REN Ya-zhou
(Dept. of Information Science and Technology in Shandong Institute of Political Science and Law, Jinan 250014 China)
Abstract: WINDOWS FAT32 file system is the most commonly used family of operating systems in one of the file system, in order to thoroughly understand FAT32 file system, FAT32 file system in this paper on the integrity of the structure has conducted in-depth analysis, including a FAT32 file system on the main boot sector, District boot sector, FAT and FDT table four components analysis.
Key words: FAT32; file system; FDT; MBR
1 引言
FAT的全称是“File Allocation Table”(文件分配表系统),FAT文件系统1982年开始应用于MS-DOS中。FAT文件系统主要的优点是它可以被多种操作系统访问,如MS-DOS、Windows所有系列和OS/2等。这一文件系统在使用时遵循8.3命名规则(即文件名最多为8个字符,扩展名为3个字符)。同时FAT文件系统无法支持系统高级容错特性,不具有内部安全特性等。FAT32是FAT16文件系统的派生,比FAT16支持更小的簇和更大的分区,这就使得FAT32分区的空间分配更有效率。
为了彻底了解FAT32文件系统,本文对FAT32文件系统的完整结构进行了深入分析,其中包括对构成FAT32文件系统的主引导扇区(分区扇区)、分区引导扇区、FAT和FDT表4个组件的分析。
2 硬盘的基本结构
2.1 硬盘的物理结构
硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成,其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中 “ 写数据 ” 电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。
2.2 硬盘的逻辑结构
硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头 (Heads),从0、1、2开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、 2、3……形成Cylinders×Heads×Sector个扇区。这三个参数即是硬盘的物理参数。
3 硬盘主引导纪录(MBR)
主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。在总共的512byte中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(Disk PartitionTable,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。
4 DOS引导纪录(DBR)
DBR(DOS BOOT RECORD)即操作系统引导记录区,通常位于硬盘的0磁道1柱面1扇区,是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS PARAMETER BLOCK)的本分区参数记录表。每个逻辑分区都有一个DBR。在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOS Parameter Block),扩展BPB,os引导程序,结束标志几部分组成。图1给出了WinHex所显示的逻辑盘引导扇区DBR的部分内容。
5 文件分配表(FAT)
文件分配表区是FAT文件系统管理磁盘空间和文件的最重要区域,它保存逻辑盘数据区各簇使用情况信息,采用位示图法来表示,文件所占用的存储空间及空闲空间的管理都是通过FAT实现的。FAT区共保存了两个相同的文件分配表,便于第一个损坏时,还有第二个可用。FAT表的大小由该逻辑盘数据区共有多少簇所决定,取整数个扇区。数据区中每簇的使用情况通过查找其在FAT表中相应位置的填充值可知晓。FAT32表中每簇占用四个字节(32位)表示,开头的8个字节(0H-07H字节)用来存放该盘介质类型编号了,因此有效簇号从02H开始使用。02H簇的使用情况由08H-0BH字节组成的32位二进制数指示出来,03H簇的使用情况由0CH-0FH字节组成的32位二进制数指示出来,依此类推。未被分配使用和已回收的簇相应位置写零,坏簇相应位置填入特定值0FFFFFF7H标识,已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为0FFFFFFFH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT32表中。
FAT32的文件分配表的数据结构依然和FAT16相同,所不同的是,FAT32将记录簇链的二进制位数扩展到了32位,故而这种文件系统称为FAT32。32位二进制位的簇链决定了FAT表最大可以寻址2T个簇。这样即使簇的大小为1扇区,理论上仍然能够寻址1TB范围内的分区。但实际中FAT32是不能寻址这样大的空间的,随着分区空间大小的增加,FAT表的记录数会变得臃肿不堪,严重影响系统的性能。所以在实际中通常不格式化超过32GB的FAT32分区。分区变大时,如果簇很小,文件分配表也随之变大。仍然会有上面的效率问题存在。既要有效地读写大文件,又要最大可能的减少空间的浪费。
6 文件目录表(FDT)
用FORMAT命令对磁盘(或逻辑盘)进行格式化的时候,就已经为整个硬盘建立了一个根目录FDT。在根目录下,用户可以用DOS命令"MD"再创建不同的各个子目录,以及子目录下的子目录。根目录以及各级子目录都有自己的FDT。根目录区的文件目录表FDT包括 IO.SYS、DOS.SYS等文件的目录项,每个目录项占32个字节。由于除根目录外的所有目录实际卜是文件,所以其包含的项数是没有限制的。磁盘上每个文件都有一个32字节长的目录项,它登记了文件的名字、属性、建立或最后修改的日期、时间以及义件在磁盘上存放的起始位置。除了卷标名可能占据该区的个32字节外,该区的每个32字节都可以是根目录下的一个目录项。
FAT32的目录项兼容FAT16的设定,并有所扩充,目录项可以是文件目录项、子目录项、卷标项(仅根目录有)、已删除目录项、长文件名目录项(此项是从支持长文件名VFAT开始引入的)等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:
(1) 0--7字节 文件正名。
(2) 8--10字节 文件扩展名。
(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 12--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 14--15字节 16位的文件建立时间,其高5位为小时,次6位为分钟,后5位的二倍为秒数。
(6) 16--17字节 16位的文件建立日期,其高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 文件最新访问日期,定义同(6)。
(8) 20--21字节 存储文件起始簇的簇号的高16位。
(9) 22--23字节 文件最新修改时间,定义同(5)。
(10) 24--25字节 文件最新修改日期,定义同(6)。
(11) 26--27字节 存储文件起始簇的簇号的低16位。
(12) 28--31字节 32位的文件字节长度。
早期的FAT16没有第(4)至(8)项的定义。对于子目录项,其(12)为零。
7 结束语
FAT32文件系统是WINDOWS系列操作系统中最常用的文件系统之一,为了彻底了解FAT32文件系统,本文对FAT32文件系统的完整结构进行了深入分析,其中包括对构成FAT32文件系统的主引导扇区、分区引导扇区、FAT和FDT表4
个组件的分析。
参考文献:
[1] 张明亮,张宗杰.浅析FAT32文件系统[J].计算机与数字工程,2005年33卷.
[2] 蒋波等.用WinHex分析FAT32的磁盘存储结构[J].宜宾学院学报,2006.6.
[3] 戴士剑等.数据恢复技术(第2版)[M].电子工业出版社.2007.4.
[4] 杜方冬等.彻底捍卫数据安全.山东电子音响出版社.2005.1.
关键词:FAT32;文件系统;FDT;MBR
中图分类号:TP316文献标识码:A 文章编号:1009-3044(2008)24-1320-02
Research in FAT32 File System
REN Ya-zhou
(Dept. of Information Science and Technology in Shandong Institute of Political Science and Law, Jinan 250014 China)
Abstract: WINDOWS FAT32 file system is the most commonly used family of operating systems in one of the file system, in order to thoroughly understand FAT32 file system, FAT32 file system in this paper on the integrity of the structure has conducted in-depth analysis, including a FAT32 file system on the main boot sector, District boot sector, FAT and FDT table four components analysis.
Key words: FAT32; file system; FDT; MBR
1 引言
FAT的全称是“File Allocation Table”(文件分配表系统),FAT文件系统1982年开始应用于MS-DOS中。FAT文件系统主要的优点是它可以被多种操作系统访问,如MS-DOS、Windows所有系列和OS/2等。这一文件系统在使用时遵循8.3命名规则(即文件名最多为8个字符,扩展名为3个字符)。同时FAT文件系统无法支持系统高级容错特性,不具有内部安全特性等。FAT32是FAT16文件系统的派生,比FAT16支持更小的簇和更大的分区,这就使得FAT32分区的空间分配更有效率。
为了彻底了解FAT32文件系统,本文对FAT32文件系统的完整结构进行了深入分析,其中包括对构成FAT32文件系统的主引导扇区(分区扇区)、分区引导扇区、FAT和FDT表4个组件的分析。
2 硬盘的基本结构
2.1 硬盘的物理结构
硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成,其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中 “ 写数据 ” 电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。
2.2 硬盘的逻辑结构
硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头 (Heads),从0、1、2开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、 2、3……形成Cylinders×Heads×Sector个扇区。这三个参数即是硬盘的物理参数。
3 硬盘主引导纪录(MBR)
主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。在总共的512byte中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(Disk PartitionTable,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。
4 DOS引导纪录(DBR)
DBR(DOS BOOT RECORD)即操作系统引导记录区,通常位于硬盘的0磁道1柱面1扇区,是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS PARAMETER BLOCK)的本分区参数记录表。每个逻辑分区都有一个DBR。在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOS Parameter Block),扩展BPB,os引导程序,结束标志几部分组成。图1给出了WinHex所显示的逻辑盘引导扇区DBR的部分内容。
5 文件分配表(FAT)
文件分配表区是FAT文件系统管理磁盘空间和文件的最重要区域,它保存逻辑盘数据区各簇使用情况信息,采用位示图法来表示,文件所占用的存储空间及空闲空间的管理都是通过FAT实现的。FAT区共保存了两个相同的文件分配表,便于第一个损坏时,还有第二个可用。FAT表的大小由该逻辑盘数据区共有多少簇所决定,取整数个扇区。数据区中每簇的使用情况通过查找其在FAT表中相应位置的填充值可知晓。FAT32表中每簇占用四个字节(32位)表示,开头的8个字节(0H-07H字节)用来存放该盘介质类型编号了,因此有效簇号从02H开始使用。02H簇的使用情况由08H-0BH字节组成的32位二进制数指示出来,03H簇的使用情况由0CH-0FH字节组成的32位二进制数指示出来,依此类推。未被分配使用和已回收的簇相应位置写零,坏簇相应位置填入特定值0FFFFFF7H标识,已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为0FFFFFFFH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT32表中。
FAT32的文件分配表的数据结构依然和FAT16相同,所不同的是,FAT32将记录簇链的二进制位数扩展到了32位,故而这种文件系统称为FAT32。32位二进制位的簇链决定了FAT表最大可以寻址2T个簇。这样即使簇的大小为1扇区,理论上仍然能够寻址1TB范围内的分区。但实际中FAT32是不能寻址这样大的空间的,随着分区空间大小的增加,FAT表的记录数会变得臃肿不堪,严重影响系统的性能。所以在实际中通常不格式化超过32GB的FAT32分区。分区变大时,如果簇很小,文件分配表也随之变大。仍然会有上面的效率问题存在。既要有效地读写大文件,又要最大可能的减少空间的浪费。
6 文件目录表(FDT)
用FORMAT命令对磁盘(或逻辑盘)进行格式化的时候,就已经为整个硬盘建立了一个根目录FDT。在根目录下,用户可以用DOS命令"MD"再创建不同的各个子目录,以及子目录下的子目录。根目录以及各级子目录都有自己的FDT。根目录区的文件目录表FDT包括 IO.SYS、DOS.SYS等文件的目录项,每个目录项占32个字节。由于除根目录外的所有目录实际卜是文件,所以其包含的项数是没有限制的。磁盘上每个文件都有一个32字节长的目录项,它登记了文件的名字、属性、建立或最后修改的日期、时间以及义件在磁盘上存放的起始位置。除了卷标名可能占据该区的个32字节外,该区的每个32字节都可以是根目录下的一个目录项。
FAT32的目录项兼容FAT16的设定,并有所扩充,目录项可以是文件目录项、子目录项、卷标项(仅根目录有)、已删除目录项、长文件名目录项(此项是从支持长文件名VFAT开始引入的)等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:
(1) 0--7字节 文件正名。
(2) 8--10字节 文件扩展名。
(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 12--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 14--15字节 16位的文件建立时间,其高5位为小时,次6位为分钟,后5位的二倍为秒数。
(6) 16--17字节 16位的文件建立日期,其高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 文件最新访问日期,定义同(6)。
(8) 20--21字节 存储文件起始簇的簇号的高16位。
(9) 22--23字节 文件最新修改时间,定义同(5)。
(10) 24--25字节 文件最新修改日期,定义同(6)。
(11) 26--27字节 存储文件起始簇的簇号的低16位。
(12) 28--31字节 32位的文件字节长度。
早期的FAT16没有第(4)至(8)项的定义。对于子目录项,其(12)为零。
7 结束语
FAT32文件系统是WINDOWS系列操作系统中最常用的文件系统之一,为了彻底了解FAT32文件系统,本文对FAT32文件系统的完整结构进行了深入分析,其中包括对构成FAT32文件系统的主引导扇区、分区引导扇区、FAT和FDT表4
个组件的分析。
参考文献:
[1] 张明亮,张宗杰.浅析FAT32文件系统[J].计算机与数字工程,2005年33卷.
[2] 蒋波等.用WinHex分析FAT32的磁盘存储结构[J].宜宾学院学报,2006.6.
[3] 戴士剑等.数据恢复技术(第2版)[M].电子工业出版社.2007.4.
[4] 杜方冬等.彻底捍卫数据安全.山东电子音响出版社.2005.1.