通过 NFS 挂载的文件的 inode 号码从哪里来?

通过 NFS 挂载的文件的 inode 号码从哪里来?

我问一个问题在 codereview 上了解我是否可以安全地替换以下代码:

:inode => [stat.ino, stat.dev_major, stat.dev_minor],

抛出了未实现错误因为 jruby 没有检索统计Solaris 上 dev_major/dev_minor 的实现,由

:inode => [stat.ino, nil, nil],

从他们的解释中我明白,如果我在单个硬盘上操作的话是可以的,但如果我的文件分布在多个硬盘上,那么两个 inode 编号相同的话就会存在(很小的)冲突风险。

但就我而言,每个服务器的所有日志文件都通过 NFS 挂载在同一个目录中,所以我想知道在访问文件时,ruby 检索到的 inode 编号是否是远程文件的实际 inode 编号,或者是 NFS 链接的“本地”inode 编号,在这种情况下我可以安全地操作。

顺便说一句,我对这些概念不是很熟悉,而且英语不是我的母语,所以如果我说得不清楚,我很抱歉。

感谢您的帮助

答案1

inode 编号来自 NFS 服务器(包含日志文件的系统)。运行 ruby​​ 应用程序的系统是 NFS 客户端。因此,确实存在 inode 编号冲突的可能性。

相关内容