我最近通过 virt-manager 创建了几个虚拟机,并且都运行没有问题。接下来的一周,每当我尝试启动任何虚拟机时,我都会收到以下消息。
Error starting domain: unsupported configuration: Domain requires KVM, but it is not available. Check that virtualization is enabled in the host BIOS, and host configuration is setup to load the kvm modules.
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 1279, 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: unsupported configuration: Domain requires KVM, but it is not available. Check that virtualization is enabled in the host BIOS, and host configuration is setup to load the kvm modules.
我确实注意到,当我通过远程登录使用该系统时,我被踢出了,所以我假设该系统在周末重新启动。
我还记得必须通过运行命令来加载 kvm 模块,所以我的第一个猜测是它没有加载,所以我运行
$modprobe kvm
但我仍然收到同样的信息。我也跑了
$lsmod | grep kvm
并得到
kvm 507904 0
所以它已加载。
我已经检查了BIOS并可以确认它确实已启用。当我试图弄清楚如何解决这个问题时,我也能够让我的虚拟机再次运行,尽管我不确定我做了什么。然后我再次重新启动系统,看看它是否真正修复并且该消息仍然出现。谁能帮我解决这个问题吗?
答案1
KVM已加载,但还应该有kvm_intel
或kvm_amd
模块已加载。例如,在我的机器上,它看起来像这样:
[Alex@NormandySR2 nested_virt_kvm]$ lsmod | grep kvm
kvm_intel 327680 7
kvm 909312 1 kvm_intel
正如您所注意到的,可能至少有两个原因导致此方法不起作用。
- UEFI(有时称为 BIOS)中禁用虚拟化
- 你的CPU不支持虚拟化
您可以通过以下方式检查您的 CPU 是否支持虚拟化:
lscpu | grep vmx # intel
lscpu | grep svm # amd
如果不存在,请检查您的 CPU 型号是否支持虚拟化(供应商网站上有此信息)。要获取您的 CPU 型号,您可以使用。
lscpu | grep 'Model'
Model: 60
Model name: Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz
编辑
如何自动启用它们?根据您的发行版,它们应该在启动后已加载。但如果由于某种原因没有,您可以使用:
echo -e 'kvm\nkvm_amd' | sudo tee -a /etc/modules-load.d/kvm.conf
这会将两行保存到/etc/module-load.d
.有关 module-load.d 的更多信息可以在man 5 modules-load.d
托管手册的网站之一中找到,例如:
https://www.systutorials.com/docs/linux/man/5-modules-load.d/
答案2
这是一条评论,张贴在这里进行格式化:
这是 的完整输出吗lsmod | grep kvm
?在这种情况下,似乎有问题,我的输出是:
kvm_intel 233472 0
kvm 757760 1 kvm_intel
irqbypass 16384 1 kvm
如果召回情况良好,则同样适用于 AMD CPU,kvm_amd
您还可以kvm
在您的 shell 上尝试简单的命令;应该启动一个空的 VM,并尝试启动 BIOS。在这种情况下,qemu-kvm 没问题,可能是libvirt
Virt-Manager出现问题。