GNU/Linux >> LINUX-Kenntnisse >  >> Linux

7 Möglichkeiten, Virtualisierung von Ihrer VM zu erkennen [Xen, VirtualBox, KVM, OpenStack mit KVM]

Bei Techglimpse erhalten wir häufig E-Mails von unseren Lesern, die uns bitten, ein Tutorial zur „Virtualisierungserkennung“ von einem VPS oder einer virtuellen Maschine zu schreiben. Wir konnten diese E-Mails jedoch nicht sofort beantworten, da wir kein Test-Setup mit gängigen Hypervisoren (zumindest wenigen) wie Xen, VmWare, KVM, VirtualBox, HyperV usw. hatten wenige Hypervisoren laufen – nur für unsere Leser. Abschließend erklärt Ihnen dieses Tutorial einige Befehle und Informationen (ich meine, das Lesen von Protokollen), die Ihnen helfen können, den Typ des Hypervisors zu identifizieren, der die aktuelle virtuelle Maschine ausführt.

Die folgenden Befehle wurden auf virtuellen Maschinen ausgeführt, die auf Xen-, KVM-, VirtualBox-Hypervisoren und auch auf einem OpenStack-KVM Icehouse erstellt wurden.

Methode 1:Lesen des Systemprotokolls

Bestimmte Hypervisoren geben Informationen über ihren Typ (einschließlich des Namens des Hypervisors und der Art der Virtualisierung – wie Paravirtualisierung, vollständige Virtualisierung oder HVM) in Systemprotokolldateien weiter. Diese Informationen können unter /var/log/message abgerufen werden oder indem Sie die Ausgabe von ‘dmesg gruppieren ‘ Befehl.

Hinweis: Wie gesagt, diese Methode funktioniert nur auf bestimmten Hypervisoren. Beispielsweise lecken VirtualBox und Xen keine Informationen in den Protokolldateien.

Auf Xen-VM

[root@xen-vm ~]# dmesg |grep virtual

Sie können keine Informationen aus Protokolldateien auf Xen Hypervisor finden.

Auf KVM-VM

[centos@KVM-vm ~]$ dmesg |grep virtual
 [ 0.000000] Booting paravirtualized kernel on KVM
 [ 1.930785] systemd[1]: Detected virtualization 'kvm'.

Auf VirtualBox-VM

[root@VB-vm ~]# dmesg |grep virtual

Sie können keine Informationen aus Protokolldateien auf VirtualBox finden.

Auf OpenStack KVM-VM

[root@OS-vm ~]$ dmesg |grep virtual
 Booting paravirtualized kernel on KVM
 input: Macintosh mouse button emulation as /devices/virtual/input/input1

Auf dem KVM-Host-Computer

[root@kvm-host ~]$ dmesg |grep virtual
 Booting paravirtualized kernel on bare hardware

Methode 2:Verwenden des Befehls „dmidecode“

DMI (Desktop Management Interface) – dmidecode , können native Linux-Befehle verwendet werden, um Hardware- und BIOS-Informationen in einem für Menschen lesbaren Format auszugeben.

Wenn „dmidecode ‘ wird ausgeführt:

Auf Xen-VM

[root@xen-vm ~]# dmidecode | egrep -i 'manufacturer|product'
 Manufacturer: Xen
 Product Name: HVM domU
 Manufacturer: Xen
 Manufacturer: Intel

Auf KVM-VM

[centos@kvm-vm ~]$ sudo dmidecode | egrep -i 'manufacturer|product'
 Manufacturer: Bochs
 Product Name: Bochs
 Manufacturer: Bochs
 Manufacturer: Bochs

Hinweis: Sie sehen „Bochs ‘ als Wert für Hersteller, Produktname usw. … Bochs ist ein X86-64-kompatibler Emulator und Debugger, der bei der Emulation von Prozessor, Display, BIOS, Speicher und anderer PC-Hardware hilft. Das bedeutet, dass die Maschine Hardware emuliert, was darauf hindeutet, dass es sich um eine VM und meistens um KVM handelt.

Auf VirtualBox-VM

[root@VB-vm ~]# dmidecode | egrep -i 'manufacturer|product'
 Manufacturer: innotek GmbH
 Product Name: VirtualBox
 Manufacturer: Oracle Corporation
 Product Name: VirtualBox
 Manufacturer: Oracle Corporation

Auf OpenStack-KVM-VM

[centos@OS-vm ~]$ sudo dmidecode | egrep -i 'manufacturer|product'
 Manufacturer: Red Hat
 Product Name: KVM

Wenn Sie ‘dmidecode ausführen ‘ Auf einem Host-Rechner erhalten Sie die Hardware- und BIOS-Informationen.

