2つのLinuxサーバー間のマルチスレッドファイル同期


9

現時点では、合計250 GBの220万個のファイルに対してrsyncを実行しており、6時間で700,000個のファイルが保存されます。

誰かが複数のスレッドでこれを行うことができるように高速化するrsyncのようなツールを知っていますか?


3
それが何らかの方法でCPUにバインドされていると想定する理由がありますか?
Chopper3 '06 / 10/05

どのrsyncオプションを使用していますか?
カイルスミス

トランスポートとしてsshを使用していますか?
JimB

rsync -avSPpそして、CPUやディスクの問題はありません。
トムファンオメン

そして、SSHトランスポートは、それがより速いかどうか分からないウェブ上で何かを見ただけではありません。すべてのファイルのインデックスを作成するには、すでに時間がかかります。
トムヴァンオメン2011年

回答:


7

ここではcpuが制限要因だとは思いません。転送のためのネットワーク帯域幅とディスクIOの両方によって制限されている可能性が高いです。特にこれらすべてのstat呼び出しのレイテンシ。

ファイルシステム階層をより小さなチャンクに分割して、並行して処理できますか?

ソースファイルとは何か、またそれらを書き込んだり変更したりしているものは何ですか。アプリケーションレベルで発生した変更を送信することはできますか?


Zarafa添付ファイルを同期します。すべてデフォルトでgzip圧縮されます。複数のインスタンスを実行できますが、10スレッドよりも効率がよくありません。また、ネットワークは1 GBitから1 GBitですが、データセンターは異なりますが、問題にはなりません。ソース側に24のSASディスク、宛先にSSDを備えたインテリジェントストレージがありました。
トムヴァンオメン2011年

1
@Tom van Ommen-なぜCPU制限されていると思いますか?本当にCPUに制限がある場合、複数のプロセスはスレッドよりも効率が悪いのですか?
JimB

1
@Tom van Ommen、10個のプロセスは10個のスレッドよりもオーバーヘッドが大きくなります。ただし、スレッド間でデータ構造をロックすることは、コーディングの悪夢です。多くの場合、複数のプロセスを起動してそれを実行する方が(コーダーの時間にとって)はるかに効率的です
Mike Pennington

1
@Guacamole-状況によっては複数のスレッドが役立つ可能性がありますが、リンクが飽和している場合、スレッドの数に関係なく、プッシュすることはありません。Rsyncは並行性のためにスレッドを使用しますが、内部でIOをブロックしていません。
JimB

1
@Guacamole-私が指摘しているのは、彼がsshをトランスポートとして使用している場合、彼のスループットはssh自体によって制限されるということです(特にHPN sshパッチを使用していない限り、静的受信ウィンドウ)。
JimB

1

受信サーバーのディスクサブシステムが複数のディスクを持つアレイである場合、複数のrsyncプロセスを実行するとパフォーマンスが向上します。3つのrsyncプロセスを実行して、ファイルをNFSサーバー(RAIDグループごとに6つのディスクを持つRAID6)にコピーして、ギガビットイーサネットを飽和させています。

この男は、複数のrsyncプロセスを生成する基本的なpythonハーネスについて報告します http://www.reliam.com/company/featured_geek


残念ながら、リンクは機能していません。もう一度見つけてもらえますか?
P.Péter

1

これに似た質問をたくさん読んだことがあります。唯一の本当の答えは、コピー/移動を手動で分割することだと思います。ここではIOpsが問題になります。それで気分が良くなった場合は、100 TBをはるかに超えるディスク領域を消費する約200ミリオンのファイルを移動しているところです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.