SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-07

Bisakah VPS Menjalankan Proxmox dengan Nested

Sebagian besar provider VPS menyembunyikan flag vmx. Periksa dengan kvm-ok dalam satu menit, lalu kenali error yang muncul saat menjalankan KVM atau Proxmox.

Jawaban singkat

Nested virtualization adalah hypervisor yang berjalan di dalam mesin virtual: VPS Anda sudah berperan sebagai guest, dan Anda ingin VPS tersebut menjadi host bagi guest miliknya sendiri. Fitur ini hanya berfungsi jika hypervisor milik provider memang mengekspos ekstensi virtualisasi CPU ke instance Anda. Periksa /proc/cpuinfo untuk melihat flag vmx (Intel) atau svm (AMD). Jika tidak ada satu pun yang muncul, tidak ada konfigurasi di dalam VPS yang dapat memperbaikinya.

Perlu ditegaskan terlebih dahulu: Docker tidak memerlukan semua ini. Container menggunakan kernel VPS Anda secara bersama-sama dan tidak pernah mengakses /dev/kvm. Jika tujuan sebenarnya adalah "menjalankan beberapa service dalam container di server saya", Anda sudah memiliki semua yang diperlukan. Nesting diperlukan jika Anda ingin menggunakan kernel kedua, lab Proxmox, guest Windows, microVM Firecracker, emulator Android, lingkungan pengujian Kubernetes yang berisi VM sungguhan, atau runner CI yang melakukan boot image VM.

Hal yang sebenarnya dibuat bertingkat

Tiga lapisan:

  • L0, hypervisor milik provider yang berjalan langsung pada hardware. Anda tidak memiliki akses ke lapisan ini.
  • L1, VPS Anda. Bagi L0, VPS ini hanya merupakan guest.
  • L2, VM yang ingin Anda jalankan di dalam VPS.

Virtualisasi hardware menggunakan VT-x (flag vmx) serta EPT pada Intel, dan AMD-V / SVM (svm) serta RVI/NPT pada AMD. Hypervisor menggunakan instruksi tersebut untuk masuk ke mode guest dan memungkinkan CPU menelusuri dua tabel halaman secara bersamaan.

Keduanya tidak dirancang untuk digunakan secara re-entrant, sehingga nesting diemulasikan: ketika L1 menjalankan instruksi VMX, instruksi tersebut melakukan trap ke L0. L0 kemudian mengelola struktur shadow untuk L2 atas nama L1. KVM menangani proses ini dengan baik, tetapi L0 tetap harus melakukan pekerjaan tambahan pada setiap exit. Karena itu, provider harus mengaktifkan fitur ini.

Dua kondisi berikut harus sama-sama terpenuhi agar L2 berjalan dengan akselerasi:

  1. Modul KVM pada L0 dimuat dengan nested=1.
  2. L0 memberikan VPS Anda model CPU yang membawa flag tersebut: <cpu mode='host-passthrough'/> pada libvirt, cpu: host pada Proxmox, dan -cpu host pada QEMU mentah. Model yang diemulasikan secara generik (qemu64, kvm64) menyembunyikan vmx meskipun nesting diaktifkan secara global.

Periksa VPS Anda dalam satu menit

# 1. Are you in a VM, and under what?
systemd-detect-virt          # kvm, vmware, xen, microsoft, or "none" on metal

# 2. Does the CPU expose the extensions to you?
grep -o -E 'vmx|svm' /proc/cpuinfo | sort -u
lscpu | grep -i -E 'virtual|hypervisor'

# 3. The definitive check
sudo apt update && sudo apt install -y cpu-checker
kvm-ok

# 4. The device node the whole stack depends on
ls -l /dev/kvm

Instance yang dapat digunakan menampilkan vmx atau svm, kvm-ok menunjukkan KVM acceleration can be used, dan /dev/kvm tersedia dengan mode root:kvm 660. Jika flag tersebut ada tetapi node perangkat tidak tersedia, muat modul secara manual lalu baca log kernel:

sudo modprobe kvm_intel     # or kvm_amd
sudo dmesg | tail -n 20

Ada satu file yang sering dikutip dan banyak disalahartikan:

