我问一个问题在 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 编号冲突的可能性。