Determine qué invitado se está ejecutando en XEN: invitado HVM o PV

9

Estoy trabajando con un host Xen que alguien instala XenServer de Citrix. Ya instaló muchos invitados CentOS 5.2 en el host. Me pregunto cómo verificar a esos invitados para saber si son tipos PV o HVM.

Ha Son Hai
fuente

Respuestas:

10

Una nota rápida, en realidad hay 3 modos, no dos cuando se trata de los controladores en uso:

  • HVM: kernel no modificado y controladores que utilizan dispositivos emulados por software
  • PV-HVM: núcleo no modificado con disco paravirtualizado (específico para Xen) y controladores de red
  • PV: kernel modificado y controladores

Para un invitado Xen / DomU, puede hacer un muy básico unamey lsmodcon un grep para enumerar los módulos en uso:

uname -a
lsmod | grep xen

Si uname -aenumera un núcleo con la cadena "xen", entonces tiene un núcleo modificado y es probable que sea un invitado PV, y verá la salida del lsmodcomando para confirmarlo. Si tiene salida del grep lsmodpero no muestra signos de un kernel modificado, entonces usted es PV-HVM. Sin ninguna señal de ninguno de los dos, es un HVM directo.

Nota: en general, puede hacer más con máquinas virtuales que tienen instaladas las herramientas FV, ​​por lo que puede ser un indicador bastante obvio, sin embargo, puede simular la presencia de las herramientas FV para permitir suspender / reanudar, etc., por lo que no puede confiar en eso en general .

Adam C
fuente
Gracias @ Adam. Es la respuesta más clara que he encontrado hasta ahora.
Ha Son Hai
10

Existe una mejor alternativa para analizar la uname -asalida desde el dominio invitado. Debería verificar el perfil de VM en el propio hipervisor.

SG

Con el conjunto de herramientas XenLight actual para instalaciones independientes de Xen, esto podría lograrse ejecutando el xl list --longcomando:

# xl list
Name                   ID   Mem VCPUs      State   Time(s)
My-Virtual-Machine     42  1024     1     -b----    9001.0

# xl list -l 42
    or
# xl list --long My-Virtual-Machine

[
    {
        "domid": 6,
        "config": {
            "c_info": {
                "name": "My-Virtual-Machine",
                "uuid": "12345678-abcd-1234-abcd-12345678abcd",
                "type": "pv",
                ...
            },
            ...
        }
    }
]

Tenga typeen cuenta el elemento en la  c_infosección: si es igual  "pv", esto significa paravirtual.

XM

Con una instalación Xen independiente más antigua que usaba la xmpila de herramientas de administración tradicional , las cosas eran similares:

# xm list --long My-Virtual-Machine
(domain
    (domid 42)
    (name My-Virtual-Machine)
    (image
        (linux
            (kernel ...)
            ...
        )
    )
    ...
)

Tenga (linux)en cuenta el elemento en la  (image)sección: corresponde a la  builderdirectiva de configuración, donde "linux" significa "paravirtual" (en lugar del núcleo real), mientras que "hvm" significa "virtualización completa".

XE

Con XenServer o el dispositivo XCP , puede usar xe vm-list params=allcomandos o algo similar.

virsh

Puede haber (o ha habido) alguna forma de obtener esta información de  libvirt toolstack, pero no lo conozco.


Tenga en cuenta que, comenzando con Xen 4.5, el modo paravirtual en x86-64 tiene dos sabores:

  • paravirtualización clásica (PV) que se basa en sistemas invitados para ser reescritos desde el uso del anillo 0 hacia el anillo 1; dado que AMD ha tirado el anillo 1 y el anillo 2 en x86-64, Xen tuvo que recurrir a la administración basada en software, que es incluso más lenta que HVM;
  • paravirtualización asistida por hardware (PVH), que no debe confundirse con  completamente virtualizado con controladores paravirtuales (PV-on-HVM), que se basa en la asistencia de hardware para manejar instrucciones privilegiadas y tablas de páginas de memoria, pero utiliza técnicas tradicionales de PV para todo lo demás , de modo que no se emule ningún hardware y se logre un rendimiento casi nativo tal como se hacía en los viejos tiempos x86-32.

Para verificar si el host se ejecuta con PVH habilitado, se puede usar xl info(aunque este método no es mejor que inspeccionar grub.cfg ):

# xl info | grep xen_commandline
xen_commandline        : pvh=1 loglvl=all guest_loglvl=all console=com1,vga
                         ^^^^^

Para verificar si un invitado en particular se está ejecutando en modo PVH ( pvh=1en el archivo de configuración), nuevamente, consulte xl list -l:

            "c_info":{
                "name": "My-Virtual-Machine",
                "type": "pv",
                "pvh": "True",
                ...
            },

Sin embargo, desde la perspectiva de la administración, PVH no debería ser diferente a PV.

Anton Samsonov
fuente
Esto no funciona en 4.4.1 porque no hay un xmcomando pero xlque tiene una salida diferente. Alguna idea de cómo obtener la información en 4.4.1 XEN. Gracias.
Wakan Tanka
@WakanTanka Actualmente no tengo acceso a un servidor Xen que funcione, pero según el resultado de la muestra que se encuentra en línea, el enfoque es básicamente el mismo. Ver la respuesta actualizada.
Anton Samsonov
Este es un enfoque mucho mejor que la respuesta de @ AdamC, porque tengo varios invitados PV ubuntu que definitivamente son PV según xl, y sin embargo, no menciono xen en el nombre del kernel o los módulos del kernel.
Nombre falso
2
Esto requiere acceso al hipervisor, ¿cómo se puede saber si solo tiene acceso al invitado?
Tonin el