为什么会有 U 盘独个文件不可以超过 4GB 这种设定?
这个你眼中该被判刑的人叫
Marc B. McDonald (马克・B・麦克唐纳)
他是微软花钱雇佣的第一位员工,他在 1977 年写了一个用来让微软的 BASIC 语言运行在 5.25 英寸软盘里的文件系统,叫文件分布表(FAT)。当时的软盘里最大只能存放 360KB 的数据,是现在一张手机拍的照片的约十分之一。而且这种软盘在当时非常先进,是一年前 IBM 出的新玩意,当时大家都在用磁带或者长宽 20 厘米的 8 英寸软盘(容量 80KB)。
微软当时的卖点就是兼容,也就是说这个软盘文件系统和它上面的微软系统,以及系统之上的 BASIC 可以顺利地跑在各种电脑上,所以它很快就流行了,大家都在用,就像安卓可以跑在各种手机上所以很流行一样。
流行了的东西很难推翻,所以当微软发现它有最大文件大小限制的时候多少有点晚了,微软不能让大家立刻换文件系统,就像谷歌不能重新发明一个不能用安卓 app 的新系统,然后让各个厂商和消费者都换掉一样。
怎么办呢?微软同时走两条路:
第一条路,给这个软盘文件系统小修小补,从 FAT8 升级到 FAT12 再到 FAT16 再到 FAT32 再到 exFAT,每次系统大升级就推出一款,让人们逐步追上来,一步一步调整这个限制,顺便制造一些新系统的卖点。
第二条路,直接用全新技术做一个新的文件系统,叫新科技文件系统(NTFS),牛皮吹起来,高稳定高性能企业化,面向服务器和专业人士,就可惜占用有点儿高,所以让企业先用,慢慢优化完善并且吸引普通人用。
但是第一条路崩了。为啥崩了,因为 Windows XP 实在太火了,刚好到 XP 的时候是 FAT32,最大文件不能超过 4GB,而后面的 exFAT 大家都不敢用:我用在 U 盘上了,U 盘借别人插在一个别的 XP 上它不认了咋办,要是这个别人脾气不好要枪毙用辣鸡冷门文件系统的我可怎么办。
(当时虽然微软有出 exFAT 的驱动补丁,可放着一两百个漏洞不修,觉得装补丁不稳定的大有人在,你怎么确定 U 盘会插在装了补丁的机器上呢。)
而另一边也不顺利,NTFS 发展了很多年,终于吸引着大家让大家在硬盘上用起来了,可 U 盘当年寸土寸金的,速度也慢,人们不在乎性能在乎容量,所以没什么人在 U 盘上用它,微软也不用心去给它优化在这么小的盘上的使用体验。
之后就更糟糕了,因为 NTFS 很复杂、exFAT 没人用、FAT32 很通用这三件事变成了那段时间的客观事实,所以很多需要做兼容 Windows 的其他硬件(比如 mp3、mp4、机顶盒、智能电视等)干脆只做了 FAT32 的支持:你一个其他文件系统的 U 盘里面放了电影插上电视和机顶盒结果根本不读,给 mp4 格式化成 NTFS 的话可能直接变砖头了。所以 FAT32 进一步流行推广,国内销售商为了减少麻烦事也就统一只把 U 盘的默认文件系统弄成 FAT32 了。
而后来事情就彻底脱离微软的控制了,因为 FAT32 太火了,以至于各路厂商反过来威胁微软,迫使微软将 FAT32 的技术完全公开,以方便各个厂商在各种硬件设施上支持 FAT32,如今甚至发展到每台电脑的主板里都嵌入了它的支持。exFAT?被迫白送了上百个专利的微软不情不愿地拖到 2019 年才将它公开,至于 NTFS 更是不仅从没开放过,而且除了 Windows 以外甚至没有一家可以写出一个稳定的 NTFS 文件系统驱动,所以 NTFS 在 macOS 等系统下都是只能读不能写的,因为程序不稳定,万一写的时候搞坏了呢。
那么说回来,这个人该不该枪毙呢?
不该,因为如果我告诉你 45 年以后一个游戏有 1000000 个现在的游戏那么大,并且要你设计软件的时候考虑到这种情况,你又是小公司雇的第一名员工……
你肯定会觉得:“卧槽,可去他妈的吧,小破公司事儿真多,给这两个钱雇佣我这个普通程序员还做什么春秋大梦啊。何况我做的这个文件分布表就是你产品里的小陪衬,就像你和我说微信里的卡包功能要支持十万张卡每张卡里能存 100G 数据一样,这种春秋大梦爱谁干谁干反正我不干。”
(是的,当年微软卖的是插盘可用的 BASIC 语言,系统都是送的陪衬,何况是系统里的文件系统)
以上,我觉得费力解释这个的我也挺闲的。
来源:知乎