Episode ini membahas konsep PCIe passthrough, konfigurasi IOMMU Intel VT-d dan AMD-Vi, blacklist driver GPU host, meneruskan GPU ke VM untuk training dan transcoding, serta nested virtualization untuk menjalankan hypervisor di dalam VM.

Selama ini VM hanya melihat perangkat virtual — CPU virtual, disk virtual, NIC virtual. Tapi ada beban kerja yang menuntut perangkat fisik: training machine learning, transcoding video, atau gaming. Episode 16 membuka pintu ke dunia ini melalui PCIe passthrough.
Kita akan memahami konsep passthrough, mengaktifkan IOMMU di BIOS dan Proxmox, mem-bypass driver GPU host, lalu meneruskan GPU ke VM. Di akhir episode, kita juga membahas nested virtualization — menjalankan virtualisasi di dalam virtualisasi.
PCIe passthrough memberikan VM akses langsung ke perangkat fisik di bus PCIe — GPU, NIC, atau storage controller. VM tidak lagi melihat perangkat virtual yang diemulasi, melainkan hardware asli. Efeknya: performa hampir sama dengan bare-metal, karena tidak ada lapisan emulasi.
Emulasi : VM -> driver virtual -> host -> perangkat fisik
Passthrough : VM -> driver asli -> perangkat fisik (langsung)Sisi negatifnya: perangkat yang di-passthrough tidak bisa dipakai VM lain, dan migrasi live tidak didukung karena hardware terikat pada node.
Sebelum konfigurasi, kenali perangkat dan address PCI-nya:
lspci -nnk | grep -A3 -i vgaPerintah lspci -nnk menampilkan semua perangkat PCI beserta driver yang sedang memakainya. Catat address seperti 01:00.0 dan ID vendor untuk GPU kalian.
Langkah pertama adalah IOMMU — teknologi yang memungkinkan perangkat berbagi dengan aman. Aktifkan di BIOS: Intel VT-d untuk Intel, AMD-Vi untuk AMD. Lalu beri tahu kernel:
nano /etc/default/grubTambahkan parameter di baris GRUB_CMDLINE_LINUX_DEFAULT. Untuk Intel: intel_iommu=on iommu=pt. Untuk AMD: amd_iommu=on iommu=pt. Simpan lalu:
update-grub
rebootSetelah reboot, verifikasi IOMMU aktif:
dmesg | grep -e DMAR -e IOMMUGPU tidak bisa di-passthrough selama driver host masih memakainya. Blacklist driver — nouveau dan nvidia untuk NVIDIA, amdgpu untuk AMD:
echo "blacklist nouveau" > /etc/modprobe.d/blacklist-gpu.conf
update-initramfs -uTambahkan juga module vfio-pci ke daftar module yang di-load saat boot agar GPU langsung dipegang oleh VFIO.
Dengan IOMMU aktif dan driver host di-bypass, tambahkan GPU sebagai perangkat di VM. Dari web UI, buka VM -> Hardware -> Add -> PCI Device, pilih GPU berdasarkan address, centang opsi seperti Primary GPU jika VM memakai GPU sebagai display utama, lalu ROM-Bar sesuai kebutuhan.
Raw Device: 01:00.0 (GPU) -> dihubungkan langsung ke VMInstall driver di dalam guest (NVIDIA atau AMD sesuai GPU), dan GPU akan terdeteksi sebagai hardware asli.
GPU passthrough membuka banyak skenario:
Untuk gaming, tambahkan juga passthrough USB controller atau gunakan Looking Glass untuk display berlatensi rendah.
Nested virtualization memungkinkan VM menjalankan hypervisor lagi di dalamnya — Docker, Kubernetes, bahkan ESXi atau Proxmox di dalam VM Proxmox. Aktifkan dengan satu pengaturan:
qm set 100 --args "-cpu host,+vmx"Perintah qm set 100 --args "-cpu host,+vmx" menambahkan flag +vmx (atau +svm untuk AMD) ke CPU VM, sehingga guest melihat dukungan virtualisasi dan bisa menjalankan hypervisor sendiri. Ini pola umum untuk laboratorium, testing, dan menjalankan container engine secara efisien.
Warning
Passthrough dan nested virtualization peka terhadap versi BIOS, kernel, dan hardware. Lakukan riset dulu untuk kombinasi hardware kalian, dan siapkan rencana rollback — konfigurasi yang salah bisa membuat node tidak boot.
Episode 16 membuka akses penuh ke hardware: memahami PCIe passthrough, mengaktifkan IOMMU, mem-bypass driver GPU host, meneruskan GPU ke VM untuk ML, transcoding, dan gaming, serta mengaktifkan nested virtualization untuk hypervisor di dalam VM.
Inti yang harus dibawa pulang:
+vmx atau +svm.Di episode 17 selanjutnya kita akan membahas infrastructure automation — provisioning VM dengan Terraform dan OpenTofu lewat provider bpg/proxmoxve, mengelola lifecycle dengan Ansible, hingga alur otomatis end-to-end dari template cloud-init sampai software stack terkonfigurasi. Manual provisioning sudah saatnya ditinggalkan; selamat datang di era Infrastructure as Code!