GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué OpenStack informa el tipo de hipervisor como QEMU cuando libvirt_type es KVM?

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 |grep hypervisor_type comando también.

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


Linux
  1. ¿Por qué Sudo ignora los alias?

  2. Al usar Vlc, ¿por qué el protector de pantalla sigue activándose?

  3. ¿Por qué no funciona el autocompletado cuando se escribe un nombre de comando después de `fuente`?

  4. ¿Por qué “/var/log/messages” reporta paquetes marcianos?

  5. ¿Por qué sale esta canalización de shell?

¿Cuándo se maneja una señal y por qué alguna información se congela?

¿Por qué mi $LD_LIBRARY_PATH se desarma cuando uso screen con bash?

¿Por qué `find` en Linux omite los resultados esperados cuando se usa `-o`?

¿Por qué clang genera texto ininteligible cuando se redirige?

¿Por qué `xdg-mime query filetype...` no encuentra un nuevo tipo de archivo agregado?

¿Por qué slabtop -o solo devuelve las primeras 23 líneas cuando se canaliza el comando?