0

NFS を使用して 2 つのサーバーが単純なテキスト ファイルを介して通信できるようにしていますが、情報を取得するためにテキスト ファイルを読み取っているサーバーが不完全なファイルを読み取っているように見えることがあり、これが原因でクラッシュします。次に、クラッシュの原因となった「不完全な」ファイルを確認すると、ファイルは完全です。これらのファイルを読み取るサーバーが、NFS によって完全に書き込まれる前にファイルを認識している可能性はありますか? 私は Linux を使用mvして、それらが完全に書き込まれた場合にのみローカル マシンから NFS に移動します。

この問題は、同期と非同期に関係している可能性がありますか? 現在、非同期を使用しています。私の理解では、非同期とは、書き込みから戻ってプログラムを引き続き実行できることを意味し、この書き込みは後で行われます。一方、同期とは、プロセスがその書き込みが完了するのを待ってから移動することを意味します。同期に変更すると、これは修正されますか? または、これを処理するより良い方法はありますか? 2 つのサーバーがデータベースを介して通信できることは知っていますが、実際にはデータベースの使用量を抑えるためにこれを行っています。ありがとう!

4

1 に答える 1

1

mvcpacross file-systems は+に変換されrm、NFS が関与していなくても、確かにアトミックではありません。最初にファイルをターゲット ファイル システムの一時ファイルにコピーしてから、正しい名前に変更する必要があります。たとえば、次の代わりに:

$ mv myfile.txt /mnt/targetfs/myfile.txt

行う:

$ mv myfile.txt /mnt/targetfs/.myfile.txt.tmp
$ mv /mnt/targetfs/.myfile.txt.tmp /mnt/targetfs/myfile.txt

(これは、ファイルが正しい名前を持っていない間、ファイルを読み取るプロセスがそれを無視することを前提としています。)

于 2012-11-15T11:05:45.343 に答える