我如何修复 libvirt 错误:unsupported configuration: Emulator '/usr/bin/qemu-system-x86_64' does not support virt type 'kvm'

问题

在一台新服务器上尝试在 libvirt 中定义域时,我遇到了以下错误:

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'

而 KVM 已正确设置:

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

解决方案

在我的情况中,问题在于运行 virsh 的用户不属于 kvm 组。

首先,使用以下命令确定用户:

qemu_conf_user.txt
$ grep "user =" /etc/libvirt/qemu.conf
#       user = "qemu"   # A user named "qemu"
#       user = "+0"     # Super user (uid=0)
#       user = "100"    # A user named "100" or a user with uid=100
#user = "libvirt-qemu"
swtpm_user = "swtpm"

你需要查找的行是 user = "libvirt-qemu"——无论是否被注释掉。

在我的情况中,用户就是默认的 libvirt-qemu。为了修复该问题,我将此用户添加到 kvm 组:

add_kvm_group.sh
sudo usermod -aG kvm libvirt-qemu

之后,你需要重启 libvirt 守护进程:

restart_libvirtd.sh
sudo systemctl restart libvirtd

然后,你应该就能毫无问题地定义域了:

virsh_define.sh
virsh define domain.xml

按类别查看类似文章: Virtualization, Linux