Belajar KVM & QEMU - Konsep Dasar & Arsitektur Utama
Episode 2 of 23

Belajar KVM & QEMU - Konsep Dasar & Arsitektur Utama

Membedah peran KVM sebagai kernel module hypervisor dan QEMU sebagai user-space VMM, mode system emulation vs user-mode emulation, pilihan accelerator kvm hvf whpx dan tcg, serta peran /dev/kvm sebagai jembatan antara user-space dan kernel

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 1 kita memahami sejarah — QEMU sebagai emulator dan KVM sebagai kernel module yang akhirnya menyatu — pada episode ini kita membedah arsitektur utamanya secara lebih dalam. Inilah fondasi yang akan menjelaskan hampir semua perilaku yang kalian temui di episode-episode berikutnya: kenapa VM jalan dengan akselerasi hardware, kenapa ada beberapa mode QEMU, dan kenapa /dev/kvm begitu penting.

Pahami dulu satu hal: virtualisasi modern bukan "satu perangkat lunak ajaib", melainkan pembagian peran yang jelas antara kernel dan user-space. KVM tidak menggantikan QEMU, dan QEMU tidak menggantikan KVM — keduanya saling melengkapi.

KVM: Kernel Module Hypervisor

KVM adalah kumpulan kernel module (kvm, kvm_intel, kvm_amd) yang mengubah Linux menjadi type-1 hypervisor — hypervisor yang berjalan langsung di atas hardware, meskipun berada di dalam kernel Linux. KVM menyediakan:

  • vCPU abstraction: setiap virtual CPU adalah thread yang bisa dieksekusi oleh scheduler Linux.
  • VM entry/exit handling: saat guest code berjalan dan terjadi instruksi sensitif (misal akses device), CPU memicu VM exit yang ditangani KVM.
  • Interrupt & timer virtualization: penjadwalan interupsi virtual tanpa melibatkan host secara berlebihan.
  • Memory virtualization: EPT (Intel Extended Page Tables) / NPT (AMD Nested Page Tables) untuk address translation dua tingkat.

Karena KVM hidup di kernel, ia ikut serta dalam semua mekanisme Linux: cgroups untuk resource limit, seccomp untuk sandbox, dan scheduler untuk penjadwalan thread. Ini yang membuat KVM begitu kuat dan aman.

QEMU: User-Space VMM

QEMU berjalan sebagai proses user-space dan menjalankan dua fungsi utama:

  1. Device emulation — menyediakan perangkat virtual untuk guest: disk (virtio-blk, ide), network (virtio-net, e1000), display (VGA, virtio-gpu), dan banyak lagi.
  2. Management — parse command line, jalankan vCPU threads lewat KVM, sediakan QEMU Monitor (HMP), dan berkomunikasi dengan libvirt.

Satu proses QEMU = satu VM (umumnya). Semua device emulated berjalan di user-space, sehingga bug emulasi tidak menjatuhkan kernel. Pemisahan inilah yang menjadi alasan desain keamanan KVM+QEMU: kernel menangani eksekusi, user-space menangani emulasi.

Mode Operasi QEMU

QEMU punya dua mode besar yang sering membingungkan pemula:

ModeFungsiContoh Binary
System emulationMenjalankan satu sistem (VM) utuhqemu-system-x86_64
User-mode emulationMenjalankan satu proses programqemu-x86_64

System emulation adalah yang kita pakai sepanjang series ini: ia menciptakan mesin virtual lengkap dengan CPU, RAM, dan device. User-mode emulation dipakai saat menjalankan binary satu arsitektur di arsitektur lain tanpa menciptakan sistem utuh — misal menjalankan binary ARM di host x86 untuk testing.

Accelerator: Kunci Performa

QEMU bisa memilih "mesin eksekusi" lewat parameter -accel:

Jalankan QEMU dengan akselerasi KVM
qemu-system-x86_64 -accel kvm ...

Accelerator utama yang tersedia:

  • kvm — native Linux, memakai hardware virtualization; pilihan default di Linux dengan /dev/kvm.
  • hvf — Hypervisor.framework untuk macOS.
  • whpx — Windows Hypervisor Platform.
  • tcg — Tiny Code Generator, mode emulasi murni (tanpa hardware); sangat lambat, hanya untuk fallback/testing.

Tanpa -accel kvm, QEMU otomatis memakai tcg — dan performanya bisa 5-10x lebih lambat. Inilah alasan episode 0 menekankan verifikasi /dev/kvm.

Alur Eksekusi: /dev/kvm sebagai Jembatan

Saat kalian menjalankan VM, alurnya kira-kira begini:

100%

QEMU membuka /dev/kvm, meminta KVM membuat VM dan vCPU, lalu tiap vCPU dieksekusi sebagai thread. Saat guest membaca disk atau network, hardware memicu VM exit, KVM menyerahkan penanganan device ke QEMU, dan setelah selesai eksekusi kembali ke guest. Pemicu & balik ini terjadi jutaan kali per detik — karena itu kecepatan I/O sangat dipengaruhi oleh desain device (virtio) yang akan kita bahas di episode 12.

Tip

Periksa accelerator yang sedang dipakai dengan memanggil info kvm dari QEMU Monitor (episode 8) atau lihat baris log saat VM start. Jika tertulis tcg, ada yang salah dengan konfigurasi KVM kalian.

Common Pitfalls

  • Salah mode: mencoba -accel kvm di host tanpa /dev/kvm → QEMU akan error atau jatuh ke tcg diam-diam. Selalu verifikasi dulu.
  • Memory overcommit: VM dengan -m 8192 di host RAM 8 GB akan mulai thrashing — QEMU tidak menolak, tetapi performa anjlok.
  • Salah machine type: mencampur topology vCPU dengan NUMA host secara asal sering menghasilkan performa buruk (detail di episode 4).

Penutup

Pada episode 2 ini, kalian telah memahami arsitektur inti stack KVM & QEMU.

Inti yang harus dibawa pulang:

  • KVM adalah kernel module (type-1 hypervisor in-kernel); QEMU adalah user-space VMM untuk device emulation & management.
  • QEMU punya dua mode: system emulation (VM utuh) dan user-mode emulation (proses tunggal).
  • Accelerator menentukan performa: kvm (native), hvf/whpx (host lain), tcg (emulasi murni).
  • /dev/kvm adalah jembatan user-space ↔ kernel untuk eksekusi vCPU.
  • info kvm di QEMU Monitor mengonfirmasi accelerator yang aktif.

Di episode 3 selanjutnya, kita akan melakukan instalasi & verifikasi KVM & QEMU secara lengkap — dari package manager Debian/Ubuntu dan RHEL, pemasangan libvirt & virtinst, sampai memastikan kvm-ok, /dev/kvm, dan qemu-system-x86_64 --version semuanya lolos. Sampai jumpa di episode 3!