Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

B.4. ゲストの起動は、以下のエラーで失敗します。 monitor socket did not show up

現象
ゲスト仮想マシン(またはドメイン)の起動は、このエラー(または同様のもの)で失敗します。
# virsh -c qemu:///system create name_of_guest.xml error: Failed to create domain from name_of_guest.xml error: monitor socket did not show up.: Connection refused
調査
このエラーメッセージには、以下が表示されます。
  1. libvirt が動作している。
  2. QEMU プロセスは起動に失敗し、
  3. QEMU または QEMU エージェントモニターソケットへの接続を試みると、libvirt は終了します。
エラーの詳細を理解するには、ゲストログを確認します。
# cat /var/log/libvirt/qemu/name_of_guest.log
LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -S -M pc -enable-kvm -m 768 -smp 1,sockets=1,cores=1,threads=1 -name name_of_guest -uuid ebfaadbe-e908-ba92-fdb8-3fa2db557a42 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/name_of_guest.monitor,server,nowait -mon chardev=monitor,mode=readline -no-reboot -boot c -kernel /var/lib/libvirt/boot/vmlinuz -initrd /var/lib/libvirt/boot/initrd.img -append method=http://www.example.com/pub/product/release/version/x86_64/os/ -drive file=/var/lib/libvirt/images/name_of_guest.img,if=none,id=drive-ide0-0-0,boot=on -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -device virtio-net-pci,vlan=0,id=net0,mac=52:40:00:f4:f1:0a,bus=pci.0,addr=0x4 -net tap,fd=42,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:0 -k en-gb -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,
addr=0x3 
char device redirected to /dev/pts/1
qemu: could not load kernel '/var/lib/libvirt/boot/vmlinuz':
Permission denied
解決方法
ゲストログには、エラーを修正するために必要な詳細が含まれます。
ゲストが 0.9.5 よりも前の libvirt バージョンを実行している間にホストがシャットダウンした場合、libvirt-guest の init スクリプトはゲストの管理対象保存の実行を試みます。管理保存が不完全であった場合(たとえば、管理保存イメージがディスクにフラッシュされる前に電力が失われた場合など)、保存イメージが破損し、QEMU によって読み込まれません。古いバージョンの libvirt は破損を認識しないため、問題を許容します。この場合、ゲストログで -incoming を引数の 1 つとして使用しようとします。つまり、libvirt が保存された状態ファイルで移行して QEMU を起動しようとします。
この問題は、virsh managedsave-remove name_of_guest を実行して、破損した管理保存イメージを削除することで修正できます。新しいバージョンの libvirt では、最初の場所で破損を回避し、virsh start --force-boot name_of_guest を追加して管理保存イメージをバイパスします。