Virtualisasi Dengan KVM Linux

Sekilas Tentang Virtualisasi

Saya sudah cukup lama menggunakan Virtualbox untuk melakukan virtualisasi OS. Virtualisasi gampangnya dapat diartikan menjalankan suatu OS di dalam OS. Dengan virtualisasi kita bisa punya beberapa komputer virtual (virtual machine=VM) sekaligus. Misalnya di Mac saya bisa memasang OS Windows 7 dalam sebuah VM. Saya juga bisa punya beberapa VM berisi Linux, dan aneka macam OS lainnya. Dulu sebelum kenal Virtualbox, bila saya menggunakan sebuah notebook pasti saya pasang 2 OS di dalamnya. Saya perlu menentukan akan boot ke OS Linux atau Windows. Sistem dual boot seperti itu memang lebih powerful karena OS langsung berinteraksi dengan hardware komputer. Akan tetapi memasang beberapa OS dalam satu komputer seperti itu sangat tidak praktis.

Dalam dunia virtulisasi komputer (physical computer) disebut sebagai host sementara semua virtual machine akan disebut sebagai guest. Virtualbox membantu saya untuk melakukan beberapa hal seperti misalnya :

  • mengakses aplikasi yang hanya tersedia di Windows tanpa harus punya komputer/laptop dengan OS Windows.
  • mencoba varian distro Linux baru tanpa perlu melakukan instal ulang atau dual boot.
  • bereksperimen dengan Linux server, Solaris server, dsb.
  • melakukan eksperimen networking (routing, load balancing, firewall) dengan beberapa VM sekaligus.

Bayangkan bila saya tidak punya VM, berapa banyak komputer (komputer dalam arti fisik sebenarnya) yang harus saya miliki untuk melakukan eksperimen-eksperimen tadi. Dengan menggunakan VM, saya jadi bisa melakukan testing yang memerlukan beberapa komputer sekaligus. Selama komputer saya punya kapasitas memori dan kapasitas harddisk yang cukup, saya bisa membuat banyak VM & menjalankannya sekaligus.

Ada beberapa macam aplikasi virtualisasi seperti misalnya :

  • Virtualbox
  • VMware
  • KVM
  • Xen Hypervisor
  • Oracle VM
  • Proxmox

Aplikasi-aplikasi tersebut biasanya dikenal sebagai hypervisor. Hypervisor menurut Wikipedia didefinisikan sebagai berikut :

A hypervisor or virtual machine monitor (VMM) is a piece of computer software, firmware or hardware that creates and runs virtual machines.

Teknologi virtualisasi sendiri dapat digolongkan menjadi 3 macam :

  • Full Virtualization, yang termasuk dalam kategori ini adalah Virtualbox, KVM. Full Virtualization maksudnya adalah komputer host akan melakukan emulasi perangkat keras (hardware) yang digunakan oleh guest. Guest tidak tahu kalau mesin yang digunakannya adalah virtual machine. Full virtualization ini adalah tipe virtualisasi yang paling fleksibel. Kita tidak perlu menggunakan OS dengan kernel khusus. Kita bisa langsung menginstal sistem operasi layaknya kita menginstal OS pada komputer fisik. Kelemahan full virtualization adalah guest tidak bisa mendapat kecepatan akses penuh saat mengakses hardware (misalnya menulis/membaca data dari dalam harddisk atau bertukar data lewat network interface). Lambatnya akses Input/Output ini akibat dari emulasi hardware yang dilakukan oleh host.
  • Paravirtualization (PV), yang termasuk dalam kategori ini contohnya adalah Xen Hypervisor. PV mengatasi kendala yang dimiliki oleh full virtualisation. OS yang dipasang pada VM adalah versi termodifikasi dari sistem operasi (operating system/OS) aslinya. Misalnya, RedHat Linux menyediakan kernel-xen untuk PV guest. Guest VM sadar kalau mesin yang dipakainya adalah virtual machine. Sistem ini memiliki throughtput yang jauh lebih baik daripada full virtualization & boleh dibilang yang paling baik di antara 3 tipe virtualisasi. Sayangnya kita terikat pada pemilihan OS. Guest hanya bisa menggunakan OS yang memang sudah disiapkan untuk berjalan di atas paravirtualized VM.
  • Para-virtualized driver : sistem ini adalah kombinasi dari kedua sistem sebelumnya. OS yang dipasang pada guest adalah OS biasa (native OS). Hanya saja ada tambahan driver khusus yang perlu dipasang di komputer guest. Meskipun Virtualbox termasuk dalam kategori Full virtualization, Virtualbox bisa termasuk juga dalam kategori ini. Virtualbox menyediakan “Virtualbox Guest Addition”. Virtualbox Guest Addition menyediakan driver-driver khusus untuk perangkat seperti network interface, video card, dsb. Sistem ini menawarkan fleksibilitas dalam pemilihan OS sekaligus menawarkan performa I/O yang lebih baik daripada full virtualization.

