VMware Linux Server: ¿cómo puede saber si es una máquina virtual o un hardware real?


Respuestas:


29

Utilice herramientas estándar de Linux para inspeccionar el hardware del sistema.

cat /proc/scsi/scsi

o

ethtool -i eth0

o

dmidecode | grep -i vmware

Si la salida de estos comandos muestra hardware con un nombre de fabricante de "VMWare", está en una VM VMWare. Aquí se proporcionan varios comandos porque las configuraciones y herramientas del sistema son diferentes.


12
¿Puedes explicar lo que hacen estos comandos, en lugar de solo proporcionar comandos vagos?
Stefan Lasiewski

Gracias. cat /proc/scsi/scsies bueno porque parece estar disponible en todas partes y no requiere instalar un nuevo software o ejecutarse con derechos privilegiados.
tiktak

@tiktak No veo /proc/scsi/scsien mi caja de Debian 7 ...
Kyle Strand

1
Tenga en cuenta que esto no es 100% confiable. Por ejemplo, los cuadros de AWS no parecerán máquinas virtuales. Consulte man virt-whatel script heurístico creado para este propósito de detección (para los sistemas RedHat / Fedora) y las advertencias involucradas.
Comodín el

13
facter virtual 
xenu

indica que es una VM. Si devuelve "físico", entonces lo contrario es cierto (no una VM), por ejemplo:

facter virtual
Physical

Sin embargo, este es un paquete especial no estándar ... pero me gusta.
mdpc

1
@mdpc Debería estar presente en cualquier sistema que use puppet.
Michael Hampton

11

Hay una aplicación práctica que podría ayudar llamada virt-what . No lo he usado con VMWare, pero funcionó muy bien con Qemu.


1
Desafortunadamente, el RPM binario tiene dos dependencias, dmidecode y util-linux-ng cuando se prueba en un comercial de SuSE.
mdpc

10

Es posible que pueda obtener una idea mirando a su alrededor /sys. Por ejemplo /sys/class/dmi/id/sys_vendortiene un valor de VMware, Inc..

Si está instalado, puede usar lshw . El comando lshw -class systemdevuelve esto en mi sistema:

server1
    description: Computer
    product: VMware Virtual Platform
    vendor: VMware, Inc.
    version: None
    serial: VMware-...
    width: 64 bits
    capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32

En las instancias de SuSE que tengo acceso a lshw no existe. Además, / sys / class / dmi / ... no existe.
mdpc

6

Algunos entornos virtuales nombran algunos de sus dispositivos virtuales con nombres que son un poco reveladores, por ejemplo, VirtualBox presenta una tarjeta gráfica que se llama a sí misma "Adaptador de pantalla VirtualBox". Pero buscar esos vínculos lo vincula a una VM en particular y posiblemente a una gama limitada de versiones.

Es posible que su código vea qué tipo de virtualización podría configurar. Si eso falla por completo, es posible que esté en una máquina virtual. Pero usted podría estar fácilmente en una caja que no tiene hardware compatible con VM.


Tu primera respuesta fue la correcta. Verifique los nombres de los controladores del dispositivo.
Izzy

4

Para Linux, escriba dmesg |grep DMI:

SALIDA VIRTUAL

[root @ myhost ~] # dmesg | grep DMI
DMI 2.3 presente.
DMI: Máquina virtual de Microsoft Corporation / Máquina virtual, BIOS 090006 23/05/2012

[root @ myhost ~] # dmesg | grep -i virtual
DMI: Máquina virtual de Microsoft Corporation / Máquina virtual, BIOS 090006 23/05/2012
Arranque del kernel paravirtualizado en hardware desnudo
input: emulación del botón del mouse de Macintosh como / devices / virtual / input / input1
scsi 0: 0: 0: 0: Acceso directo Msft Virtual Disk 1.0 PQ: 0 ANSI: 4
entrada: mouse compatible con HID de Microsoft Vmbus como / devices / virtual / input / input4

POR EJEMPLO DE ANFITRIÓN FÍSICA

[root @ backdev1 ~] # dmesg | grep DMI
DMI 2.5 presente.
DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30/06/2011

1
Un problema importante con su solución es que dmesg lee el búfer del núcleo y tiene un tamaño limitado. Si hay muchos mensajes o un poco de tiempo desde que se reinició el sistema, esta información no estará disponible.
mdpc

4

Hay mucho código para detectar si estás en una máquina virtual o no. Comience con la píldora roja y busque desde allí. Este artículo en Offensive Computing también es una buena lectura.

Eso es si ninguno de los fáciles anteriores funciona :)


El primer enlace está roto. El segundo está roto o es lento.
Comodín el

Tienes razón. Las arenas del tiempo se las han comido ... Veré si puedo encontrar enlaces alternativos.
Bill Weiss el

Es una pena; "píldora roja" sonaba interesante. :)
Comodín

1
Actualizado con enlaces archive.org.
Bill Weiss el

3

También puede buscar la primera parte de su dirección de Mac aquí y ver si aparece como asignada a alguna de las empresas de virtualización.


Idea interesante ... Creo que funciona (siempre y cuando se incluya un dispositivo de red en la VM ;-))
mdpc

2
No será confiable En muchos casos, el mac se puede establecer en un valor arbitrario. Esto permite clonar el mac de la máquina original al convertirlo a VM. Algunos programas vinculan su licencia a la Mac y, a menudo, es imposible obtener una nueva licencia (el proveedor se declaró en quiebra o los costos son prohibitivos).
Tonny

3

Los dispositivos virtuales también serán revelados por lspci y / o la información del dispositivo de disco en / proc:

lspci | grep -i vmware

grep -i vmware /proc/scsi/scsi /proc/ide/*/model

2

En Linux, la información del sistema se revela en / sys / devices / virtual / dmi / id /. Vea mi respuesta aquí para obtener un script útil para mostrarle toda la información disponible.

raíz no requerida.


1

No me gustó ninguna de estas soluciones, ya que generalmente hay un controlador VMware CDROM o un controlador de memoria instalado, por lo que dmesg me lo confirma o me lo niega rápidamente.

[servidor @ usuario ~] $ dmesg | grep VMware
hda: Unidad de CDROM virtual IDE de VMware, unidad de CD / DVD-ROM ATAPI
Proveedor: VMware Modelo: Disco virtual Rev: 1.0
Proveedor: VMware Modelo: Disco virtual Rev: 1.0
Proveedor: VMware Modelo: Disco virtual Rev: 1.0
Proveedor: VMware Modelo: Disco virtual Rev: 1.0
Proveedor: VMware Modelo: Disco virtual Rev: 1.0
Proveedor: VMware Modelo: Disco virtual Rev: 1.0
Proveedor: VMware Modelo: Disco virtual Rev: 1.0
Controlador de control de memoria VMware inicializado

3
Esto funcionará en el inicio, pero luego no puede garantizar que dmesg no se haya borrado o desbordado.
mattdm

Esto es lo que suelo hacer también, eso es gremear dmesg
tpaul

1

Esto funcionó mejor para mí, ya que me da información específica sobre el fabricante y el nombre del producto.

dmidecode -t system|grep 'Manufacturer\|Product'

Salida en el servidor Dell:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Salida en Virtualbox VM:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Salida en KVM / QEMU:

Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)

Esto es ideal para los scripts que pueden analizarlos para una mejor identificación de los servidores ... pero si usa Chef en su infraestructura, puede verificar el atributo de nodo Virtualization -> systemen el servidor de chef.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.