在某些 ext4 分区上使用 dumpe2fs,我得到初始数据,第一个 inode 是 #11。但是,如果我ls -i
在此磁盘根分区上,我会发现它的索引节点号是#2(如预期)。那么... dumpe2fs 报告的“第一个分区”是什么?
答案1
#11 是第一个“非特殊”inode,可用于第一个定期创建的文件或目录(通常用于lost+found
)。该 inode 的编号保存在文件系统超级块 ( s_first_ino
) 中,因此从技术上讲,它不需要是 #11,但mke2fs
始终以这种方式设置。
从 #0 到 #10 的大多数 inode 都有特殊用途(例如 #2 是根目录),但有些是保留的或在 ext 文件系统系列的非上游版本中使用。用法记录在内核.org。
索引节点号 | 目的 |
---|---|
0 | 不适用 |
1 | 缺陷块列表 |
2 | 根目录 |
3 | 用户配额 |
4 | 团体名额 |
5 | 为引导加载程序保留 |
6 | 恢复删除目录(保留) |
7 | “调整索引节点大小” |
8 | 杂志 |
9 | “排除”inode(保留) |
10 | 副本 inode(保留) |
答案2
Inode #1 -> #10 是“保留”。保留块 #2 是文件系统的“根”目录
所以 #11 通常是分配的第一个实际 inode...这可能是lost+found
所以:
% ls -ali / | awk '$1<=11'
2 dr-xr-xr-x. 18 root root 4096 Jul 24 2019 ./
2 dr-xr-xr-x. 18 root root 4096 Jul 24 2019 ../
2 dr-xr-xr-x. 6 root root 4096 May 1 22:21 boot/
3 drwxr-xr-x 17 root root 2980 Jun 30 20:49 dev/
11 drwx------. 2 root root 16384 Jul 24 2019 lost+found/
1 dr-xr-xr-x 90 root root 0 Jun 30 20:49 proc/
1 dr-xr-xr-x 13 root root 0 Jun 30 20:49 sys/
目录boot
dev
proc
和sys
都是挂载点,因此ls
输出显示这些文件系统内的索引节点号。剩下.
and作为..
#2 和lost+found
#11
在 ext2 的早期版本中,这个保留计数是固定的。在更高版本中,它可以在超级块中配置,这就是dump2fs
报告的值。