文件系统新手

文件系统新手

我不明白为什么每个文件系统的文件大小和总可寻址内存都有限制。例如为什么FAT32的最大文件大小可以为4GB?

答案1

基本上,大部分问题都归结于旧标准(尤其是 FAT16/32),这些标准是在 4GB 文件闻所未闻、2TB 分区大得令人难以置信的时代设计的。他们在标准中做出了权衡,这些权衡在当时是完全合理的。

如果你仔细研究一下,就会发现旧的文件系统非常有限,因为当时计算机的使用受到限制。现在,我们有能力创建如此大的分区,我们可能在接下来的 20-30 年内都不会拥有与之匹配的设备。

答案2

我将在这里省略大量的编程理论和操作系统设计,否则这将需要几天的时间。

简而言之,因为在编写它们时,在实现中做出了某些假设和决定,特别是在如何寻址和访问文件方面。

用计算机的术语来说,任何事物都必须有一个最大值——无限是不存在的。

更重要的是,每个目录条目都需要有一种独特的方式来标识自己——所有权、它有什么特殊属性和权限、它是什么类型的文件(目录、符号链接、硬链接、常规文件、管道、块设备、字符)设备等)。在大多数 UNIX 文件系统上,这称为 '索引节点号',并且由于每个文件都必须是唯一的,因此您拥有的文件数量永远不会超过可能的不同数量。

其他问题是(或曾经是)优化问题之一;因为文件系统操作是您的系统将要做的事情相当通常,设计者自然倾向于选择他们认为合理的最小尺寸数字范围,因为计算机可以用(位长方面)较小的数字比较大的数字快得多......并且当您在最大的硬盘驱动器中看到时市场容量为 1 或 2 GB,您可能倾向于认为 65,000 个文件和 2 TB 的最大文件系统大小是合理的前瞻性想法。

然后时间流逝,不到十年后,内核程序员咒骂你的名字和你缺乏远见,因为他们试图将更好的容量逆向工程到你的文件系统代码中。

相关内容