Perbedaan Kernel Based Virtual Machine (KVM) & Linux Container (LXC)

Kernel based virtual machine (KVM) dan Linux Container (LXC) merupakan jenis - jenis Guest OS yang digunakan untuk melakukan virtualisasi. Keduanya memiliki kelebihan dan kekurangan masing – masing. 
Kernel Based Virtual Machine (KVM) & Linux Container (LXC)
Kernel Based Virtual Machine (KVM) & Linux Container (LXC)

A. Kernel based Virtual Machine (KVM)

Kernel-based Virtual Machine adalah infrastruktur virtualisasi yang bisa menjadikan Kernel Linux sebagai sebuah hypervisor. KVM membutuhkan dukungan Hardware virtualization extension dari prosessor (CPU) yang digunakan. KVM dikembangkan oleh Red Hat Corporation untuk memberikan solusi virtualisasi pada sistem operasi berbasiskan Linux. KVM mulai digabungkan dalam kernel Linux sejak kernel versi 2.6.20, kernel versi tersebut di-release pada tanggal 5 Februari 2007.

Dengan KVM, dimungkinkan untuk membangun beberapa mesin virtual (atau Guest OS) di atas kernel Linux. Meskipun dibangun diatas kernel Linux, Guest OS yang dapat dihadirkan bisa saja bermacam – macam sistem operasi, seperti Linux, Windows, BSD, OS X maupun Solaris. KVM akan bisa memberikan alokasi penggunaan hardware seperti CPU, RAM, Hard disk dan lain – lain kepada masing – masing Guest OS tadi.

KVM akan menghadirkan Guest OS dalam bentuk full virtualization. Ini karena Guest OS yang dihadirkan dalam bentuk KVM akan menggunakan kernel dan file sistemnya sendiri. Ilustrasinya dapat dilihat pada gambar berikut ini. 
Kernel Based Virtual Machine (KVM)
Kernel Based Virtual Machine (KVM)
Dari gambar diatas terlihat bahwa, masing – masing Guest OS, akan menggunakan file system maupun kernel masing – masing. Guest OS sistem operasi Windows tentunya akan menggunakan sistem file dan kernel Windows, begitu pula dengan Guest OS Sistem Operasi Linux, tentunya akan membawa sistem file dan kernel Linux.

Dengan menjalankan full virtualization, masing – masing Guest OS akan membawa dan menggunakan kernel-nya masing – masing, tidak bergantung pada kernel lain seperti yang nantinya akan dilakukan oleh Container. Karena masing – masing Guest OS menggunakan kernel-nya sendiri – sendiri, maka KVM akan sangat portable, akan sangat mudah memindahkan Guest OS dalam bentuk KVM dari suatu platform mesin ke platform mesin yang lain. Namung disisi lain penggunaan kernel oleh masing – masing Guest OS akan membuat penggunaan resource (overhead) menjadi lebih besar.

Dari sisi keamanan, penggunaan KVM akan jauh lebih baik dari pada anda menggunakan Container. Ini dikarenakan masing – masing Guest OS akan menggunakan kernel-nya sendiri – sendiri. Dengan menggunakan kernel masing – masing, maka penggunaan KVM akan membuat setiap Guest OS terisolasi dengan Guest OS yang lain. Demikian pula dengan Host OS, karena Guest OS dan Host OS menggunakan kernel yang terpisah, maka Guest OS juga akan terisolasi dengan baik terhadap Host OS. Sehingga potensi gangguan keamanan terhadap Host OS akan menjadi lebih kecil.

Proxmox adalah hypervisor yang mampu menjalankan kernel based Virtual Machine (KVM). Dengan full virtualization oleh KVM, mesin virtual atau Guest OS yang akan diinstal diatas Proxmox akan berdiri sendiri, tidak tergantung dengan file sistem dan kernel dari Proxmox selaku hypervisor. Ini akan membuat Guest OS pada Proxmox dapat menggunakan secara penuh perangkat keras (hardware) dari mesin komputer yang digunakan. Namun, untuk menggunakan Hardware tersebut, Guest OS tetap akan dikendalikan oleh Proxmox.

