VMware Linux Server: come si può sapere se si è un hardware virtuale o reale?


Risposte:


29

Utilizzare strumenti Linux standard per ispezionare l'hardware sul sistema.

cat /proc/scsi/scsi

o

ethtool -i eth0

o

dmidecode | grep -i vmware

Se l'output di questi comandi mostra l'hardware con il nome del produttore "VMWare", ci si trova su una VM VMWare. Qui vengono forniti più comandi perché le configurazioni e gli strumenti di sistema differiscono.


12
Puoi spiegare cosa fanno questi comandi, invece di fornire solo comandi vaghi?
Stefan Lasiewski,

Grazie. cat /proc/scsi/scsiè bello perché sembra essere disponibile ovunque e non richiede l'installazione di nuovo software o l'esecuzione con diritti privilegiati.
tiktak,

@tiktak Non vedo /proc/scsi/scsisulla mia scatola di Debian 7 ...
Kyle Strand l'

1
Si noti che questo non è affidabile al 100%. Ad esempio, le caselle AWS non sembrano essere macchine virtuali. Vedere man virt-whatlo script euristico creato per questo scopo di rilevamento (per sistemi RedHat / Fedora) e per le avvertenze coinvolte.
Carattere jolly

13
facter virtual 
xenu

indica che si tratta di una macchina virtuale. Se ha restituito "fisico", è vero il contrario (non una macchina virtuale), ad esempio:

facter virtual
Physical

Tuttavia, questo è un pacchetto speciale non standard .... ma mi piace.
mdpc,

1
@mdpc Dovrebbe essere presente su qualsiasi sistema che usa le marionette.
Michael Hampton

11

Esiste un'utile app che potrebbe aiutarti a chiamare virt-what . Non l'ho usato con VMWare, ma ha funzionato bene con Qemu.


1
Sfortunatamente l'RPM binario ha due dipendenze dmidecode e util-linux-ng quando provato su commerciale SuSE.
mdpc,

10

Potresti essere in grado di ottenere e idea guardando in giro /sys. Ad esempio /sys/class/dmi/id/sys_vendorha un valore di VMware, Inc..

Se è installato è possibile utilizzare lshw . Il comando lshw -class systemrestituisce questo sul mio 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

Sulle istanze SuSE che ho accesso a lshw non esiste. Inoltre, il / sys / class / dmi / ... non esiste.
mdpc,

6

Alcuni ambienti virtuali nominano alcuni dei loro dispositivi virtuali con nomi un po 'rivelatori, ad esempio VirtualBox che presenta una scheda grafica che si chiama "VirtualBox Display Adapter". Ma la ricerca di questi ti lega a una particolare VM e forse a una gamma ristretta di versioni.

Potrebbe essere possibile per il tuo codice vedere quale tipo di virtualizzazione potrebbe impostare. Se il problema persiste, potresti trovarti in una macchina virtuale. Ma potresti essere facilmente su una scatola che non ha hardware compatibile con VM.


La tua prima risposta è stata quella giusta. Controlla i nomi dei driver di dispositivo.
Izzy,

4

Per Linux scrivi dmesg |grep DMI:

USCITA OSPITE VIRTUALE

[root @ myhost ~] # dmesg | grep DMI
DMI 2.3 presente.
DMI: macchina virtuale Microsoft Corporation / macchina virtuale, BIOS 090006 23/05/2012

[root @ myhost ~] # dmesg | grep -i virtual
DMI: macchina virtuale Microsoft Corporation / macchina virtuale, BIOS 090006 23/05/2012
Avvio del kernel paravirtualizzato su hardware nudo
input: emulazione del pulsante del mouse Macintosh come / devices / virtuale / input / input1
scsi 0: 0: 0: 0: QQ del disco virtuale Msft ad accesso diretto 1.0: 0 ANSI: 4
input: Mouse conforme a Microsoft Vmbus HID come / devices / virtuale / input / input4

PER ESEMPIO OSPITE FISICO

[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 grosso problema con la tua soluzione è che dmesg legge il buffer del kernel ed è di dimensioni limitate. Se ci sono molti messaggi o un po 'di tempo dal riavvio del sistema, queste informazioni non saranno disponibili.
mdpc,

4

C'è un sacco di codice là fuori per rilevare se ci si trova in una VM o no. Inizia con la pillola rossa e cerca da lì. Anche questo articolo su Offensive Computing è una buona lettura.

Questo se nessuno di quelli facili sopra funziona :)


Il primo collegamento è interrotto. Il secondo è rotto o lento.
Carattere jolly

Hai ragione. Le sabbie del tempo li hanno divorati ... Vedrò se riesco a trovare collegamenti alternativi.
Bill Weiss,

È un peccato; "pillola rossa" sembrava interessante. :)
Wildcard il

1
Aggiornato con i collegamenti di archive.org.
Bill Weiss,

3

Puoi anche cercare la prima parte del tuo indirizzo mac qui e vedere se è elencato come assegnato a una delle società di virtualizzazione.


Idea interessante .... Penso che funzioni (fintanto che un dispositivo di rete è incluso nella VM ;-))
mdpc

2
Non sarà affidabile. In molti casi il mac può essere impostato su un valore arbitrario. Questo per abilitare la clonazione del mac della macchina originale durante la conversione in VM. Alcuni software legano la propria licenza al mac e spesso è impossibile ottenere una nuova licenza (il fornitore è fallito o i costi sono proibitivi).
Tonny,

3

I dispositivi virtuali saranno rivelati anche dalle informazioni sul dispositivo lspci e / o su disco in / proc:

lspci | grep -i vmware

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

2

In Linux, le informazioni di sistema sono rivelate in / sys / devices / virtual / dmi / id /. Vedi la mia risposta qui per un utile script per mostrarti tutte le informazioni disponibili.

radice non richiesta.


1

Non mi è piaciuta nessuna di queste soluzioni, in quanto di solito è installato un driver VMware CDROM o un driver di memoria, quindi dmesg lo conferma o lo nega rapidamente per me.

[server @ utente ~] $ dmesg | grep VMware
hda: unità CDROM IDE virtuale VMware, unità CD / DVD-ROM ATAPI
Venditore: Modello VMware: Disco virtuale Rev: 1.0
Venditore: Modello VMware: Disco virtuale Rev: 1.0
Venditore: Modello VMware: Disco virtuale Rev: 1.0
Venditore: Modello VMware: Disco virtuale Rev: 1.0
Venditore: Modello VMware: Disco virtuale Rev: 1.0
Venditore: Modello VMware: Disco virtuale Rev: 1.0
Venditore: Modello VMware: Disco virtuale Rev: 1.0
Driver di controllo memoria VMware inizializzato

3
Funzionerà all'avvio, ma in seguito non è possibile garantire che dmesg non sia stato cancellato o traboccato.
Mattdm,

Questo è ciò che faccio di solito anche io, che è il grepping dmesg
tpaul del

1

Questo ha funzionato meglio per me in quanto mi fornisce informazioni specifiche sul produttore e sul nome del prodotto.

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

Uscita sul server Dell:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Output su Virtualbox VM:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Uscita su KVM / QEMU:

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

Questo è ottimo per gli script che possono analizzarli per una migliore identificazione dei server ... ma se usi Chef nella tua infrastruttura, puoi controllare l'attributo del nodo Virtualization -> systemnel server chef.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.