Una nota rápida, en realidad hay 3 modos, no dos cuando se trata de los controladores en uso:
- HVM:núcleo y controladores no modificados que usan dispositivos emulados por software
- PV-HVM:núcleo no modificado con controladores de disco y red paravirtualizados (específicos de Xen)
- PV:núcleo y controladores modificados
Para un invitado de Xen/DomU, puede hacer un uname
muy básico y lsmod
con un grep para listar los módulos en uso:
uname -a
lsmod | grep xen
Si uname -a
enumera un kernel con la cadena "xen", entonces tiene un kernel modificado y es probable que sea un invitado PV, y verá la salida del lsmod
comando para confirmarlo. Si tiene una salida de grep en lsmod
pero no hay señales de un kernel modificado, entonces eres PV-HVM. Sin ninguna señal de ninguno de los dos, es un HVM directo.
Nota:En general, puede hacer más con las máquinas virtuales que tienen instaladas las herramientas de PV, por lo que puede ser un indicador bastante obvio; sin embargo, puede falsificar la presencia de las herramientas de PV para permitir la suspensión/reanudar, etc., por lo que no puede confiar en eso en general. .
Existe una alternativa mejor que analizar uname -a
salida desde dentro del dominio invitado. Debería comprobar el perfil de la máquina virtual en el propio hipervisor.
XL
Con la corriente Pila de herramientas de XenLight para instalaciones independientes de Xen, esto podría lograrse ejecutando xl list --long
comando:
# 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 en cuenta el type
elemento en el c_info
sección — si es igual a "pv"
, esto significa paravirtual.
XM
Con un mayor Instalación independiente de Xen usando xm
tradicional conjunto de herramientas de administración, las cosas eran similares:
# xm list --long My-Virtual-Machine
(domain
(domid 42)
(name My-Virtual-Machine)
(image
(linux
(kernel ...)
...
)
)
...
)
Tenga en cuenta el (linux)
elemento en el (image)
sección — corresponde al builder
directiva de configuración, donde "linux" significa "paravirtual" (en lugar del núcleo real), mientras que "hvm" significa "virtualización completa".
XE
Con XenServer o XCP dispositivo podrías usar xe vm-list params=all
comando o algo parecido.
virsh
Puede haber (o ha habido) alguna forma de obtener esta información de libvirt conjunto de herramientas, pero desconocido para mí.
Tenga en cuenta que, a partir de Xen 4.5, el modo paravirtual en x86-64 tiene dos sabores:
- paravirtualización clásica (PV) que depende de que los sistemas invitados se reescriban desde el anillo 0 hacia el anillo 1; dado que AMD se deshizo del anillo 1 y el anillo 2 en x86-64, Xen tuvo que recurrir a la gestión basada en software, que es incluso más lenta que HVM;
- paravirtualización asistida por hardware (PVH), — no debe confundirse con totalmente 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 de PV tradicionales para todo lo demás, de modo que no se emula ningún hardware y se logra un rendimiento casi nativo como en buenas condiciones. viejo x86-32 veces.
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=1
en 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.