VMware ESXi上の仮想マシンをvStorage APIでバックアップする場合の仮想マシンパワーオン(2)
徒然なるままに > VMware ESXi上の仮想マシンをvStorage APIでバックアップする場合の仮想マシンパワーオン(1)
とあるシステムではこんな感じで仮想マシンをバックアップしています。
VMware ESXi 4.1 Update 1 + Backup Exec 2010 R2 + Backup Exec 2010 VMware Virtual Infrastructureエージェント
●Backup Execのスケジュールによりバックアップ処理開始
●Backup ExecのプリコマンドでPowerCLIを使って仮想マシンをシャットダウン
●Backup ExecのプリコマンドでPowerCLIを使って仮想マシンをさらにパワーOFF
●Backup Execで仮想マシン全体のバックアップ開始
★タスクスケジューラでPowerCLIを使って仮想マシンをパワーON
●Backup Execで仮想マシン全体のバックアップ終了
●Backup ExecのポストコマンドでPowerCLIを使って仮想マシンをパワーON
●:Backup Execのスケジュール、プリコマンド、ポストコマンド
★:タスクスケジューラでのジョブ実行
今回は時間調整についてです。
Backup Execのスケジュールによって仮想マシンのバックアップが始まって、プリコマンドで仮想マシンをシャットダウンさせますが、仮想マシンがシャットダウンするまでには時間がかかります。
プリコマンドのバッチファイルの中で、仮想マシンのゲストOSシャットダウンするPowerCLIの.ps1ファイルを呼び出し、バッチファイルに戻ってきたらtimeoutコマンドで90秒程度待ち合わせます。
これは何種類かの仮想マシンを何度もシャットダウンして確認しました。
仮想マシンがパワーOFFになったかどうかの状態チェックをすればいいんだろうけど、面倒なのでそこまではやってません。
その代わりといっては何ですが、PowerCLIでゲストOSをシャットダウンした後、念のためさらに同じくPowerCLIで仮想マシンをパワーOFFしています。
仮想マシンの状態チェックをしたところで、例えば5分とか10分待っても正しくシャットダウンしなければ、結局は強制的にパワーOFFするしかないんだから。
元々は仮想マシンの中のひとつに、シャットダウンしても「電源を切る準備が出来ました」で止まってしまうやつがいるので、その対策のためにシャットダウン&パワーOFFにしたけれど。
待ち合わせと言えばバックアップ開始後の仮想マシンパワーON。
少なくともBackup Execのスケジュールによるバックアップ処理が始まったら、途中で何かコマンドを実行する方法は無いので、バックアップ開始から十分な時間が経過してからタスクスケジューラで仮想マシンを起動しています。
これもBackup Execでのバックアップを含めて、バックアップ全体をバッチファイル化すれば、仮想マシンバックアップが始まって何分後とかに仮想マシン起動も出来なくはないでしょう。
バッチファイルからbemcmd -o1 -j<ジョブ名>でバックアップを開始するとき、-wでウエイトしないようにすれば、バックアップを開始しても次のステップに進めるから、そこで適当な時間(5分とか10分とか)待ってから仮想マシンを起動すればできる。
でもbemcmdでのバックアップ終了のステータスチェックを数分ごとにループさせるなど、バックアップ終了の検出が面倒になってしまうけど。