我发现在我的根目录下,有一些目录具有相同的 inode 号:
$ ls -aid */ .*/
2 home/ 2 tmp/ 2 usr/ 2 var/ 2 ./ 2 ../ 1 sys/ 1 proc/
我只知道目录的名称保存在父目录中,而它们的数据保存在目录本身的inode中。
我在这里很困惑。
这就是我在跟踪路径名 /home/user1 时的想法。
- 首先,我进入 inode 2,它是包含目录列表的根目录。
- 然后我发现名称 home 与 inode 2 配对。
- 所以我回到磁盘找inode 2?
- 我在这里得到了 user1 这个名字?
他们在不同的设备上。
如果我们查看 的输出
stat
,我们还可以看到文件所在的设备:所以这两个在不同的设备/文件系统上。Inode 编号仅在文件系统中是唯一的,因此这里没有什么不寻常的。在 ext2/3/4 上,inode 2也始终是根目录,因此我们知道它们是各自文件系统的根。
设备号 + inode 的组合在整个系统中可能是唯一的。(有些文件系统没有传统意义上的 inode,但我认为它们仍然必须在其位置上伪造某种唯一标识符。)
那里的设备编号似乎与设备节点上显示的相同,因此
/dev/sda1
保存文件系统所在/
的位置:任何给定文件的 inode 编号对于文件系统来说是唯一的,但对于安装在给定主机上的所有文件系统不一定是唯一的。当您有多个文件系统时,您会看到文件系统之间的 inode 编号重复,这是正常的。