Menginstal KVM

Tulisan ini akan jadi catatan pribadi saya tentang langkah-langkah menginstal KVM pada CentOS Linux 6.5. KVM adalah teknologi virtualisasi yang terintegrasi dengan kernel Linux. KVM pertama kali diintegrasikan ke dalam kernel linux sejak versi kernel 2.6.20.

Dalam percobaan ini saya menggunakan notebook Fujitsu S6140 dengan spesifikasi seperti berikut ini :

  • CPU Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz
  • 3GB RAM
  • Harddisk 160GB
  • CentOS 6.5 (@base packages)

Untuk bisa menggunakan KVM, komputer host harus memiliki CPU dengan fitur “hardware virtualization extension”. Pada CPU Intel fitur ini dikenal dengan nama vmx (Intel VT Extention). Sementara pada CPU AMD, fitur tadi dikenal dengan nama “svm” (AMD-V Extention).

Notebook Fujitsu yang saya gunakan sudah dilengkapi dengan vmx. Untuk memastikan saya bisa menggunakan perintah berikut ini :

root@centosdev02:~# egrep "svm|vmx" /proc/cpuinfo
flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm ida dts tpr_shadow vnmi flexpriority
flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm ida dts tpr_shadow vnmi flexpriority
root@centosdev02:~# 