cat /sys/module/kvm_intel/parameters/nested   # Y or N

Di dalam VPS Anda, file tersebut berisi pengaturan modul KVM milik Anda. Pengaturan ini menentukan apakah guest L2 dapat menjalankan guest tingkat ketiga secara bertingkat. File tersebut tidak menunjukkan apakah L0 mengaktifkan nesting untuk Anda. /proc/cpuinfo dan kvm-ok memberikan jawaban itu. Parameter nested adalah pengaturan yang Anda ubah pada mesin yang sepenuhnya Anda miliki:

echo 'options kvm_intel nested=1' | sudo tee /etc/modprobe.d/kvm-nested.conf
sudo modprobe -r kvm_intel && sudo modprobe kvm_intel

Penghapusan modul ditolak selama VM masih berjalan. Karena itu, matikan guest terlebih dahulu.

Mengapa sebagian besar host VPS menonaktifkannya

  • Migrasi langsung. Memberikan vmx kepada Anda berarti mengekspos model CPU yang membawa flag tersebut. Guest yang bergantung pada fitur CPU itu tidak dapat dimigrasikan dengan aman ke mesin yang CPU-nya tidak memiliki fitur tersebut. Host yang mengosongkan node dengan memigrasikan pelanggan harus mengorbankan kemampuan itu ketika mengaktifkan nesting.
  • Permukaan serangan. Jalur nested VMX/SVM termasuk kode paling kompleks dalam lapisan virtualisasi kernel, dengan riwayat CVE yang sebanding.
  • L0 mungkin bukan KVM. Jika systemd-detect-virt menampilkan vmware, xen, atau microsoft, aturan nesting ditentukan oleh stack tersebut, bukan oleh KVM.

Tidak ada flag pada instance Anda? Hubungi dukungan karena beberapa penyedia dapat mengaktifkannya per-VM, pilih paket yang mendokumentasikan dukungan nesting, atau pindah ke server khusus. Bagian selanjutnya mengasumsikan Anda memiliki akses root pada mesin yang menampilkan flag tersebut.

Menjalankan guest L2 dengan libvirt

sudo apt install -y qemu-system-x86 libvirt-daemon-system virtinst ovmf
sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt,kvm "$USER"   # log out and back in

virt-install \
  --name guest1 \
  --memory 2048 \
  --vcpus 2 \
  --cpu host-passthrough \
  --disk path=/var/lib/libvirt/images/guest1.qcow2,size=20,format=qcow2,bus=virtio \
  --network network=default,model=virtio \
  --os-variant debian13 \
  --location https://deb.debian.org/debian/dists/trixie/main/installer-amd64/ \
  --graphics none \
  --console pty,target_type=serial \
  --extra-args 'console=ttyS0,115200n8'

Sesi grafis tidak diperlukan. Instalasi serial berlangsung cukup lama, jadi jalankan di dalam shell persisten: workflow tmux yang mempertahankan sesi Claude Code tetap aktif pada VPS yang sama menjaga konsol virt-install tetap terhubung meskipun koneksi SSH terputus. Jika --os-variant debian13 ditolak, versi osinfo-db Anda lebih lama daripada rilis yang diperlukan. Jalankan osinfo-query os, lalu pilih nama yang tersedia. --cpu host-passthrough meneruskan vmx ke dalam L2. Fitur ini hanya diperlukan jika L2 juga harus melakukan virtualisasi. Buat guest aman untuk proses boot dengan virsh autostart guest1.

Bus virtio pada disk dan NIC bukan sekadar hiasan: perangkat IDE dan e1000 yang diemulasikan lebih sering memicu trap ke hypervisor daripada antrean virtio, dan dalam nesting setiap trap harus diproses dua kali.

Jaringan: bagian yang sering dilewati tutorial

VPS Anda memiliki satu IP publik dan berada di belakang fabric yang memfilter alamat MAC yang tidak dikenal. Dua konsekuensi berikut berlaku.

Bridging guest L2 ke jaringan publik biasanya tidak akan berfungsi. Tempatkan br0 pada NIC publik, berikan MAC sendiri kepada guest, lalu Anda akan melihat ARP keluar tanpa balasan apa pun karena switch provider menjatuhkan frame dari MAC yang tidak pernah mereka sewakan kepada Anda. Jika gejalanya seperti itu, hentikan proses debug bridge. Itulah mekanismenya.

