为什么FAT32磁盘只能支持4GB的文件?

17

我不是在寻找解决方法,而是希望有一个解释。通过谷歌搜索的大部分链接只告诉我文件限制为4GB,但并没有解释原因。

我知道维基百科上的解释:http://en.wikipedia.org/wiki/File_Allocation_Table#FAT32

但这仍然没有详细说明为什么。(SCANDISK与此有什么关系?)

也许我会明白如何克服4GB文件大小限制。

3个回答

32
因为FAT32存储32位文件大小,而在32位中最大可存储的值为2^32-1≈4.29e9。2^32-1字节=4GB-1字节。
(事实上,这在维基百科文章中已经解释过了。)

是的,我知道,但它为什么要这样做?按照某些随机的约定吗?设计文件系统的人肯定知道那将是极限,为什么要满足于那个极限呢?是因为当时可用的硬件吗? - boo-urns
19
FAT32是在32位硬件、32位操作系统和32位编译器上实现的,因此它是一个显而易见的选择,超出32位将会花费宝贵的处理器周期、磁盘空间和编程时间。(那个时代,我们认为4GB对于一个硬盘来说已经很大了,更不用说单个文件了。) - Fred Foo
啊,非常有趣。这正是我想知道的。谢谢! - boo-urns
我认为FAT32是关于文件分配表寻址的(簇计数,其中FAT字段中的值被寻址到文件中的下一个链(32位)),但由于1个簇约为4KB,我不明白为什么会有4GB的限制。 - Martin Kosicky

9
为了进一步回答这个问题,FAT32是从FAT16和FAT12演变而来的。当FAT12被引入时,PC运行的是16位操作系统,没有大于10兆字节的驱动器。我认为没有人预料到PC上会有人需要一个比最大可用驱动器大四百倍的文件。此外,即使微软有预见性为每个目录条目分配一个额外的字节来保存文件大小的32-39位(允许每个文件达到1TB),也很难想象任何应用程序员会使用它。没有语言提供方便支持大于32位整数的整数运算;即使32位数学也被认为是相当高级的。
在我看来,更重要的问题是为什么我不知道有任何努力朝着基于顺序编号扇区的标准非FAT32存储接口的方向发展。闪存驱动器和硬盘驱动器都可以从了解各种扇区写入的逻辑意义中受益(对于闪存,因为它将消除执行磨损管理时复制已删除扇区的需要;对于硬盘驱动器,因为它将允许以不违反数据一致性要求的方式重新排列写入)。

0

我有同样的疑问,最终发现每个文件都有自己的元数据,其中包含4个字节的文件大小。因此,最大文件大小为4G-1字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接