Linux - 链接计数为零的目录(Rancher 容器)

Linux - 链接计数为零的目录(Rancher 容器)

访问某些目录时,Rancher 容器的 shell 中出现权限错误,但权限设置正确。然后我注意到该目录的链接计数为零,如下所示: 在此输入图像描述

但对于任何目录,链接的最小数量是 2, self.和parent ..。那为什么这里会显示0呢?我不明白。现在我无法访问这个shell来检查它指向哪个inode(ls -i),但我猜它会是空的(我真的不知道,TBH)。

我会尝试删除然后mkdir再次检查它是否可以解决问题,但我真的很想了解为什么会发生这种情况。

谢谢!!

PS:我不知道它作为 Rancher 容器是否会产生任何影响。

答案1

POSIX 要求链接计数至少为 2,并且通常为 2 + 子目录数(只要目录不是 rmdir'd)。如果目录被删除,那么链接数一般为0。

然而,并非所有文件系统都是 POSIX。虽然一般文件系统可用作 UNIX 上的根文件系统,但 btrfs 是唯一的例外,因为它作为根文件系统工作得很好,但不是 POSIX。

在 GNU/Linux(以及许多但不是所有其他 POSIX 系统)上,当文件系统不遵循 POSIX 语义时,它通常使用链接计数 1,这在正常操作期间不会发生(0、2 和更高的值都是可能的,但不是 1)。 GNU find 等实用程序将通过将链接计数为 1 的特殊目录视为非 POSIX 来适应这一点,从而可能导致运行速度变慢。

在您的情况下,链接计数为 1 表明这是一个非 POISIX 文件系统,而链接计数为 0 零则更像是文件系统实现中的错误,因为它不是一个合理的值。

相关内容