KVM (Kernel-Based Virtual Machine) adalah salah satu hypervisor type 1 yang mana hypervisor type 1 ini adalah hypervisor yang diinstall langsung sebagai OS. KVM ini memanfaatkan kernel Linux sehingga distro distro Linux bisa menjadi hypervisor type 1. . Nantinya kita akan setup KVM sampai bisa digunakan untuk membuat network, menyiapkan image, membuat disk, dan membuat VM. Pada artikel ini penulis akan menggunakan OS Ubuntu 20.04 (Focal) dan untuk workdir penulis menggunakan di directory "/vm".
Setup KVM
Update repository dan instal cpu-checker.
$ sudo apt update && sudo apt install cpu-checker
Cek apakah server bisa digunakan sebagai KVM dengan menggunakan cpu-checker.
$ kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
Install beberapa package yang dibutuhkan untuk menjalankan KVM.
$ sudo apt install qemu-kvm libvirt-daemon-system virtinst libvirt-clients bridge-utils -y
Enable dan aktifkan service libvirtd.
$ sudo systemctl enable --now libvirtd
Membuat Network
Kita perlu setup network untuk nantinya digunakan pada VM. Di sini kita akan membuat network bridge. Jadi antara server host dan vm nantinya seperti terhubung switch yang sama tetapi virtual. Untuk membuat network lakukan di user root.
Buat konfigurasi network.
$ vim br1.xml <network> <name>br1</name> <forward mode='route'/> <bridge name='virbr1'/> <ip address='10.5.5.1' netmask='255.255.255.0'> <dhcp> <range start='10.5.5.2' end='10.5.5.254'/> </dhcp> </ip> </network>
Define konfigurasi network.
$ virsh net-define br1.xml $ virsh net-start br1 $ virsh net-autostart br1
Verifikasi network.
$ virsh net-list $ ip a | grep global
Menyiapkan Image
Untuk image yang akan digunakan membuat VM adalah ubuntu 20.04 (focal). Jadi kita akan mendownloadnya dari internet. Akses web Official Website Cloud Image Ubuntu untuk mendownload cloud image.
Pilih yang .img dan download dengan menggunakan tool wget.
$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
Buat image dengan menggunakan file focal-server-cloudimg-amd64.img. Jadi nantinya image focal-server-cloudimg-amd64.img tersebut akan menjadi parent dari image baru yang akan kita buat.
$ qemu-img create -f qcow2 -b focal-server-cloudimg-amd64.img ubuntu-server.qcow2 20G
Verifikasi image yang baru kita buat tadi.
$ qemu-img info ubuntu-server.qcow2 image: ubuntu-server.qcow file format: qcow2 virtual size: 20 GiB (21474836480 bytes) disk size: 196 KiB cluster_size: 65536 backing file: focal-server-cloudimg-amd64.img Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
Note : Jangan mengubah apapun di parent image, karena itu bisa menyebabkan vm rusak, karena image yang kita buat tadi tidak bisa independen. Jadi dia butuh parent image.
Buat cd-rom untuk cloud init, jadi semua konfigurasi vm seperti user, password, ssh_authorized keys, dan sebagainya dilakukan dengan membuat cd-rom cloud init.
$ vim user-data #cloud-config users: - name: student ssh-authorized-keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBOz/7v6Wjve2AYOw6HcjcdYQfnbgaCwwj572OnWAqfvr07imG/3cE0wtneqjorq3JVl03BaPTnJvbxENFMhmtSzH0gDlvgkFrAK+HPDZRWRZDfnAGqWQzqtjjdvvskQe2q31mP0tJGP+Ybi+Jep2rFW1ngH7SALKPpIZCxy7Nuc0MJ7qIcxrMBQ4J4S5DInVF8L3oRl5IECfm3RcakcCc92/WEPPUy8VqfxPpFEqNYgDnYkPtbGD0SrvUBkB5mDQaxxdGhdEjLkjsp4fncFDPTP2ceJ9j5w7A7hK7+EnD2dW/vXbSUDyPsGicuRVTwOIuozlW90wa0YgDKK3EP0/Wh+W6rX+FWasWcOpsWdLS5yo0nHqPBL+NP+e1ckG42DND1tjMRf+fObvBjoXYd029O4F2Gjv7hcgi554yGMDPM4VIqWbBENEo153+oBt/eNqFPSHw/TOZGAZwzhsmur88/WY6l8m9Iz0SxcKvnhXXW+DISUd5XnSTiNmdAaWl28k= root@ceph-osd2 sudo: ['ALL=(ALL) NOPASSWD:ALL'] groups: sudo shell: /bin/bash runcmd: - echo "AllowUsers student" >> /etc/ssh/sshd_config - restart ssh chpasswd: list: | student:student root:student expire: False
$ vim meta-data local-hostname: ubuntu-server
Buat cd-rom cloud init dengan menggunakan tool genisoimage.
$ genisoimage -output cidata.iso -V cidata -r -J user-data meta-data
Membuat VM
Setelah semua yang dibutuhkan untuk membuat vm sudah siap, kita bisa langsung membuat vmnya.
$ virt-install --name=ubuntu-server --ram=700 --vcpus=1 --import --disk path=/vm/ubuntu-server.qcow2,format=qcow2 --disk path=/vm/cidata.iso,device=cdrom --os-variant=ubuntu20.04 --network bridge=virbr1,model=virtio --graphics spice,listen=0.0.0.0 --noautoconsole
Verifikasi apakah vm sudah berhasil dibuat.
$ virsh list Id Name State ------------------------------- 3 ubuntu-server running
Test masuk ke consolenya.
$ virsh console ubuntu-server
Test masuk ke VM dengan menggunakan SSH.
VM sudah berhasil dibuat dengan menggunakan hypervisor KVM. Jadi dengan menggunakan KVM kita bisa menjadikan server linux menjadi hypervisor type-1.
Referensi
- redhat.com. (11 Mei 2022). What is KVM?. Diakses pada 21 Maret 2024, dari https://www.redhat.com/en/topics/virtualization/what-is-KVM
- www.linuxtechi.com. (29 September 2023). How to Install KVM on Ubuntu 22.04 Step-by-Step. Diakses pada 22 Maret 2024, dari https://www.linuxtechi.com/how-to-install-kvm-on-ubuntu-22-04/
- blog.roundside.com. (25 Mei 2014). Useful things about backing file in qemu/kvm. Diakses pada 26 Maret 2024, dari https://blog.roundside.com/usefull-things-about-backing-file-in-qemukvm/