Como administrador de Linux, a veces puede preguntarse si está trabajando en una máquina física o virtual. La mayor parte del tiempo, accederá y administrará sus servidores de forma remota. Es posible que no siempre tenga acceso físico a sus servidores, y es posible que ni siquiera sepa dónde se encuentra el servidor. Sin embargo, es posible verificar si su sistema Linux es una máquina física o virtual usando un par de utilidades de Linux. Esta guía enumera todas las formas posibles de verificar si el sistema Linux en el que está trabajando es un servidor físico o un servidor virtual.
Comprueba si un sistema Linux es una máquina física o virtual
Puede haber muchas formas de averiguar si un sistema es físico o virtual. Soy consciente de los siguientes métodos en la actualidad. Actualizaré si encuentro otras formas en los próximos días.
Método 1:uso de la utilidad Dmidecode
La forma más fácil de saber si estamos trabajando en una máquina virtual o física es usando dmidecode utilidad. Dmidecode, decodificador de tabla DMI, se usa para encontrar los componentes de hardware de su sistema, así como otra información útil, como números de serie y revisión de BIOS.
Dmidecode viene preinstalado con la mayoría de las distribuciones de Linux. Por si acaso, si aún no está instalado, puede instalarlo usando el administrador de paquetes de su distribución. Digamos, por ejemplo, que el siguiente comando instalará dmidecode en sistemas basados en DEB como Ubuntu, Linux Mint.
$ sudo apt-get install dmidecode
Después de instalar Dmidecode, ejecute el siguiente comando para averiguar si su sistema es una máquina física o virtual:
$ sudo dmidecode -s system-manufacturer
Si se trata de un sistema físico, obtendrá una salida similar a la siguiente.
Dell Inc.
Si es un sistema virtual creado con Virtualbox, obtendrá el siguiente resultado:
innotek GmbH
Para aquellos que se preguntan, innotek es una empresa de software con sede en Alemania que desarrolla software de virtualización de PC llamado VirtualBox .
Si es un sistema virtual creado con KVM/QEMU, la salida será:
QEMU
Como puede ver en el resultado anterior, si se trata de un sistema físico, dmidecode mostrará el nombre del fabricante (es decir, Dell Inc.). Si es un sistema virtual, mostrará el software/tecnología de virtualización (es decir, VirtualBox o QEMU).
Además, puede usar este comando para verificar si es un sistema físico o virtual.
$ sudo dmidecode | grep Product
Salida de muestra:
[Physical system] Product Name: 01HXXJ Product Name: Inspiron N5050 [Virtual system on VirtualBox] Product Name: VirtualBox Product Name: VirtualBox [Virtual system on KVM/QEMU] Product Name: Standard PC (Q35 + ICH9, 2009)
Otro comando para saber si es un sistema físico o virtual es:
$ sudo dmidecode -s system-product-name
Salida de muestra:
[Physical system] Inspiron N5050 [Virtual system on VirtualBox] VirtualBox [Virtual system on KVM/QEMU] Standard PC (Q35 + ICH9, 2009)
Otro comando dmidecode para encontrar el tipo de sistema remoto es:
$ sudo dmidecode | egrep -i 'manufacturer|product'
Salida de muestra:
[Physical system] Manufacturer: Intel Manufacturer: Sanyo Manufacturer: Not Specified Manufacturer: Dell Inc. Product Name: 01HXXJ Manufacturer: Dell Inc. Manufacturer: Dell Inc. Product Name: Inspiron N5050 Manufacturer: 014F [Virtual system on VirtualBox] Manufacturer: innotek GmbH Product Name: VirtualBox Manufacturer: Oracle Corporation Product Name: VirtualBox Manufacturer: Oracle Corporation [Virtual system on KVM/QEMU] Manufacturer: QEMU Product Name: Standard PC (Q35 + ICH9, 2009) Manufacturer: QEMU Manufacturer: QEMU Manufacturer: QEMU Manufacturer: QEMU
Y, un comando dmidecode más es lograr el mismo objetivo:
$ sudo dmidecode | egrep -i 'vendor'
Salida de muestra:
[Physical system] Vendor: Dell Inc. [Virtual system on VirtualBox] Vendor: innotek GmbH [Virtual system on KVM/QEMU] Vendor: EFI Development Kit II / OVMF
Método 2:uso de la utilidad Facter
Factor es una utilidad de línea de comandos para recopilar y mostrar la información de un sistema. A diferencia de Dmidecode, Facter no viene preinstalado por defecto. Es posible que deba instalarlo como se muestra a continuación, según la distribución de Linux que utilice.
En Arch Linux, Manjaro Linux:
$ sudo pacman -S facter
En Fedora:
$ sudo dnf install facter
En CentOS, RHEL:
$ sudo yum install epel-release
$ sudo yum installl facter
En openSUSE:
$ sudo zypper install facter
Una vez instalado facter, ejecute el siguiente comando para verificar si el sistema es una máquina física o virtual:
$ facter 2> /dev/null | grep virtual
Si este comando no funciona, intente con privilegios sudo:
$ sudo facter 2> /dev/null | grep virtual
Salida de muestra:
[Physical system] is_virtual => false virtual => physical [Virtual system on VirtualBox and KVM/QEMU] is_virtual => true virtual => kvm
Alternativamente, use el siguiente comando:
$ facter virtual
O,
$ sudo facter virtual
Si es una máquina física, la salida será:
physical
Si se trata de una máquina virtual, verá una salida similar a la siguiente.
kvm
Método 3:uso de la utilidad lshw
El lshw La utilidad es una pequeña utilidad de línea de comandos que muestra la información detallada del hardware de un sistema similar a Unix. Muestra todos los detalles del hardware, incluida la configuración de la memoria, la versión del firmware, la configuración de la placa base, la versión y la velocidad de la CPU, la configuración de la memoria caché, la velocidad del bus, etc.
Algunas distribuciones de Linux vienen preinstaladas con lshw. Si aún no está instalado, puede instalarlo como se muestra a continuación.
En Arch Linux y derivados:
$ sudo pacman -S lshw
En Fedora:
$ sudo dnf install lshw
En RHEL y derivados como CentOS, Linux científico:
$ sudo yum install epel-release
$ sudo yum install lshw
En Debian, Ubuntu, Linux Mint:
$ sudo apt-get install lshw
En SUSE/openSUSE:
$ sudo zypper in lshw
Después de instalar lshw, ejecute el siguiente comando para averiguar si su sistema es físico o virtual:
$ sudo lshw -class system
Salida de muestra:
[Physical system] sk description: Portable Computer product: Inspiron N5050 (To be filled by O.E.M.) vendor: Dell Inc. version: Not Specified serial: JSQ9PR1 width: 4294967295 bits capabilities: smbios-2.6 dmi-2.6 smp vsyscall32 configuration: boot=normal chassis=portable sku=To be filled by O.E.M. uuid=44454C4C-5300-1051-8039-CAC04F505231 [Virtual system on VirtualBox] ubuntuserver description: Computer product: VirtualBox vendor: innotek GmbH version: 1.2 serial: 0 width: 64 bits capabilities: smbios-2.5 dmi-2.5 vsyscall32 configuration: family=Virtual Machine uuid=78B58916-4074-42E2-860F-7CAF39B5E6F5 [Virtual system on KVM/QEMU] centos8uefi.ostechnix.lan description: Computer product: Standard PC (Q35 + ICH9, 2009) vendor: QEMU version: pc-q35-4.2 width: 64 bits capabilities: smbios-2.8 dmi-2.8 smp vsyscall32 configuration: boot=normal uuid=C40041DE-2E63-094C-8DCF-BBDE29170268 *-pnp00:00 product: PnP device PNP0b00 physical id: 1 capabilities: pnp configuration: driver=rtc_cmos
Lectura sugerida:
- Cómo encontrar especificaciones de hardware en Linux
- Cómo averiguar la memoria RAM máxima admitida en Linux
Método 4:uso de la utilidad dmesg
Podemos encontrar el tipo de sistema usando dmesg utilidad. dmesg se utiliza para examinar o controlar el búfer de anillo del kernel.
Para verificar si su sistema Linux es físico o virtual, simplemente ejecute:
$ sudo dmesg | grep "Hypervisor detected"
Si su sistema es físico, no verá ningún resultado.
Si su sistema es una máquina virtual, verá una salida similar a la siguiente.
[ 0.000000] Hypervisor detected: KVM
Método 5:usar el comando hostnamectl
Podemos averiguar si nuestro sistema es virtual o físico usando hostnamectl dominio. Requiere systemd para trabajar.
$ hostnamectl status
O,
$ hostnamectl
Salida de muestra:
[Physical system] Static hostname: sk Icon name: computer-laptop Chassis: laptop Machine ID: 84e3c8e37e114ac9bc9f69689b49cfaa Boot ID: 19cf3572e1634e778b5d494d9c1af6e9 Operating System: Arch Linux Kernel: Linux 4.10.13-1-ARCH Architecture: x86-64 [Virtual system on VirtualBox] Static hostname: ubuntuserver Icon name: computer-vm Chassis: vm Machine ID: 2befe86cf8887ba098b509e457554beb Boot ID: 8021c02d65dc46a1885afb25dddcf18c Virtualization: oracle Operating System: Ubuntu 16.04.1 LTS Kernel: Linux 4.4.0-78-generic Architecture: x86-64 [Virtual system on KVM/QEMU] Static hostname: centos8uefi.ostechnix.lan Icon name: computer-vm Chassis: vm Machine ID: de4100c4632e4c098dcfbbde29170268 Boot ID: 6136783bb9c241d08c8901aeecc7c30d Virtualization: kvm Operating System: CentOS Linux 8 (Core) CPE OS Name: cpe:/o:centos:centos:8 Kernel: Linux 4.18.0-80.el8.x86_64 Architecture: x86-64
Método 6:uso de systemd-detect-virt
El systemd-detect-virt La herramienta detecta la tecnología de virtualización y puede distinguir la virtualización de máquina completa de la virtualización de hardware o contenedor.
Ejecute el siguiente comando para comprobar si el sistema es físico o virtual:
$ systemd-detect-virt
Salida de muestra:
[Physical machine] none [Virtual machine on VirtualBox] oracle [Virtual machine on KVM/QEMU] KVM
Método 7:usar el script virt-what
El virt-qué es un pequeño script de shell desarrollado en Red Hat para averiguar si estamos ejecutando en una máquina virtual o en una máquina física. virt-what está empaquetado para todas las distribuciones populares de Linux, como RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).
En Arch Linux, puede instalarlo desde AUR usando cualquier asistente de AUR, por ejemplo Yay .
$ yay -S virt-what
En RHEL, Fedora, CentOS:
$ sudo yum install virt-what
En Debian, Ubuntu:
$ sudo apt-get install virt-what
Una vez instalado, ejecute el siguiente comando para mostrar si su sistema es físico o virtual:
$ sudo virt-what
Si no se imprime nada y el script sale con código 0 (sin error), significa que el sistema es físico o un tipo de máquina virtual que no conocemos o no podemos detectar.
Si su sistema es virtual, verá una salida como la siguiente.
virtualbox kvm
Para obtener más detalles, consulte la página de inicio del proyecto.
- http://people.redhat.com/~rjones/virt-what/
Método 8:usar el script imvirt
El imvirt es otro pequeño perl script que te ayuda a detectar si estamos corriendo en una máquina virtual.
En Arch Linux, puedes instalarlo desde AUR usando Yay programa de ayuda.
$ yay -S imvirt
En Debian, Ubuntu, Linux Mint:
$ sudo apt-get install imvirt
Una vez instalado, ejecute el siguiente comando para mostrar si su sistema es físico o virtual:
$ sudo imvirt
Si su sistema es físico, la salida sería:
Physical
si el sistema es virtual, verá:
KVM
Para obtener más detalles, consulte la página de inicio del proyecto.
- http://micky.ibh.net/~liske/imvirt.html
Lectura relacionada:
- Cómo comprobar si un sistema Linux es de 32 bits o de 64 bits
- Cómo averiguar si una CPU es compatible con la tecnología de virtualización (VT)
Y, eso es todo por ahora. Si conoce otras formas de averiguar si la caja de Linux es física o virtual, háganoslo saber en la sección de comentarios. Revisaremos y actualizaremos la guía en consecuencia.