FAT32细节大全
基本介绍中文名:FAT32发布日期:1996年8月发布系统:Windows 95 OSR2,Ubuntu最大卷大小:8TB?参数、性能特点、约束、缺点、磁盘结构、保留扇区、FAT区、根区、数据区、启动扇区、分配表、目录表、特性、功能、兼容性、小知识、参数分区标识:0x0B、0x0C a 0a 2-b9e 5-4433-87c 0-68 b6b 72699 c 7(GPT)最大单个文件大小:4 GB最大文件数:268,435,437最大文件名限制:8.3或长文件名最多255个字符大于32GB的FAT32分区在WIN2000/XP下完全正常)创建、修改、访问日期:1980 1 10月65438+2107 12月31属性:只读。透明文件加密:无透明压缩:无访问权限:无限性能特性FAT32(文件分配表)有一个最大的优势:在不超过8GB的分区中,FAT32分区格式的每个簇的容量固定为4KB,相比FAT16可以大大减少磁盘的浪费,提高磁盘的利用率。目前支持这种磁盘分区格式的操作系统有Win95、Win98、Win2000、Win2003、Win Vista、Win7和Win10。一些智能手机还支持FAT32格式内存的直接读写(OTG)。但是,这种分区格式也有其缺点。首先,由于文件分配表的扩展,FAT32格式分区的磁盘比FAT16格式分区的磁盘运行速度慢。Windows 2000和windows XP被限制读写任意大小的FAT32文件系统,但是这些平台上的格式化程序只能创建最大32GB的FAT32文件系统。在dos系统中可以直接访问fat32分区,但在dos中不能直接访问ntfs分区。缺点但是,FAT有一个严重的缺点:当文件被删除,写入新数据时,FAT不会将文件组织成完整的片段再写入。长期使用后,文件数据会逐渐变得散乱,读写速度会变慢。硬盘碎片整理是一种解决方案,但必须经常进行碎片整理,才能保持FAT文件系统的效率。还有一个事实是,由于设计缺陷,FAT32分区不能支持大于4GB的单个文件。磁盘结构,主引导文件分配表#1文件分配表#2根目录,所有其他数据...剩余的磁盘空间,一个FAT文件系统包括四个不同的部分。保留扇区位于开始处。第一个保留扇区是引导扇区(分区启动记录)。它包括一个叫做基本输入输出参数块的区域(包括一些基本的文件系统信息,尤其是它的类型和其他指向其他扇区的指针),通常包括操作系统的启动调用代码。保留扇区的总数记录在引导扇区的参数中。在DOS和OS/2中,被称为驱动器参数块的操作系统结构可以访问引导扇区中的重要信息。FAT区包含两个文件分配表,这是由于系统的冗余性。虽然很少使用,但即使是磁盘修复工具也很少使用。它是分区信息的映射表,指示簇是如何存储的。根目录区域它是一个目录表,在根目录中存储文件和目录信息。在FAT32下,它可以存在于分区中的任何地方,但是在早期版本中,它总是在FAT区域之后。数据区这是存储实际归档和目录数据的区域,占据了大部分分区。只需在FAT中增加文件链接的数量,就可以任意增加文件大小和子目录的数量(只要有空簇)。但是需要注意的是,每个簇只能被一个文件占用,所以如果一个32KB大小的簇中有一个1KB大小的文件,那么31KB的空间就浪费了。引导扇区格式如下:偏移量(字节)长度(字节)描述0x00 3跳转指令(跳过第一段)0x03 8 OEM名称(空格填充)。MS-DOS检查这个区域来决定使用启动记录中的哪一部分数据。常见的值是IBM 3.3(在“IBM”和“3.3”之间有两个空格)和MSDOS 5.0.0x0B2的每个扇区的字节数..基本输入和输出系统参数块从这里开始。0x0d 1每个簇的扇区数量0x0e 2保留扇区(包括启动扇区)的数量0x 101文件分配表的数量0x 112根目录条目的最大数量0x 132扇区总数(如果为0,则使用偏移量0x20处的4字节值)0x15 1介质描述0xF8单面每道9扇区0xFD双面,每道40磁道,每道9扇区0xFE单面,每道40磁道,每道8扇区0xFF双面,每道40磁道,每道8扇区。相同的媒体描述必须重复复制到每个FAT的第一个字节。有些操作系统(MSX-DOS版本1.0)完全忽略引导扇区参数,只使用FAT第一个字节的媒体描述来确定文件系统参数。0x 162每个文件分配表的扇区(fat 16)0x 182每个磁道的扇区0x1a 2头号0x1c 4隐藏扇区0x20 4总扇区号(如果超过65535,见偏移量0x13) 0x24每个文件分配表的扇区。扩展的基本输入和输出系统参数块从这里开始。0x24 1物理驱动器数量(FAT16) 0x25 1当前磁头(FAT16) 0x26 1签名(fat 16)0x 27 4 ID(fat 16)0x 28 2标志(fat38 0x2a 2版本号(FAT32) 0x2c 4根目录启动群集(fat 32)0x2b 180x36 8 FAT文件系统类型(如FAT、FAT12、FAT16) 0x3e 2操作系统引导代码0x40 1 BIOS设备代码(FAT32) 0x41未使用(FAT32) 0x42 1标记(FAT32 0x43 4卷序列号(FAT32) 0x47 11卷标(FAT32) 0x早期版本使用短的基本输入/输出系统参数块,它们的启动代码从前面开始(如OS/2中的offset 0x2b 1.1)。分配表的一个分区被分成相同大小的簇,即连续空间的小块。簇大小因FAT文件系统的类型和分区大小而异,典型的簇大小在2KB到32KB之间。每个文件根据其大小可以占据一个或多个簇;这样,文件就由这些(称为列表)簇来表示。但是,这些链不一定一个接一个地存储在磁盘上,它们通常以分散的方式存储在整个数据区中。文件分配表(FAT)是映射到分区的每个簇的条目列表。每个条目记录以下五种信息之一。●链中下一个簇的地址●特殊的EOF符号表示链的结束●特殊的符号表示坏簇●特殊的符号表示保留簇●0表示空闲簇FAT32入口值:FAT32描述0x?00000000空闲集群0x?0000001保留簇0x?0000002 - 0x?被占用的FFFFFEF簇;指向下一个簇0x?FFFFFF0 - 0x?ffffff 6保留值0x?FFFFFF7坏簇0x?FFFFFF8 - 0x?在FFFFFFF文件的最后一个簇中,注意FAT32只使用了32位中的28位。高4位通常为0,但它们是保留位。不要更改它们。它们在上表中用问号表示。目录表目录表是一种特殊类型的文件(现在通常称为文件夹),代表一个目录。其中存储的每个文件或目录由表中的32位条目表示。每个条目记录名称、扩展名、属性(文件、目录、隐藏、只读、系统和卷)、创建日期和时间、文件/目录数据的第一个簇的地址,以及文件/目录的大小。除了FAT12和FAT16文件系统中的根目录表占用了专门的根目录区,其他所有目录表都有数据区。合法的DOS文件名包括以下字符:●大写字母A-Z ●数字0-9 ●空格(虽然末尾的空格是作为填充而不是文件名的一部分)●!# $ ampamp()-@ _` {} ~ '●数值128-255 ●DOS文件名位于OEM字符集。长文件名(LFN)使用一种技巧存储在FAT文件系统上——在目录表中添加假条目。这些条目由普通文件不能使用的标签属性来标识,因为它们被大多数旧的MS-DOS程序忽略。显然,只包含卷标的目录被视为空卷,允许删除;当用长文件名创建的文件从普通DOS中删除时,就会发生这种情况。校验和还允许检查长文件名是否与8.3文件名匹配;当使用DOS在同一目录位置删除并重新创建文件时,将会出现不匹配。校验和使用以下算法计算。(注意,pFcbName是一个指针,指向普通目录条目中显示的文件名,例如,前八个字符是文件名,后三个是扩展名。点是隐性的。文件名中未使用的空格将用空格填充(ASCII 0x20)。比如“Readme.txt”会被记录为& amp;quot自述文件。quot。特征FAT32其实是文件分区表的一种形式,是相对于FAT16而言的。众所周知,Dos和Windows95都采用FAT16格式。至于FAT32,准确的说是最早出现在Windows95OSR2中。之所以没有公开,是因为当时文件系统还不够成熟,还在探索阶段。那么为什么一定要推出FAT32呢?这主要是由其自身的优越性决定的。首先,可以大大节省磁盘空间。文件存储在磁盘的簇中。如果一个文件存储在一个群集中,则不能存储其他文件。如果一个磁盘的分区大小是512MB,基于FAT16的系统的集群大小是8KB,FAT32系统的集群大小只有4KB,那么如果我们存储一个3KB的文件,FAT16系统的空间会浪费5KB,而FAT32的浪费会更少。如果分区达到1GB,FAT16的集群是16KB,FAT32还是4KB,节省的就更多了。在FAT32文件系统推出之前,PC通常使用的文件系统是FAT16。比如基于MS-DOS和Win 95的系统都采用FAT16文件系统。在Win 9X下,FAT16支持的最大分区是2GB。我们知道计算机将信息存储在硬盘上一个叫做“簇”的区域。使用的簇越小,保存信息的效率越高。在FAT16的情况下,分区越大,集群就越大,存储效率就越低,必然造成存储空间的浪费。而且随着计算机硬件和应用的不断完善,FAT16文件系统已经不能满足系统的要求。在这种情况下,引入了增强的文件系统FAT32。与FAT16相比,FAT32具有以下特点:1。与FAT16相比,FAT32最大的优势是可以支持2TB(2048GB)的磁盘大小,但不能支持小于512MB的分区。基于FAT32的Win 2000可支持最高32GB的分区;;而基于FAT16的Win 2000支持最大2GB的分区。2.由于采用了更小的集群,FAT32文件系统可以更高效地保存信息。比如两个分区大小为2GB,一个分区采用FAT16文件系统,另一个分区采用FAT32文件系统。使用FAT16的分区的簇大小是32KB,而FAT32分区的簇大小只有4KB。这样FAT32的存储效率比FAT16高很多,一般可以提高15%。3.FAT32文件系统可以重定位根目录并使用FAT的备份副本。此外,FAT32分区的启动记录包含在一个包含关键数据的结构中,降低了计算机系统崩溃的可能性。稍微补充一下:相比之前FAT文件系统的实现,FAT32提供了以下增强功能:FAT32支持最大2 TB大小的驱动器。注意:Microsoft Windows 2000只能支持最大大小为32 GB的FAT32分区。Fat 32可以更有效地利用空间。FAT32使用较小的集群(即大小小于8 GB的驱动器使用4 KB的集群),与大型FAT或FAT16驱动器相比,可以将磁盘空间的利用率提高10%到15%。胖32更稳定可靠。FAT32可以重定位根文件夹,它使用文件分配表的备份副本,而不是默认副本。此外,FAT32驱动器上的引导记录已经扩展到包括关键数据结构的备份副本。因此,与现有的FAT16驱动器相比,FAT32驱动器不容易受到单点故障的影响。脂肪32更有弹性。FAT32驱动器上的根文件夹是一个普通的簇链,因此它可以位于驱动器上的任何位置。以前对根文件夹数量的限制不再存在。此外,可以禁用文件分配表镜像,以便激活文件分配表的副本,而不是第一个文件分配表。这些特性允许您动态调整FAT32分区的大小。不过注意,虽然FAT32的设计允许这个特性,但是微软不会在初始版本中实现这个特性。软件和硬件的兼容性为了保持与现有程序、网络和设备驱动程序的最大兼容性,FAT32尽可能不改变现有的Windows架构、内部数据结构、应用编程接口(API)和磁盘上的格式。但是,因为需要4个字节来存储集群值,所以许多内部和磁盘上的数据结构以及发布的API都进行了修改或扩展。在某些情况下,现有的API无法在FAT32驱动器上运行。大多数程序不会受到这些变化的影响。现有的工具和驱动程序应该能够在FAT32驱动器上正常运行。但是,需要修改MS-DOS块设备驱动程序(如Aspidisk.sys)和磁盘工具来支持FAT32驱动器。所有微软捆绑的磁盘工具(格式化、Fdisk、碎片整理、基于MS-DOS和Windows的磁盘扫描)都被修改为在FAT32中正常运行。此外,微软正在与一些主要的设备驱动程序和磁盘工具制造商合作,帮助他们修改产品以支持FAT32。注意:不能使用Microsoft“磁盘空间管理”或“磁盘空间管理3”来压缩FAT32卷。将FAT32性能转换为FAT32文件系统是您可以在基于Windows 98的计算机上实现的最大性能增强。双引导计算机目前,在微软操作系统中,只有Windows 95 OSR2、Windows 98、Windows 2000和Windows Me可以访问FAT32卷。MS-DOS、Windows 95 original和Windows NT 4.0不识别FAT32分区,因此无法从FAT32卷启动。此外,如果使用其他操作系统(例如,Windows 95或MS-DOS启动盘)启动计算机,将无法正确访问FAT32卷。Windows 95 OSR2和Windows 98可以在实模式下启动(例如,运行游戏),并且可以使用FAT32卷。在Windows 95 OSR2、Windows 98和Windows Me中创建FAT32驱动器,如果在大小超过512兆字节(MB)的硬盘上运行Fdisk工具,Fdisk会提示您是否启用大磁盘支持。如果您回答“是”(大磁盘支持已启用),您创建的任何大于512 MB的分区都将被标记为FAT32分区。Windows 98和Windows Me也有一个FAT32转换工具,您可以使用它将现有的驱动器转换为FAT32文件系统。要使用这个转换工具,请按照以下步骤操作:1。单击开始,指向程序,指向附件,指向系统工具,然后单击驱动器转换器(FAT32)。2.单击下一步。3.单击要转换为FAT32文件系统的驱动器,然后单击下一步。4.按照屏幕上的说明进行操作。支持范围微软将支持FAT32文件系统的功能,从而实现无错读取,以实模式或保护模式保存文件。微软支持Windows 95中包含的实模式和保护模式工具。对于旧的程序,如果它们不能安装在FAT32卷上,或者文件不能正确保存或读取,您必须联系软件包的制造商。注意:虽然FAT32文件系统支持的最大硬盘容量可以达到2 TB,但由于计算机基本输入/输出系统(BIOS) INT13接口的限制,某些硬盘可能不包含大于7.8 GB的可引导分区。请联系硬件制造商以确定您计算机的BIOS是否支持更新的INT13扩展。使用FAT32文件系统时,Windows操作系统有以下限制:群集不能大于或等于64kb。如果群集为64 KB或更大,某些程序(如安装程序)在计算磁盘空间时可能会出错。一个卷必须包含至少65,527个簇才能使用FAT32文件系统。您不能增加使用FAT32文件系统的卷上的簇大小,这样卷的最终簇数就会小于65,527。在使用FAT32文件系统的卷上,最大簇数为268,435,445。对于文件分配表(FAT)的空间,每个簇的最大大小为32 KB,计算出的最大磁盘大小约为8tb。Microsoft Windows 95和Microsoft Windows 98附带的磁盘扫描工具是一个16位程序。这样的程序有一个内存块,其最大分配大小等于16 MB减去64 KB。因此,Windows 95或Windows 98的磁盘扫描工具无法处理使用FAT32文件系统的卷(FAT大小大于16 MB和64 KB之差)。使用FAT32文件系统的卷上的FAT项目使用4个字节,所以“磁盘扫描程序”无法处理使用FAT32文件系统的卷上的FAT,该卷上定义的簇数大于4,177,920(包括两个保留簇)。包括FAT本身,按照每簇最大32 KB计算,卷大小为127.53千兆字节(GB)。您不能减少使用FAT32文件系统的宗卷上的簇大小,因此FAT的最终大小大于16 MB和64 KB之间的差值。在Windows 2000中,不能使用FAT32文件系统格式化大于32 GB的卷。Windows 2000 FastFAT驱动程序可以使用FAT32文件系统安装并支持大于32 GB的卷(受其他限制),但是您不能使用格式化工具创建这样的卷。这种现象是设计造成的。如果您需要创建大于32 GB的卷,请使用NTFS文件系统。备注:当您尝试格式化大于32 GB的FAT32分区时,格式化将在过程结束时失败,并出现以下错误:逻辑磁盘管理器:卷大小太大。Windows XP中FAT32文件系统的限制当您在Windows XP中使用FAT32文件系统时,请注意以下限制:集群不能等于或大于64 KB。如果群集大小为64 KB或更大,某些程序(如安装程序)可能会错误地计算磁盘空间。fat32卷必须包含至少65,527个簇。您不能增加使用FAT32文件系统的卷上的簇大小,这将导致该卷上的簇少于65,527个。如果考虑以下变量,最大磁盘大小约为8tb:FAT 32卷上允许的最大簇数为268,435,445,每个簇为32 KB,此外还有文件分配表(FAT)所需的空间。您不能减小FAT32卷上的簇大小,这将导致FAT大小大于16 MB减去64 KB。在安装Windows XP的过程中,您不能使用FAT32文件系统来格式化大于32 GB的卷。Windows XP可以装载和支持大于32 GB的FAT32卷(受其他限制),但是您不能在安装过程中使用格式化工具创建大于32 GB的FAT32卷。如果需要格式化大于32 GB的卷,请使用NTFS文件系统进行格式化。另一种方法是从Microsoft Windows 98或Microsoft Windows Millennium Edition(ME)启动盘启动,然后使用磁盘上附带的格式化工具。有关如何使用Microsoft Windows 98或Microsoft Windows Millennium Edition(ME)启动盘格式化硬盘的其它信息,请单击下面的文章编号。查看Microsoft知识库中相应的文章:255867如何使用Fdisk和格式化工具对硬盘进行分区或重新分区注意:当您在安装Windows XP的过程中尝试格式化大于32GB的FAT32分区时,该操作将在格式化过程结束时失败。您可能会收到以下错误消息:逻辑磁盘管理器:卷大小太大。MS-DOS(Microsoft Windows 95的原始版本)和Microsoft Windows NT 4.0及更早版本不识别FAT32分区,因此您无法从FAT32卷引导。不能在FAT32分区上创建大于(2 ^ 32)-1字节(即4 GB减去1字节)的文件。FAT32格式理论上可以支持128TB的磁盘,即簇的大小乘以簇的个数就是32k *(2 ^ 32),但由于软硬件的限制等原因,不可能达到理论值。FAT32数据恢复原理因为FAT和FDT管理数据的链式存储,所以可以通过链式搜索来搜索。只有FAT表和FDT配合使用,才能统一管理整个磁盘文件,才能准确定位被删除文件的确切位置。Window操作系统下删除文件的任务是将文件在FDT中的第一个字符改为“E5”表示文件已被删除,同时在引导扇区的第二个扇区中重写相应的信息表示分区点的空间大小。所以在设计的时候,根据其存储结构,修改相应的地方,搜索E5删除标记,然后根据删除的文件数据链接进行恢复。具体步骤如下:(1)获取磁盘分区类型,分区存储空间,存储FAT,FDT,文件等的初始扇区。(2)获取FAT和FDT条目中的簇信息,即簇的删除、未使用和坏簇,以及文件占用的簇的初始扇区信息。(3)通过FAT和FDT计算物理扇区中不同文件的起始位置,包括标记为E5的已删除文件的起始位置、文件类型、占用大小和存储簇。(4)改变删除位,根据FAT表使用步骤3得到的结果在链表中查找并缓存文件,当文件到达簇尾时停止操作。(5)将存储的数据转换成文件。(6)将文件分区域存储。在读写文件时,操作系统会根据FDT中的初始单元和FAT表知道文件在磁盘上的位置,然后依次读取每个簇的内容。文件搜索如图4-1所示。具体方法如下:(1)在文件目录项FDT中查找FAT表中存储的文件File的地址M(2)2*M得到FAT表中文件File数据表的头地址b。(3)在FAT表中的地址B中,存储文件FILE数据链接头P。(4)P*4获取FAT表项中的下一个偏移位置,即下一个数据细化表。(5)如果下一个数据精炼表中的信息为0FFFFFFH,则表示文件存储已经结束。图4-1文件查找过程需要注意的是,创建新文件时,系统会在FAT表中查找未使用的簇记录,作为新文件目录条目中的第一个簇;在FDT文件的目录项中,0~7字节为文件名(如果有剩余字节用20填充),1字节表示文件的状态,1字节表示文件的状态,00HE5H等字符。当字节为00H时,表示目录项为空,可以使用。当是E5H时,表示之前使用过目录项,但是文件已经被删除。小知识FAT32下,一个目录只能容纳65536个文件。微软的官方文档没有给出。