Linux KVM if guest is rebooted it will not start, must be manually started

kvm-virtualizationlinuxvirsh

Have an Ubuntu server running KVM:

Linux hyperv 4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

It is running a few VMs which are linux, and one windows vm. After installing a new VM of Windows 2016 server, a problem occurs. The vm (called winstore) may be started by performing the following:

virsh start winstore

And it comes up fine. If this particular VM is restarted from within the VM, it will cleanly shutdown, but not come back up. running

virsh list

confirms that it has not started. In order to start the VM, one must do a

virsh start winstore 

again. This is not the desired behavior, and NOT how the other windows VMs behave (they have the desired behavior, which is they reboot when restarted).

The VM was created a bit differently than normal. These were the steps used to create the VM initially:

create the disk image

qemu-img create -f qcow2 -o preallocation=metadata /mnt/vmstorage/images/winstore.qcow2 1300G

get an xml output of what we would do, so we can modify the cdrom attributes

virt-install --name winstore --ram 8192 --vcpus=2 --graphics=vnc --network=bridge=br731,model=virtio --disk path=/mnt/vmstorage/images/winstore.qcow2,format=qcow2,bus=virtio,cache=none --disk path=/mnt/backups/isos/virtio-win-0.1.126.iso,device=cdrom --cdrom /mnt/backups/isos/SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.ISO --os-type=windows --noautoconsole --accelerate --noapic --print-xml > winstore.xml

change the order of the cdroms in the xml file:

<disk type="file" device="cdrom">
  <driver name="qemu" type="raw"/>
  <source file="/mnt/backups/isos/virtio-win-0.1.126.iso"/>
  <target dev="hda" bus="ide"/>
  <readonly/>
</disk>
<disk type="file" device="cdrom">
  <driver name="qemu" type="raw"/>
  <source file="/mnt/backups/isos/SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.ISO"/>
  <target dev="hdb" bus="ide"/>
  <readonly/>

then it was installed and started by performing the following:

virsh create ./winstore.xml 
virsh start winstore

after installation, the xml was edited, and the two drives were swapped (hda/hdb) so it will boot from the disk and not cdrom. Then the VM was defined with the following in virsh:

virsh define ./winstore.xml

Again, the VM seems to work fine now, but it only starts with

virsh start winstore

Again, IF the VM is rebooted from within the guest, it will not restart, it will just shutdown. Looking through the logs in
/var/log/libvirt/qemu/winstore.log there does not seem to be anything out of the ordinary.

Note that the VM appears in a

virsh list --all

Yes, I am absolutely, positively sure that I am not clicking on "shutdown" in the windows VM. 🙂

Best Answer

As per Michael Hampton comments above, the xml had "destroy" for the <on_reboot> node instead of "restart".