大きなアーカイブ(〜16GB)を80台のサーバー上のあるマウントポイントから別のマウントポイントにすばやく転送するにはどうすればよいですか?マウントポイントは別々のパーティションにあります。 ansible(-f 100オプションを使用)とrsyncをループに含むbashスクリプトを試しましたが、どちらの方法も非常に遅く、どちらもエレガントではないようです。
pdsh をインストールし、pdsh
の- /で定義されているように、すべてのサーバー(または選択した個々のホストまたはサーバーのグループ)でコマンドを並行して実行できるように構成します。など/性別 ファイル)。
例えばpdsh
をインストールした後、(rshの奇妙なデフォルトではなく)sshを使用するように構成し、すべてのサーバーを含むall
グループを定義します。
pdsh -g all mv /old /new |& tee /tmp/pdsh.log
ログファイルは、以下(など)で表示することも、pdsh
のdshbak
ユーティリティを使用してホストごとに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サーバーファーム、データベースサーバーの複製など、サーバーの任意のグループでも同様に役立ちます。任意のラベルを任意のサーバーに割り当てる機能サーバーのグループはここで役立ちます。マシンのいくつかのグループにweb
、mysql
、dns
のラベルを付け、それらをall
に入れます。
他にもいくつかのクラスターsshツールがありますが、私の経験では、pdsh
が最も使いやすく、設定も簡単です。
Puppet、Ansibleなどは大量展開と更新に最適であり、pdshは大量のコマンドラインサーバー管理に最適です。
LANでファイルをマルチキャストまたはブロードキャストして、同じストリームからすべてのクライアントで受信することを検討してください。その後、1部のコピーに時間がかかります...
たとえば、次を参照してください。
http://linux.die.net/man/1/udp-sender
頑張って、ゲルハルト