NFS(2) および fcntl(2) によるクラスタリング

NFS(2) および fcntl(2) によるクラスタリング

Perl 5.x のドキュメントでは、クラスタリング (..) 実装は次の基本呼び出しのいずれかを使用し、使用できない場合は 1 から 3 まで作業することが示されています。

  1. 群れ(2)
  2. FCNTL(2)
  3. ロック(3)

それは問題ではありません。しかし、あなたはNFSでFlock(2)を使用してはならないという免責事項に気づいたでしょう。このドキュメントでは、-Ud_flockフラグを使用してPerlがクラスタリングを使用することをお勧めします(2)。 Flock(2)(Redhatの)マニュアルページには、NFS問題に関する同様の免責事項が記載されています。

私の質問はなぜですか! ! ! NFSでクラスタ(2)が安全でない理由の詳細な記事や説明が見つからないようです。

私はRedhat(flock(2)を使用)とSolaris(fcntl(2)を使用)でCとPerlで複数のテストスクリプトを作成しました。 Perlが実際にfancy(2)とfcntl(2)をそれぞれ使用していることを確認するために、strace / trussを実行しました。ロックが尊重されない問題は再現できません!何を提供しますか? ?

ベストアンサー1

私はあなたが遺産の問題に​​ついて考えていると確信しています。 Perl5のマニュアルは1994年に発表され、1991年にPerl4のマニュアルを単に編集したことに注意してください。当時、しばしば「悪夢」と呼ばれるファイルシステムは、「クマがどれだけうまく飛び上がるのかということではなく、クマがどれだけうまく飛び上がるかについて」だったと言うこともできます。驚くべきことですが、踊るだけです。」

1991年、NFS2はSunからゆっくりと他のプラットフォームに移行しており、比較的荒れていました。セキュリティモデルは本質的に存在せず(クライアントシステムのルートはNFSマウントの全内容を読み取ることができます)、ロック(nfs.lockdによる)は実験のこの側面です。クラスタリングセマンティクスが2つの異なる相互運用可能な実装間で正しく機能することを期待するのは愚かです。 Coaxは当時の主要なイーサネットPHYであり、多くのネットワークユーザーはそれを使用しながら不快な経験をしたことがありませんでした。

おすすめ記事