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.