sshfsでファイルを修正

sshfsでファイルを修正

マシンAのファイルシステムは es で実行されるプロセスBを通じてシグナルを伝達し、 es がマウントしたファイルシステムのファイルによって開始されます。その後、信号(ファイル)が削除されます。これは、ファイルが最初に作成/破棄されると(/)安定して機能します。sshfsBAssh touchAAtouchrm

ただし、2番目のプロセス(再びBslaveで実行中A)がまったく同じファイルをタッチしようとすると、次のエラーが発生します。散発的に投げる:

`touch: cannot touch '/path/to/file': No such file or directory`.

touchエラーが発生した後に手動で試しても成功すると判断した場合、パスは有効です。言及したように、エラーは散発的ですが(デバッグの試みは複雑になります)、すでに作成/削除ループを実行した後にファイルをタッチした場合にのみ発生します。

断続的にエラー(touch、、、rmtouchが発生するジョブは時間的に分離されているため、同時接続が原因になる可能性はほとんどありません(つまり、最初のタッチで生成されたファイルが削除されるまで2番目のタッチは発生しません。 )。原因は、ファイルを削除した後にsync呼び出されるファイルシステムのバッファリングに起因する可能性があると思いましたが、A役に立ちませんでした。呼び出しが影響を与えるかどうかはわかりませんが、syncファイルに触れる直前に呼び出すことは役に立ちません(onバージョンでは明示的なファイルシステム仕様のオプションがありません。実行中のプロセスでvia before ingを呼び出してみましたが、同期オーバーでは動作しません。 -ssh 呼び出し後、そのステートメントを含む残りの行が実行されないため、プロセスはエラーなしで終了するようです。BBsyncAsyncB-fsyncABssh user@A synctouchtouchsshssh

このファイルシステム関連のエラーの原因をどのように確認できますか?

ベストアンサー1

オプションを使用してsshfsを実行すると、何が起こっているのかを調べることができます-o debug。コマンドで実行される基本ファイルシステム操作に関する広範な情報を印刷しますtouch test。作業例は次のとおりです。

unique: 209, opcode: LOOKUP (1), nodeid: 1, insize: 45, pid: 10641
LOOKUP /test
getattr /test
   NODEID: 44
   unique: 209, success, outsize: 144

関連部分は、getattr通話が正常に完了して終了したことです。存在しないファイルを正常にタッチすると、次の操作が表示されます(詳細情報の削除)。

getattr /test
   unique: 190, error: -2 (No such file or directory), outsize: 16
create flags: 0x8841 /test 0100644 umask=0022
fgetattr[140469187119648] /test
flush[140469187119648]
utime /test 1507647885 1507647885
getattr /test
flush[140469187119648]
release[140469187119648] flags: 0x8801

このファイルのgetattrテストが失敗したことを確認しました。これは存在しないため、通常の現象であるため、ファイルを生成し続けます。

ファイルがサーバーから削除され、クライアントでもう一度タッチすると、別の順序が表示されます。

getattr /test
   unique: 215, success, outsize: 144
open flags: 0x8801 /test
   unique: 216, error: -2 (No such file or directory), outsize: 16

getattrはファイルがまだ存在していると言っているので、ファイルの処理を続行しますが、touchファイルopen()がまったく存在しないというエラーメッセージが表示されます。

したがって、既存のファイルをキャッシュするクライアントがリモート変更に追いつくには遅すぎる問題のようです。最も簡単な答えは、コールgetattrstat()システムコールなど)のタイムアウトを短く設定してリモコンをインストールすることです。これはあなたに役立ちます

sshfs -o cache_stat_timeout=0 ...

おすすめ記事