RAMにキャッシュされたNFSファイルの内容が破損しているのはなぜですか?

RAMにキャッシュされたNFSファイルの内容が破損しているのはなぜですか?

NFSサーバーと複数のクライアント(Ubuntu 18.04)があります。時々(まれに)他のクライアントがファイルを変更した後、クライアントは破損したデータを表示します。サーバーと他のすべてのクライアントはファイルを正しく表示します。

コンテキストは、単純な日常的な開発者ワークフローの状況です。クライアントコンピュータのIDE(PyCharm)でプログラムのPythonソースコードを編集し、ターミナルウィンドウコンピュータで別の(よりパフォーマンスの高い)SSHとして実行してプログラム。症状:ファイルの末尾からnullバイトを読み取るか、ファイルが切り捨てられます(Pythonコードを実行すると構文エラーが発生します)。

これはキャッシュのバグによるものだと思います。特に、影響を受けるファイルの内容は依然として以前のバージョンと誤って見なされますが、すべてのメタデータが正しく表示されます。新しいバージョンで。

したがって、他のクライアントがファイルを小さくすると、失敗したクライアントはそのファイルが古いコンテンツを持っているように見えますが、突然新しいサイズで停止します。他のクライアントがそれを大きくすると、欠陥のあるクライアントは古いコンテンツを見ることができますが、最後にいくつかのガベージ(ほとんど0バイト)が追加されます。

キャッシュの一貫性に関するNFSのマニュアルページを読んでいますが、問題は属性キャッシュに関するものではなく、マニュアルページではコンテンツのキャッシュについてあまり言及していません。それはおそらく、NFSではなく、通常のファイルシステムキャッシュ層で処理されるからです。

これプロパティ(アノード番号、サイズ、変更時間)はすべて正しく表示されますが、内容は表示されません。

これは、設定可能な属性キャッシュのタイムアウトに関するものではありません。間違ったファイルの内容はそこに無期限に残り、クライアントは間違ったものがあることに気づかないでしょう。繰り返します。クライアントが誤ったコンテンツ(偽のヌルバイトなど)のためにブロックされます。(およびそれ以上)キャッシュを手動で削除しない限り。

なぜですか?解決策はありますか?キャッシュを削除すると一時的に問題が解決される可能性がありますが、これは手動介入であるため、サイズが同じままで、他のクライアントで数バイトしか変更されない場合は、欠陥が静かになる可能性があります。

数年が経ちましたが、問題は続いて解決策がないようです。郵便はがきGitLabは2週間のデバッグでキャッシュエラーを見つけましたが、どちらも私の問題を実際に解決できませんでした。 )

ウェブ上で最も関連性の高い情報は、以下で提供されます。このメーリングリストの議論は2015年からです。しかし、結局のところ、開発者は全く問題がないと主張して混乱しています。それでは、HPCクラスタ設定でNFSをどのように使用しますか(ログインノードのコードを編集して実行のためにコンピューティングノードに送信)。ソースコードの破損したバージョンが表示されるコンピューティングノードの問題が頻繁に発生します。さらに重要なのは、NFSの人々が作成できるWONTFIX / NOBUGステートメントの背後にある哲学に関係なく、私のシナリオで実行可能な修正は何ですか?

ベストアンサー1

おすすめ記事