专栏名称: 运维
关注互联网运维技术,分享知识
目录
相关文章推荐
InfoQ架构头条  ·  “天价”ERP ... ·  4 天前  
51好读  ›  专栏  ›  运维

微软在Win11解除30年旧限制,前工程师:经典的东西不能随便动!

运维  · 公众号  · 运维  · 2024-08-25 12:28

正文

本文经授权转自公众号CSDN(ID:CSDNnews)

整理 | 苏宓

Windows 中一个沿用近 30 年的限制,终于被微软想起来要修改了?

近日,微软发布了一篇博客文章分享了最新的 Windows 11 Canary 测试版本功能更新细节,其中有一条关于存储(Storage)的变化引起了众人的注意——“当使用 format 命令从命令行格式化磁盘时,我们将 FAT32 的大小限制从 32GB 增加到了 2TB”。

这个改动说大也不大,但是对用户的影响也不小。有用户表示:

  • 这让我抓狂了很多年,但我已经很久没有遇到这个问题了(自从换了 Linux 和 Apple 电脑之后)我忘了这对我们其他人来说仍然是一个问题。

1、工程师的随意之举,被用了 30 年?

众所周知,FAT32 是一种文件系统,用于在驱动器上存储和管理数据。最早作为 FAT(文件分配表)在 1977 年为软盘开发,之后逐步扩展为 FAT12、FAT16,并在 1996 年由微软推出 FAT32,以支持越来越大的驱动器容量。这意味着 FAT32 已经存在将近 30 年了。

一直以来,微软在 Windows 中对 FAT32 驱动器施加了 32GB 的容量限制,尽管 FAT32 文件系统理论上可以支持高达 16TB 的容量。实际上,你可以用其他工具或系统格式化一个大于 32GB 的 FAT32 驱动器,并在 Windows 中使用它,但 Windows 的内置格式化工具限制了自己格式化 FAT32 驱动器的最大容量为 32GB。

那么,这种限制究竟从何而来?

最初,许多人认为 FAT32 的 32GB 限制是受二十多年前互联网时代物理设备的限制所致。直到微软的一位已退休工程师 Dave Plummer 现身回应——“这是我某天早上武断做出的决定”,这才让大家明白了这一限制的真正来源。

在回忆开发这一功能时,Dave Plummer 还专门发了一个 YouTube 视频来分享整个经过:当时的他参与了将 Windows 95 的外壳移植到 Windows NT 的工作。这其中包括对 Windows 格式化工具的重新设计(由于 Windows 95 系统与 Windows NT 差异很大,“格式化工具”必须完全重写然后进行替换)。除了处理底层的 API 部分,他还快速制作了经典的层叠格式化对话框。

同时,他也在思考为未来大量的 Windows 用户提供什么样的簇大小。

简单来看,簇是存储数据的基本单位,FAT32 对一个卷中簇的总数有固定的限制。将簇设置得非常大,会导致卷也很大,但这会浪费很多空间。例如,如果选择 32KB 的簇大小,那么即使是非常小的文件,比如一个简单的“Hello, World”程序,也会占用整整 32KB 的空间。

