对于 FAT16,当您的最大簇大小为 32K 时,最大分区大小为 2GB。
这是通过将可寻址单元的数量乘以簇大小来计算的。
(2 16分配单元) * (2 15字节/簇) = 2 GiB
然而,对于 FAT32,当我进行相同的计算时,我得到的数字比使用 2 32 个簇时的 8 TiB 最大值大得多。
(2 32分配单元) * (集群大小)
如果我使用 512 字节的簇大小,我已经达到了 2 TiB。
在 XP TechNet 文章中,微软表示
FAT32 卷上可能的最大簇数为 268,435,445,每个簇最大为 32 KB,以及文件分配表 (FAT) 所需的空间。
这将最大簇大小设置为 2 28 - 11。
为什么 FAT32 中的最大簇数是 2 28 -11 而不是 2 32,因为它在 FAT16 中是 2 16?
我已经尝试过FORMAT /FS:FAT,diskpart,磁盘管理和HP USB 磁盘存储格式化工具。
我真的需要购买更小容量的驱动器吗?格式化工具不能忽略超过 2 GB 的区域吗?
我的华硕上网本的 BIOS 更新要求将 USB 格式化为FAT16,而我无法让各种华硕 BIOS 更新实用程序工作。
它是否取决于要选择的介质尺寸或其他一些参数?在 Windows 7 上,FAT16 是默认设置。在 pendrivelinux.com 的通用 USB 安装程序中,FAT32。我应该选择哪一个?用于 Windows 的 NTFS 怎么样?
exFAT怎么样?它是 Microsoft 为可移动媒体设计的文件系统。U盘和SD卡在这方面有区别吗?
看到另一个问题的发展,如果我不想在我插入 USB 拇指驱动器的每台机器上创建回收站,我是否仍然应该使用类似 exFAT 的东西?
我看到小容量 FAT(FAT12) 格式的 USB 闪存驱动器上的 FAT 写入延迟,即使驱动器的策略设置为“快速删除”。(我相信这意味着SurpriseRemovalOK设置了标志)。我已经捕获了通过 USB 发送到驱动器的 SCSI 命令:文件截断写入立即发生,然后立即写入整个文件(2 512 字节扇区长),但是在 FAT 之前有 20-90 秒的延迟更新以反映文件写入。
驱动器的大小很重要。我已经在 15MB 或更小的 FAT 文件系统上进行了测试并看到了问题。在 16MB 及以上时,写入不会延迟。当我在 Windows 中格式化驱动器时,16MB 是我在使用 FAT12 和 FAT16 之间看到的断点。(注:但FAT12/FAT16断点取决于簇数,而不是绝对文件系统大小)。
在 16MB 和更大的内存上,WindowsPrevent/Allow Medium Removal在写入之前发送 SCSI命令,要求不要删除该设备。USB 记忆棒实际上会在这些请求上返回失败(因为它不能保证不会移除),但 Windows 无论如何都会尝试。15MB 和更小的跟踪显示没有 Prevent/Allow Medium Removal命令。
(我在使用支持包含 Python 代码的微型 FAT 文件系统的微控制器板时发现了这个问题。当微控制器检测到对文件系统的写入时,它会等待写入完成,然后自动重新启动并运行新编写的 Python 代码。但是由于延迟写入,微控制器看到了损坏的代码或损坏的文件系统。)
尽管设置了“快速删除”,但为什么写入 FAT 会延迟这么长时间?我可以通过在驱动器上执行“弹出”来强制写入,但这违背了“快速删除”的承诺。如果我早点拔出驱动器,它就会有一个不正确的 FAT 表。这掩盖了下面屏幕截图中关于不必使用“安全删除硬件”的声明。这是一个错误还是我错过了什么?有没有办法在没有手动“弹出”的情况下强制所有写入立即发生?
这是从 Wireshark/USBPcap 跟踪中修剪的摘录,显示了该问题。我截断一个现有的文件,然后写一个新的副本。我已经添加了评论###。大多数对 USB 驱动器的写入发生在跟踪的 5 秒左右,但最后的 FAT 写入要到 26 秒。
No. Time Source …Run Code Online (Sandbox Code Playgroud) 如何判断我的 U 盘是否格式化为 FAT16?
Windows 7 磁盘管理说我的 U 盘是 FAT 卷。但它没有说它是 FAT16 还是 FAT32。我打开了属性窗口,它也没有区分 FAT16 和 FAT32。
FAT16 卷的理论和实际最小大小是多少?
我正在尝试确定可以处理 FAT16 FS 的最小闪存芯片大小。
我正在尝试将文件复制到 USB 闪存驱动器。驱动器没有写保护开关。
df 给出以下内容:
$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/sde1 1.9G 622M 1.3G 33% /media/lindenb/803C-078D
Run Code Online (Sandbox Code Playgroud)
df -i 对我产生奇怪的输出(到处都是 0)
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sde1 0 0 0 - /media/lindenb/803C-078D
Run Code Online (Sandbox Code Playgroud)
驱动器上的文件数:
$ find . |wc -l
170
Run Code Online (Sandbox Code Playgroud)
但是当我尝试复制文件时,我得到了这个:
$ mv ~/file.txt ./
mv: cannot create regular file ‘./file.txt’: No space left on device
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题 ?
据我了解,FAT32 对每个文件使用 32 位数字来存储其文件大小(因此 FAT32 仅限于 ~4GiB 文件)。在 FAT 中,每个文件都有一个根目录条目,这些条目存储文件大小的值。此页面显示 FAT32 的目录条目结构。此资源表明 FAT12 使用 25 位值作为文件大小,FAT16 使用 31 位值。
第二个链接资源中的信息是否正确?如果不是,FAT12 和 FAT16 的真正最大文件大小是多少?如果这是真的,那么为什么这些文件系统使用不规则的位数来存储文件大小?
编辑:为什么它们受到卷大小的限制,而 FAT32 有固定的大小?是因为它存储的文件大小大于任何支持的卷大小,还是 FAT12 和 FAT16 不使用文件大小作为目录项中的字段?
fat16 ×8
fat32 ×4
filesystems ×3
linux ×2
windows ×2
disk-space ×1
embedded ×1
hard-drive ×1
liveusb ×1
partitioning ×1
usb ×1