mkfs ext2 忽略 inode 数量

mkfs ext2 忽略 inode 数量

我想制作ext2文件系统。我想设置“索引节点数“某个数字的选项。我尝试了几个值:

  • 如果-N 99000那么索引节点数:99552
  • 如果-N 3500那么索引节点数:3904
  • 如果-N 500那么索引节点数:976

但我的价值始终是不一样。为什么?

我这样称呼 mkfs

sudo mkfs -q -t ext2 -F /dev/sda2 -b 4096 -N 99000 -O none,sparse_super,large_file,filetype

我这样检查结果

$ sudo tune2fs -l /dev/sda2
tune2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          11111111-2222-3333-4444-555555555555
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              99552
Block count:              1973720
Reserved block count:     98686
Overhead clusters:        6362
Free blocks:              1967353
Free inodes:              99541
First block:              0
Block size:               4096
Fragment size:            4096
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         1632
Inode blocks per group:   102
Filesystem created:       Thu Apr  6 20:00:45 2023
Last mount time:          n/a
Last write time:          Thu Apr  6 20:01:49 2023
Mount count:              0
Maximum mount count:      -1
Last checked:             Thu Apr  6 20:00:45 2023
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     32
Desired extra isize:      32
Default directory hash:   half_md4
Directory Hash Seed:      61ff1bad-c6c8-409f-b334-f277fb29df54

答案1

这个数字并没有被忽略,而是被四舍五入了。看起来索引节点的空间是按组分配的。在你的输出中看到:

Inodes per group:         1632

当您请求 99,000 个 inode 时,它​​不能被 1,632 整除。因此,为了确保您获得所需的 inode 数量,该数字已四舍五入为 99,552,可被 1,632 整除。

看起来这个限制可能以某种方式从数量中得出块组,其中每组中的 inode 数量在所有块组中是统一的。我的猜测是,每个块组的 inode 数量的计算方式为请求的 inode 数量除以块组数量,然后四舍五入为整数。看OSDev Wiki 上的 Ext2

什么是区块组?块与索引节点一起被分为“块组”。这些只不过是连续的组

块。

每个块组保留一些块用于特殊目的,例如:

  • ...
  • 属于该组的索引节点结构表
  • ..

相关内容