2016-05-11 9 views
-1

現在、私は10台のホストを監視しています。私は24時間ごとにディスク容量を計算するスクリプトを書いて、ホストのファイルシステムが重要であれば、古いファイルをそのホストから最大のディスクスペースを持つホストに移動しますか? PuppetやAutosysについて私は知りません。私は、コーンタブを使用してスクリプトをスケジュールしていました。リモートホストへのログインにはパテを使用します。各ホストでdfコマンドを実行してから、各ホストのディスク容量を計算した後にscpでファイルをコピーするのは非常に時間がかかります。だから、Crontabとシェルスクリプトでは何もできません。同時に各ホストでdf -hコマンドを実行して、あるホストから別のホストにファイルを移動することができます。10台のホストで同時にシェルスクリプトを実行するには?

+2

"cron"は明白な選択です:http://www.linuxweblog.com/crotab-tutorial。しかし、覚えておいて、 "最大のディスクスペースを持つ"ホストがスクリプト実行中に* CHANGE *するかもしれないことを覚えておいてください... – paulsm4

+0

'cron'に加えて、' ntp'を使ってすべての時間を同期させます10台のマシン。 – Teddy

+2

これは奇妙なプロセスのように聞こえます。今日はhostAからhostBにファイルを移動します。明日、hostAには空き領域が増えますので、*同じ*ファイルをhostBからhostAに移動してください。私は誤解していると思います。 –

答えて

0

私は毎日各ホスト(おそらくそれ自体さえ)のディスクをチェックし、コピーを調整する1人の "コーディネータ"ホストにcronジョブを追加します。

cronジョブは、ssh/scp/grep/sedコマンドと少しロジックで構成されるスクリプトを呼び出します。あなたが識別することができ、

avail_percent = `ssh myhost df -h /root | tail -n 1 | sed 's/.* \+\([0-9]\+\)%.*/\1/g'` 

    if [ $avail_percent -lt 5 ]; then 
     echo "myhost is critical" 
    fi 

を同様に:

あなたは次のようにホスト名「myhostの」上(のファイルシステム)ディレクトリ「/ルート」の利用可能なディスクの割合が5%未満であるかどうかを確認することができ、開始するにはディスクスペースが十分にある(転送のためにクリティカルにならない)候補の宛先ホスト。次のように次に、ホスト2にホスト1からコピーするためにscpコマンドを使用します。

何らかの他のプロセス、ディスクへの書き込み、または[2へ[1]いっぱい先のディスクであるように考慮すべきかなりの数のエッジケースがあり
 scp host1:/files/to/move/* host2:/files/to/receive/. 

]は、転送中に変更されるソースファイル、または[3]解決が不可能な場合の対処方法です。

可能であれば、大容量のストレージをいくつか取得してNFSを設定すると、頭痛を軽減できます。

1

Puppetのようないくつかのテクノロジーを使用して、多くのホスト上でほぼ完璧に同時にジョブを実行できます。

関連する問題