I have a machine that used to run multiple VMs. Some on QEMU/KVM via VMM and then others on VirtualBox 6.1. All machines are Bridged to br0:.
With Laep 15.1 I could run machines simultaniously on with both virtualisers. However now if I am running a VM under QEMU/KVM and I try and launch a machine on VirtualBox I get the Guru Meditaion error almost immediately and the machine fails to launch. If I have a VM running under VirtualBox and I try and launch a VM under QEMU/KVM I get:
Error starting domain: internal error: process exited while connecting to monitor: ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy
2020-07-09T09:47:08.345845Z qemu-system-x86_64: failed to initialize KVM: Device or resource busy
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 75, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 111, in tmpcb
callback(*args, **kwargs)
File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 66, in newfn
ret = fn(self, *args, **kwargs)
File "/usr/share/virt-manager/virtManager/object/domain.py", line 1281, in startup
self._backend.create()
File "/usr/lib64/python3.6/site-packages/libvirt.py", line 1234, in create
if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirt.libvirtError: internal error: process exited while connecting to monitor: ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy
2020-07-09T09:47:08.345845Z qemu-system-x86_64: failed to initialize KVM: Device or resource busy
Moving the VirtualBox VM from a bridged connetion of br0: to a NAT network connection makes no difference.
I am 99% certain that this is a change since 15.1 when I could run two VMs simultaniously.
A bit more info. After a reboot and running any VM via QEMU/KVM and shutting it down. No VM run via VirtualBox has any network connectivity (either using NAT or a Bridge connection to br0: within VirtualBox). If I bridge the connection to the the machines physical ethernet card as oposed to the virtual bridge br0: then it’s the same, no network connectivity. The only way to restore connectivity is to reboot the host system.
Without looking specifically at this situation,
A fundamental principle of all systems with multiple hypervisor based virtualization is that only one hypervisor can be run at a time.
This means that you must stop the services of all other hypervisors before you can run the one you wish.
So, in this case, you need to be certain that all KVM services are stopped before you can launch a Virtualox virtual machine.
As an aside,
This principle is also the basis for plenty of turmoil running WSL2 since unlike WSL1 WSL2 is implemented in Hyper-V.
Don’t know what Virtualbox’s answer will be, but VMware has a beta in progress that allows VMware Usermode tools (ie the VMware Workstation and player apps) to run on the Hyper-V hypervisor instead of the VMware hypervisor.
That’s not unusual.
Nearly all virtualization technologies use bridge devices (like br0) for their networking, and all bridge devices are the same no matter how they are named or created.
And, any number of virtual machines can use the same bridge device simultaneously and therfor be on the same shared network.
Both KVM and VirtualBox attempt to enable CPU virtualization and it is not allowed. Only one component at a time can control virtualization. Your only solution is to use pure software emulation either on QEMU or on VB side, but that likely will be slow.
It is more or less the same under Windows where you cannot run VirtualBox if Hyper-V is enabled.
Recommend tightening up the terminology to be more precise.
Only the hypervisor is incompatible.
A number of userspace tools are capable of managing many virtualization hypervisors… libvirt and vagrant are two of the most well known and VMware is beta testing an implementation.
And,
emulation is a completely different technology than virtualization although in the case of “Full” QEMU is layered on top of virtualization and still cannot resolve hypervisor contention if it exists.
I won’t get into a description of differences, but you’ll find plenty of emulators that don’t rely on hypervisor virtualization.