【问题标题】:Why are FAT32 disks limited to 4GB files?为什么 FAT32 磁盘限制为 4GB 文件?
【发布时间】:2011-01-11 20:43:19
【问题描述】:

我不是在寻找解决方法;我想要一个解释。我通过谷歌找到的大多数链接只是告诉我文件限制是 4GB,但不知道为什么。

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

但这仍然没有详细说明原因。 (SCANDISK和它有什么关系?)

也许我会明白是否有可能克服 4GB 文件大小限制。

【问题讨论】:

    标签: filesystems fat32 filesize


    【解决方案1】:

    因为 FAT32 存储 32 位文件大小,并且您可以存储在 32 位中的最大值为 2^32-1 ~= 4.29e9。 2^32-1 字节 = 4GB - 1 字节。

    (事实上,这在维基百科的文章中有解释。)

    【讨论】:

    • 是的,我知道,但是为什么会这样做?通过一些随机约定?设计文件系统的人当然知道这将是限制,那么为什么要满足于这个限制呢?是因为当时可用的硬件吗?
    • FAT32 是在具有 32 位编译器的 32 位操作系统的 32 位硬件上实现的,因此这是一个显而易见的选择,任何超过 32 位的东西都会耗费宝贵的处理器周期、磁盘空间和编程时间。 (当时,我们认为 4GB 对于 HD 来说已经相当大了,更不用说单个 文件了。)
    • 啊,很有趣。这正是我想知道的。谢谢!
    • 我认为 fat32 是关于让文件分配表寻址(簇计数其中 fat 字段中的值是文件中下一个链的地址(32 位),但由于 1 个簇大约为 4KB我不明白为什么是 4GB)
    【解决方案2】:

    为了扩展这个答案,FAT32 派生自 FAT16 和 FAT12。引入 FAT12 时,PC 运行 16 位操作系统,并且没有大于 10 兆字节的驱动器。我认为没有人会期望 PC 上的任何人都需要一个大小是最大可用驱动器大小四百倍的文件。此外,即使微软有先见之明,为每个目录条目分配一个额外的字节来保存文件大小的第 32-39 位(每个文件最多允许 1 TB),但任何应用程序程序员都会使用它是值得怀疑的。没有语言为大于 32 位的整数数学提供方便的支持;甚至 32 位数学也被认为是很花哨的。

    我心中的一个更大的问题是,为什么我不知道有任何努力转向不基于顺序编号扇区的标准非 FAT32 存储接口。闪存驱动器和硬盘驱动器都可以从了解各种扇区写入的逻辑意义中受益(在闪存的情况下,因为它可以在执行磨损管理时消除复制已删除扇区的需要;在硬盘驱动器的情况下,因为它允许写入以不违反数据一致性要求的方式重新排序)。

    【讨论】:

      【解决方案3】:

      我也有同样的疑惑,终于意识到每个文件都有自己的元数据,其中包含4个字节的文件大小。因此,最大文件大小为 4G - 1 个字节。

      【讨论】:

        猜你喜欢
        • 2011-02-02
        • 2010-11-15
        • 2016-01-12
        • 2021-04-29
        • 2010-11-12
        • 1970-01-01
        • 2014-05-30
        • 2020-01-31
        • 2017-10-10
        相关资源
        最近更新 更多