Instalé OpenStack Mitaka y tenía curiosidad por comprobar varias funciones en el panel de Horizon. Por ejemplo, el Sistema> Hipervisores El menú en el tablero proporciona un resumen de varios hosts de cómputo, su tipo de hipervisor y detalles de uso, donde me sorprendió ver que el tipo de hipervisor se informó como QEMU y no como KVM, aunque los nodos de cómputo estaban configurados para usar KVM. Se informó el mismo tipo de hipervisor al usar nova hypervisor-show
# nova hypervisor-show 1 |grep hypervisor_type | hypervisor_type | QEMU
El nova.conf el archivo está configurado para usar libvirt_type=kvm
[libvirt] libvirt_type=kvm compute_driver=libvirt.LibvirtDriver
Busqué en Google este problema y entendí que el comando del cliente OpenStack usa el tipo de conexión libvirt para determinar el tipo de hipervisor en lugar de usar el atributo libvirt_type en nova.conf . Aquí hay un informe detallado sobre este error.
Sin embargo, quería saber si las instancias se inician en el hipervisor KVM en lugar de QEMU. Afortunadamente, hay algunas formas de hacer esto.
Ejecuté todos estos comandos en el nodo de cálculo.
Compruebe si los módulos KVM están cargados
[compute_node]# lsmod |grep kvm kvm_intel 172032 9 kvm 536576 1 kvm_intel irqbypass 16384 7 kvm
Verificar si /dev/kvm existe
[compute_node]# ls -l /dev/kvm crw-rw---- 1 root kvm 10, 232 Jun 14 11:01 /dev/kvm
Comprobar si /dev/kvm es accesible para QEMU
[compute_node]# virt-host-validate |grep kvm QEMU: Checking if device /dev/kvm exists : PASS QEMU: Checking if device /dev/kvm is accessible
El resultado anterior significa que QEMU podría estar usando el acelerador KVM.
Comprobar si QEMU utiliza el acelerador KVM
[compute_node]# ps -aef|grep kvm
Salida de muestra:
/usr/bin/qemu-system-x86_64 -name instance-00000021 -S -machine pc-i440fx-wily,accel=kvm,usb=off -cpu Nehalem
En el resultado anterior, puede ver el proceso qemu-system-x86_64 usando el acelerador kvm . De acuerdo con esta página, si su nodo de cómputo ejecuta qemu proceso con el acelerador KVM, entonces el hipervisor es QEMU con KVM.
Comprobar libvirt.xml de una instancia
[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"/>
En el libvirt.xml búsqueda de archivos para type=kvm y conductor=qemu , lo que significa que el hipervisor es QEMU con KVM.
Verificar console.log de la instancia
[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
Dump instancia xml para verificar el tipo de hipervisor
Inicie virsh como se muestra a continuación:
# virsh
Enumere las instancias:
virsh # list Id Name State ---------------------------------------------------- 4 instance-00000021 running 5 instance-00000023 running 6 instance-00000024 running
Copie la identificación de una de las instancias:diga "instancia-00000021" y descargue su xml como se muestra a continuación:
virsh # quit
Volcar xml de una instancia:
# 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>
Los resultados anteriores confirman que QEMU está utilizando el acelerador KVM.
Bonificación...
También puede iniciar sesión en cualquiera de las instancias y realizar algunas técnicas de detección de virtualización para identificar el tipo de hipervisor subyacente como se muestra aquí .
Conclusión
Aunque los comandos del cliente y el tablero de OpenStack informan el tipo de hipervisor como QEMU, en realidad es QEMU con acelerador KVM y no solo QEMU (que es solo un emulador de software). Entonces, la conclusión es que podría ser un error en OpenStack que informa el tipo de hipervisor como QEMU cuando QEMU con KVM está habilitado o es solo la forma en que informa OpenStack. Pocos foros argumentan que es un error en la documentación de OpenStack que no mencionó claramente el tipo de hipervisor compatible (aunque veo una página que enumera el tipo de hipervisor compatible con OpenStack, no proporciona la diferencia entre QEMU y KVM).