Qingwa
(青小蛙)
1
原始链接在: FAT32 不止 32GB?我也误会了很多年 - 小众软件
当你用 Windows 格式化一个大于 32GB 的 U 盘时,并不能选择 FAT32 磁盘格式。但它才是那个可以在更多上古设备中打开的格式。
前几天,微软在 Windows 11 开发者预览频道 Dev 26300.8170 中,把 FAT32 的人为限制取消了,现在通过命令行格式化,可以直接创建最大 2TB 的 FAT32 分区。
是的,这是一项人为限制。
不过早在 2024 年,这个限制解除就进入了更激进的 Canary 测试通道。拖了将近两年,才推进到现在的 Dev 通道,后面什么时候会进入 Beta,甚至正式版,还不好说。
FAT32 的设计本身,一直以来都支持 2TB 大小,但早在 Windows XP 时代,微软就将其人为限制到了 32GB,一直兼容到了 Windows 11。
久而久之,包括青小蛙在内的很多人都默认 FAT32 最大只有 32G,毕竟它名字里还有一个很具有误导性的 32 😂。
至于 FAT32 真正的限制、缺陷:它不支持超过 4GB 的单个文件。
这个没变,估计也不会变了。
使用方法
插入超过 32GB 的 U 盘到电脑,使用命令提示符输入(假设U盘使用 e:):
就行了。
趣闻
早在这项改动进入 Canary 测试通道时,微软的前 Windows 开发人员 Dave Plummer 在 X 上透露的:
我是在1994年末的一个周四雨天早晨,在微软写这个 Format 对话框的,我想是的。
我们当时正在将 Windows 95 用户界面的数十亿行代码移植到 NT 上,而 Format 只是那些 Windows NT 与 Windows 95 差异足够大,以至于我们必须设计一些自定义 UI 的领域之一。
我拿出一张纸,写下了格式化磁盘时所有可能的选项和选择,比如文件系统、标签、簇大小、压缩、加密等等。
然后我启动了 VC++ 2.0,用资源编辑器布局了一个简单的垂直堆叠,列出了你必须做出的所有选择,按你大致需要做出的顺序排列。它并不优雅,但它能用,直到优雅的 UI 到来为止。
那是大约30年前的事了,而这个对话框仍然是我那个周四早晨的临时版本,所以小心提交“临时”解决方案!
我还必须决定多少“簇松弛空间”才算太多,结果这限制了 FAT 卷的格式化大小为 32GB。这个限制也是那天早晨的一个任意选择,并且作为一个永久的副作用一直伴随着我们。
所以记住……没有“临时”的提交 🙂
原文:https://www.appinn.com/fat32-2b/
最后,Windows 10 不要想了,没这项功能,找第三方吧。
Canary通道测试的是“平台更新”,不是“最激进”
现在Dev和Beta是同步的
Canary并不一定有最新功能,例如Recall和Click to Do,延期了几个月才在Canary上出现
switch sd 卡只能用 fat32,否则会丢失数据,所以我的 1tb 卡一直是 fat32 的。这个“人为限制”其实早就可以用 diskgenies 绕过
2 个赞
L11
(漢故征西將軍曺侯)
6
如果只是UI上的限制,是不是意味着,可以直接hack进去恢复大于32G磁盘的FAT32选项(虽然不如直接用命令行)
不过阿三应该感谢30年前的程序员让win11多了项“值得称道”的“新特性”
wankkoree
(Wankko Ree)
8
是的是的,名字里的 32 让我以为 FAT32 就是最大容量 32G 的版本,然后 exFAT 就是支持超级大最大容量的改进版本。
1 个赞
是win太大跨度太久了吗?总觉得这样的“草台时刻”超级多的样子
啊,这……我甚至是第一次知道 Windows 之前还有这限制……
话说我之前买过几个 64 GB 的 U 盘,文件系统用的都是 FAT32(好像出场的时候有些就是格式化成 FAT32 的),而且平时格式化 U 盘基本上都是在 Linux 上进行的,所以从来不知道 Windows 还有不能把 大于 32 GB 的分区格式化成 FAT32 的限制。
另外我没有把 FAT32 中的 “32” 和 容量联系起来过,可能是因为我还见过 FAT16,而早期操作系统有 16 位和 32 位的,所以我一直以为 “FAT32” 的意思是给 32 位操作系统使用的 
言归正传,我上网查了一下,“FAT32” 这个名字中,“32” 的含义其实是:
为了解决FAT16对于卷大小的限制同时让DOS的实模式在非必要情况下不减少可用常规内存状况下处理这种格式,微软公司决定实施新一代的FAT,它被称为FAT32,带有32位的簇数,目前用了其中的28位。
理论上,这将支持总数达268,435,438(<228)的簇,允许磁盘容量达到8TB。
参考资料:https://zh.wikipedia.org/wiki/檔案配置表#FAT32
簇(Data cluster)或者分配单位(allocation unit)是操作系统中硬盘的文件储存管理单位,可由一或多个物理扇区组成,由格式化时选定文件系统而定。簇是操作系统用的逻辑概念,而非硬盘的物理特性。
参考资料:https://zh.wikipedia.org/wiki/簇
1 个赞
lhb5883
(lhb5883)
11
对的,不过这样会导致最小簇变大,存小文件就很浪费,哪怕是1kB也要占一个簇。NTFS是可以存在MFT里面的。
这个和 FAT32 的技术设计有关吧。
∵ FAT32 中,记录文件大小的字段是 32 位(是二进制位),单位是字节。
∴ 文件的最大大小就是232-1 字节。
又 ∵ 1 GB = 210 MB = 210×210 KB = 210×210×210 字节 = 230 字节,
∴ 232 字节 = 232÷230 GB = 22 GB = 4 GB
∴ 232-1 字节 ≈ 4 GB
综上所述,FAT32 中,文件的最大大小约为 4 GB。
我们可以用 10 进制类比一下。用 3 位数字,最大能表示的数字是多少呢?答案是 999(即 103-1)。
不过……考虑到文件系统也是人设计的,所以说 “4GB的文件大小也是人为限制”……也完全正确。
2 个赞
hzhbest
(天平那方重力异常)
14
顺带,FAT系列文件系统还有文件总数限制(不是FAT16的根目录文件数限制):
(采自DS的回答;已从wiki条目印证)>>>
| 文件系统 |
簇号位数 |
FAT表最大项数 (理论) |
对文件数量的影响 |
| FAT16 |
16位 |
2^16 = 65,536 个 |
硬上限:包括根目录在内,所有文件和文件夹的总数不能超过这个数(实际略少,因为部分值被保留)。 |
| FAT32 |
32位 |
2^28 ≈ 2.68亿 个 |
硬上限:理论上最多能管理2.68亿个簇,因此文件/文件夹总数不可能超过这个数(实际会远低于此)。 |
| exFAT |
32位 (增强) |
2^32 - 1 ≈ 42.9亿 个 |
硬上限:理论上最多可管理42.9亿个簇,文件数量上限是天文数字。 |
| <<< |
|
|
|
NTFS直接使用文件的形式存放链表来记录数据块位置,从而摆脱了FAT表的束缚,文件大小和文件数都不受限制(只受限于最小一个扇区一个文件的规则,文件数上限就是磁盘/分区上扇区总数)。
有趣的是,纯NTFS分区的磁盘,需要老式Legacy(BIOS)的引导;而新式UEFI引导则需要磁盘第一个分区是FAT32文件系统才能实现……
Baiyssy
(Baiyssy)
15
我知道2^32=4G这个哏,不过我隐约记得有个地方说这只是个碰巧的解释。
现在找不到那篇文章了,我想大概是把32位Windows只支持4GB内存和这件事情记混了。
kanz
(米村拌饭)
16
这不巧了吗,我的C盘是NTFS,D和E都是FAT32 
hzhbest
(天平那方重力异常)
17
C盘是 NTFS,不代表第一个分区是 NTFS 的
——
补:DiskGenius的分区图:
其中MSR分区是微软保留的隐藏分区,无内容无格式化,纯占着连它自己也不知道能拿来干嘛
1 个赞