web-dev-qa-db-ja.com

大規模なアーカイブ(〜16GB)をすばやく転送するにはどうすればよいですか?

大きなアーカイブ(〜16GB)を80台のサーバー上のあるマウントポイントから別のマウントポイントにすばやく転送するにはどうすればよいですか?マウントポイントは別々のパーティションにあります。 ansible(-f 100オプションを使用)とrsyncをループに含むbashスクリプトを試しましたが、どちらの方法も非常に遅く、どちらもエレガントではないようです。

1
Nesusvet

pdsh をインストールし、pdshの-​​ /で定義されているように、すべてのサーバー(または選択した個々のホストまたはサーバーのグループ)でコマンドを並行して実行できるように構成します。など/性別 ファイル)。

例えばpdshをインストールした後、(rshの奇妙なデフォルトではなく)sshを使用するように構成し、すべてのサーバーを含むallグループを定義します。

pdsh -g all mv /old /new |& tee /tmp/pdsh.log

ログファイルは、以下(など)で表示することも、pdshdshbakユーティリティを使用してホストごとに1つのセクションで適切にフォーマットすることもできます。

dshback /tmp/pdsh.log

各出力行には、元のホスト名がプレフィックスとして付けられます(これは、dshbakがホスト名で出力をグループ化するために使用するものです)。

# pdsh -g all uptime
hanuman:  22:24:53 up 60 days,  1:38,  8 users,  load average: 0.05, 0.03, 0.05
indra:  22:24:16 up 14 days, 25 min,  3 users,  load average: 0.22, 0.40, 0.44
ganesh:  22:24:53 up 49 days,  7:56,  6 users,  load average: 0.73, 0.79, 0.79
kali:  22:25:05 up 3 min,  0 users,  load average: 0.01, 0.03, 0.02

pdshには、ファイルを多数のサーバーに並行してコピーするための便利なpdcpコマンドも含まれています。例えばコピーする /etc/gendersローカルホストからすべてのサーバーへ:

pdcp -g all /etc/genders /etc/

pdshは元々HPCクラスターで使用するために設計されましたが、Webサーバーファーム、データベースサーバーの複製など、サーバーの任意のグループでも同様に役立ちます。任意のラベルを任意のサーバーに割り当てる機能サーバーのグループはここで役立ちます。マシンのいくつかのグループにwebmysqldnsのラベルを付け、それらをallに入れます。

他にもいくつかのクラスターsshツールがありますが、私の経験では、pdshが最も使いやすく、設定も簡単です。

Puppet、Ansibleなどは大量展開と更新に最適であり、pdshは大量のコマンドラインサーバー管理に最適です。

1
cas

LANでファイルをマルチキャストまたはブロードキャストして、同じストリームからすべてのクライアントで受信することを検討してください。その後、1部のコピーに時間がかかります...

たとえば、次を参照してください。

http://linux.die.net/man/1/udp-sender

頑張って、ゲルハルト

1
gerhard d.