文件系统都有不同的限制,从技术角度来看,为什么会出现这种情况?那么,到底是什么原因导致一个文件系统的文件大小或分区大小比另一个文件系统更大呢?
我的一个理论源于 inode 的使用以及文件系统在格式化分区时如何创建一定数量的 inode;然而,这只能解释文件系统中的最大文件数量。
答案1
许多此类限制来自包含以下数据结构固定大小字段其中存储了(字节、扇区等)计数。
例如,MBR 分区表(现代操作系统使用的方式)具有 32 位字段用于表示扇区数。这是四个字节,对于 CPU 来说是一个“方便”的大小。(较新的 GPT 分区格式使用 64 位值。)
32 位二进制数字中可能容纳的最大数字是 2 32 -1,即十进制的 4294967295。对于扇区为 512 字节的磁盘,这意味着 2199023255040 字节 - 仅比 2 TiB 少一个扇区。
您可以在任何地方发现类似的问题 - FAT32 文件系统最多只能有 2 32 -1 个簇(尽管 FAT 中的簇大小可以有所不同;这是您在格式化时看到的“分配单元”)并且由于相同的字段大小限制,最多可保存 2 32 -1 字节(4 GiB)的文件。
在创建各种文件系统时,它们的最大限制很可能看起来非常荒谬并且“不太可能成为问题”,并且在运行 MS-DOS 的系统中,使用 64 位甚至 32 位数字效率会非常低。(早期的 MS-DOS 版本甚至不支持文件夹!)
如今文件系统使用 64 位计数,这再次“不太可能成为问题”(2 64是很多)。
但除了值得注意的是,现代文件系统已经发生了很大变化。它们不再是静态 inode 表或线性目录条目,而是根据需要增长,并使用诸如 B+ 树之类的结构。(我说的是 NTFS、ZFS,可能还有 XFS……)