VFAT和FAT32文件系统有什么区别?


76

我已经搜索了互联网,但找不到任何令人信服的答案;

文件系统VFAT和FAT32是否相同,或者它们之间有任何区别?

Answers:


86

http://technet.microsoft.com/zh-cn/library/cc750354.aspx复制

什么是FAT?

FAT听起来像文件系统的一个奇怪名称,但实际上它是File Allocation Table的首字母缩写。FAT于1981年推出,从计算机的角度讲是古老的。由于年代久远,大多数操作系统(包括Microsoft WindowsNT®,Windows 98,Macintosh OS和某些UNIX版本)都支持FAT。

FAT文件系统将文件名限制为8.3命名约定,这意味着文件名在句点之前不能超过八个字符,在句点之后不能超过三个字符。FAT文件系统中的文件名还必须以字母或数字开头,并且不能包含空格。文件名不区分大小写。

那么VFAT呢?

也许您还听说过称为VFAT的文件系统。VFAT是FAT文件系统的扩展,是Windows 95引入的。VFAT保持与FAT的向后兼容性,但放宽了规则。例如,VFAT文件名最多可以包含255个字符,空格和多个句点。尽管VFAT保留文件名的大小写,但是它不区分大小写。

使用VFAT创建长文件名(长于8.3)时,文件系统实际上会创建两个不同的文件名。一种是实际的长文件名。此名称对Windows 95,Windows 98和Windows NT(4.0及更高版本)可见。第二个文件名称为MS-DOS®别名。MS-DOS别名是长文件名的缩写形式。文件系统通过采用长文件名的前六个字符(不计空格),后跟波浪号[〜]和数字尾部来创建MS-DOS别名。例如,文件名Brien's Document.txt的别名为BRIEN'〜1.txt。

VFAT存储其长文件名的方式会产生一个有趣的副作用。当您使用VFAT创建长文件名时,它将为MS-DOS别名使用一个目录条目,对长文件名每13个字符使用另一个目录条目。理论上,一个长文件名最多可以占用21个目录条目。根目录限制为512个文件,但是如果要在根目录中使用最大长度的长文件名,则可以将此限制削减为仅24个文件。因此,您应该在根目录中非常少地使用长文件名。其他目录不受此限制的影响。

您可能想知道为什么我们要讨论VFAT。原因是它比FAT变得更加普遍,但是除了我上面提到的差异之外,VFAT具有相同的局限性。当您告诉Windows NT将分区格式化为FAT时,它实际上将分区格式化为VFAT。在Windows NT 4.0下唯一具有真实FAT分区的时间是在使用其他操作系统(例如MS-DOS)格式化分区时。

FAT32

FAT32实际上是FAT和VFAT的扩展,最早是Windows 95 OEM Service Release 2(OSR2)引入的。FAT32极大地增强了VFAT文件系统,但是确实有其缺点。

FAT32的最大优点在于,它可以大大增加可用硬盘空间。为了说明这一点,请考虑FAT分区(也称为FAT16分区),每个分区仅允许一定数量的群集。因此,随着分区大小的增加,群集大小也必须增加。例如,一个512 MB的FAT分区的群集大小为8K,而一个2 GB的分区的群集大小为32K。

除非您认为FAT文件系统仅以单个群集增量工作,否则这听起来似乎没什么大不了的。例如,在2 GB的分区上,一个1字节的文件将占据整个群集,从而消耗32K,即文件应消耗的空间量的大约32,000倍。该规则适用于硬盘上的每个文件,因此您可以看到可以浪费多少空间。

将分区转换为FAT32可以减小群集大小(并克服了2 GB分区大小的限制)。对于8 GB或更小的分区,群集大小减小到仅4K。可以想象,通过将分区转换为FAT32来获取数百兆字节的情况并不罕见,尤其是在该分区包含很多小文件的情况下。

