Comprobar si un servidor Linux es virtual o físico
En ocasiones nos resulta inevitable conocer si un servidor es físico (es decir, una torre o rack) o bien si es virtual (una máquina virtual) para aplicar configuraciones sobre él o realizar un inventariado de equipos.
Tal ha sido el caso conmigo en más de una ocasión, mi curiosidad me ha llevado a investigar no una o dos sino todas las opciones que he podido encontrar para poder obtener tan valiosa información, así que sin más demora vamos a enumerar las opciones.
Como saber si un servidor Linux es virtual o físico
Estos comandos te permitirán saber si un servidor Linux o UNIX es físico o virtualizado, tanto de forma remota como desde un terminal local. Estos comandos son interesantes porque la mayoría no requieren de instalar paquete alguno.
Veamos algunos comandos con sus salidas explicadas.
dmidecode
Podemos usar alguna de las siguientes variantes, entre otras:
dmidecode -t system dmidecode -s system-manufacturer dmidecode | egrep -i 'manufacturer|product'
Usando una máquina virtual obtendremos lo siguiente:
SI se trata de un servidor físico, en manufacturer obtendremos el fabricante el equipo (por ejemplo, Dell o HP) y en product name el nombre comercial del servidor, por ejemplo ProLiant.
dmesg
La utilidad dmesg es descrita como un examinador/controlador del bufer del anillo del kernel de Linux. Es interesante por sí misma para auditar algunos aspectos importantes del sistema.
En este caso recomiendo las sintaxis:
dmesg | grep "Hypervisor detected" dmesg | grep DMI
En una máquina virtual obtendremos algo similar a esto:
En un sistema físico no obtendremos salida para el primer comando, mientras que en el segundo aparecerán detalles sobre la placa base y revisión de BIOS del servidor, así como el nombre del equipo.
lshw
De la misma forma que ls nos permite listar directorios, lshw nos permite listar detalles del hardware de un equipo basado en Linux. Este utilitario podría no estar presente en algunos sistemas.
Sintaxis recomendadas:
lshw -c system lshw -c system | grep product
En una máquina virtual obtendremos algo similar a esto:
En un sistema físico obtendremos detalles del hardware como en casos anteriores. La diferencia normalmente se ve a simple vista.
hwinfo
Esta utilidad para verificar hardware es bastante completa aunque no siempre estará disponible y en entornos de producción de una empresa no podemos estar instalando paquetes, pero lo dejo como referencia.
Instalación:
sudo apt install hwinfo
Sintaxis recomendadas:
hwinfo --all hwinfo --all --log ~/hwinfo.txt #(salida a fichero de texto)
Una vez tengamos el fichero de texto lo filtramos según BIOS, System info o Chassis info.
systemd-detect-virtual
Esta utilidad nos permite introducir una sencilla orden y obtener información sobre contenedores o máquinas virtuales presentes en el sistema. Solo tenemos que escribir, según el sistema, la siguiente sintaxis:
systemd-detect-virtual systemd-detect-virt
En un equipo virtualizado obtendremos lo siguiente:
Archivos de sistema en /sys/class/dmi/id
En el propio sistema de archivos podemos determinar si el equipo es fisico o virtual revisando estos ficheros.
cat /sys/class/dmi/id/product_name cat /sys/class/dmi/id/chassis_vendor
En un sistema virtualizado obtendremos lo siguiente.
Eso es todo por hoy, espero que estos comandos os resulten útiles y ya sabéis, si tenéis alguno más en la manga compartidlos con el resto 🙂
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.
Lo bueno de tus artículos es que no te conformas con dar una posibilidad o dos de solventar una acción (como hacen muchos blogs), sino que das un abanico importante de ellas.
Muchas gracias por la info.
Me alegro de que lo consideres buen material, saludos!