特定inode结构下的最大文件大小是多少?

18

假设一个UNIX文件系统有一些限制--比如,2KB的块和8B的磁盘地址。如果inode包含13个直接条目,以及一个单一的、双重的和三重的间接条目,那么最大文件大小是多少?

答案:最大文件大小为256GB。

3个回答

23

这里为你解释:

http://www.cis.temple.edu/~ingargio/cis307/readings/stable.html

"The maximum size of a file will be 8KB*(10 + 2**10 + 2**20 + 2**30), that is more than 8TB."

将 8KB 的块替换为 2KB 的块,同时调整较小块大小的条目。

2KB*(10 + 2**8 + 2**16 + 2**24)

从你的问题中并不清楚这13个条目是否包括单打、双打和三打,或者它们是分开的,但这应该很容易调整——只需将表达式中的10改为13即可。

我认为我已经正确地调整了所有数学运算……请再次检查 =| 希望这不是我为你做的家庭作业 ;)


2
很抱歉七年后再问您一个问题,但是方程式中的这两个变量代表什么意思呢?2**10或者2**20 - 为什么是2,以及每个变量为什么是10或20? - NateH06
1
@NateH06 2**10 表示 2^10, 我认为这些数字如下:10 代表十个直接条目, 2^10 = 1024,即 1024^1。2^20 = 1024^2,2^30 = 1024 ^ 3,每个索引块包含 1024 个指针,所以很有道理。结果是 1,000,000,000 KB = 8.59833 TB - MuhsinFatih

1

一个块中有多少个指针?

     每个块为2kb = 2^11
     一个磁盘地址为8b = 2^3
     因此,在一个块中有2^11/2^3 = 2^8个指针"
    

文件系统中有多少指针?

     对于13个直接条目 = (2^8)*13 = 3328
     对于单间接 = (2^8)^2 = 2^16
     对于双间接 = (2^8)^3 = 2^24
     对于三重间接 = (2^8)^4 = 2^32
     总指针数为:3328 + 2^16 + 2^24 + 2^32"
     

因此,文件系统的大小为:

磁盘的大小为:指针总数*指针大小,大约为34 GB "
    


4
我不认为前13个条目是正确的,只应该有13个指针? - Timothy Leung

0

我们有一个可以用于竞争性考试的快捷方式,如下:

Max file size possible = [ block size/pointer size]^3 * block size

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