Type 1 & Type 2 Hypervisor
Type 1 : Berjalan langsung diatas hardware yang mendasari host tersebut. Disebut juga “bare-meta” hypervisor. Yang berarti ia bisa berjalan langsung diatas hardware tanpa harus meload underlying os terlebih dahulu. Contoh: vmware esxi, kvm, Citrix/Xen Server.
Type 2 : Berjalan/diinstall diatas os yang ada, jadi si hypervisor bergantung pada os dibawahnya untuk melakukan operasi tertentu seperti managing calls ke CPU, managing network resources, managing memory dan storage. Contoh: virtualbox, vmware workstation, dll
KVM
“Kernel-based Virtual Machine (KVM) is a virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. ” - wikipedia
“KVM (Kernel Virtual Machine) is a Linux kernel module that allows a user space program to utilize the hardware virtualization features of various processors.” - https://wiki.qemu.org/Features/KVM
Dari definisi diatas bisa kita ambil bahwa KVM ini adalah sebuah “module” di kernel linux yang memungkinkan program users pace memanfaatkan extensi atau fitur hardware virtualization pada processor/cpu (intel VT dan AMD-V). Maka dengan menggunakan KVM kita bisa menjadikan linux sebagai hypervisor Type 1, dimana hypervisor bisa langsung mengakses hardware yang mendasarinya.
QEMU
Qemu adalah hypverisor Tipe 2, dapat diinstal pada sistem operasi dan berjalan sebagai proses independen dan instruksi yang kita berikan di Qemu akan dieksekusi pada oleh host os. Qemu dapat berjalan secara independen tanpa KVM karena merupakan emulator namun kinerjanya akan buruk karena Qemu tidak melakukan akselerasi perangkat keras.
QEMU + KVM
Qemu bisa berjalan sendiri sebagai hypervisor tetapi performa yang diberikan akan kurang dibanding hypervisor type 1 seperti vmware dll, hal ini dikarenakan qemu tidak memiliki akses ke fitur hardware virtualization pada cpu seperti intel VT dan AMD-V. Biasanya kita menggabungkan QEMU dan KVM untuk mendapat hardware akselerasi dan full virtualization. Gabungan dari dua komponen ini menjadikan nya seperti hypervisor type 1.
Libvirt
“libvirt is an open-source API, daemon and management tool for managing platform virtualization.It can be used to manage KVM, Xen, VMware ESXi, QEMU and other virtualization technologies. These APIs are widely used in the orchestration layer of hypervisors in the development of a cloud-based solution.” - WIkipedia
Ketika kita setup virtualisasi dengan qemu + kvm umumnya kita menginstall package libvirt daemon juga. Jadi libvirt ini yang menyediakan API untuk memanage KVM dan QEMU, bisa juga memange tekonlogi virtualisasi yang lain. Lalu si API ini lah yang akan digunakan oleh program virtualisasi management di sisi client seperti virsh, virt-manager (gui), bahasa pemprograman, terraform dll.