web-dev-qa-db-ja.com

NFSを介してマウントされたファイルのiノード番号はどこから来ますか?

次のコードを安全に置き換えることができるかどうかを知るために、codereviewで 質問 を尋ねました:

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

jrubyがdev_major /のstat実装を取得しなかったため、NotImplementedErrorをスローしましたSolaris上のdev_minor、

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

彼らの説明から、単一のハードドライブで操作する場合は問題ないことがわかりましたが、ファイルが複数のハードドライブに分散している場合、同じ番号の2つのiノードとの衝突の(小さな)リスクがあります。

しかし、私の場合、すべてのサーバーのすべてのログファイルがNFSを介して同じディレクトリにマウントされるため、ファイルにアクセスするときに、Rubyによって取得されたiノード番号が実際のiノードになるかどうか疑問に思いました。リモートファイルの番号、またはNFSリンクの「ローカル」iノード番号。この場合、安全に操作できます。

ところで、私はそれらの概念にあまり精通しておらず、英語は私の母国語ではないので、不明な点がある場合はお詫び申し上げます。

ご協力いただきありがとうございます

1
Aldian

Iノード番号はNFSサーバー(ログファイルを含むシステム)から取得されます。 Rubyアプリケーションが実行されているシステムはNFSクライアントです。したがって、はい、iノード番号の衝突の可能性があります。

1
Scott Leadley