【问题标题】:What is the difference between VFAT and FAT32 file systems?VFAT 和 FAT32 文件系统有什么区别?
【发布时间】:2012-08-09 08:50:16
【问题描述】:

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

文件系统 VFAT 和 FAT32 是否相同,或者它们之间有什么不同?

【问题讨论】:

    标签: filesystems fat32 fat


    【解决方案1】:

    复制自http://technet.microsoft.com/en-us/library/cc750354.aspx

    什么是 FAT?

    FAT 可能听起来像一个奇怪的文件系统名称,但它实际上是文件分配表的首字母缩写。 FAT 于 1981 年推出,在计算机术语中是古老的。由于年代久远,大多数操作系统(包括 Microsoft Windows NT®、Windows 98、Macintosh OS 和某些版本的 UNIX)都提供对 FAT 的支持。

    FAT 文件系统将文件名限制为 8.3 命名约定,这意味着文件名在句点之前不能超过 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 的 Document.txt 将具有 BRIEN'~1.txt 的别名。

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

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

    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 等。

    【讨论】:

    • 我只想指出,大多数现代操作系统(WinXP/Vista/7/8、MacOS X,如果不是所有 Linux 变体,也可以是大多数)都可以读取 FAT32,这与第二个-到最后一段建议。最初的文章写于 1999 年,发布在 Microsoft 网站上,可能与非 Microsoft 操作系统无关。该段“排除”的操作系统可能是原来的Windows 95、Windows NT 4.0、Windows 3.1、DOS等。
    • 不仅是计算机,几乎所有的消费电子产品(如相机和智能电视)都支持 FAT32。
    • @Abhishek,谢谢这个很棒的总结。如果我是对的,vfat 几乎是一个 fat16 + 命名扩展。 |||其他:Ubuntu 将 EFI 分区格式化为 vfat,但 Windows 也在双启动机器上使用它。所以,确实在内部使用 Windows vfat,但显示 fat32?
    【解决方案2】:

    FAT32 与FAT16 和FAT12 是文件系统类型,但vfat 以及umsdos 和msdos 是驱动程序,用于在Linux 中挂载FAT 文件系统。驱动程序的选择决定了某些功能如何应用于文件系统。例如,安装了msdos 驱动程序的系统没有长文件名(它们使用8.3 format)。 vfat 是当今最常用的挂载 FAT32 文件系统的驱动程序。

    来源:this Wikipedia article

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

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

    【讨论】:

    • 启动信息文件告诉我我的文件系统是 VFAT,所以我对“驱动程序”部分感到困惑。
    • FAT,最初是一个不处理长文件名的文件系统。对于 W95,Microsoft(和其他公司)引入了一种处理长文件名的新方法。那是相同的 FAT 文件系统(当时通常是 FAT16),但在它之上使用了这种称为 VFAT 的新方法。 Microsoft 创建了嵌入在 W95 中的虚拟设备驱动程序,该驱动程序能够具有具有长文件名功能的 FAT16 文件系统。该功能就是 VFAT。在 Linux 世界中,到目前为止,使用驱动程序“msdos”来挂载 FAT12/16 文件系统是很常见的。
    • 然后,为了在 FAT 文件系统之上处理这个新功能,创建了 vfat 驱动程序,它可以在 Linux 中挂载长文件名的 FAT16 驱动器。每次你看到你的文件系统是 VFAT 时,就意味着它是一个能够处理长文件名的 FAT 文件系统。
    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    相关资源
    最近更新 更多