[root@kvm-host ~]# dmidecode | egrep -i 'manufacturer|product'
 Manufacturer: Supermicro
 Product Name: X8SIL
 Manufacturer: Supermicro
 Product Name: X8SIL
 Manufacturer: Supermicro
 Manufacturer: Intel
 Manufacturer: Kingston
 Manufacturer: Kingston
 Manufacturer: Kingston
 Manufacturer: Kingston
 Manufacturer: To Be Filled By O.E.M.

Methode 3:Auflisten von /dev/disk

Virtuelle Maschinen sollten eine Hardwareemulation von der Hostmaschine haben. Zum Beispiel Disk-Emulation vom Host. Wenn Sie also die Dateien einfach unter „/dev/disk/by-id auflisten ‘, dann können Sie leicht erkennen, welcher Emulator vom Hypervisor verwendet wird.

Auf Xen-VM

[root@xen-vm~]# ls -l /dev/disk/by-id
 total 0
 lrwxrwxrwx 1 root root 9 Sep 29 15:14 ata-QEMU_DVD-ROM_QM00004 -> ../../hdd
 lrwxrwxrwx 1 root root 9 Sep 29 15:14 ata-QEMU_HARDDISK_QM00001 -> ../../hda
 lrwxrwxrwx 1 root root 10 Sep 29 15:14 ata-QEMU_HARDDISK_QM00001-part1 -> ../../hda1
 lrwxrwxrwx 1 root root 10 Sep 29 15:14 ata-QEMU_HARDDISK_QM00001-part2 -> ../../hda2

QEMU emuliert die gesamte an den Host angeschlossene Hardware auf einer VM.

Auf KVM-VM

[centos@kvm-vm ~]$ ls -l /dev/disk/by-id
 lrwxrwxrwx. 1 root root 9 Sep 30 10:40 ata-QEMU_HARDDISK_QM00001 -> ../../sda
 lrwxrwxrwx. 1 root root 10 Sep 30 10:35 ata-QEMU_HARDDISK_QM00001-part1 -> ../../sda1

Auf VirtualBox-VM

[root@VB-vm ~]# ls -l /dev/disk/by-id
 total 0
 lrwxrwxrwx 1 root root 9 Oct 5 21:10 ata-VBOX_CD-ROM_VB2-01700376 -> ../../hdc
 lrwxrwxrwx 1 root root 9 Oct 5 21:10 ata-VBOX_HARDDISK_VBc7f3f571-49b6d797 -> ../../hda
 lrwxrwxrwx 1 root root 10 Oct 5 21:10 ata-VBOX_HARDDISK_VBc7f3f571-49b6d797-part1 -> ../../hda1
 lrwxrwxrwx 1 root root 10 Oct 5 21:10 ata-VBOX_HARDDISK_VBc7f3f571-49b6d797-part2 -> ../../hda2
 lrwxrwxrwx 1 root root 10 Oct 5 21:10 ata-VBOX_HARDDISK_VBc7f3f571-49b6d797-part3 -> ../../hda3

Hinweis: VBOX statt QEMU auf einer VirtualBox-VM

Auf OpenStack KVM-VM

[centos@OS-vm ~]$ ls -l /dev/disk/by-id
 ls: cannot access /dev/disk/by-id: No such file or directory

Ich konnte keine Informationen zu OpenStack VM finden. Wahrscheinlich versteckt OpenStack es? Nicht sicher!

Auf dem KVM-Host-Computer

[root@kvm-host ~]# ls -l /dev/disk/by-id/
 total 0
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 dm-name-centos-home -> ../../dm-2
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 dm-name-centos-root -> ../../dm-1
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 dm-name-centos-swap -> ../../dm-0
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 dm-uuid-LVM-fQq4kAJfUvtqpELNejjkiUTcGNhMJAIGbhQF7TR1rpaLi9Z8e1OF19f0K4DKhtxg -> ../../dm-1
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 dm-uuid-LVM-fQq4kAJfUvtqpELNejjkiUTcGNhMJAIGcstbiCdWXv3SCKfHb8lSPbApR525PK2W -> ../../dm-0
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 dm-uuid-LVM-fQq4kAJfUvtqpELNejjkiUTcGNhMJAIGrt7RtF7L1qlwo2fjIIQh9FasnQoV3q9y -> ../../dm-2
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 lvm-pv-uuid-rZHlC1-OyIn-lpf8-NU1e-uhLB-s3At-GyR6zx -> ../../sda2
 lrwxrwxrwx 1 root root 9 Sep 28 08:45 scsi-SAdaptec_ft_A8E727A8 -> ../../sda
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 scsi-SAdaptec_ft_A8E727A8-part1 -> ../../sda1
 lrwxrwxrwx 1 root root 10 Sep 28 08:45 scsi-SAdaptec_ft_A8E727A8-part2 -> ../../sda2

