Virt-Manager - システムでKVMが有効になっていますが、ドメインの起動時にエラーが発生します。サポートされていない構成:ドメインにKVMが必要ですが使用できません。

Virt-Manager - システムでKVMが有効になっていますが、ドメインの起動時にエラーが発生します。サポートされていない構成:ドメインにKVMが必要ですが使用できません。

最近、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

すでに知っているように、この方法が機能しないには少なくとも2つの理由があります。

  1. UEFI(BIOSとも呼ばれる)で仮想化を無効にする
  2. CPUが仮想化をサポートしていません

以下を使用して、CPU が仮想化をサポートしているかどうかを確認できます。

lscpu | grep vmx # intel
lscpu | grep svm # amd

そうでない場合は、CPUモデルが仮想化をサポートしていることを確認してください(この情報はベンダーのWebサイトで入手できます)。 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

これにより、2行がに保存されます/etc/module-load.d。 module-load.dの詳細については、man 5 modules-load.dマニュアルをホストしているWebサイトのいずれかを参照してください。例: 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シェルから簡単なコマンドを試すこともできます。空のVMを起動してBIOSを起動しようとする必要があります。この場合、qemu-kvmには問題はありませんが、libvirtVirt-Managerには問題がある可能性があります。

関連情報