Skip to main content
  1. Posts/

Install KVM and Virt-Manager

·5 mins·
libvirt libvirt ubuntu kvm
Table of Contents

KVM (Kernel-based Virtual Machine) adalah modul pada kernel Linux yang memungkinkan sistem operasi bertindak sebagai hypervisor, sehingga dapat menjalankan instance atau virtual machine (VM) di dalam sistem host.

Mengecek Dukungan Virtualisasi
#

Cek Dukungan CPU
#

Gunakan perintah berikut untuk memeriksa apakah CPU mendukung virtualisasi hardware:

egrep -c '(vmx|svm)' /proc/cpuinfo
  • Jika output bernilai 0, berarti CPU tidak mendukung virtualisasi hardware.
  • Jika output bernilai > 0, maka CPU mendukung virtualisasi.

Keterangan:

  • vmx = Intel VT-x
  • svm = AMD-V

Cek Modul KVM
#

Anda juga dapat memastikan dukungan virtualisasi melalui modul kernel KVM dengan perintah:

lsmod | grep -i kvm

Jika CPU mendukung, biasanya akan muncul salah satu output seperti berikut:

Untuk CPU Intel:

kvm_intel             368640  0
kvm                  1032192  1 kvm_intel

Untuk CPU AMD:

kvm_amd               155648  0
kvm                  1032192  1 kvm_amd

Jika modul kvm_intel atau kvm_amd muncul, maka dukungan virtualisasi aktif dan dapat digunakan oleh KVM.

Install KVM dan Virt-Manager
#

Untuk menginstal KVM beserta paket dependensinya, jalankan perintah berikut:

apt -y install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager sasl2-bin python3-guestfs supervisor ksmtuned

Konfigurasi VNC dan SPICE
#

Agar console VM dapat diakses dari luar host, Anda dapat mengatur VNC dan SPICE agar listen pada semua alamat (0.0.0.0). Edit konfigurasi qemu.conf dengan perintah berikut:

sed -i 's/#[ ]*vnc_listen.*/vnc_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf
sed -i 's/#[ ]*spice_listen.*/spice_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf

Setelah selesai, restart service libvirtd:

systemctl restart libvirtd
Catatan: Membuka VNC/SPICE ke semua alamat dapat menimbulkan risiko keamanan. Pastikan Anda menggunakan firewall, SSH tunnel, atau mekanisme proteksi lain.

Quick Install
#

Anda juga dapat menginstal KVM menggunakan script otomatis:

wget -O - https://raw.githubusercontent.com/retspen/webvirtcloud/master/dev/libvirt-bootstrap.sh | sudo sh

Create User
#

Jika Anda ingin menggunakan virt-manager langsung pada server host (melalui GUI), Anda perlu membuat user khusus atau menggunakan user yang sudah ada, kemudian memberikan akses ke grup yang relevan.

Membuat User Baru (Opsional)
#

Jika ingin membuat user baru untuk mengakses virt-manager:

adduser virtman

Kemudian tambahkan user tersebut ke grup kvm dan libvirt:

usermod -aG kvm,libvirt virtman

Menggunakan User yang Sedang Aktif
#

Jika Anda ingin memberikan akses virt-manager kepada user yang saat ini dipakai:

sudo usermod -aG kvm,libvirt $USER
Catatan: Anda perlu logout dan login kembali agar perubahan grup berlaku.

Akses Socket Libvirt (Jika diperlukan)
#

Pada beberapa distro, socket libvirt sudah otomatis memiliki permission yang sesuai untuk member grup libvirt. Namun jika terjadi error akses, Anda bisa sementara memberikan permission berikut:

chmod 666 /var/run/libvirt/libvirt-sock
Peringatan: Mengubah permission socket menjadi 666 tidak direkomendasikan untuk jangka panjang karena memberi akses penuh ke semua user. Lebih aman menambahkan user ke grup libvirt (seperti pada langkah sebelumnya).

Menguji Akses Virt-Manager
#

Setelah konfigurasi selesai, jalankan:

virt-manager

Jika berhasil, Anda akan melihat tampilan GUI virt-manager:

Create Storage Pool
#

Pada instalasi awal libvirt, biasanya sudah tersedia satu storage pool bernama default yang menunjuk ke direktori:

/var/lib/libvirt/images

Pool ini dapat langsung digunakan untuk menyimpan disk image VM.

Jika Anda ingin membuat storage pool baru—misalnya untuk menggunakan disk lain atau direktori berbeda—gunakan perintah berikut:

virsh pool-create-as --name vms --type dir --target /vms

Mengaktifkan Autostart
#

Agar storage pool otomatis aktif setiap kali host direboot, jalankan:

