CentOS 6.2 ゲストOSの起動と終了順序

ホスト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 できること確認。)