Guest OS yang dibangun dengan menggunakan KVM akan sering disebut sebagai VM. Diharapkan anda tidak kebingungan dengan penggunaan istilah mesin virtual dan istilah VM. Penggunaan istilah mesin virtual bisa merujuk pada Guest OS yang menggunakan KVM maupun Container. Sedangkan penggunaan istilah VM benar – benar hanya ditujukan bagi Guest OS yang dibangun dengan KVM.

B. Linux Container (LXC)

Selain dapat membangun Guest OS dengan KVM, Proxmox VE bisa menghadirkan sebuah Guest OS dalam bentuk Container. Inilah yang merupakan kelebihan Proxmox dibanding dengan hypervisor yang lain, dimana banyak hypervisor yang tidak bisa menghadirkan container.

Pada awalnya Proxmox menggunakan OpenVZ sebagai container. Sehingga sampai pada Proxmox v3, anda bisa menggunakan template dari OpenVZ pada saat akan membangun container. Hal ini membawa konsekuensi pada saat akan melakukan migrasi dari Proxmox v3 ke Proxmox v4. Saat sudah memiliki container yang sedang berjalan di Proxmox v3 dan ingin beralih ke Proxmox v4, anda harus melakukan konversi dari OpenVZ ke Linux Container (LXC). Beberapa perintah dalam bentuk Command line untuk melakukan maintenance juga berubah. Jika pada Proxmox v3 dikenal dengan perintah vzctl untuk melakukan manajemen container, maka pada Proxmox v4 digunakan perintah pct.

Jika KVM melakukan virtualisasi secara penuh (fully virtualized) dari sebuah sistem operasi, maka container tidak melakukan hal demikian. Container akan menggunakan kernel dari Host OS (dalam hal ini adalah Proxmox) untuk menghadirkan Guest OS. Karena menggunakan kernel sistem operasi miliki Host OS, maka kernel yang akan digunakan oleh Guest OS adalah sama dengan kernel yang digunakan oleh Host OS. Ilustrasinya dapat dilihat pada gambar berikut ini :
Linux Container (LXC)
Linux Container (LXC)
Dari gambar diatas terlihat bahwa, setiap Guest OS tidak memiliki kernel-nya masing – masing. Bahkan, dengan container, kernel yang digunakan oleh Guest OS adalah kernel milik Host OS, yang tentunya adalah kernel milik Proxmox. Karena Proxmox merupakan sistem Linux, maka Guest OS yang dibangun dengan container tentu adalah sistem Linux pula. Jika ingin membangu Guest OS dengan Sistem Windows, tentu saja anda tidak bisa menggunakan container. Karena akan menggunakan kernel Proxmox, maka distro Linux apapun yang dibangun sebagai Guest OS dalam bentuk container, Guest OS tersebut tetap akan menggunakan kernel dari Proxmox.

Karena menggunakan kernel milik Host OS, maka teknik virtualisasi dengan menggunakan container akan menghemat penggunaan CPU maupun memori. Resource dari CPU dan memory akan dapat dihemat karena mesin Proxmox tidak perlu melakukan proses emulasi kernel bagi setiap Guest OS. Hal ini merupakan kelebihan dibandingkan jika anda menggunakan KVM, dimana KVM harus melakukan proses emulasi kernel, karena setiap Guest OS akan menggunakan kernel-nya masing – masing. Beberapa literatur mengatakan, jika anda bisa membangun 10 sampai 100 Guest OS dengan menggunakan KVM, maka anda sebenarnya bisa membangun 100 sampai 1000 Guest OS dengan menggunakan Container.

