windguy 发表于 2006-5-28 11:16:08

MINIX文件系统的问题,计算超级块中i节点总数?

MINIX文件系统的超级块字段为:
struct super_block {
        unsigned short s_ninodes;
        unsigned short s_nzones;
        unsigned short s_imap_blocks;
        unsigned short s_zmap_blocks;
        unsigned short s_firstdatazone;
        unsigned short s_log_zone_size;
        unsigned long s_max_size;
        unsigned short s_magic;
         ................................
};
s_ninodes为该分区中i节点总数,我想请问是怎么算出来的?

我可以计算s_nzones逻辑块总数,例如MINIX文件系统的分区为64M,则MINIX文件系统的一个逻辑块为1K,那么就有64*1024*1024/1K=64*1024个逻辑块。
知道了逻辑块总数目,那么逻辑块位图所占的块数s_zmap_blocks也就知道了,64*1024/(8*1024)=8个块,所以逻辑块位图占用了硬盘上8个逻辑块。

但是i节点就不知道是怎么计算的?

armybird1016 发表于 2006-5-28 21:54:43

我没有仔细阅读minix源代码,我觉得在inode节点分配的时候,把计数值+1

windguy 发表于 2006-5-28 22:28:12

LINUX 0.11的内核,它的文件系统就是MINIX的.
有谁知道超级块中这个s_ninodes(总的i节点数)是怎么计算出来的?
如果是64M的分区,那么这个值应该是多少.

windguy 发表于 2006-5-28 22:33:31

我没有仔细阅读minix源代码,我觉得在inode节点分配的时候,把计数值+1

i节点总数应该是在分区的时候,根据大小就固定了,而使用i节点的时候是根据i节点位图的位的占用情况来判断的.

duyaolin 发表于 2006-9-24 10:52:26

用MKFS时就须指定INODE的个数,
应该是在分区时就固定的
页: [1]
查看完整版本: MINIX文件系统的问题,计算超级块中i节点总数?