qemu-kvm 2.7 does not boot kvm VMs with virtio on top of VMware ESX
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
After todays Proxmox update all my Linux VMs stopped booting.
# How to reproduce
- Have KVM on top of VMware ESX (I use VMware ESX 6)
- Boot Linux VM with virtio Disk drive.
# Result
virtio based VMs do not boot anymore:
root@demotuxdc:
bootdisk: virtio0
virtio0: pvestorage:
(initially with cache=writethrough, but that doesn´t matter)
What happens instead is:
- BIOS displays "Booting from harddisk..."
- kvm process of VM loops at about 140% of Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz Skylake dual core CPU
Disk of course has valid bootsector:
root@demotuxdc:
vm-100-disk-1.raw: DOS/MBR boot sector DOS/MBR boot sector DOS executable (COM), boot code
root@demotuxdc:
00000170 be 94 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 |..}.......GRUB .|
# Workaround 1
- Change disk from virtio0 to scsi0
- Debian boots out of the box after this change
- SLES 12 needs a rebuilt initrd
- CentOS 7 too, but it seems that is not even enough and it still fails (even in hostonly="no" mode for dracut)
# Workaround 2
Downgrade pve-qemu-kvm 2.7.0-3 to 2.6.2-2.
# Expected results
Disk boots just fine via virtio like it did before.
# Downstream bug report
Downstream suggests an issue with upstream qemu-kvm:
I traced this back to the switch to enabling virtio-1 mode by default in 2.7 in commit 9a4c0e220d8a4f8 2b5665d0ee95ef9 4d8e1509d5
forcing the old behaviour with a 2.6 machine type works.