Menjadikan OS Linux Sebagai Hypervisor Type 1


Bagus Koko Wibawanto

27 Maret 2024

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/