GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo comprobar si un sistema Linux es una máquina física o virtual

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.


Linux
  1. Cómo eliminar máquinas virtuales basadas en KVM en Redhat Linux

  2. Cómo verificar la versión del sistema operativo y Linux

  3. Cómo comprobar si un sistema Linux es de 32 o 64 bits

  4. Cómo verificar la versión del Kernel en Linux

  5. ¿Cómo verificar si el sistema Linux se está ejecutando en un sistema físico o una máquina virtual?

Cómo comprobar que un puerto está abierto en un sistema Linux remoto

Cómo verificar/reparar el sistema de archivos de Linux en el arranque

Cómo comprobar y reparar un sistema de archivos en RHEL Linux

Cómo usar el sistema operativo Tails Linux en la máquina virtual VirtualBox

Cómo verificar el historial de reinicio del sistema y el tiempo de inicio en Linux

Cómo verificar la carga de su servidor en el sistema Linux