Walaupun menggunakan kernel yang sama, container atau LXC pada Proxmox memiliki sistem yang berdiri sendiri (isolated). Dengan demikian, Guest OS yang dibangun dengan menggunakan LXC dapat di-start, shutdown, reboot secara terpisah. Juga memiliki super administrator (root) dan regular user/group yang terpisah dari Host OS. Dengan terpisahnya sistem yang digunakan LXC, maka LXC bisa memiliki IP Address sendiri, memiliki alokasi memori dan CPU sendiri, library dan file konfigurasi sendiri.

Jika dibandingkan virtualisasi dengan KVM, fitur – fitur yang dimiliki oleh Linux Container atau LXC dapat dijabarkan sebagai berikut :
• Penggunaan resource CPU yang digunakan oleh LXC akan jauh lebih rendah jika dibandingkan dengan penggunaan CPU oleh KVM.
User account pada suatu LXC bisa melakukan perubahan file konfigurasi, melakukan installasi software di dalam container yang dimilikinya tanpa mengganggu container yang lain.
• Walaupun antara LXC yang satu dengan yang lainnya tidak saling berhubungan (isolated), namun container – container tersebut akan menggunakan library yang sama dengan Host OS. Ini membuat LXC jauh lebih hemat dalam penggunaan RAM.
• Pada umunya LXC akan menyelesaikan proses boot dalam hitungan detik, pada KVM proses boot terkadang membutuhkan waktu dalam hitungan menit.
• Karena menggunakan kernel milik Host OS, maka LXC tidak menimbulkan beban berlebih (overhead).
• Traffic jaringan antara satu LXC dengan yang lain akan terpisah. Sehingga inspeksi atau analisa lalu lintas data dapat dilakukan secara terpisah pula.
• Penerapan firewall dan routing juga dapat dilakukan secara terpisah antara satu LXC dengan yang lainnya.

Pada implementasi praktis di lapangan, kelebihan yang bisa didapatkan dari penggunaan LXC adalah Anda bisa saja melakukan modifikasi resource dari container tanpa reboot. Misalnya saja, saat melakukan penambahan kapasitas RAM pada sebuah LXC, Anda tidak perlu melakukan restart terhadap container tersebut. Perubahan kapasitas RAM tersebut akan segera digunakan oleh LXC. Kondisi ini berbeda dengan KVM yang terkadang membutuhkan proses reboot jika terjadi perubahan atau modifikasi kapasitas resource.

Walaupun memiliki banyak kelebihan, penggunaan container atau LXC hanya bisa digunakan untuk membangun Guest OS dalam bentuk sistem Linux. Selain itu, karena Guest OS menggunakan kernel yang sama dengan Host OS, maka faktor keamanan harus diperhatikan. Akses terhadap resource yang dimiliki oleh Host OS harus dibatasi. Saat ini, Proxmox menggunakan Linux Container (LXC) yang sudah memiliki fitur keamanan kernel, seperti AppArmor maupun Cgroups. Ini membuat penggunaan container pada sistem Proxmox menjadi lebih baik dan aman.

Setelah mengetahui karakteristik dari VM dan LXC, anda bisa mempertimbangkan model Guest OS apakah yang akan menjadi pilihan di lingkungan virtualisasi Proxmox. Sebagai panduan singkat tabel berikut akan bisa memberikan gambaran perbandingan secara langsung.
Perbandingan VM dan LXC
Perbandingan VM dan LXC


Sekian pembahasan kita kali ini tentang Perbedaan Kernel based Virtual Machine (KVM) & Linux Container (LXC). Semoga Bermanfaat.

(Baca Juga : Pengenalan Teknologi Virtualisasi Proxmox)

Berlangganan Artikel Terbaru

Share on Google Plus

About TEKNO ALDEBRAN

Blog berbagi Ilmu Pengetahuan dan Teknologi tentang Komputer, Mobile, Elektronika, Internet, Info Teknologi serta Tips dan Trik.