btrfs 相同的 inode 号

btrfs 相同的 inode 号

我有一个 btrfs 文件系统,顶层的所有文件夹都是 inode 256。
这对我来说不好,设备 id 是相同的,所以我假设这些是“虚拟 inode 编号”,Btrfs 有自己的机制这样做的。

是否可以获得每个目录真正唯一的物理inode?

看看会发生什么:

root@ReadyNAS-DEV:/home# find  / -xdev -inum 256
/
/home
/data
/apps
root@ReadyNAS-DEV:/home#

这不好。

答案1

我假设三个目录/home/data/apps是挂载点。

当您在 上挂载某些内容时/home,报告的 inode/home是已挂载分区的根目录的 inode,而不是原始/home目录的 inode。因此,这些 inode 与其他分区根目录的 inode 相同也就不足为奇了。

在我的 OpenBSD 机器上(不使用 btrfs):

$ find / -xdev -inum 2
/
/home
/usr
/var
/tmp

我在我的 Ubuntu 虚拟机上也看到了同样的情况。这不是一个错误。

另一种说法是:不同目录的系统调用stat返回的结构stat()具有相同的 值st_ino,但 的值不同st_dev。参见描述stat()sys/stat.h在 POSIX 中。

您可能误解了该-xdev选项find。有了它,就不会下降到其他文件系统上的目录中,但如果目录名称符合其他条件,它仍然会打印目录名称。

相关内容