VMwareのシャットダウン問題

 VMwareを使っていて、ホストOSをリブートとかシャットダウンしたいときがあります。仮想マシンの設定でホストの動きに合わせてVMware上のOSもシャットダウンできたりするようなのですが、ホストでshutdownを実行して、同時にVMware上のOSでもシャットダウン処理が実行されるものの、ちゃんと止まる前にホストのシャットダウンが先に完了して、中途半端に仮想マシンが切られてヘタすると仮想マシンのディスクがやられてしまうこともあるようです。
 このあたり、VMwareが完全に終了するまでシャットダウンを待ってくれるようにできないのかな。と調べてみたのですがよくわからず、結局、以下のようなスクリプトを今日、作ってみました。すでに運用状態に入っていますので仕事中には実行できず、テスト的に明日の明け方に実行することにしましたけど。

#!/bin/sh
IFS='
'
VMLIST=`/usr/bin/vmware-cmd -l`
for i in ${VMLIST}
do
    /usr/bin/vmware-cmd ${i} stop &
done
wait
/sbin/shutdown -r now

 これ、ちゃんとstopしなかったらどうするの。という点に問題はありますが、うまくいくことを願います。

4/9追記

 上記スクリプトで問題なく終了、リブートできていました。ただホストOSが再起動した後、VMware上のOSも自動で立ち上がるようにしているのですが、openSUSE 10.3が立ち上がっていませんでした。Windows Server 2003は問題なく起動しているのに。特にログも残っておらず原因は不明です。前も、VMwareのイメージをバックアップする際に、毎晩、stopとstartを実行しているのですが、一度openSUSE 10.3がstartの途中で止まっていることがありました。今後もちょっと見守っておきたいと思います。

4/11追記

 /etc/init.d/halt.localにスクリプトを書くことで、シャットダウン前にやりたいことを実行できることがわかりました。詳しくはこの日の記述で