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 :
- 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
- 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:~#
- 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.
- 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 interfaceroot@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 Etherneteth0
sebagai physical interface-nya. - 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
.
- Aplikasi
virt-manager
dapat diaktifkan melalui Terminal. Perlu hak aksesroot
untuk bisa menjalankanvirt-manager
.
Bila autentikasi
root
sukses,virt-manager
akan membuka jendela baru dengan nama “Virtual Machine Manager”. - Untuk membuat VM baru, saya tinggal klik kanan pada jendela
virt-manager
lalu klik pilihan “New”. - 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.
- Saya akan menggunakan Ubuntu 14.04 sebagai guest OS. Klik tombol Forward bila sudah selesai pada langkah ini
- 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.
- 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 mengijinkanvirt-manager
mengatur ulang permission ISO Ubuntu tersebut. - 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.
- 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.
- Pada contoh ini saya mendapati error seperti ini.
virt-manager
mengatakan tidak cukup ruang sebesar 8GB pada komputercentosdev02
ini. Sebenarnya saya masih punya banyak ruang kosong pada harddisk Fujitsu. Error ini karenavirt-manager
masih menggunakan lokasi default untuk menyimpan virtual harddisk. Lokasi default ini ada di :/var/lib/libvirt/images
. Dalam kasus saya, partisiroot
notebook Fujitsu ini hanya sebesar 8GB sehingga tidak mungkin menyimpan file berukuran besar. - 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.
- 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 menggunakanbr0
. Artinya Ubuntu VM ini akan berkomunikasi dengan dunia luar melalui interfacebr0
milikcentosdev01
sebagai komputer host-nya.Untuk mengakhiri saya tinggal klik tombol Finish.
- 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.
- 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.
Terima kasih atas pencerahannya Suhu!
Pingback: Proxmox VE (Virtual Environtment) | My Bloggg