在访问某个目录时,Rancher容器的shell中有一个权限错误,但是权限是正确设置的。然后,我注意到该目录的链接计数为零,如下所示:
但是对于任何目录,链接的最小数量是2,self .
和父..
。为什么这里会显示0呢?我还是不明白。现在,我无法访问这个shell来检查它指向哪个inode (ls -i),但我猜它是空的(我不知道,TBH)。
我将尝试移除,然后再对其进行mkdir
,以查看它是否解决了问题,但我真的很想了解为什么会发生这种情况。
谢谢!!
PS:我不知道它作为一个牧场容器是否有任何影响。
发布于 2018-12-28 03:48:16
POSIX要求链接计数至少为2,通常为2+子目录数,只要目录不是rmdir。如果目录被删除,则链接计数通常为0。
然而,并不是所有的文件系统都是POSIX。虽然通常在UNIX上可以作为根文件系统使用的文件系统通常是可用的,但btrfs是唯一的例外,因为它作为root fs工作得很好,但不是POSIX。
在GNU/Linux (和许多其他POSIX系统,但不是所有其他POSIX系统)上,当文件系统不遵循POSIX语义时,它通常使用1的链接计数,这在正常操作中不会出现(0、2和更高版本是可能的,但不是1)。像GNU这样的实用程序将通过特殊的大小写目录来适应这种情况,链接计数为1是非POSIX,从而可能导致更慢的操作。
在您的示例中,链接计数1表示这是一个非POISIX文件系统,而链接计数0 0闻起来更像是文件系统实现中的bug,因为它不是一个合理的值。
https://unix.stackexchange.com/questions/427551
复制相似问题