web-dev-qa-db-ja.com

SSHFSを介したRsyncがハングする

sshfsアクセス権のない別のシステム(Rackspace Cloud Sites)に接続するためのsshセットアップがあります(ただし、何らかの理由でsshfsを使用できますか?図を参照してください)。 rsyncマウントからローカルディスクにsshfsファイルを作成しようとしています。数千の小さなファイル(1k〜200k)です。時々、rsyncは非常に小さいファイルで一時停止してしばらくハングします。それは一時停止し、たとえば10kのテキストファイルを5分間ほど押した後、続行します。

Rsyncがこのようにハングする理由を特定するためにマシンを調べることができる場所はありますか?それとも、私が何もできない相手の問題である可能性は十分にありますか?

私のrsyncオプションは単に-avrP

3
Jake Wilson

さて、私の考えは理にかなっていると思うので、私はこれを突き刺すつもりです。

この場合、あなたは複数のキャッシュを扱っています、そしてそれがあなたをつまずかせているものだと私は思います。

Rsyncが最初に行うことは、転送する必要のあるファイルを決定することです。これは通常、リモート側でrsyncのインスタンスを生成し、ソース上のディレクトリ内の各ファイルのメタデータを読み取り、同時にローカルファイルのメタデータを読み取ることによってこれを行い、2つのメタデータセットが比較されます。 。新しいもの(またはrsyncオプションによっては異なるもの)が転送されます。

Rsyncによると、「リモートサイド」はありません。 「ローカル」で作業しているため、ソースと宛先の両方のディレクトリを反復処理します。

これは非常にディスクを集中的に使用します。特に、大量の小さなファイルがある場合は、ファイルが多いほど、ディスク操作が個別になります。これにより、多くのディスクスラッシングが発生し、さらにそれらのファイルのメタデータでキャッシュがいっぱいになります。

これはスタックのずっと下で発生することに注意してください。ローカルマシンは、sshとローカルディレクトリにマウントしたFuseファイルシステムのメタデータをキャッシュします。リモートマシンは、ローカルディスクマウントからメタデータをキャッシュします。また、リモートマシンが実行されているVMホストはほぼ確実にオーバーコミットされており、メモリが膨らんでいます。

フリーズしたときにしきい値を超えている可能性が非常に高く、すべてが追いついて、キャッシュを解除するかスワップする必要があると思います。

ディスクマウントなしでsshを介してrsyncを実行したときに、これが発生するかどうかを確認したいと思います。

4
Matt Simmons