每种情况下的最大文件大小是多少?

unj*_*nj2 2 operating-system

Assume disc blocks are 8K bytes and that disc addresses are 32 bits: •
from the information in the i-node? – What size can be directly addressed 
– What size of file requires a double indirect block?
– What is the largest possible file?
Run Code Online (Sandbox Code Playgroud)

资料来源:http://ti.uni-due.de/ti/en/education/teaching/ss06/dv2/ex2_sol.pdf

有人可以帮我解决这些问题吗?

Spa*_*rky 7

几年前我曾经是一名文件系统开发人员.

使用链接中提供的材料......

可以使用存储在inode中的直接块访问范围为0 ..(80 kB - 1)的任何文件偏移量.这是因为有10个8 kB的块.

由于磁盘块为8 kB(8192字节),磁盘地址为32位(4字节),因此每个磁盘块最多可容纳2048(8192/4)个磁盘地址条目.这意味着单个间接块可以引用最多2048*8 kB字节的文件数据(16 MB).扩展这一点,我们发现双重间接块可以引用最多2048*2048*8kB的文件数据(32 GB).

使用直接块可以访问高达80 kB的文件数据.这转换为文件偏移0到(80 kB - 1),包括端点.

使用inode中存储的单个间接块可以访问最多16 MB的文件数据.这转换为80 kB到(16 MB + 80 kB - 1)的文件偏移量.

使用存储在inode中的双重间接块,可以访问最多32 GB的文件数据.这转换为文件偏移(16 MB + 80 kB)到(32 GB + 16 MB + 80 kB - 1).

使用存储在inode中的三重间接块,可以访问多达64 TB的文件数据.这转换为文件偏移(32 GB + 16 MB + 80 kB)到(64 TB + 32 GB + 16 MB + 80 kB - 1).

因此,文件的理论最大大小为64 TB + 32 GB + 16 MB + 80 kB.

实际的最大尺寸是另一回事.它可以受以下任何一个或组合的限制:

  1. 光盘大小.
  2. 分区大小.
  3. 固有的文件系统元数据限制.即使X小于理论上的最大文件大小,某些文件系统也不能设计为超出X大小.
  4. 与项目3相关,但值得拥有的是inode中保留的用于存储文件大小的位数.如果内存服务,原始Ext2将文件大小限制为32位.这为文件大小创建了(2 GB - 1)限制.

如果文件系统支持稀疏文件(链接中描述的文件系统可能会使用间接块),则可以"解决"一些实际限制.稀疏文件允许在1 GB光盘上"装配"2 TB文件等情况,而不使用2 TB的实际磁盘空间.顺便提一下,这是为什么inode可能经常包含关于文件实际使用的块数的信息的原因之一.

希望有所帮助.