Gunakan jaringan NAT. libvirt menyediakan default: virbr0, 192.168.122.0/24, serta lease dnsmasq, sehingga koneksi keluar langsung berfungsi. Untuk koneksi masuk, lakukan terminasi TLS pada L1 lalu teruskan koneksi melalui proxy. Path sertifikat di bawah ini berasal dari menerbitkan sertifikat Let's Encrypt dengan Certbot pada Nginx:

server {
    listen 443 ssl;
    server_name lab.example.com;

    ssl_certificate     /etc/letsencrypt/live/lab.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/lab.example.com/privkey.pem;

    location / {
        proxy_pass http://192.168.122.50:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Tetapkan lease statis untuk guest terlebih dahulu (virsh net-edit default) agar alamat pada proxy_pass tetap sama.

Jangan tempatkan antarmuka manajemen di Internet. VNC pada 5900 dan UI web Proxmox pada 8006 harus terikat ke loopback dan diakses melalui tunnel SSH (ssh -N -L 8006:127.0.0.1:8006 you@your-vps) atau melalui VPN WireGuard yang di-host sendiri ke VPS, sehingga seluruh rentang guest 192.168.122.0/24 hanya berjarak satu hop privat. Batasi firewall, sudo ufw allow 22,80,443/tcp, dan jangan izinkan yang lain. Jika guest kehilangan konektivitas keluar segera setelah Anda mengaktifkan ufw, penyebab yang biasanya adalah DEFAULT_FORWARD_POLICY="DROP" dalam /etc/default/ufw. Atur nilainya ke ACCEPT, lalu muat ulang ufw.

Proxmox pada VPS

Proxmox VE 9 menggunakan Debian 13 sebagai sistem dasarnya. Karena itu, Proxmox dapat diinstal pada VPS Debian dengan menambahkan repositori pve-no-subscription dan paket proxmox-ve. Ambil baris repositori dan keyring dari dokumentasi resmi Proxmox yang terbaru. URL yang disalin dari tulisan blog lama dapat menyebabkan instalasi gagal. Sebelum menghabiskan waktu untuk konfigurasi jaringan di bawah, tentukan terlebih dahulu apakah Proxmox memang sesuai dijalankan pada perangkat keras sewaan. Perbandingan biaya dan kemampuan antara perangkat Proxmox di rumah dan VPS sewaan membahas pertanyaan tersebut dengan perhitungan daya dan perangkat keras yang sudah tersedia.

Paket bukan bagian yang sulit. Proxmox mengharuskan vmbr0 dijembatankan ke NIC fisik. Konfigurasi ini langsung menghadapi kendala pemfilteran MAC yang dijelaskan di atas. Konfigurasi yang berfungsi pada VPS adalah vmbr0 yang menggunakan NAT atau routing tanpa port fisik terpasang, dengan guest pada rentang jaringan privat. Gunakan aturan DNAT atau reverse proxy pada host untuk layanan yang perlu diakses publik. Jika layanan yang menghadap publik berupa container, bukan VM, Traefik yang meneruskan beberapa aplikasi dari satu file Docker Compose dapat menjalankan fungsi routing yang sama dengan sertifikat otomatis. Buat snapshot /etc/network/interfaces terlebih dahulu. Definisi bridge yang salah dapat mengunci akses Anda ke mesin yang mungkin tidak menyediakan akses console.

Kinerja, dinyatakan secara jujur

Nested lebih lambat daripada satu tingkat, dan mekanismenya spesifik, bukan menyebar: akses memori bukan sumber biayanya, exit-lah yang menjadi sumbernya. Jika EPT/NPT tersedia, L0 mempertahankan shadow page tables untuk L2, dan pembacaan memori biasa berjalan pada kecepatan hardware. Yang menjadi mahal adalah setiap operasi yang keluar dari guest mode, termasuk I/O, interupsi timer, MMIO, dan interupsi antarprosesor, karena exit dari L2 ditangani oleh L0 dan dapat diteruskan kembali melalui L1. Pekerjaan yang dibatasi oleh CPU atas data yang sudah berada di RAM berjalan mendekati kecepatan native; pekerjaan yang didominasi syscall, paket, dan I/O disk akan merasakan lapisan-lapisan tersebut.

Jadi, gunakan perangkat virtio di semua tempat. Selain itu, file qcow2 Anda berada pada disk yang sudah divirtualisasi oleh provider. Dua lapisan thin provisioning bertumpuk, dan cache=none pada disk guest menghentikan blok yang sama agar tidak berada di dua page cache sekaligus. Tidak ada angka benchmark di sini: ukur beban kerja Anda sendiri pada instance Anda sendiri.

Mode kegagalan dan string yang akan Anda lihat

INFO: /dev/kvm does not exist / KVM acceleration can NOT be used dari kvm-ok. Modul tidak dimuat, atau flag tersebut tidak tersedia. Periksa /proc/cpuinfo terlebih dahulu.

kvm: disabled by bios di dmesg. Pada bare metal, ubah toggle VT-x/SVM di firmware. Di dalam VPS, ini berarti L0 tidak meneruskan ekstensi tersebut kepada Anda. Tidak ada perintah yang Anda jalankan di guest yang dapat mengubahnya.

modprobe: ERROR: could not insert 'kvm_intel': Operation not supported. CPU yang dilihat kernel Anda tidak memiliki vmx. Ini juga merupakan keputusan L0.

Could not access KVM kernel module: Permission denied. Masalahnya adalah izin, bukan perangkat keras. ls -l /dev/kvm seharusnya menampilkan group kvm dan mode 660. Tambahkan akun Anda ke group tersebut, lalu mulai login shell baru karena keanggotaan group tidak berlaku pada session yang sudah berjalan.

kvm: Device or resource busy saat QEMU dimulai. Modul hypervisor lain sedang menggunakan CPU. Jalankan lsmod, lalu cari vboxdrv atau modul VMware di samping kvm_intel. Bongkar modul yang tidak ingin Anda gunakan.

/var/run/libvirt/libvirt-sock: No such file or directory dari virsh. Daemon tidak berjalan: sudo systemctl enable --now libvirtd.

Proxmox: KVM virtualisation configured, but not available. Guest mengaktifkan akselerasi KVM pada host yang tidak dapat menyediakannya. Perbaiki nesting, atau nonaktifkan opsi tersebut dan gunakan emulasi.

Emulator Android: x86_64 emulation currently requires hardware acceleration! /dev/kvm lagi. Biasanya masalahnya adalah group.

Tidak ada error sama sekali, tetapi semuanya sangat lambat. QEMU tanpa flag akselerator akan beralih ke TCG, yaitu emulator perangkat lunaknya. Emulasi ini berfungsi dengan benar, tetapi lambat. Boot yang biasanya selesai dalam hitungan detik dapat memerlukan waktu beberapa menit. Teruskan -accel kvm secara eksplisit agar QEMU berhenti dengan error, bukan diam-diam menggunakan emulasi.

Guest menghilang saat sedang berjalan. Periksa dmesg untuk mencari Out of memory: Killed process ... qemu-system-x86_64. Guest L2 merupakan proses pada L1, sehingga OOM killer memperlakukannya seperti proses lain. RAM L2 berasal dari alokasi tetap L1 dan tidak dapat meminjam RAM dari host.

Mengoperasikannya: backup, upgrade, dan batasan

Backup. Menyalin qcow2 milik guest yang sedang berjalan akan menghasilkan image yang korup. Gunakan virsh shutdown guest1 terlebih dahulu lalu salin, atau buat snapshot eksternal (virsh snapshot-create-as guest1 snap1 --disk-only --atomic) agar penulisan dialihkan ke overlay saat Anda menyalin base yang kini statis, lalu gabungkan kembali dengan virsh blockcommit. Pindahkan salinan tersebut keluar dari VPS. Snapshot pada disk yang sama tidak memberikan perlindungan apa pun.

Upgrade. apt full-upgrade menginstal modul kvm_intel/kvm_amd baru, tetapi kernel yang sedang berjalan tetap menggunakan modul lama sampai Anda melakukan reboot. Pertahankan kernel sebelumnya dan jalankan kembali kvm-ok setelah setiap perubahan kernel. Dengan demikian, host yang kembali tanpa vmx masih dapat dipulihkan hanya dengan memilih entri boot lain.

Batas skalabilitas pendekatan ini. Satu IP publik berarti setiap service di L2 mengakses Internet melalui proxy atau aturan DNAT pada L1. Migrasi langsung tidak tersedia. Saat terjadi perebutan CPU, jalur nested exit adalah bagian pertama yang terdampak. Hypervisor dengan beberapa guest juga merupakan mesin yang RAM-nya sudah Anda alokasikan. VM nested tidak dapat mengatasi keterbatasan tersebut dengan overcommit karena alokasi tetap. Jika lab melebihi kapasitas ini, solusinya bukan menambah tingkat nested, melainkan menggunakan mesin khusus. Pada mesin tersebut, Anda menjadi L0 dan seluruh keterbatasan ini tidak berlaku.

FAQ

Apakah saya memerlukan virtualisasi bertingkat untuk menjalankan Docker pada VPS?

Tidak. Container menggunakan kernel VPS Anda dan tidak pernah membuka /dev/kvm, sehingga instance biasa tanpa flag vmx atau svm dapat menjalankan Docker dan Docker Compose dengan baik. Nesting hanya diperlukan jika Anda ingin menjalankan kernel kedua: lab Proxmox, guest Windows, microVM Firecracker, emulator Android, atau runner CI yang melakukan boot image VM.

Bagaimana cara memeriksa apakah VPS saya mendukung virtualisasi bertingkat?

Jalankan grep -o -E 'vmx|svm' /proc/cpuinfo | sort -u, lalu kvm-ok dari package cpu-checker. Instance yang dapat digunakan menampilkan vmx (Intel) atau svm (AMD), kvm-ok melaporkan KVM acceleration can be used, dan /dev/kvm tersedia dengan group kvm serta mode 660. Abaikan /sys/module/kvm_intel/parameters/nested untuk pertanyaan ini. File tersebut menjelaskan modul KVM Anda sendiri, bukan kemampuan yang diekspos hypervisor provider kepada Anda.

Mengapa sebagian besar provider VPS menonaktifkan virtualisasi bertingkat?

Mengekspos vmx berarti memberikan model CPU kepada guest yang membawa flag tersebut. Guest yang bergantung pada fitur CPU itu tidak dapat dimigrasikan secara live ke mesin yang CPU-nya tidak memiliki fitur tersebut. Provider yang mengosongkan node dengan memindahkan pelanggan harus mengorbankan kemampuan itu. Jalur kode VMX/SVM bertingkat juga memiliki riwayat CVE yang panjang. Sebagian host tetap mengaktifkannya per-VM berdasarkan permintaan, sedangkan provider lain mendokumentasikan nesting sebagai fitur paket.

VM bertingkat saya tidak memiliki jaringan pada bridge publik. Apa masalahnya?

Switch milik provider menjatuhkan frame dari alamat MAC yang tidak pernah disewakan kepada Anda. Akibatnya, guest L2 yang dijembatani ke NIC publik mengirim ARP tetapi tidak menerima respons. Hentikan pemeriksaan pada br0. Gunakan jaringan NAT libvirt default (virbr0, 192.168.122.0/24), berikan lease statis kepada guest, lalu publikasikan layanan apa pun melalui reverse proxy atau aturan DNAT pada VPS itu sendiri.

Seberapa lambat VM bertingkat?

Biaya kinerja muncul pada VM exit, bukan pada akses memori. Dengan EPT/NPT aktif, operasi baca dan tulis biasa di dalam L2 berjalan pada kecepatan hardware. Sebaliknya, I/O, interupsi timer, MMIO, dan IPI ditangani oleh L0 dan dapat diteruskan kembali melalui L1. Beban kerja yang terikat CPU dan datanya sudah berada di RAM biasanya mendekati kecepatan native. Beban kerja yang banyak menggunakan syscall, packet, atau disk akan merasakan setiap lapisan. Gunakan perangkat virtio di semua tempat dan cache=none pada disk guest, lalu ukur beban kerja Anda sendiri.