
80サーバーのあるマウントポイントから別のマウントポイントに大容量アーカイブ(〜16 GB)をすばやく転送する方法は?マウントポイントは別のパーティションにあります。ループでrsyncを使用してansible(-f 100オプションを使用)とbashスクリプトを試しましたが、どちらの方法も非常に遅くエレガントに見えませんでした。
答え1
インストールしますPDSHpdsh
そして、すべてのサーバー(または選択した個々のホストまたはサーバーグループ)で並列にコマンドを実行できるように構成します。/etc/性別文書)。
たとえば、インストールされたらpdsh
(異常なデフォルトのrshの代わりに)sshを使用するように設定し、all
すべてのサーバーを含むグループを定義します。
pdsh -g all mv /old /new |& tee /tmp/pdsh.log
lessなどを使用してログファイルを表示したり、pdsh
ユーティリティを使用してホストごとに1つのセクションの形式を適切に指定したりできますdshbak
。
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
localhostからすべてのサーバーにコピーします。
pdcp -g all /etc/genders /etc/
pdsh
もともとHPCクラスタで使用するように設計されていましたが、Webサーバーファーム、レプリケートされたデータベースサーバーなどを含むすべてのサーバーグループでも同様に役立ちます。ここでは、サーバーグループにランダムなラベルを割り当てる機能が便利です。たとえば、特定のシステムグループにweb
、、mysql
とラベルを付けて、dns
に入れますall
。
他にもいくつかのクラスタSSHツールがありますが、私の経験では、pdsh
このツールが使用するのが最も簡単で構成も簡単です。
Puppet、Ansibleなどは大規模な展開と更新に適しており、pdshは大規模なコマンドラインサーバーの管理に適しています。
答え2
LANでファイルをマルチキャストまたはブロードキャストし、すべてのクライアントの同じストリームからファイルを受信してみてください。それではコピーに時間がかかります...
たとえば、次を参照してください。
http://linux.die.net/man/1/udp-sender
幸運、ゲルハルト