我想制作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
什么是区块组?块与索引节点一起被分为“块组”。这些只不过是连续的组
块。
每个块组保留一些块用于特殊目的,例如:
- ...
- 属于该组的索引节点结构表
- ..