如果 FAT32 限制为 2^28 个簇,为什么我不能格式化具有 1K 簇大小的 250GB 分区?

如果 FAT32 限制为 2^28 个簇,为什么我不能格式化具有 1K 簇大小的 250GB 分区?

FAT32 允许的最大簇数约为 268,435,455 (2^28)。250GB 分区需要 488,397,168 个 512 字节扇区,如果簇大小为 1K,则意味着大约 243,245,000 个簇,远低于 FAT32 限制。但您无法做到这一点!

为什么我必须使用至少 2K 的簇大小呢?

相关主题:为什么 FAT32 限制为略低于 2^28 个簇?

答案1

这个答案的目的是反驳 OP 的以下评论 [重点是我的]:

即使使用第三方工具,我也被迫在 250GB 卷上使用 2K 簇大小的 FAT32。我不明白为什么会这样,为什么没有工具据我所知,由于 FAT32 的限制,可以使用 1K 簇来完成此操作。

测试平台

$ cat /etc/issue
Ubuntu 21.10 \n \l

$ uname -a
Linux xxxxxx 5.13.0-20-generic #20-Ubuntu SMP Fri Oct 15 14:21:35 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

$ mkfs.fat 2>/dev/null
mkfs.fat 4.2 (2021-01-31)
No device specified.

准备

$ truncate -s 250G filesystem

$ wc -c filesystem 
268435456000 filesystem

(注意250G,250 GiB 比你想象的 250 GB 还要大。我已经测试了两种大小。为了简洁起见,这个答案只显示了一个测试。)

文件系统创建

有意尝试将簇大小设为 512 字节,看看当簇大小确实太小时会发生什么:

$ mkfs.fat -F 32 -S 512 -s 1 -v filesystem
mkfs.fat 4.2 (2021-01-31)
WARNING: Number of clusters for 32 bit FAT is less then suggested minimum.
mkfs.fat: Not enough or too many clusters for filesystem - try less or more sectors per cluster

簇大小为 1024 字节:

$ mkfs.fat -F 32 -S 512 -s 2 -v filesystem
mkfs.fat 4.2 (2021-01-31)
filesystem has 255 heads and 63 sectors per track,
hidden sectors 0x0000;
logical sector size is 512,
using 0xf8 media descriptor, with 524287953 sectors;
drive number 0x80;
filesystem has 2 32-bit FATs and 2 sectors per cluster.
FAT size is 2032124 sectors, and provides 260111836 clusters.
There are 32 reserved sectors.
Volume ID is 46a16c4f, no volume label.

$ echo $?
0

确认

$ file filesystem
filesystem: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 2, Media descriptor 0xf8, sectors/track 63, heads 255, FAT (32 bit), sectors/FAT 2032124, serial number 0x46a16c4f, unlabeled

$ sudo mount filesystem /mnt/tmp

$ echo $?
0

结论

您尝试的第三方工具可能会受到任意限制(例如视窗,可能程度较小,但仍然如此)。“没有工具可以处理 1K 集群”的说法是不合理的,mkfs.fat在 Linux 中可以。

答案2

本质上 - 现代 Windows 版本上的格式化工具比 Win 9x 版本“更差”,并且往往提供有限的选项。我在 VHD 中创建了一个 250GB 的分区

Windows 甚至不允许你在磁盘管理 MMC 中将磁盘格式化为 FAT - 我思考它遵循所有 NT 系列系统上任意拥有的最大 32GB 窗口。

在此处输入图片描述

或者 Windows 11 中除 NTFS 之外的任何文件系统

在此处输入图片描述

(我也在 Windows 10 中测试过它。我认为农场里没有更旧的版本)

但是使用第三方格式化工具 - 我喜欢 ridgecrop 的 fat32 格式化程序,在这种情况下我使用了图形界面版本

在此处输入图片描述

从根本上讲,这是 Windows 磁盘格式化程序的一个限制。有趣的是,虽然它的几乎总是我们不可能知道开发人员在做这样的决定时是怎么想的,写道原版 UI 中有一个关于磁盘格式化程序的 YouTube 视频,解释了这背后的原因- 归结为“我认为在 NT4.0 的整个生命周期中,没有人需要 FAT32 中大于 32Gb 的驱动器,有人会替换它。”

相关内容