Menurut webopedia, terminologi Nested Virtualization merujuk pada virtualisasi yang beroperasi di dalam lingkungan yang telah tervirtualisasi. Dengan kata lain, nested virtualization merupakan kemampuan untuk menjalankan hypervisor di dalam Virtual Machine (VM) dimana VM tersebut juga beroperasi di atas hypervisor.
Secara sederhana, nested virtualization atau virtualisasi bersarang dapat dianalogikan dengan Matryoshka doll atau boneka bersarang atau boneka di dalam boneka, seperti terlihat pada gambar berikut:
Sebagai contoh pada host machine diinstalasi hypervisor Proxmox Virtual Environment (PVE). Selanjutnya di dalam host hypervisor PVE tersebut dibuat VM dan pada VM tersebut diinstalasi VMWare ESXi yang juga berfungsi sebagai hypervisor. Singkatnya, hypervisor di dalam hypervisor.
Hypervisor memerlukan akses ke fitur riil dari hardware yang berguna bagi virtualisasi sehingga memiliki unjuk kerja yang cepat dan mendekati native, dikenal dengan istilah “Hardware-assisted Virtualization extensions“. Pada nested virtualization, guest hypervisor harus dapat mengakses extension tersebut sehingga host hypervisor harus mengeksposenya ke VM.
PVE telah mendukung kemampuan nested virtualization dimulai dari versi 4.x. PVE dapat beroperasi baik sebagai hypervisor yang menampung nested (guest) hypervisor maupun sebagai nested (guest) hypervisor yang ditempatkan pada host hypervisor.
Pada tutorial ini akan dibahas bagaimana cara mengkonfigurasi nested virtualization pada PVE versi 5.3 dan mengujicoba pemanfaatannya pada Kernel-based Virtual Machine (KVM).
KONFIGURASI NESTED VIRTUALIZATION PADA PVE 5.3
Adapun langkah-langkah untuk mengaktifkan nested virtualization pada PVE 5.3 adalah sebagai berikut:
- Mengakses shell atau terminal dari PVE sebagai user root.
- Memverifikasi apakah nested virtualization telah diaktifkan. Berhubung penulis menggunakan komputer dengan prosesor Intel maka verifikasi dilakukan dengan perintah:
N = No yang bermakna nested virtualization belum aktif atau disabled.
Sedangkan bagi rekan-rekan dengan komputer berprosesor AMD maka verifikasi dapat dilakukan menggunakan perintah:
# cat /sys/module/kvm_amd/parameters/nested
- Mengaktifkan nested virtualization dengan menambahkan parameter
"options kvm-intel nested=Y"
pada file/etc/modprobe.d/kvm-intel.conf
untuk komputer dengan prosesor Intel.
Sedangkan pada komputer berprosesor AMD dilakukan penambahan parameter"options kvm-amd nested=1"
pada file/etc/modprobe.d/kvm-amd.conf
, seperti berikut:
# echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf
- Memuat ulang (reload) modul kernel
kvm_intel
untuk komputer berprosesor Intel dengan mengeksekusi perintah:
Sedangkan pada komputer berprosesor AMD, proses pemuatan ulang dari modul kernelkvm_amd
dilakukan dengan mengeksekusi perintah:
# modprobe -r kvm_amd
# modprobe kvm_amd - Memverifikasi hasil pengaktifan nested virtualization menggunakan perintah:
Y = Yes yang bermakna nested virtualization telah aktif atau enabled.
Sedangkan pada komputer berprosesor AMD, verifikasi dapat dilakukan dengan menggunakan perintah:
# cat /sys/module/kvm_amd/parameters/nested
UJICOBA
Untuk mengujicoba pemanfaatan nested virtualization pada PVE 5.3 maka penulis telah membuat 2 (dua) KVM yaitu masing-masing dengan ID 100 berupa Mikrotik Cloud Hosted Router (CHR) versi 6.43.8 dan ID 101 berupa Debian versi 8.11 64 bit, seperti terlihat pada gambar berikut:
Agar dapat memanfaatkan fitur nested virtualization maka pastikan setiap VM memiliki pengaturan CPU Type bernilai “host” yang dapat diatur pada bagian Hardware dan KVM Hardware Virtualization bernilai “yes” yang dapat diatur pada bagian Options. Sebagai contoh pengaturan CPU Type menjadi Host dari VM ID 100 (routeros), seperti terlihat pada gambar berikut:
Hasil verifikasi dari pengaturan CPU Type menjadi host pada VM ID 100, seperti terlihat pada gambar berikut:
Sedangkan pengaturan KVM hardware virtualization secara default telah aktif (yes) pada VM ID 100, seperti terlihat pada gambar berikut:
Cuplikan akses Console dari VM ID 100 (routeros) yang telah berhasil dijalankan, seperti terlihat pada gambar berikut:
Dengan cara yang sama, hasil dari pengaturan CPU Type menjadi Host dan pengaktifan KVM hardware virtualization (yes) pada VM ID 101 (debian), seperti terlihat pada gambar berikut:
Sedangkan cuplikan akses Console dari VM ID 101 (debian) yang telah berhasil dijalankan, seperti terlihat pada gambar berikut:
Pada gambar tersebut juga terlihat hasil dari eksekusi perintah lscpu
yang digunakan untuk menampilkan informasi arsitektur dari Central Processing Unit (CPU). Output dari eksekusi perintah tersebut menunjukkan prosesor pada VM ID 101 (debian) telah mendukung virtualisasi VT-x dari Intel untuk KVM.
Verifikasi dukungan virtualisasi hardware pada VM ID 101 juga dapat dilakukan dengan mengeksekusi perintah egrep '(vmx|svm)' --color=always /proc/cpuinfo
, seperti berikut:
Output vmx menyatakan fitur Virtual Machine Extension dari prosesor Intel telah aktif pada guest Operating System (OS) Debian tersebut.
Selamat, rekan-rekan telah berhasil mengaktifkan dan memanfaatkan fitur nested virtualization pada PVE 5.3. Apabila terdapat pertanyaan, jangan segan mengomentari posting ini atau mengirimkan melalui email di alamat admin[at]iputuhariyadi.net. Semoga bermanfaat. Terimakasih.
Sumber referensi:
- Istilah (Term) Nested Virtualization, https://www.webopedia.com/TERM/N/nested-virtualization.html
- Wiki Proxmox Nested Virtualization, https://pve.proxmox.com/wiki/Nested_Virtualization
keren, luar biasa infonya, sangat bermanfaat bagi saya yang baru ikut ikutan belajar proxmox