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
# 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).