Cómo arreglé el error de libvirt: configuración no soportada: El emulador '/usr/bin/qemu-system-x86_64' no soporta el tipo virt 'kvm'

Problema

Al intentar definir un dominio en libvirt en un servidor nuevo, encontré el siguiente error:

virsh_define_error.txt
$ virsh define domain.xml
error: Failed to define domain from domain.xml
error: unsupported configuration: Emulator '/usr/bin/qemu-system-x86_64' does not support virt type 'kvm'

mientras que KVM estaba configurado correctamente:

kvm_ok_output.txt
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

Solución

El problema en mi caso era que el usuario con el que se ejecutaba virsh no era miembro del grupo kvm.

Primero, determina el usuario usando

qemu_conf_user.txt
$ grep "user =" /etc/libvirt/qemu.conf
#       user = "qemu"   # Un usuario llamado "qemu"
#       user = "+0"     # Superusuario (uid=0)
#       user = "100"    # Un usuario llamado "100" o un usuario con uid=100
#user = "libvirt-qemu"
swtpm_user = "swtpm"

La línea que debes buscar es user = "libvirt-qemu" - ya sea esté comentada o no.

En mi caso, el usuario era simplemente el predeterminado libvirt-qemu. Para solucionar el problema, añadí este usuario al grupo kvm:

add_kvm_group.sh
sudo usermod -aG kvm libvirt-qemu

Después de eso, necesitas reiniciar el demonio de libvirt:

restart_libvirtd.sh
sudo systemctl restart libvirtd

luego, deberías poder definir el dominio sin ningún problema:

virsh_define.sh
virsh define domain.xml

Echa un vistazo a artículos similares por categoría: Virtualization Linux