Berikut ini adalah langkah-langkah yang perlu dilakukan untuk menyiapkan KVM :

  1. Hal pertama yang perlu saya lakukan adalah memasang beberapa paket berikut :
    root@centosdev02:~# yum install kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools
    
  2. Selanjutnya saya perlu mengaktifkan servis libvirtd supaya otomatis aktif saat proses booting. libvirtd adalah aplikasi manajemen virtualisasi.
    root@centosdev02:~# chkconfig libvirtd on
    root@centosdev02:~# service libvirtd start
    Starting libvirtd daemon:                                  [  OK  ]
    root@centosdev02:~# service libvirtd status
    libvirtd (pid  5870) is running...
    root@centosdev02:~# 
    
  3. Supaya VM dapat beruinteraksi dengan dunia luar, saya perlu menyiapkan network bridge. Bridge akan menjembatani komunikasi antara VM dengan LAN. Semua komunikasi data dari setiap VM akan melewati bridge (virtual switch) menuju physical network interface yang dimiliki oleh host.
    root@centosdev02:~# yum install bridge-utils
    

    Dalam contoh ini, bridge akan bertindak sebagai virtual switch menghubungkan VM dengan port Ethernet notebook saya.

  4. Biasanya IP dipegang langsung oleh port Ethernet. Saat menggunakan bridge, IP tidak lagi dialokasikan ke Ethernet tetapi dialokasikan ke bridge interface (pada contoh ini bridge interface-nya adalah br0. Berikut adalah beberapa konfigurasi yang harus dibuat untuk mengalokasikan IP ke bridge interface
    root@centosdev02:~# vi /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=centosdev02.gbt733.net
    GATEWAY=192.168.10.2
    GATEWAYDEV=br0
    root@centosdev02:~#
    
    root@centosdev02:~# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    TYPE=Ethernet
    UUID=9d32baec-21ee-4157-a8d9-b85b5c231444
    ONBOOT=yes
    HWADDR=00:17:42:BD:FC:F8
    BRIDGE=br0
    root@centosdev02:~#
    
    root@centosdev02:~# vi /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    ONBOOT=yes
    BOOTPROTO=none
    IPADDR=192.168.10.40
    PREFIX=24
    GATEWAY=192.168.10.2
    DNS1=8.8.8.8
    STP=on
    DELAY=0
    root@centosdev02:~# 
    

    Pada contoh diatas bridge akan menggunakan IP 192.168.10.40. Interface br0 akan menggunakan port Ethernet eth0 sebagai physical interface-nya.

  5. Setelah konfigurasi network sudah selesai, saya tinggal merestart servis network :
    root@centosdev02:~# service network restart
    Shutting down interface br0:                               [  OK  ]
    Shutting down interface eth0:                              [  OK  ]
    Shutting down interface wlan0:                             [  OK  ]
    Shutting down loopback interface:                          [  OK  ]
    Bringing up loopback interface:                            [  OK  ]
    Bringing up interface eth0:                                [  OK  ]
    Bringing up interface br0:  Determining if ip address 192.168.10.40 is already in use for device br0...
                                                               [  OK  ]
    root@centosdev02:~# 
    

    Untuk melihat status bridge saya bisa gunakan perintah seperti berikut ini :

    root@centosdev02:~# brctl show
    bridge name     bridge id          STP enabled     interfaces
    br0          8000.001742bdfcf8     yes          eth0
    virbr0          8000.525400f30c3b     yes          virbr0-nic
    root@centosdev02:~#
    

Sampai tahap ini saya sudah siap untuk membuat sebuah VM. Ada beberapa cara yang bisa digunakan untuk membuat & mengatur VM dalam KVM. Pertama kita bisa menggunakan perintah virsh, virsh adalah aplikasi manajemen VM berbasis teks. Kedua kita bisa menggunakan aplikasi virt-manager. Aplikasi virt-manager berbasis GUI sehingga jauh lebih mudah digunakan. Pada contoh ini saya akan menggunakan virt-manager. Supaya bisa menggunakan virt-manager saya perlu mengakses desktop mesin centosdev02. Saya akses desktop centosdev02 melalui VNC. Cara memasang VNC pada CentOS 6.5 pernah saya tulis pada posting sebelumnya. Mari kita lanjutkan langkah-langkah membuat VM dengan virt-manager.

  1. Aplikasi virt-manager dapat diaktifkan melalui Terminal. Perlu hak akses root untuk bisa menjalankan virt-manager.

    Bila autentikasi root sukses, virt-manager akan membuka jendela baru dengan nama “Virtual Machine Manager”.

  2. Untuk membuat VM baru, saya tinggal klik kanan pada jendela virt-manager lalu klik pilihan “New”.
  3. Akan muncul jendela baru yang membimbing kita untuk mulai membuat VM. Yang pertama perlu diset adalah nama VM yang akan kita buat :

    Saya juga perlu menentukan media sumber instalasi, saya pilih untuk menggunakan ISO Image.

  4. Saya akan menggunakan Ubuntu 14.04 sebagai guest OS. Klik tombol Forward bila sudah selesai pada langkah ini
  5. Selanjutnya saya perlu menentukan ISO image mana yang akan digunakan sebagai sumber instalasi. Saya juga diminta untuk menentukan tipe OS yang akan dipasang ada VM ini.
  6. Saat pertama kali mencoba saya mendapati error seperti ini :

    Ini adalah masalah permission untuk membaca ISO image Ubuntu. virt-manager bisa memperbaiki sendiri masalah permission ini. Saya tinggal klik Yes untuk mengijinkan virt-manager mengatur ulang permission ISO Ubuntu tersebut.

  7. Berikutnya saya akan diminta untuk menentukan jumlah memori yang akan dialokasikan untuk VM Ubuntu. Pada contoh ini saya set memori 512MB & mengalokasikan hanya 1 CPU untuk Ubuntu.

    Klik Forward untuk melanjutkan proses.

  8. Berikutnya saya perlu menentukan seberapa besar storage yang akan digunakan oleh VM ini. Boleh dibilang kita akan membuat “virtual harddisk” bagi komputer guest. Saya pilih untuk mengalokasikan ruang sebesar 8GB.
  9. Pada contoh ini saya mendapati error seperti ini.

    virt-manager mengatakan tidak cukup ruang sebesar 8GB pada komputer centosdev02 ini. Sebenarnya saya masih punya banyak ruang kosong pada harddisk Fujitsu. Error ini karena virt-manager masih menggunakan lokasi default untuk menyimpan virtual harddisk. Lokasi default ini ada di : /var/lib/libvirt/images. Dalam kasus saya, partisi root notebook Fujitsu ini hanya sebesar 8GB sehingga tidak mungkin menyimpan file berukuran besar.

  10. Saya batalkan dulu menu wizard membuat VM ini untuk memperbaiki lokasi tempat penyimpanan “virtual harddisk”. Pengaturan lokasi images ini dapat ditemukan pada menu “Connection Details” Virtual Machine Manager seperti pada contoh di bawah ini :

    Saya memilih untuk membiarkan setting lokasi seperti itu. Yang saya lakukan adalah membuat soft link ke partisi lain yang punya ruang cukup besar (saya pilih untuk menggunakan partisi /home):

    root@centosdev02:~# mkdir /home/ttirtawi/iso-images
    root@centosdev02:~# ln -sr /home/ttirtawi/iso-images /var/lib/libvirt/images
    

    Setelah mengganti lokasi tersebut, saya tinggal klik tombol Refresh. Virtual Machine Manager sekarang sudah melihat ruang sebesar 131.97GB, cukup untuk meletakkan virtual harddisk VM.

  11. Saya bisa mengulang kembali (dari langkah #2 di atas) untuk membuat VM baru. Setelah selesai menentukan ukuran & lokasi penyimpanan virtual harddisk, virt-manager akan menampilkan pilihan pengaturan jaringan. Saya memilih untuk menggunakan br0. Artinya Ubuntu VM ini akan berkomunikasi dengan dunia luar melalui interface br0 milik centosdev01 sebagai komputer host-nya.

    Untuk mengakhiri saya tinggal klik tombol Finish.

  12. Begitu tombol Finish diklik, Virtual Machine Manager akan memunculkan jendela baru seperti pada contoh di bawah ini :

    Jendela tersebut adalah console dari Virtual Machine yang baru saya buat. Anggap saja itu adalah layar monitor dari virtual machine tersebut. Virtual Machine baru ini langsung aktif & saya bisa segera menginstal Ubuntu ke dalam VM ini.

    Tentu dalam tulisan ini, saya tidak akan merinci langkah-langkah instalasi Ubuntunya.

  13. Pada jendela VM tadi ada tombol “i” yang bisa diklik untuk menampilkan informasi tentang virtual machine itu sendiri. Di sini saya bisa melihat beberapa pengaturan virtual hardware yang dipakai oleh Ubuntu sebagai komputer guest.

    Dari menu inilah saya bisa mengatur kembali hardware yang digunakan oleh guest VM ini. Misalnya saya bisa memasang tambahan virtual harddisk atau memasangkan tambahan network interface, dsb.

Kira-kira seperti itu catatan saya mencoba mempelajari virtualisasi dengan KVM. Ada banyak topik lain yang masih saya pelajari berkaitan dengan KVM ini. Mungkin lain waktu saya akan tuliskan di posting selanjutnya.

2 thoughts on “Virtualisasi Dengan KVM Linux

  1. Pingback: Proxmox VE (Virtual Environtment) | My Bloggg

Leave a Reply