CentOS
command
KVM

kvm: ゲストが勝手に起動します。

More than 1 year has passed since last update.

「ホスト再起動時に、/etc/libvirt/qemu/autostart に指定していないのに、ゲストが勝手に起動する。@CentOS6.8。どーして?」

自動起動の設定

そもそも、自動起動の設定は二つあって、以下の順で指定可能

  1. /etc/sysconfig/libvirt-guests => すべてのゲストの自動起動の挙動を指定。
  2. /etc/libvirt/qemu/autostart => 個々のゲストの自動起動の可否を決める。
    • 1.で自動起動させていない場合のみ

片方設定してないんだったら、もう片方で設定してるに決まってる。

/etc/sysconfig/libvirt-guests

HOSTの /etc/sysconfig/libvirt-guests

ON_BOOT=ignore

を記載すると、乗ってる全ゲストが自動起動しなくなる。

  • 起動時のデフォルトパラメータは、起動実行スクリプト /etc/init.d/libvirt-guests1 中ほどにて宣言されている。

/etc/libvirt/qemu/autostart

登録する。

もちろんHOSTで
# virsh autostart DOMAIN

削除する。

# rm /etc/libvirt/qmenu/autostart/DOMAIN.xml

疑問

巷では、上記 1. に言及せず、いきなり 2. の説明をしてるサイトが目に付く。

で、/etc/init.d/libvirt-guests でぐぐると、 ubuntu の場合だと 最初から ON_BOOT=ignore であるっぽい。なるほど、そっちの人だと、2. から説明するのだろう。

それはそれで解決したのだが、ん? CentOS の場合は?

今回の対象サーバは、立ててから時間が経てる。誰が立てたのかも判らない。デフォルトでは、ON_BOOT=ignore で、誰ぞが改造したものを見ていたのかもしれない。

あいにくネット検索しても言及してそうなところに行きつかない。

てんで、配布ソースに当たってみようと。

rpm をみる。

CentOS では、 libvirt-client のなかに、 libvirt-guests は含まれてる。

対象サーバのやつは、けっこう古そうなバージョン libvirt-client-0.10.2-62.el6.x86_64

探し回って、生き残ってたリンク からダウンロードして中身を見る。

$ wget -q ftp://mirror.switch.ch/pool/4/mirror/centos/6.9/os/x86_64/Packages/libvirt-client-0.10.2-62.el6.x86_64.rpm
$ rpm2cpio libvirt-client-0.10.2-62.el6.x86_64.rpm | cpio -idv
$ cat ./etc/rc.d/init.d/libvirt-guests
(略)
ON_BOOT=start
ON_SHUTDOWN=suspend
(後略)

ここには載せないが、最新版と思しきもの2でも ON_BOOT=start

ということで、 CentOS では、デフォルトでホスト OS 再起動したら、ゲストも起動しますよ。

memo

今回のとは無関係だけど、/etc/sysconfig/libvirt-guests について。

START_DELAY - ゲストが起動する間の遅延期間を設定します。この期間は秒単位で設定されます。遅延がないようにし、かつすべてのゲストを同時に起動させるには時間設定の 0 を使用します。
引用元

当り前だけど、これに適当な秒数を記載すると、最初の GUEST も HOST が起動してから、指定秒数待ってスタートする。

GUEST で HOST の特定プロセスを呼ぶ様なモンが動いている場合は素直に、遅らせよう。


  1. CentOS6.8 の場合。バージョンとか違うと、若干パスとファイル名に違いが生じるので注意。 

  2. /usr/libexec/libvirt-guests.sh