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つのファイルのキャッシュをフラッシュさせるコマンドはありますか?
承認された回答:
これらの項目をチェックして、何かうまくいくかどうかを確認してください:
-
クライアント上 、
cto
をまだ使用していない場合 オプションのオプション/etc/fstab
の列 NFSファイルシステムの行を追加します。cto
nfsクライアントにclose-to-openを介してファイルを開くように指示します。これにより、ファイルを開くたびにファイルが更新されます。 -
サーバー上 、ファイルシステムが
sync
でエクスポートされていることを確認してください オプションであり、async
ではありません 。同期書き込みでは、ファイルが閉じられたときにクライアントがディスクにフラッシュします。 (またはnfs V3では、commit()が行われるたびに )。その方法でパフォーマンスが低下する可能性がありますが、NFSファイルシステムへの書き込みを行う場合は、必ずsync
が必要です。 セット。 -
そのstackoverflowの投稿に続いて、O_DIRECTでファイルを開くことは、カーネルがCONFIG_NFS_DIRECTIOでコンパイルされた場合にのみ機能します。
-
また、httpd.confファイルに次の設定があることを確認してください。
EnableMMAP off
-
EnableSendfile off
apacheパフォーマンスチューニングドキュメントから:
- NFSマウントされたファイルシステムにあるファイルをメモリマップし、別のNFSクライアントマシン上のプロセスがファイルを削除または切り捨てた場合、次にマップされたファイルコンテンツにアクセスしようとしたときに、プロセスでバスエラーが発生する可能性があります。
- EnableSendfileをオフにしても、NFSの同期/非同期動作には特に役立ちませんが、NFSでapacheを使用している場合はオフにする必要があります。