更新状況

7月 11

以前「仮想ゲストOSバックアップ~スクリプト編~」で、ゲストOSをバックアップするためのスクリプトを稚拙ながら書きましたが、今回はそのスクリプトをESXiのcronに登録してみます。
やっていることは、

  • スクリプトをパスの通ったところにリンクを張る
  • cron設定ファイルに登録する

の2点です。どちらもrc.localに書き込むのですが、これは/sbinに実際のスクリプトファイルを置いても、ESXiサーバを再起動すると、デフォルトのファイルに戻されるため、せっかく置いたファイルが消えてしまいます。また、cron設定ファイルも同様に、再起動するとデフォルト設定に戻るので、どちらとも起動時に再配置・再設定するようにするわけです。では、rc.localはというと、

#! /bin/ash
export PATH=/sbin:/bin

log() {
echo "$1"
logger init "$1"
}

#execute all service retgistered in /etc/rc.local.d
if [ -d /etc/rc.local.d ]; then
for filename in `find /etc/rc.local.d/`
do
if [ -f $filename ] && [ -x $filename ]; then
log "running $filename"
$filename
fi
done
fi
### ここまでがデフォルト内容です
### 今回以下に追加しました
### スクリプト実体のシンボリックリンクを/sbinに作ります
ln -s /vmfs/volumes/datastore1/hotbackup.sh /sbin/hotbackup.sh

### cron設定ファイルに書き込み、cronデーモンを再起動します
cat<<_EOT_>>/var/spool/cron/crontabs/root
0 3 * * * /sbin/hotbackup.sh witkitty > /dev/null
_EOT_
kill -sigterm `ps|awk '/[c]rond/ {print $1;}'`
crond

cronの再設定にはヒア・ドキュメントを使うと、ファイルに直接書き込むようなイメージで仕込むことが出来るので便利です。再起動をまだしませんよ~という方は、リンク作成とcron設定ファイルを直接編集して、cronデーモンを再起動してください。
さぁ、これでESXiサーバ時間の午前3時にこのサイトのゲストOSのホットバックアップが開始されるはずです。ちなみに当方のESXiの時間は米国中部のままの設定なので、日本からだと-15時間の時差があります。よって、時間だけで言えば、いきなり日本時間の昼の12時に開始されるわけです。

注記:バックアップスクリプトのGIDチェック部分で取得GIDが正常でも直前の実行ステータスが0で帰ってくるため、バックアップ処理が中断される現象が出ました。よってスクリプト側の修正も施されていますので、過去記事を参照してくださいな。

さて、これで無事上書き自動バックアップが出来るようになりましたとさ。
あとは、リストア用のスクリプトと、バックアップローテーションをどうするかですな・・・ポツポツ合間を見つけて書いてみます。
ではでは。

written by hiro \\ tags: , , ,

7月 05

以前、仮想ゲストOSのバックアップについて、簡単に書きましたが、当方の環境もここまでESXi密度が高いと、「もしも・・・」の時に涙ちょちょ切れ~ってことになるので、スナップショットとクローン作成を利用したバックアップ作成スクリプトを作ってみました。お役に立てれば・・・
当方の環境は、バックアップ用ボリュームがESXi上にnfsマウントされており、以下のスクリプトはそこに作成されるような仕組みになっていますので、環境に合わせて変数内容を変えてください。尚、このスクリプトを作成するにあたり、「AKIONWEB」さんのところを参考に作ってみましたが、動作結果については自己責任と言うことで。
では、まず環境条件から・・・といっても上に書いたように、

  • ESXiからバックアップボリュームが見えていること
  • 引数としてはゲスト名だけを使用する
  • バックアップは上書きでも良しとすること

だけです。
では、続きと簡単な解説は、続きでどうぞ。(かなり長いです・・・が、やっていることは大したことないです)
追記:07/11 追加・修正部分あり

««««« 続きはこちら »»»»»

written by hiro \\ tags: , , , , , ,

6月 16

このサイトが動いているサーバはVMware ESXi上のLinux OSで動いている。
仕事柄、ある製品のサポートもしているのだが、再現確認が必要な場合、今までは実機を使用して動作確認・解析を行っていた。この場合、複数のお客さんの疑似環境を作る必要に迫られたときが大変。当然スケジュールを組んで進めていくのだが、OSが異なったりすると毎回実機にOSをインストールする羽目に。一部、クライアントで動くVMwareも使用していたのだが、何せサーバ関連のサポートなので、必ず複数台必要となり、クライアントを圧迫。そんな矢先、これが出てきたので飛びついた。しかも、ESXiは無償!なのでSOHOな当方には助かる。(当然企業ユースには高機能版が販売されています)
前置きが長くなったが、ESXiを使っていて一番困るのが、「ゲストOSのバックアップ」である。ゲストOSを止めてバックアップ(コールドバックアップ)するのであれば、別段問題は無いのだが、サーバ絡みなので動作中でもバックアップを取る必要がある。しかし、VMware Consolidated Backup(VCB)は有償・・・。ならば、コマンドで何とかしてしまえと言うことで、以下に手順を。

  • ゲストOSのIDを取得
    ~ # vim-cmd vmsvc/getallvms
  • バックアップしたいゲストOSのスナップショットを採取
    ~ # vim-cmd vmsvc/snapshot.create [ゲストOSのID] [スナップショット名]

    このスナップショットを取ることにより、本来読み込みまでロックされている.vmdkファイルのコピーが可能になります。

  • ファイルのコピー
    コピー方法は、環境によりけりなので、いくつか例を。

  • ESXiサーバに外部ディスクを直接アタッチしている場合は、そのマウントしているボリュームにコピーすればOK。ちなみに当方は、別のLinuxサーバボリュームをネットワークマウントしているので、そこにコピーしています。
  • 外部のWindowsやNASに転送する場合は、WinSCP(日本語版)なんかを使ってネットワークコピーすればOK。
  • コピーが終わったら、スナップショットを解放。
    ~ # vim-cmd vmsvc/snapshot.removeall [ゲストOSのID]

もし、元が壊れてこのバックアップから起動したい場合は、ゲストOS名-xxxxx.vmdkの「-xxxxx」を取り除いて起動してあげれば立ち上がります。

まぁ、あくまで私の環境での覚え書き程度ですので、先人の方々のサイトを見た方がためになると思い・・・(ry

written by hiro \\ tags: , , ,