Als Linux-Administrator fragen Sie sich vielleicht manchmal, ob Sie an einer physischen oder einer virtuellen Maschine arbeiten. Meistens werden Sie remote auf Ihre Server zugreifen und diese verwalten. Möglicherweise haben Sie nicht immer physischen Zugriff auf Ihre Server und wissen möglicherweise nicht einmal, wo sich der Server befindet. Es ist jedoch möglich, mit einigen Linux-Dienstprogrammen zu überprüfen, ob Ihr Linux-System eine physische oder virtuelle Maschine ist. Diese Anleitung listet alle Möglichkeiten auf, um zu überprüfen, ob das Linux-System, an dem Sie arbeiten, ein physischer Server oder ein virtueller Server ist.
Überprüfen Sie, ob ein Linux-System eine physische oder virtuelle Maschine ist
Es gibt viele Möglichkeiten herauszufinden, ob ein System physisch oder virtuell ist. Folgende Methoden sind mir derzeit bekannt. Ich werde aktualisieren, wenn ich in den kommenden Tagen andere Wege finde.
Methode 1 - Verwenden des Dmidecode-Dienstprogramms
Der einfachste Weg, um herauszufinden, ob wir an einer virtuellen oder physischen Maschine arbeiten, ist die Verwendung von dmidecode Nützlichkeit. Dmidecode, DMI-Tabellendecoder, wird verwendet, um die Hardwarekomponenten Ihres Systems sowie andere nützliche Informationen wie Seriennummern und BIOS-Revisionen zu finden.
Dmidecode ist bei den meisten Linux-Distributionen vorinstalliert. Für den Fall, dass es noch nicht installiert ist, können Sie es mit dem Paketmanager Ihrer Distribution installieren. Angenommen, der folgende Befehl installiert dmidecode in DEB-basierten Systemen wie Ubuntu, Linux Mint.
$ sudo apt-get install dmidecode
Führen Sie nach der Installation von Dmidecode den folgenden Befehl aus, um herauszufinden, ob Ihr System eine physische oder virtuelle Maschine ist:
$ sudo dmidecode -s system-manufacturer
Wenn es sich um ein physisches System handelt, erhalten Sie eine Ausgabe wie die folgende.
Dell Inc.
Wenn es sich um ein mit Virtualbox erstelltes virtuelles System handelt, erhalten Sie die folgende Ausgabe:
innotek GmbH
Für diejenigen, die sich fragen,innotek ist ein in Deutschland ansässiges Softwareunternehmen, das eine PC-Virtualisierungssoftware namens VirtualBox entwickelt .
Wenn es sich um ein mit KVM/QEMU erstelltes virtuelles System handelt, lautet die Ausgabe:
QEMU
Wie Sie in der obigen Ausgabe sehen, zeigt dmidecode bei einem physischen System den Namen des Herstellers (z. B. Dell Inc.) an. Wenn es sich um ein virtuelles System handelt, wird die Virtualisierungssoftware/-technologie (z. B. VirtualBox oder QEMU) angezeigt.
Außerdem können Sie mit diesem Befehl prüfen, ob es sich um ein physisches oder virtuelles System handelt.
$ sudo dmidecode | grep Product
Beispielausgabe:
[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)
Ein weiterer Befehl, um herauszufinden, ob es sich um ein physisches oder virtuelles System handelt, ist:
$ sudo dmidecode -s system-product-name
Beispielausgabe:
[Physical system] Inspiron N5050 [Virtual system on VirtualBox] VirtualBox [Virtual system on KVM/QEMU] Standard PC (Q35 + ICH9, 2009)
Noch ein weiterer dmidecode-Befehl, um den Typ des entfernten Systems zu finden, ist:
$ sudo dmidecode | egrep -i 'manufacturer|product'
Beispielausgabe:
[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
Und ein weiterer dmidecode-Befehl soll das gleiche Ziel erreichen:
$ sudo dmidecode | egrep -i 'vendor'
Beispielausgabe:
[Physical system] Vendor: Dell Inc. [Virtual system on VirtualBox] Vendor: innotek GmbH [Virtual system on KVM/QEMU] Vendor: EFI Development Kit II / OVMF
Methode 2 – Verwenden des Facter-Dienstprogramms
Faktor ist ein Befehlszeilendienstprogramm zum Sammeln und Anzeigen von Systeminformationen. Im Gegensatz zu Dmidecode ist Facter nicht standardmäßig vorinstalliert. Abhängig von der von Ihnen verwendeten Linux-Distribution müssen Sie es möglicherweise wie unten gezeigt installieren.
Unter Arch Linux, Manjaro Linux:
$ sudo pacman -S facter
Bei Fedora:
$ sudo dnf install facter
In CentOS, RHEL:
$ sudo yum install epel-release
$ sudo yum installl facter
Unter openSUSE:
$ sudo zypper install facter
Führen Sie nach der Installation den folgenden Befehl aus, um zu überprüfen, ob es sich bei dem System um eine physische oder virtuelle Maschine handelt:
$ facter 2> /dev/null | grep virtual
Wenn dieser Befehl nicht funktioniert, versuchen Sie es mit sudo-Berechtigungen:
$ sudo facter 2> /dev/null | grep virtual
Beispielausgabe:
[Physical system] is_virtual => false virtual => physical [Virtual system on VirtualBox and KVM/QEMU] is_virtual => true virtual => kvm
Verwenden Sie alternativ den folgenden Befehl:
$ facter virtual
Oder,
$ sudo facter virtual
Wenn es sich um eine physische Maschine handelt, lautet die Ausgabe:
physical
Wenn es sich um eine virtuelle Maschine handelt, sehen Sie eine Ausgabe wie unten.
kvm
Methode 3 - Verwendung des lshw-Dienstprogramms
Die lshw Utility ist ein kleines Befehlszeilenprogramm, das die detaillierten Hardwareinformationen eines Unix-ähnlichen Systems anzeigt. Es zeigt alle Hardwaredetails an, einschließlich Speicherkonfiguration, Firmware-Version, Mainboard-Konfiguration, CPU-Version und -Geschwindigkeit, Cache-Konfiguration, Busgeschwindigkeit usw.
Bei einigen Linux-Distributionen ist lshw vorinstalliert. Wenn es noch nicht installiert ist, können Sie es wie unten gezeigt installieren.
In Arch Linux und Derivaten:
$ sudo pacman -S lshw
Bei Fedora:
$ sudo dnf install lshw
In RHEL und Derivaten wie CentOS, Scientific Linux:
$ sudo yum install epel-release
$ sudo yum install lshw
Unter Debian, Ubuntu, Linux Mint:
$ sudo apt-get install lshw
Unter SUSE/openSUSE:
$ sudo zypper in lshw
Führen Sie nach der Installation von lshw den folgenden Befehl aus, um herauszufinden, ob Ihr System entweder physisch oder virtuell ist:
$ sudo lshw -class system
Beispielausgabe:
[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
Empfohlene Lektüre:
- So finden Sie Hardwarespezifikationen unter Linux
- So finden Sie den maximal unterstützten RAM in Linux heraus
Methode 4 – Verwenden des Dienstprogramms dmesg
Den Typ des Systems finden wir mit dmesg Nützlichkeit. dmesg wird verwendet, um den Ringpuffer des Kernels zu untersuchen oder zu steuern.
Um zu überprüfen, ob Ihr Linux-System physisch oder virtuell ist, führen Sie einfach Folgendes aus:
$ sudo dmesg | grep "Hypervisor detected"
Wenn Ihr System physisch ist, sehen Sie keine Ausgabe.
Wenn Ihr System eine virtuelle Maschine ist, sehen Sie eine Ausgabe wie unten.
[ 0.000000] Hypervisor detected: KVM
Methode 5 – Verwendung des Befehls hostnamectl
Mit hostnamectl können wir herausfinden, ob unser System entweder virtuell oder physisch ist Befehl. Es erfordert systemd zu arbeiten.
$ hostnamectl status
Oder,
$ hostnamectl
Beispielausgabe:
[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
Methode 6 – Verwenden von systemd-detect-virt
Die systemd-detect-virt Tool erkennt die Virtualisierungstechnologie und kann die vollständige Maschinenvirtualisierung von der Hardware- oder Containervirtualisierung unterscheiden.
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das System physisch oder virtuell ist:
$ systemd-detect-virt
Beispielausgabe:
[Physical machine] none [Virtual machine on VirtualBox] oracle [Virtual machine on KVM/QEMU] KVM
Methode 7 – Virt-what-Skript verwenden
Das virt-was ist ein kleines Shell-Skript, das bei Red Hat entwickelt wurde, um festzustellen, ob wir in einer virtuellen oder physischen Maschine ausgeführt werden. virt-what ist für alle gängigen Linux-Distributionen wie RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR) paketiert.
In Arch Linux können Sie es von AUR aus mit beliebigen AUR-Helfern installieren, zum Beispiel Yay .
$ yay -S virt-what
In RHEL, Fedora, CentOS:
$ sudo yum install virt-what
Unter Debian, Ubuntu:
$ sudo apt-get install virt-what
Führen Sie nach der Installation den folgenden Befehl aus, um festzustellen, ob Ihr System entweder physisch oder virtuell ist:
$ sudo virt-what
Wenn nichts gedruckt wird und das Skript mit Code 0 beendet wird (kein Fehler), dann bedeutet dies, dass es sich entweder um ein physisches System oder um eine Art virtuelle Maschine handelt, von der wir nichts wissen oder die wir nicht erkennen können.
Wenn Ihr System virtuell ist, sehen Sie eine Ausgabe wie unten.
virtualbox kvm
Weitere Einzelheiten finden Sie auf der Homepage des Projekts.
- http://people.redhat.com/~rjones/virt-what/
Methode 8 - Verwenden von imvirt-Skript
Die imvirt ist noch ein weiteres kleines Perl Skript, mit dessen Hilfe Sie erkennen können, ob wir auf einer virtuellen Maschine ausgeführt werden.
In Arch Linux können Sie es mit Yay von AUR installieren Hilfsprogramm.
$ yay -S imvirt
Unter Debian, Ubuntu, Linux Mint:
$ sudo apt-get install imvirt
Führen Sie nach der Installation den folgenden Befehl aus, um festzustellen, ob Ihr System entweder physisch oder virtuell ist:
$ sudo imvirt
Wenn Ihr System physisch ist, wäre die Ausgabe:
Physical
wenn das System virtuell ist, sehen Sie:
KVM
Weitere Einzelheiten finden Sie auf der Homepage des Projekts.
- http://micky.ibh.net/~liske/imvirt.html
Verwandte Lektüre:
- So überprüfen Sie, ob ein Linux-System 32-Bit oder 64-Bit ist
- So finden Sie heraus, ob eine CPU die Virtualisierungstechnologie (VT) unterstützt
Und das ist alles für jetzt. Wenn Sie andere Möglichkeiten kennen, um herauszufinden, ob die Linux-Box physisch oder virtuell ist, teilen Sie uns dies im Kommentarbereich mit. Wir werden den Leitfaden entsprechend prüfen und aktualisieren.