GNU/Linux >> Znalost Linux >  >> Linux

7 způsobů, jak zjistit virtualizaci z vašeho VM [Xen, VirtualBox, KVM, OpenStack s KVM]

Na Techglimpse často dostáváme e-maily od našich čtenářů, kteří nás žádají, abychom napsali výukový program na téma „Detekce virtualizace“ z VPS nebo virtuálního počítače. Na tyto e-maily jsme však nebyli schopni okamžitě odpovědět, protože jsme neměli testovací nastavení obsahující oblíbené hypervizory (alespoň několik), jako jsou Xen, VmWare, KVM, VirtualBox, HyperV atd.…Nedávno jsme museli mít běží málo hypervizorů – jen pro dobro našich čtenářů. Takže nakonec vám tento tutoriál řekne několik příkazů a prohledávání (mám na mysli čtení protokolů), které vám mohou pomoci identifikovat typ hypervizoru, který spouští aktuální virtuální počítač.

Níže uvedené příkazy byly provedeny na virtuálních počítačích vytvořených nad hypervizory Xen, KVM, VirtualBox a také na OpenStack-KVM Icehouse.

Metoda 1:Čtení systémového protokolu

Některé hypervizory unikají informace o svém typu (včetně názvu hypervizoru a typu virtualizace – jako je paravirtualizace, plná virtualizace nebo HVM) v souborech systémových protokolů. Tyto informace lze získat z /var/log/message nebo grepováním výstupu ‘dmesg ‘ příkaz.

Poznámka: Jak již bylo řečeno, tato metoda bude fungovat pouze na určitých hypervizorech. Například VirtualBox a Xen neunikají žádné informace v souborech protokolu.

Na Xen-VM

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

V souborech protokolu Xen Hypervisor nemůžete najít žádné informace.

Na KVM-VM

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

Na VirtualBox-VM

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

Ze souborů protokolu na VirtualBoxu nemůžete najít žádné informace.

Na virtuálním počítači OpenStack KVM

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

Na hostitelském stroji KVM

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

Metoda 2:Použití příkazu ‚dmidecode‘

DMI (Desktop Management Interface) – dmidecode , nativní příkaz Linuxu lze použít k výpisu informací o hardwaru a systému BIOS ve formátu čitelném pro člověka.

Když „dmidecode ‘ je spuštěno :

Na Xen VM

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

Na virtuálním počítači KVM

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

Poznámka: Můžete vidět ‘Bochs ‘ jako hodnota pro výrobce, název produktu atd...Bochs je emulátor a debugger kompatibilní s X86-64, který pomáhá emulaci procesoru, displeje, BIOSu, paměti a dalšího hardwaru počítače. To znamená, že počítač emuluje nějaký hardware, což naznačuje, že je to VM a většinou KVM.

Na virtuálním počítači VirtualBox

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

Na virtuálním počítači OpenStack-KVM

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

Když spustíte ‘dmidecode ‘ na hostitelském počítači získáte informace o hardwaru a systému BIOS.

[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.

Metoda 3:Výpis /dev/disk

Virtuální počítače by měly mít emulaci hardwaru z hostitelského počítače. Například emulace disku z hostitele. Pokud tedy pouze vypíšete soubory pod ”/dev/disk/by-id ‘, pak můžete snadno zjistit, jaký emulátor Hypervisor používá.

Na 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 emuluje celý hardware připojený k hostiteli na virtuální počítač.

Na virtuálním počítači KVM

[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

Na virtuálním počítači VirtualBox

[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

Poznámka: VBOX místo QEMU na virtuálním počítači VirtualBox

Na virtuálním počítači OpenStack KVM

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

Nemohl jsem najít žádné informace o OpenStack VM. Pravděpodobně to OpenStack skrývá? Nejsem si jistý!

Na hostitelském počítači KVM

[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

Metoda 4:Použití balíčku virt-what

Ne všechny varianty Linuxu jsou dodávány s „virt-what ‘ balíček nainstalován. Můžete jej nainstalovat pomocí „yum ‘.

[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%]

Na Xen VM

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

Na virtuálním počítači KVM

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

Na virtuálním počítači VirtualBox

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

Na virtuálním počítači OpenStack KVM

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

Na hostiteli KVM

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

Poznámka: Na hostitelském počítači nezískáte žádný výstup.

Metoda 5:Použití virtdetect nebo systemd-detect-virt

Virtdetect rpm je založeno na „Sys::Detect::Virtualization ‘ perl script – Další informace naleznete v tomto návodu .

Metoda 6:Použití příkazu „lshw“

Nainstalujte „lshw ‘ balíček, jak je uvedeno níže:

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

Na 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

Na virtuálním počítači KVM

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

Na virtuálním počítači VirtualBox

[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

Na virtuálním počítači OpenStack KVM

[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

Na hostiteli KVM

[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

Metoda 7:Použití nástroje "ethtool"

U několika hypervizorů můžete snadno zjistit, zda je síťové zařízení emulováno pomocí příkazu „ethtool“.

[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

Toto je několik příkazů, které vám umožní detekovat virtualizaci na různých hypervizorech. Znáte jinou metodu? Pojďme v sekci komentářů níže.


Linux
  1. Virtualizace na PC, vysvětlení pro začátečníky s praktickými příklady použití

  2. Týdenní virtuální stroje s sestaveními skriptů

  3. Jak vložit do terminálu linux ve virtuální krabici s klávesnicí Mac?

  1. Spravujte svůj kalendář z terminálu Linux pomocí příkazu konsolekalendar

  2. Vyzkoušejte Linux na svém Macu s open source virtualizací

  3. Použití Samby ke sdílení složky od hosta Linuxu s hostitelem Windows ve VirtualBoxu

  1. Jak vytvořit snímek virtuálního stroje KVM pomocí příkazu Virsh

  2. Jak spravovat virtuální stroje Oracle VirtualBox z příkazového řádku

  3. Jak změnit velikost instance OpenStack (virtuální počítač) z příkazového řádku