如何计算给定块大小和直接指针数量可以创建的最大文件?

如何计算给定块大小和直接指针数量可以创建的最大文件?

我正在尝试找到可以在具有 12 个直接指针和 2kb 块大小的 UNIX (FFS) 系统上创建的最大可能文件。我环顾四周试图找到某种公式或方向,我发现的最接近的是来自大学测验答题纸

根据他们问题的解决方案,我尝试计算我的场景的最大文件(我假设他们公式的其他部分是因为间接指针):

(12 * 2KB) = 24KB

但是,我无法验证我的解决方案。如何正确计算最大可能的文件大小?

答案1

通过 12 个直接指针,每个指针指向一个 2 kB 块,您可以拥有的最大文件是 24 kB(如您正确计算的)。没有简单的方法来验证它,您需要一个文件系统调试器来向您显示磁盘上的数据结构。

一旦有了间接指针,您需要知道 2 kB 中可以容纳多少个指针。如果假设每个块有 4 个字节,则可以容纳 512 个字节,因此每个间接块会额外提供 1 MB (512 * 2 kB)。

一旦有了双重间接,您就需要知道间接块描述的空间中可以容纳多少个间接。对于 1 MB 和 4 字节指针,这是 256 kB,因此双间接块允许 512 MB。

某些文件系统使用(开始,长度)对来描述磁盘上连续运行的块。如果您有 6 个这样的对而不是 12 个指针,那么根据磁盘的碎片程度,您可以指定 12 KB 到 6 * 2 32 * 2 KB 或大约 36 TB 之间。

相关内容