Determine el tipo de VMWare desde VM

Determine el tipo de VMWare desde VM

¿Es posible determinar el tipo de VMWare (ESXi, Workstation, Fusion, ...) desde la propia VM (es decir, sistema operativo invitado), siempre que la VM invitada sea una máquina Linux?

Probé varias cosas, como buscar hypervisorin /proc/cpuinfo, usar lscpu, etc., pero todo lo que encontré fue "vmware", sin detalles.

No tengo privilegios de root en la máquina, si eso cambia las cosas, aunque me interesarían soluciones que sean posibles solo con root, que serán útiles para algunas cosas. También estoy principalmente interesado en las soluciones de Linux, pero nuevamente, las soluciones exclusivas de Windows pueden resultar útiles.

La razón por la que pregunto es para poder calcular el rendimiento. ESXi a) normalmente se implementa en "hardware real"™ yb) no tiene una sobrecarga adicional del sistema operativo. Veresta pregunta de error del servidorpara más detalles, especialmenteesta respuesta.

Respuesta1

Puede determinar la versión a partir de las cadenas de versión del BIOS en la salida de dmidecode. Encontré un ejemplo de cómo hacer esto enhttps://fritshoogland.wordpress.com/2013/01/24/determine-vmware-esx-version-from-linux-as-guest-os/que data de 2013, por lo que probablemente le falten algunas versiones más nuevas:

case $( dmidecode | grep -A4 "BIOS Information" | grep Address | awk '{ print $2 }' ) in
"0xE8480" ) echo "ESX 2.5" ;;
"0xE7C70" ) echo "ESX 3.0" ;;
"0xE7910" ) echo "ESX 3.5" ;;
"0xE7910" ) echo "ESX 4"   ;;
"0xEA550" ) echo "ESX 4U1" ;;
"0xEA2E0" ) echo "ESX 4.1" ;;
"0xE72C0" ) echo "ESXi 5"   ;;
"0xEA0C0" ) echo "ESXi 5.1" ;;
"0xEA050" ) echo "ESXi 5.5" ;;
* ) echo "Unknown version: "
dmidecode | grep -A4 "BIOS Information" 
;;
esac

Nuestro equipo de operaciones no pudo decirme qué versión de ESX estábamos ejecutando hace unos años (¡uf!), pero necesitaba saberlo porque nos estábamos preparando para probar un nuevo producto que requería una versión específica del hipervisor. Esto funcionó como un campeón para mí.

Si necesita hacer esto como una cuenta no root, use sudo. Utilice 'visudo' para acceder al archivo sudoers, luego agregue una línea similar a la siguiente cerca del final del archivo:

nombre de usuario TODOS=(TODOS:TODOS) NOPASSWD:/usr/sbin/dmidecode

Esto permitirá que 'nombre de usuario' acceda a dmidecode sin ninguna autenticación especial, simplemente ejecute "sudo dmidecode" en lugar de "dmidecode".

información relacionada