ホストOSを起動したり終了したりしたときに、ゲストOSはどうなるか。のちょっとメモ。
CentOS 6.2 のデフォルト仮想化環境だと、libvirt-guests がゲストOSに対する操作をやっていて、rcスクリプトの登録状況は
- /etc/rc3.d/S99libvirt-guests
- /etc/rc5.d/S99libvirt-guests
- /etc/rc0.d/K01libvirt-guests
みたいになっている。
なので、
- ホストOSの起動のほぼ最後で /etc/init.d/libvirt-guests start が実行される。
- ホストOSのシャットダウンのほぼ先頭で /etc/init.d/libvirt-guests stop が実行される。
ということ。
libvirt-guests は、ゲストOSの立ち上げやら suspend、shutdown をやっていて、ここらの動作は設定ファイル /etc/sysconfig/libvirt-guests を見てるようです。
デフォルトで終了時は suspend になっているので、油断してると「再起動したらゲストがext4の書き込みタイムアウト吐いて死んでる…」みたいになります。なりましたorz
なので、ゲストOS側では acpid を動かしておいて、/etc/sysconfig/libvirt-guests の ON_SHUTDOWN は shutdown にしといたほうが安全な気がします。
virsh の suspend はゲストOSの状態なんぞ気にせず固めてるだけっぽいので、サスペンドさせるにしてもゲストOS側で acpid やらの電源イベント周りの設定をしてやって、ゲストOS側自身でハイバネーション状態にしてやるべきなんでしょう。たぶん。
(ゲストOSに acpid 入れといて virsh shutdown したら graceful shutdown するよ!ってのは未確認)
↓
(2012/4/20 ゲストが CentOS6.2 + acpid で graceful shutdown できること確認。)