GNU/Linux >> Belajar Linux >  >> Linux

7 Cara Mendeteksi Virtualisasi dari VM Anda [Xen,VirtualBox,KVM,OpenStack dengan KVM]

Di Techglimpse, kami sering menerima email dari pembaca yang meminta kami untuk menulis tutorial tentang 'Deteksi Virtualisasi' dari VPS atau mesin Virtual. Namun, kami tidak dapat segera menanggapi email tersebut, karena kami tidak memiliki pengaturan pengujian yang terdiri dari hypervisor populer (setidaknya beberapa) seperti Xen, VmWare, KVM, VirtualBox, HyperV dll…Baru-baru ini, kami harus memiliki beberapa hypervisor berjalan – hanya demi pembaca kami. Akhirnya, tutorial ini akan memberi tahu Anda beberapa perintah dan penggalian (maksud saya, membaca log) yang dapat membantu Anda mengidentifikasi jenis Hypervisor yang menjalankan mesin virtual saat ini.

Perintah di bawah ini dijalankan pada mesin virtual yang dibuat di atas Xen, KVM, hypervisor VirtualBox dan juga pada OpenStack-KVM Icehouse.

Metode 1:Membaca log sistem

Hypervisor tertentu membocorkan informasi tentang jenisnya (termasuk nama hypervisor dan jenis virtualisasi – seperti paravirtualization, full virtualization atau HVM) dalam file log sistem. Informasi ini dapat diperoleh dari /var/log/message atau dengan menangkap output dari 'dmesg ' perintah.

Catatan: Seperti yang dikatakan, metode ini hanya akan bekerja pada Hypervisor tertentu. Misalnya, VirtualBox dan Xen tidak membocorkan informasi apa pun di file log.

Di Xen-VM

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

Anda tidak dapat menemukan informasi apa pun dari file log di Xen Hypervisor.

Pada KVM-VM

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

Di VirtualBox-VM

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

Anda tidak dapat menemukan informasi apa pun dari file log di VirtualBox.

Pada OpenStack KVM VM

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

Pada mesin Host KVM

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

Metode 2:Menggunakan perintah 'dmidecode'

DMI (Antarmuka Manajemen Desktop) – dmidecode , perintah Linux asli dapat digunakan untuk membuang informasi perangkat keras dan BIOS dalam format yang dapat dibaca manusia.

Ketika ‘dmidecode ' dijalankan :

Pada VM Xen

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

Pada VM KVM

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

Catatan: Anda dapat melihat ‘Bochs ' sebagai nilai untuk Produsen, Nama Produk, dll.. Bochs adalah emulator dan debugger yang kompatibel dengan X86-64 yang membantu emulasi prosesor, tampilan, BIOS, memori, dan perangkat keras PC lainnya. Artinya, mesin meniru beberapa perangkat keras yang mengisyaratkan bahwa itu adalah VM dan sebagian besar, KVM.

Pada VM VirtualBox

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

Pada VM OpenStack-KVM

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

Saat Anda menjalankan ‘dmidecode ' pada mesin host, Anda mendapatkan informasi perangkat keras dan 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.

Metode 3:Mencantumkan /dev/disk

Mesin virtual harus memiliki emulasi perangkat keras dari mesin host. Misalnya, emulasi disk dari Host. Jadi jika Anda hanya mencantumkan file di bawah ”/dev/disk/by-id ‘, maka Anda dapat dengan mudah mengetahui emulator apa yang digunakan oleh Hypervisor.

Pada VM 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 mengemulasi seluruh perangkat keras yang terpasang pada host ke VM.

Pada VM 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

Pada VM 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

Catatan: VBOX bukannya QEMU pada VM VirtualBox

Pada OpenStack KVM VM

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

Saya tidak dapat menemukan informasi apa pun tentang OpenStack VM. Mungkin, OpenStack menyembunyikannya? Tidak yakin!

Di mesin KVM Host

[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

Metode 4:Menggunakan paket virt-what

Tidak semua rasa Linux hadir dengan ‘virt-what 'paket diinstal. Anda dapat menginstalnya menggunakan ‘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%]

Pada VM Xen

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

Pada VM KVM

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

Pada VM VirtualBox

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

Pada OpenStack KVM VM

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

Pada Host KVM

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

Catatan: Anda tidak mendapatkan output apa pun di mesin host.

Metode 5:Menggunakan virtdetect atau systemd-detect-virt

Deteksi Virt rpm didasarkan pada 'Sys::Detect::Virtualization ‘ perl script – Lihat tutorial ini untuk informasi lebih lanjut .

Metode 6:Menggunakan perintah 'lshw'

Instal ‘lshw ' paket seperti di bawah ini:

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

Pada VM 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

Pada VM 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

Pada VM 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

Pada 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

Pada 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

Metode 7:Menggunakan 'ethtool'

Pada beberapa Hypervisor, Anda dapat dengan mudah mengetahui apakah perangkat jaringan diemulasi menggunakan perintah '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

Nah, ini adalah beberapa perintah yang memungkinkan Anda untuk mendeteksi Virtualisasi di berbagai Hypervisor. Apakah Anda tahu metode yang berbeda? Mari kita di bagian komentar di bawah.


Linux
  1. Virtualisasi di PC, Dijelaskan untuk Pemula dengan Kasus Penggunaan Praktis

  2. Mesin Virtual Mingguan, dengan Skrip Build

  3. Menggunakan Samba untuk berbagi folder dari tamu Linux dengan host Windows di VirtualBox

  1. Kelola kalender Anda dari terminal Linux dengan perintah konsolekalendar

  2. Coba Linux di Mac Anda dengan virtualisasi sumber terbuka

  3. Bagaimana cara menempel ke terminal linux di kotak virtual dengan keyboard mac?

  1. Cara Membuat Snapshot Mesin Virtual KVM dengan Perintah Virsh

  2. Cara Mengelola Mesin Virtual Oracle VirtualBox dari Command Line

  3. Cara Mengubah Ukuran Instance OpenStack (Mesin Virtual) dari Command line