Centos

Virt-Manager - 系統已啟用 KVM,但收到錯誤啟動域:不支持的配置:域需要 KVM,但它不可用

  • March 22, 2021

我最近通過 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 中檢查並可以確認它確實已啟用。當我試圖弄清楚如何解決這個問題時,我也能夠讓我的虛擬機再次執行,儘管我不確定我做了什麼。然後我再次重新啟動系統以查看它是否真正修復並且消息仍然出現。誰能幫我解決這個問題?

KVM 已載入,但也應載入kvm_intelkvm_amd模組。例如,在我的機器上,它看起來像這樣:

[Alex@NormandySR2 nested_virt_kvm]$ lsmod | grep kvm
kvm_intel             327680  7
kvm                   909312  1 kvm_intel

正如您所注意到的,這可能至少有兩個原因不起作用。

  1. UEFI 中禁用了虛擬化(有時稱為 BIOS)
  2. 你的 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. 有關 modules-load.d 的更多資訊可以在man 5 modules-load.d 以下網站或託管手冊的網站之一中找到: https ://www.systutorials.com/docs/linux/man/5-modules-load.d/

引用自:https://unix.stackexchange.com/questions/640583