「我们把这种浪费叫做“空闲”」,Plummer 在视频中解释道(https://www.youtube.com/@DavesGarage/videos),「这是使用 FAT32 格式化卷时不可避免的空间浪费。问题是,簇大小要设置多大才算大?在什么情况下你会觉得‘这样太浪费了,不能允许这么做’?这就是我当时需要做出的决定。」

当时,Plummer 在市面上能找到的最大内存卡只有 16MB 容量。“也许我把它的大小乘以一千。然后为了保险起见再翻倍,我想这样足够满足 NT 4.0 的需求了。我设定了 32GB 作为限制,然后就继续我的工作了”,Plummer 说道。

Plummer 进一步解释称,他的 32GB 限制只是暂时的,之后会根据 Windows GUI 修改而更新。

殊不知,当时这个临时、有些随意性的决定被微软一用就是近三十年的时间,直至现在也没有改。

Dave Plummer 曾有些后悔地说道,“这是我犯下的,一个不能被原谅的致命错误...... 归根结底,这是一个简单的缺乏远见的问题,再加上临时解决办法变成永久性解决方案的老问题”。

此后在现代 Windows 版本中,我们仍在使用这一限制。

2、带来的影响

如今,微软正在解除这一限制,Windows 11 上的 FAT32 格式将支持最大 2TB 的分区,这一变化将使用户在使用 FAT32 系统时更容易格式化 USB 驱动器或闪存卡。

不过值得注意的是,截至目前,这只能通过命令行中的 format 命令来实现;如果使用驱动器格式化对话框,限制显然没有改变。同时,虽然 FAT32 驱动器的最大容量提升到了 2TB,但 FAT32 中单个文件的最大大小仍然是 4GB。

对于此番微软做出的变更,Dave Plummer 再次现身评论道:“微软正在移除 FAT32 分区的 32GB 限制,但仅限于通过命令行操作。对我来说这是个新闻,因为我以为命令行已经没有这个限制了!不过,图形用户界面(GUI)仍然会保持我那个 1994 年的 32GB 人工限制。你可不能随便动经典的东西 :-)”

3、微软为什么现在才想起来更改?

现实来看,如今大多数 Windows 用户都在使用 NTFS,实际上除了在用于较旧设备的闪存驱动器和 SD 卡上,几乎没有必要使用 FAT32。

不过,现在在 Windows 中可以创建现代容量的 FAT32 驱动器,而不需要依赖第三方软件,这还是很不错的。

也有不少人仍希望,微软可以在即将发布的 Windows 11 版本中更新格式化 GUI,使每个人都能更轻松地创建完整的 FAT32 分区。

那要问为什么微软突然在最新的 Windows 11 测试版中有了这项更改,也网友猜测或许微软接下来有“大动作”,其表示:

但究竟为什么,直到现在,微软才终于移除了这个有些人为且故意设定的限制呢?

Windows 中的 FAT32 格式有容量限制,这个问题一直存在。exFAT是一种比FAT32更现代的文件系统,但它的推广和兼容性进展非常慢(例如,exFAT 直到 2019 年才不再是微软专有的,谷歌甚至在较新的 Pixel 设备上直到 2022 年/Android 13 才开始正式支持),这些问题困扰了我们许多年,甚至超过了十年。无论是 Windows 格式化的移动存储 USB 闪存驱动器还是 SD 卡,这都是一个持续存在的问题,影响了你能想到的任何可以插入 USB 或 SD 媒体的设备,比如打印机、相机、智能手机,甚至是烤面包机等。

所以问题是——为什么微软现在突然开始改变,而不是在多年前就开始?

在德国 ComputerBase 论坛上,有一种“阴谋论”猜测,虽然更多是带有调侃或半开玩笑的成分,但也许其中有些许真实。理论是:

微软突然改变这个限制,并不是为了所有的用户或硬件设备生产公司,而是为了他们自己,因为即将发布的 Windows 12 将会非常庞大,包含大量的 LLM AI 模型和库,原来的安装媒体工具创建的介质将无法容纳这些内容,而据我了解,这些工具将闪存驱动器格式化为 FAT32(即使是更大的驱动器),这是 UEFI 所要求的。

还有用户评价道,「有点让人沮丧的是,像 FAT32 这样(按照现代标准)比较粗糙的文件系统仍然是最基本的选择,被用在闪存驱动器和各种设备上。希望业界能够达成共识,使用更现代和可靠的文件系统。」

那么微软取消这项限制,对你是否有影响?欢迎留言分享你的看法~

参考:

https://blogs.windows.com/windows-insider/2024/08/15/announcing-windows-11-insider-preview-build-27868-canary-channel/

https://news.ycombinator.com/item?id=41264844

本文转自公众号“CSDN”,ID:CSDNnews
---END---