GNU/Linux >> Znalost Linux >  >> Linux

Proč OpenStack hlásí typ Hypervisoru jako QEMU, když libvirt_type je KVM?

Nainstaloval jsem OpenStack Mitaka a byl jsem zvědavý na kontrolu různých funkcí v horizontu dashboard. Například Systém> Hypervizory nabídka na řídicím panelu poskytuje souhrn různých výpočetních hostitelů, jejich typ hypervizoru a podrobnosti o použití – kde mě překvapilo, že typ hypervizoru je hlášen jako QEMU a ne KVM, ačkoli výpočetní uzly byly nakonfigurovány pro použití KVM. Stejný typ hypervisoru byl hlášen při použití nova hypervisor-show |grep hypervisor_type také příkaz.

# nova hypervisor-show 1 |grep hypervisor_type
| hypervisor_type | QEMU

nova.conf soubor je nakonfigurován pro použití  libvirt_type=kvm

[libvirt]
libvirt_type=kvm
compute_driver=libvirt.LibvirtDriver

Vyhledal jsem tento problém a pochopil jsem, že příkaz klienta OpenStack používá k určení typu hypervizoru typ připojení libvirt namísto použití atributu libvirt_type v nova.conf . Zde je podrobná zpráva o této chybě.

Chtěl jsem však vědět, zda jsou instance spouštěny na hypervisoru KVM namísto QEMU. Naštěstí existuje několik způsobů, jak to udělat.

Všechny tyto příkazy jsem provedl na výpočetním uzlu.

Zkontrolujte, zda jsou načteny moduly KVM

[compute_node]# lsmod |grep kvm
kvm_intel 172032 9
kvm 536576 1 kvm_intel
irqbypass 16384 7 kvm

Zkontrolujte, zda existuje /dev/kvm

[compute_node]# ls -l /dev/kvm
crw-rw---- 1 root kvm 10, 232 Jun 14 11:01 /dev/kvm

Zkontrolujte, zda je /dev/kvm přístupný pro QEMU

[compute_node]# virt-host-validate |grep kvm
 QEMU: Checking if device /dev/kvm exists : PASS
 QEMU: Checking if device /dev/kvm is accessible

Výše uvedený výstup znamená, že QEMU může používat akcelerátor KVM.

Zkontrolujte, zda QEMU používá akcelerátor KVM

[compute_node]# ps -aef|grep kvm

Ukázkový výstup:

/usr/bin/qemu-system-x86_64  -name instance-00000021 -S  -machine pc-i440fx-wily,accel=kvm,usb=off -cpu Nehalem

Ve výše uvedeném výstupu můžete vidět proces qemu-system-x86_64 využívající akcelerátor kvm . Podle této stránky, pokud váš výpočetní uzel běží qemu proces s akcelerátorem KVM, pak je hypervizorem QEMU s KVM.

Zkontrolujte libvirt.xml instance

[compute_node]# cd /var/lib/nova/instances/<instance_id>
[compute_node]# cd /var/lib/nova/instances/b127f332-c631-4bd0-bde0-e90626d8bc27
[compute_node]# grep type libvirt.xml
<domain type="kvm">
<nova:root type="image" uuid="2cfff576-95e8-45cf-814a-63b695cb32e5"/>
<sysinfo type="smbios">
<type>hvm</type>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" cache="none"/>
<interface type="bridge">
<model type="virtio"/>
<serial type="file">
<serial type="pty"/>
<input type="tablet" bus="usb"/>
<graphics type="vnc" autoport="yes" keymap="en-us" listen="0.0.0.0"/>
<model type="cirrus"/>

V souboru libvirt.xml hledání souboru pro type=kvm a řidič=qemu , což znamená, že hypervizor je QEMU s KVM.

Zkontrolovat console.log instance

[compute_node]# cd /var/lib/nova/instances/<instance_id>
[compute_node]# cd /var/lib/nova/instances/b127f332-c631-4bd0-bde0-e90626d8bc27
[compute_node]# grep KVM console.log
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.000000] KVM setup async PF for cpu 0

Vypsat xml instance pro ověření typu hypervisoru

Spusťte virsh, jak je uvedeno níže:

# virsh

Seznam instancí:

virsh # list
 Id Name State
 ----------------------------------------------------
 4 instance-00000021 running
 5 instance-00000023 running
 6 instance-00000024 running

Zkopírujte ID jedné instance – řekněte „instance-00000021“ a vypište její xml, jak je znázorněno níže:

virsh # quit

Vypsat xml instance:

# virsh dumpxml instance-00000021 | grep kvm
 <domain type='kvm' id='4'>
# virsh dumpxml instance-00000021 | grep driver
 <driver name='qemu' type='qcow2' cache='none'/>
# virsh dumpxml instance-00000021 | grep emulator
 <emulator>/usr/bin/qemu-system-x86_64</emulator>

Výše uvedené výstupy potvrzují, že QEMU používá akcelerátor KVM.

Bonus…

Můžete se také přihlásit do kterékoli instance a provést několik technik detekce virtualizace, abyste identifikovali základní typ hypervizoru, jak je znázorněno zde .

Závěr

Přestože řídicí panel OpenStack a příkazy klienta hlásí typ hypervizoru jako QEMU, ve skutečnosti jde o QEMU s akcelerátorem KVM a ne pouze o QEMU (což je pouze softwarový emulátor). Závěr je tedy takový, že se může jednat o chybu v OpenStack, která hlásí typ hypervizoru jako QEMU, když je QEMU s KVM povoleno, nebo je to jen způsob, jakým OpenStack hlásí. Jen málo fór tvrdí, že jde o chybu v dokumentaci OpenStack, která nedokázala jasně zmínit typ podporovaného hypervizoru (ačkoli vidím stránku se seznamem typů hypervizorů podporovaných v OpenStack, chybí jí rozdíl mezi QEMU a KVM).


Linux
  1. Proč rsync nepoužívá delta-transfer pro místní soubory?

  2. Proč můj systém ukazuje jen 3,2 GiB RAM, když mám určitě 4,0 GiB

  3. Hostitelský procesor neškáluje frekvenci, když to host KVM potřebuje

  1. Proč je Windows10 VM pomalý na OpenStack?

  2. Proč Sudo ignoruje aliasy?

  3. Proč kurzor při psaní přeskakuje?

  1. Proč tento plášťový ropovod vystupuje?

  2. Bash:Proč se nadřazený skript neukončí na SIGINT, když podřízený skript zachytí SIGINT?

  3. Proč se moje $LD_LIBRARY_PATH při použití obrazovky s bash odstaví?