1 台の Linux マシンから同じ LAN 上にある約 20 台の他の Linux マシンに、できるだけ速くコピーする必要がある大きなファイルがいくつかあります。これらのファイルをコピーするのに最適なツールや方法は何ですか。ただし、これは 1 回限りのコピーではないことに注意してください。これらのマシンはインターネットに接続されることはなく、セキュリティは問題ではありません。
アップデート:
私がこの質問をする理由は、(私が理解している限りでは)現在、scp
各マシンにファイルをコピーするためにシリアルを使用しており、これが「遅すぎる」ため、より高速な代替手段を探していると知らされたからです。私が聞いたところによると、呼び出しを並列化しようとすると、scp
ハード ドライブのシークによりさらに遅くなるだけです。
答え1
BitTorrent。Twitter が内部的にいくつかのものを展開する方法です。
http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html(ウェブアーカイブリンク)
答え2
いかがでしょうかFTP のマルチキャストを使用して、UDP 経由で複数のクライアントに一度にファイルを配信します。すべての人に適しているわけではありませんし、私も専門家ではありませんが、必要な機能を備えているようです。
答え3
このデータを でコピーしてみましたかrsync
? 1 Gbit 以上の LAN をお持ちの場合は、4*20 GB を超えるコピーでも問題はありません。
このコピーはどのくらいの頻度で発生しますか? 完了するまでに数分かかるのは問題でしょうか?
答え4
NFS 共有を設定し、各マシンがこの大きなファイルの共有リポジトリからプルするようにするのが、おそらく最も速い方法です (NFS は非常に高速で、オーバーヘッドがほとんどありません)。
ソース サーバーに NIC を 1 つまたは 2 つ追加し、それらを結合することでスループットを向上させることができます。
実装としては、各ターゲット サーバーで、共有から毎時間/毎日/その他任意の時間に盲目的にフェッチする単純な cron ジョブが考えられます。また、新しいファイルをポーリングするデーモンを設定することもできます。また、各ターゲット ボックスへの SSH (キー ペアを使用) への制御セッションをスクリプト化し、スクリプトの実行時にファイルを取得するように指示することもできます。