GNU/Linux >> Tutoriales Linux >  >> Linux

7 formas de detectar la virtualización desde su VM [Xen, VirtualBox, KVM, OpenStack con KVM]

En Techglimpse, con frecuencia recibimos correos electrónicos de nuestros lectores que nos piden que escribamos un tutorial sobre 'Detección de virtualización' desde un VPS o una máquina virtual. Sin embargo, no pudimos responder a esos correos electrónicos de inmediato, ya que no teníamos una configuración de prueba que comprendiera hipervisores populares (al menos algunos) como Xen, VmWare, KVM, VirtualBox, HyperV, etc. Recientemente, tuvimos que tener pocos hipervisores funcionando, solo por el bien de nuestros lectores. Entonces, finalmente, este tutorial le dirá algunos comandos y excavación (es decir, lectura de registros) que pueden ayudarlo a identificar el tipo de hipervisor que ejecuta la máquina virtual actual.

Los siguientes comandos se ejecutaron en máquinas virtuales creadas sobre hipervisores Xen, KVM, VirtualBox y también en OpenStack-KVM Icehouse.

Método 1:Lectura del registro del sistema

Ciertos hipervisores filtran información sobre su tipo (incluido el nombre del hipervisor y el tipo de virtualización, como paravirtualización, virtualización completa o HVM) en los archivos de registro del sistema. Esta información se puede obtener de /var/log/message o agrupando la salida de 'dmesg ‘ comando.

Nota: Como se dijo, este método funcionará solo en ciertos hipervisores. Por ejemplo, VirtualBox y Xen no filtran ninguna información en los archivos de registro.

En Xen-VM

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

No puede encontrar ninguna información de los archivos de registro en Xen Hypervisor.

En KVM-VM

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

En VirtualBox-VM

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

No puede encontrar ninguna información de los archivos de registro en VirtualBox.

En la máquina virtual OpenStack KVM

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

En la máquina host KVM

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

Método 2:Usando el comando 'dmidecode'

DMI (interfaz de administración de escritorio):dmidecode , el comando nativo de Linux se puede usar para volcar información de hardware y BIOS en un formato legible por humanos.

Cuando ‘dmidecode ' se ejecuta :

En máquina virtual Xen

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

En la máquina virtual KVM

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

Nota: Puedes ver 'Bochs ' como un valor para el fabricante, el nombre del producto, etc... Bochs es un emulador y depurador compatible con X86-64 que ayuda a emular el procesador, la pantalla, el BIOS, la memoria y otro hardware de la PC. Significa que la máquina está emulando algún hardware, lo que sugiere que es una VM y, sobre todo, KVM.

En la máquina virtual de VirtualBox

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

En la máquina virtual OpenStack-KVM

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

Cuando ejecuta 'dmidecode ‘ en una máquina host, obtienes la información del BIOS y del hardware.

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

Método 3:Listar /dev/disk

Las máquinas virtuales deben tener emulación de hardware desde la máquina host. Por ejemplo, emulación de disco desde el host. Entonces, si solo enumera los archivos en ”/dev/disk/by-id ', entonces puede distinguir fácilmente qué emulador está utilizando el hipervisor.

En máquina virtual Xen

[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 emula todo el hardware conectado al host en una máquina virtual.

En la máquina virtual 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

En la máquina virtual de 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

Nota: VBOX en lugar de QEMU en una máquina virtual VirtualBox

En la máquina virtual OpenStack KVM

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

No pude encontrar ninguna información sobre OpenStack VM. ¿Probablemente, OpenStack lo oculta? ¡No estoy seguro!

En la máquina host 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

Método 4:Usar el paquete virt-what

No todos los sabores de Linux vienen con 'virt-what 'paquete instalado. Puedes instalarlo usando '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%]

En máquina virtual Xen

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

En la máquina virtual KVM

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

En la máquina virtual de VirtualBox

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

En la máquina virtual OpenStack KVM

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

En host KVM

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

Nota: No obtiene ningún resultado en una máquina host.

Método 5:Usar virtdetect o systemd-detect-virt

Virtdetect rpm se basa en 'Sys::Detect::Virtualization ' secuencia de comandos perl - Consulte este tutorial para obtener más información .

Método 6:Usando el comando 'lshw'

Instalar 'lshw ' paquete de la siguiente manera:

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

En máquina virtual Xen

[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

En la máquina virtual 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

En la máquina virtual de 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

En la máquina virtual 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

En host 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

Método 7:Uso de 'ethtool'

En algunos hipervisores, puede averiguar fácilmente si el dispositivo de red se emula mediante el comando '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

Bueno, estos son algunos comandos que le permiten detectar la virtualización en varios hipervisores. ¿Conoces otro método? Déjenos en la sección de comentarios a continuación.


Linux
  1. Administre su calendario desde la terminal de Linux con el comando konsolekalendar

  2. Virtualización en PC, explicada para principiantes con casos prácticos de uso

  3. Máquinas virtuales semanales, con scripts de compilación

  4. ¿Cómo pegar a terminal Linux en caja virtual con teclado mac?

  5. Uso de Samba para compartir una carpeta de un invitado de Linux con un host de Windows en VirtualBox

Primeros pasos con Vagrant y VirtualBox – Parte 1

Trabajar con Microsoft Exchange desde su escritorio Linux

10 formas de personalizar su escritorio Linux con la herramienta de ajustes de GNOME

Cómo aumentar el tamaño del disco de sus máquinas virtuales existentes en VirtualBox

Cómo ejecutar máquinas virtuales en su servidor Linux (Ubuntu/RHEL/CENTOS 7) – KVM Hypervisor

Usa tu Chromecast desde Linux y MacOS con mkchromecast