virsh pool-autostart vms

Melihat Daftar Storage Pool
#

Gunakan perintah berikut untuk menampilkan semua storage pool yang tersedia:

virsh pool-list

Contoh output:

 Name      State    Autostart
-------------------------------
 default   active   yes
 vms       active   yes

Create Virtual Network
#

Secara default, libvirt menyediakan virtual network berjenis NAT (biasanya bernama default). Namun pada tutorial ini, kita akan menggunakan mode bridge agar VM mendapatkan alamat IP langsung dari router, sama seperti perangkat fisik lainnya.

Membuat Bridge br0
#

Buat interface bridge:

brctl addbr br0

Kemudian tambahkan interface fisik (yang terhubung ke router) ke dalam bridge:

brctl addif br0 enp8s0f1

Konfigurasi Netplan
#

Edit file konfigurasi di /etc/netplan/*.yaml menjadi seperti berikut:

network:
  ethernets:
    enp2s0f1:
      dhcp4: true
    enp8s0f1:
      dhcp4: no
  bridges:
    br0:
      dhcp4: no
      interfaces:
        - enp8s0f1
  version: 2

Penjelasan:

  • enp2s0f1 → Interface untuk remote access (SSH).
  • enp8s0f1 → Interface yang dipasangkan ke bridge.
  • br0 → Bridge yang akan digunakan VM.
Sebaiknya pisahkan interface untuk jalur remote access dan jalur VM. Jika hanya memiliki 1 interface, Anda bisa mengaktifkan dhcp4: yes pada br0 dan menghapus konfigurasi DHCP dari interface fisik.

Terapkan konfigurasi:

netplan apply

Membuat File network.xml
#

Buat file network.xml dan isi dengan konfigurasi berikut:

<network>
  <name>net0</name>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>

Penjelasan:

  • forward mode=‘bridge’ → Mode bridge murni, VM seolah-olah langsung berada di jaringan fisik.
  • bridge name=‘br0’ → Mengaitkan network libvirt ke interface bridge yang telah Anda buat.

Mendaftarkan Virtual Network ke Libvirt
#

Define network:

virsh net-define network.xml

Set agar aktif otomatis saat boot:

virsh net-autostart net0

Aktifkan network:

virsh net-start net0

Mengecek Virtual Network
#

Lihat daftar virtual network aktif:

$ virsh net-list
 Name   State    Autostart   Persistent
-----------------------------------------
 net0   active   yes         yes

Jika muncul seperti di atas, berarti virtual network bridge sudah berhasil dibuat.

Membuat Virtual Machine (KVM/QEMU)
#

Unduh Cloud Image Rocky Linux 8
#

Gunakan cloud image resmi dari Rocky Linux.

wget -O rocky8.qcow2 https://download.rockylinux.org/pub/rocky/8.8/images/x86_64/Rocky-8-GenericCloud.latest.x86_64.qcow2

Pindahkan file ke direktori storage pool, misalnya /vms:

mv rocky8.qcow2 /vms

Generate File XML VM Menggunakan virt-install
#

Buat file XML konfigurasi VM dengan virt-install --print-xml:

virt-install --print-xml \
  -n rocky8 \
  --os-variant rocky8 \
  --memory 2048 \
  --vcpus 2 \
  --disk /vms/rocky8.qcow2,cache=none \
  --network network=net0,model=virtio \
  --graphics vnc \
  > domain.xml
Catatan: Sesuaikan nilai memory, vcpus, storage, maupun network sesuai kebutuhan.

Import VM ke Libvirt
#

Mendaftarkan VM dari file XML:

virsh define domain.xml

Menjalankan Virtual Machine
#

Start VM:

virsh start rocky8

5. Mengakses Console VM
#

Gunakan console untuk memastikan VM berjalan normal:

virsh console rocky8

Contoh output:

Connected to domain 'rocky8'
Escape character is ^] (Ctrl + ])

Rocky Linux 8.8 (Green Obsidian)
Kernel 4.18.0-477.10.1.el8_8.x86_64 on an x86_64

Activate the web console with: systemctl enable --now cockpit.socket

localhost login:

Related

Install WebVirtCloud
·2 mins
libvirt libvirt ubuntu kvm
Enable Nested Virtualization pada KVM
·1 min
libvirt kvm libvirt
Setup VM Menggunakan Virt-Manager CLI
·1 min
libvirt kvm libvirt
Cara Membuat Storage Volume di Libvirt
·2 mins
libvirt kvm libvirt
Setting VirtioFS untuk Shared Folder VM
·2 mins
libvirt kvm libvirt
Create Multiple IP Addresses in Linux
·2 mins
linux centos ubuntu linux