Methode 4:Virt-what-Paket verwenden

Nicht alle Linux-Varianten enthalten „virt-what ‘Paket installiert. Sie können es mit 'yum installieren ‘.

[root@vm ~]# rpm -ivh virt-what-1.11-2.el5.x86_64.rpm
 warning: virt-what-1.11-2.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
 Preparing... ########################################### [100%]
 1:virt-what ########################################### [100%]

Auf Xen-VM

[root@xen-vm ~]# virt-what
 xen
 xen-hvm

Auf KVM-VM

[centos@kvm-vm ~]$ sudo virt-what
 kvm

Auf VirtualBox-VM

[root@VB-vm ~]# virt-what
 virtualbox

Auf OpenStack KVM-VM

[root@OS-vm ~]# virt-what
 kvm

Auf KVM-Host

[root@kvm-host ~]# virt-what

Hinweis: Sie erhalten keine Ausgabe auf einem Hostcomputer.

Methode 5:Verwenden von virtdetect oder systemd-detect-virt

Virtdetect rpm basiert auf „Sys::Detect::Virtualization ‘ Perl-Skript – Weitere Informationen finden Sie in diesem Tutorial .

Methode 6:Verwendung des Befehls „lshw“

Installieren Sie „lshw ‘Paket wie folgt:

[root@vm ]# yum install lshw
 Installed:
 lshw.x86_64 0:B.02.17-3.el6
 Complete!

Auf Xen-VM

[root@xen-vm ~]# lshw -class system
 description: Computer
 product: HVM domU
 vendor: Xen
 version: 4.1.5
 width: 32 bits
 capabilities: smbios-2.4 dmi-2.4 smp-1.4 smp

Auf KVM-VM

[centos@kvm-vm~]$ sudo lshw -class system
 description: Computer
 product: Bochs
 vendor: Bochs
 width: 64 bits
 capabilities: smbios-2.4 dmi-2.4 vsyscall32

Auf VirtualBox-VM

[root@VB-vm ~]# lshw -class system
 description: Computer
 product: VirtualBox
 vendor: innotek GmbH
 version: 1.2
 serial: 0
 width: 32 bits
 capabilities: smbios-2.5 dmi-2.5
 description: System peripheral
 product: VirtualBox Guest Service

Auf OpenStack KVM-VM

[root@OS-vm ]# lshw -class system
 description: Computer
 product: KVM
 vendor: Red Hat
 version: RHEL 6.6.0 PC
 width: 64 bits
 capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32

Auf KVM-Host

[root@kvm-host ~]# lshw -class system
 description: Sealed-case PC
 product: X8SIL (To Be Filled By O.E.M.)
 vendor: Supermicro
 version: 0123456789
 width: 64 bits
 capabilities: smbios-2.6 dmi-2.6 vsyscall32

Methode 7:Verwenden von „ethtool“

Auf einigen Hypervisoren können Sie mit dem Befehl „ethtool“ leicht herausfinden, ob ein Netzwerkgerät emuliert wird.

[centos@kvm-vm ]$ ethtool -i eth0
driver: virtio_net
version: 1.0.0
firmware-version:
bus-info: 0000:00:02.0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

Nun, dies sind einige Befehle, mit denen Sie Virtualisierung auf verschiedenen Hypervisoren erkennen können. Kennen Sie eine andere Methode? Lassen Sie uns im Kommentarbereich unten.


Linux
  1. Verwalten Sie Ihren Kalender über das Linux-Terminal mit dem Befehl konsolekalendar

  2. Virtualisierung auf dem PC, erklärt für Einsteiger mit praktischen Anwendungsfällen

  3. Wöchentliche virtuelle Maschinen mit Build-Skripts

  4. Wie füge ich mit der Mac-Tastatur in das Terminal-Linux in der virtuellen Box ein?

  5. Verwenden von Samba zum Freigeben eines Ordners von einem Linux-Gast mit einem Windows-Host in VirtualBox

Erste Schritte mit Vagrant und VirtualBox – Teil 1

Arbeiten mit Microsoft Exchange von Ihrem Linux-Desktop aus

10 Möglichkeiten, Ihren Linux-Desktop mit dem GNOME Tweaks Tool anzupassen

So erhöhen Sie die Festplattengröße Ihrer vorhandenen virtuellen Maschinen in VirtualBox

So führen Sie virtuelle Maschinen auf Ihrem Linux-Server aus (Ubuntu/RHEL/CENTOS 7) – KVM Hypervisor

Verwenden Sie Ihren Chromecast von Linux und MacOS mit mkchromecast