LinuxにNFS共有上の1つのファイルのキャッシュを強制的にフラッシュさせるコマンドはありますか?


14

StackOverflowに関するこの質問に関連し、NFSキャッシュをフラッシュする方法や、LinuxにNFS共有上にあるファイルの最新のコピーを強制的に表示させる方法があるかどうか疑問に思っています。

4台のApacheサーバーがNFSを介して同じディレクトリをマウントし、1台のサーバーがファイルに変更を加えた場合、他のサーバーがその変更を確認するのに約5〜10秒かかります。このウィンドウ内でそのファイルに2番目の変更を加えると、最初の変更が上書きされる場合があります。

fstabファイルシステムのエントリは次のとおりです。

172.16.1.15:/home               /media/home     nfs     vers=3,defaults,noauto,sync,acregmin=1          0       0

LinuxにNFS共有上の1つのファイルのキャッシュを強制的にフラッシュさせるコマンドはありますか?


使用しているApacheキャッシュメカニズムは何ですか?
usermane

@usermane:Apacheキャッシュメカニズムを使用していません。問題のファイルはPHPファイルであり、あるホストで変更された場合、他のホストはその変更を数秒間認識しません。
ジョシュ

回答:


12

これらのアイテムをチェックして、あなたのために何か働くかどうか確かめてください:

  1. クライアントで、NFSファイルシステムの行のオプションctoにあるオプションをまだ使用していない場合は/etc/fstab、追加します。 ctonfsクライアントにclose-to-open経由でファイルを開くように指示します。これにより、ファイルを開くたびにファイルが更新されます。

  2. サーバー上で、ファイルシステムがsyncでなくオプションでエクスポートされていることを確認してくださいasync。同期書き込みでは、ファイルが閉じられると、クライアントはディスクにフラッシュします。(または、commit()が作成されるたびに、nfs V3で)。その方法でパフォーマンスが低下する可能性がありますが、NFSファイルシステムへの書き込みを行う場合は、必ずsync設定する必要があります。

  3. そのstackoverflow投稿に続いて、O_DIRECTでファイルを開くことは、カーネルがCONFIG_NFS_DIRECTIOでコンパイルされた場合にのみ機能します。

  4. また、httpd.confファイルに次の設定があることを確認してください。

    • EnableMMAP off
    • EnableSendfile off

    Apacheパフォーマンスチューニングドキュメントから:

    • NFSマウントされたファイルシステムにあるファイルをメモリマップし、別のNFSクライアントマシン上のプロセスがファイルを削除または切り捨てた場合、プロセスは次にマップされたファイルコンテンツにアクセスしようとしたときにバスエラーを受け取る場合があります。
    • EnableSendfileをオフにしても、NFSの同期/非同期動作には特に役立ちませんが、NFSでApacheを使用している場合はオフにする必要があります。

ありがとう!これらは素晴らしい提案です。私はctoクライアントで使用していないので、試してみます。サーバーsyncasyncサーバーも持っていません。私はちょうど追加しましたsyncO_DIRECT実際にこれらのファイルを読み取っているのはPHPであり、O_DIRECT私が見つけることができる方法でファイルを開くことができないためです。
ジョシュ

@ジョシュ、それはあなたの問題を解決しましたか?同じ問題でブロックされています!この投稿を更新していただけますか?
rafa.ferreira 14

3

特定のプロセス内で、ファイルの親ディレクトリでopendirおよびclosedirを呼び出すと、NFSキャッシュが無効になります。ジョブスケジューラのプログラミング中にこれを使用しました。とても助かります。それを試してみてください!


-1

キャッシュされていないプログラム(vimやemacsなど)で指定されたファイルを開いてから閉じると、そのファイルのキャッシュが更新/消去されます。


2
「キャッシュされていないプログラム」の定義は何ですか。そのステートメントの参照はありますか?
-RalfFriedl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.