注意:报价单/文章(1999)的这一部分已过时。更新了以下信息报价。

如前所述,FAT32确实有局限性。不幸的是,它与Windows 98和Windows 95的OSR2版本以外的任何操作系统都不兼容。但是,Windows 2000将能够读取FAT32分区。

另一个缺点是磁盘实用程序和防病毒软件必须支持FAT32。否则,他们可能将新文件结构解释为错误并尝试纠正它,从而破坏了过程中的数据。

最后,我应该提到转换为FAT32是一个单向过程。一旦转换为FAT32,就无法将分区转换回FAT16。因此,在转换为FAT32之前,您需要考虑计算机是否会在双引导环境中使用。我还应该指出,尽管其他操作系统(例如Windows NT)无法直接读取FAT32分区,但它们可以通过网络读取它。因此,与网络上运行较早操作系统的其他计算机共享FAT32分区上存储的信息没有问题。

Doktor-J在评论中提到的更新(如果有评论丢失,将更新为过时的答案):

我只想指出,大多数现代操作系统(WinXP / Vista / 7/8,MacOS X,大多数(如果不是全部)Linux变体)都可以读取FAT32,这与倒数第二段的建议相反。

最初的文章写于1999年,并发布在Microsoft网站上,可能与非Microsoft操作系统无关。

该段“排除”的操作系统可能是原始的Windows 95,Windows NT 4.0,Windows 3.1,DOS等。


30
我只想指出,大多数现代操作系统(WinXP / Vista / 7/8,MacOS X,大多数(如果不是全部)Linux变体)都可以读取FAT32,这与倒数第二段的建议相反。最初的文章写于1999年,并发布在Microsoft网站上,可能与非Microsoft操作系统无关。“排除”的那款操作系统可能是原来的Windows 95,Windows NT 4.0中的Windows 3.1,DOS等
DOKTORĴ

6
不仅限于计算机-几乎所有消费类电子产品(如相机和智能电视)都支持FAT32。
尼克·摩尔

@Abhishek,这个很棒的总结。如果我是对的,那么vfat几乎是fat16 +命名扩展。||| 其他:Ubuntu将EFI分区格式化为vfat,但是Windows在双启动计算机上也使用此格式。因此,内部使用Windows vfat,但显示fat32吗?
andras.tim

11

FAT32FAT16FAT12是文件系统类型,但vfatumsdosmsdos是驱动程序,用于在Linux中挂载FAT文件系统。驱动程序的选择确定如何将某些功能应用于文件系统,例如,安装有msdos驱动程序的系统文件名不长(它们是8.3格式)。vfat是当今挂载FAT32文件系统的最常见驱动程序。

资料来源:这篇维基百科文章

命令的输出,df并且lsblk确实显示vfat为文件系统类型。但是sudo file -sL /dev/<partition>显示FAT (32 bit)文件系统是否为FAT32。

vfat通过运行,可以确认是模块而不是文件系统类型modinfo vfat


引导信息文件告诉我我的文件系统是VFAT,因此我对“驱动程序”部分感到困惑。
Quidam

FAT最初是一个不处理长文件名的文件系统。对于W95,Microsoft(和其他公司)引入了一种处理长文件名的新方法。那是相同的FAT文件系统(通常是FAT16),但是在它上面有一个称为VFAT的新方法。Microsoft创建了嵌入在W95中的虚拟设备驱动程序,该驱动程序能够具有带有长文件名功能的FAT16文件系统。该功能就是VFAT。到目前为止,在Linux世界中,通常使用驱动程序“ msdos”来挂载FAT12 / 16文件系统。
Adriano_Pinaffo

然后,为了在FAT文件系统上处理此新功能,创建了vfat驱动程序,该驱动程序可以在长文件名的Linux中挂载FAT16驱动器。每当您看到文件系统是VFAT时,就意味着它是FAT文件系统,可以处理长文件名。
Adriano_Pinaffo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.