Skip to content

Perangkat Keras & PCI Passthrough

Vapor memungkinkan Anda menetapkan perangkat keras fisik secara langsung ke Mesin Virtual menggunakan PCIe Passthrough (VFIO).

Prasyarat

Untuk menggunakan PCI Passthrough, perangkat keras host Anda harus mendukung IOMMU (Intel VT-d atau AMD-Vi), dan itu harus diaktifkan dalam parameter BIOS dan Kernel host.

Menetapkan Perangkat PCI

  1. Pastikan VM dimatikan (powered off).
  2. Navigasi ke tab Hardware dari VM tersebut.
  3. Klik Add PCI Device.
  4. Vapor akan mencantumkan semua perangkat PCI yang tersedia pada host (mis., GPU, Kartu Jaringan, pengontrol NVMe).
  5. Pilih perangkat dan simpan.

WARNING

Menetapkan perangkat PCI ke VM menghapus perangkat tersebut dari OS host. Jangan menetapkan kartu jaringan yang Anda gunakan untuk mengakses konsol web Vapor, atau Anda akan kehilangan konektivitas!

Hotplugging

Vapor mendukung hotplugging untuk komponen perangkat keras virtual tertentu tanpa mematikan VM:

  • Disks: Anda dapat memasang disk virtual baru ke VM yang sedang berjalan.
  • Network Interfaces: Anda dapat menambah atau menghapus antarmuka jaringan virtual.

(Catatan: Hotplugging CPU dan Memori memerlukan dukungan OS Tamu tertentu dan mungkin tidak tersedia untuk semua varian OS).


NVIDIA vGPU (Mediated Devices)

PCI Passthrough memberikan satu GPU utuh ke satu VM. NVIDIA vGPU membagi (slice) satu GPU enterprise menjadi beberapa GPU virtual sehingga beberapa VM dapat menggunakannya secara bersamaan — misalnya, delapan VM masing-masing menerima bagian 2 GB dari Tesla T4 16 GB.

Setiap bagian adalah mediated device (mdev): sebuah instans yang dibuat pada host dari profil yang menetapkan ukuran framebuffer, display head, dan resolusi maksimumnya.

Passthrough atau vGPU?

PCI PassthroughvGPU
VM per GPUSatuBanyak
Model GPUApa sajaHanya yang mendukung NVIDIA vGPU
Lisensi tambahanTidak adaMemerlukan perangkat lunak NVIDIA vGPU
Driver hostTidak ada (perangkat tersembunyi dari host)NVIDIA vGPU Manager
Driver tamuDriver NVIDIA standarDriver tamu NVIDIA vGPU (GRID)

IMPORTANT

GPU tidak dapat melakukan keduanya secara bersamaan. Saat sebuah kartu ditetapkan ke VM sebagai perangkat passthrough, kartu tersebut terikat ke vfio-pci dan tidak dapat melayani vGPU, begitu pula sebaliknya.

A. Persyaratan

  • GPU NVIDIA yang mendukung vGPU — Tesla T4, V100, A100, H100, L40, RTX 6000 Ada dan kartu pusat data serupa. Kartu GeForce konsumen tidak mendukung vGPU.
  • Lisensi dan hak akses perangkat lunak NVIDIA vGPU, yang memberi Anda akses ke NVIDIA Licensing Portal.
  • IOMMU diaktifkan pada host (Intel VT-d atau AMD-Vi), seperti halnya PCI passthrough.
  • Kernel header dan build tool host, karena driver dikompilasi untuk kernel yang sedang berjalan.

TIP

Pada GPU berbasis arsitektur Ampere dan yang lebih baru, fungsi virtual SR-IOV harus diaktifkan pada host sebelum profil vGPU muncul (/usr/lib/nvidia/sriov-manage -e <pci_address>), dan instans dibuat terhadap fungsi virtual, bukan kartu fisik. Kartu yang lebih tua seperti Tesla T4 tidak memerlukan langkah ini.

B. Mendapatkan Driver

Vapor tidak dapat menyertakan atau mengunduh driver NVIDIA untuk Anda. Driver tersebut adalah perangkat lunak berlisensi dan portal NVIDIA memerlukan akun Anda sendiri — jadi Anda mengunduhnya berdasarkan hak akses Anda dan mengunggahnya ke Vapor.

  1. Masuk ke NVIDIA Licensing Portal dengan akun enterprise Anda.
  2. Unduh paket NVIDIA vGPU software untuk Linux KVM. Paket ini berupa arsip tunggal yang berisi driver host dan driver tamu.
  3. Ekstrak paket tersebut. Anda memerlukan dua file:
    • Driver host: NVIDIA-Linux-x86_64-<version>-vgpu-kvm.run — diinstal pada host Vapor.
    • Driver tamu: dari folder Guest_Drivers — diinstal di dalam setiap VM.

WARNING

Driver host dan driver tamu harus berasal dari cabang rilis yang sama. Driver host 550.144.02 berpasangan dengan driver tamu 550.144.03. Mencampur cabang — misalnya driver tamu 570.x dengan host 550.x — tidak didukung dan akan gagal. Karena arsip NVIDIA berisi beberapa versi dengan nama file yang hampir identik, periksa versinya sebelum mengunggah.

C. Mengunggah Driver ke Host

  1. Navigasi ke Third-Party Libraries.
  2. Temukan ubin NVIDIA vGPU Manager.
  3. Pilih driver host *-vgpu-kvm.run dan klik Upload.

Proses pengunggahan dapat dilanjutkan (resumable), sehingga koneksi yang terputus akan melanjutkan dari titik terakhir alih-alih memulai ulang transfer.

D. Memeriksa Kesiapan Host

Ubin NVIDIA vGPU Manager mencantumkan setiap prasyarat beserta statusnya saat ini. Setiap prasyarat diperiksa secara independen, sehingga Anda dapat melihat dengan jelas prasyarat mana yang menjadi kendala:

PemeriksaanArtinya
NVIDIA GPU presentKartu yang mendukung vGPU ditemukan pada bus PCI.
IOMMU enabledHost di-boot dengan intel_iommu=on atau amd_iommu=on.
GPU free for the vGPU driverKartu tidak terikat ke vfio-pci. Jika terikat, pemeriksaan menyebutkan nama VM yang meloloskannya.
Kernel headers for the running kernelHeader yang cocok dengan kernel yang di-boot sudah diinstal.
Build toolchaingcc, make, dan dkms tersedia.
Secure BootSecure Boot tidak memblokir modul yang tidak ditandatangani.
nouveau not holding the GPUDriver nouveau sumber terbuka tidak dimuat.
vGPU Manager package uploadedPaket driver host tersimpan di host.
vGPU driver activeDriver telah dimuat dan GPU mengiklankan profil.

Selesaikan masalah yang dilaporkan hilang sebelum menginstal. Dua hal yang perlu diperhatikan:

  • Kernel header. Instal paket yang cocok dengan kernel yang sedang berjalan — linux-headers-$(uname -r) — bukan metapaket generik linux-headers-amd64, yang mungkin melacak kernel yang lebih baru daripada yang sedang di-boot. Driver dibangun terhadap kernel yang berjalan dan akan gagal jika ada perbedaan.
  • GPU masih digunakan. Jika kartu diteruskan ke VM, hentikan VM tersebut dan lepaskan kartunya:
    bash
    virsh nodedev-reattach pci_0000_81_00_0

E. Menginstal Driver Host

  1. Di ubin NVIDIA vGPU Manager, temukan Guided install.
  2. Klik Install driver, lalu konfirmasi.

Proses instalasi membangun modul kernel, memuatnya, memulai layanan nvidia-vgpud dan nvidia-vgpu-mgr, serta mengonfirmasi bahwa profil vGPU telah muncul. Kemajuan ditampilkan saat berjalan dan biasanya selesai dalam satu hingga dua menit. Jika gagal, perluas Show log — output build menjelaskan alasannya.

CAUTION

Menginstal akan menggantikan modul kernel NVIDIA yang sedang berjalan. Vapor menolak untuk memulai selama ada instans vGPU yang aktif, karena menghentikan muatan (unloading) driver akan mengambil GPU dari VM yang sedang berjalan. Hentikan VM tersebut dan hapus instans vGPU mereka terlebih dahulu.

Ketika berhasil, Anda akan melihat pesan seperti "vGPU Manager installed — 1 GPU(s) offering 14 profiles", dan pemeriksaan vGPU driver active berubah menjadi hijau. Reboot biasanya tidak diperlukan; jika diperlukan, Vapor akan menyatakannya secara eksplisit.

F. Menambahkan vGPU ke VM

vGPU dikonfigurasi dalam wizard VM, baik untuk mesin baru maupun mesin yang sudah ada.

  1. Buat VM baru, atau edit VM yang ada yang dalam kondisi dimatikan (powered off).
  2. Buka Step 4 — Hardware, lalu Advanced Configuration.
  3. Di bawah NVIDIA vGPU (Mediated Device), klik + Add vGPU (Mediated Device).
  4. Pilih profil. Pemilih dapat dicari berdasarkan nama, ID profil, ukuran VRAM, atau GPU, dan menampilkan berapa banyak bagian yang tersisa dari masing-masing profil. Profil tanpa sisa kapasitas tidak dapat dipilih.
  5. Biarkan Existing mdev Device UUID kosong — Vapor membuat instans untuk Anda dan menghancurkannya saat VM dihapus. Isi opsi ini hanya untuk memasang instans yang Anda buat sendiri.
  6. Guest PCI Address bersifat opsional; biarkan kosong kecuali Anda perlu menetapkan perangkat ke slot tertentu di dalam VM tamu.
  7. Simpan dan selesaikan wizard.

IMPORTANT

vGPU hanya dapat ditambahkan atau dihapus saat VM dalam kondisi dimatikan (powered off). NVIDIA vGPU tidak mendukung hot-plug maupun hot-unplug, sehingga kontrol ini dinonaktifkan pada VM yang sedang berjalan. Perubahan yang dibuat melalui API terhadap VM yang sedang berjalan ditulis ke konfigurasi yang tersimpan dan akan berlaku pada restart berikutnya.

Penamaan profil

Profil mengikuti pola GRID <kartu>-<ukuran><seri>, misalnya GRID T4-2Q:

  • Q — Virtual Workstation. Grafis profesional dan CUDA. Pilihan umum untuk komputasi.
  • C — Compute Server. Khusus komputasi, tanpa tampilan.
  • B — Virtual PC. Beban kerja kantor dan browser, tanpa CUDA.
  • A — Virtual Application. Streaming aplikasi.

Angka tersebut adalah ukuran framebuffer dalam gigabita, jadi T4-2Q adalah profil workstation 2 GB dan Tesla T4 16 GB dapat menampung delapan profil tersebut.

G. Menginstal Driver Tamu

VM melihat vGPU sebagai perangkat PCI segera setelah booting, tetapi tetap tidak aktif sampai driver tamu diinstal di dalam VM. Ini adalah instalasi perangkat lunak biasa di dalam VM tamu yang dilakukan oleh administrator VM sendiri — Vapor tidak terlibat.

Sebelum memulai, konfirmasikan bahwa VM tamu dapat melihat perangkat tersebut:

bash
lspci -nn | grep -i nvidia
# 05:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU104GL [Tesla T4] [10de:1eb8]

Jika tidak ada yang terdaftar, vGPU tidak terpasang — kembali ke bagian F.

TIP

Instal driver sekali dalam golden image atau templat, lalu klon VM darinya. Driver tetap ada setelah pengklonaan, sehingga seluruh bagian ini menjadi pekerjaan satu kali per image alih-alih per VM.

G.1 Memasukkan Penginstal ke dalam VM

Gunakan metode apa pun yang sesuai dengan lingkungan Anda:

  • Melalui jaringan, jika VM memiliki konektivitas dan SSH:
    bash
    scp NVIDIA-Linux-x86_64-<version>-grid.run user@<vm-ip>:~/
  • Dari host melalui HTTP, berguna untuk VM pada jaringan NAT libvirt tanpa SSH masuk. Di host, sajikan direktori yang menyimpan driver tamu:
    bash
    cd /path/to/Guest_Drivers && python3 -m http.server 8000 --bind 192.168.122.1
    Kemudian di dalam VM, di mana 192.168.122.1 adalah gateway libvirt:
    bash
    curl -O http://192.168.122.1:8000/NVIDIA-Linux-x86_64-<version>-grid.run
    Hentikan server setelah selesai.
  • Sebagai CD-ROM virtual, jika VM tidak memiliki jaringan: buat ISO yang berisi driver, unggah di bawah ISO Images, dan pasangkan ke VM.

G.2 Debian dan Ubuntu

bash
# Prasyarat. Gunakan header yang cocok dengan kernel yang BERJALAN — metapaket
# linux-headers-amd64 generik mungkin melacak kernel yang lebih baru daripada yang di-boot,
# dan driver dibangun terhadap kernel yang berjalan.
sudo apt-get update
sudo apt-get install -y dkms build-essential "linux-headers-$(uname -r)"

# Instal driver
sudo dpkg -i nvidia-linux-grid-<branch>_<version>_amd64.deb

sudo reboot

WARNING

Pada Debian, .deb milik NVIDIA menyatakan dependensi pada paket bernama linux-headers, yang tidak ada di arsip Debian — paket yang sebenarnya adalah linux-headers-amd64 dan linux-headers-<version>, dan keduanya tidak menyediakan (provides) nama tersebut. Ini adalah karakteristik Ubuntu pada pengemasan NVIDIA dan akan menghentikan dpkg di tengah instalasi.

Selesaikan secara bersih dengan shim equivs daripada memaksakan dpkg, yang membuat database paket tidak konsisten:

bash
sudo apt-get install -y equivs
cat > linux-headers-shim <<EOF
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: linux-headers
Version: $(uname -r)
Provides: linux-headers
Depends: linux-headers-$(uname -r)
Description: Satisfies the NVIDIA guest driver's bare linux-headers dependency
EOF
equivs-build linux-headers-shim
sudo dpkg -i linux-headers_*.deb

# Sekarang driver dapat diinstal secara normal
sudo dpkg -i nvidia-linux-grid-<branch>_<version>_amd64.deb
sudo reboot

Atau, lewati masalah pengemasan sepenuhnya dengan menggunakan penginstal .run yang dijelaskan di G.4.

G.3 RHEL, Rocky, dan AlmaLinux

bash
sudo dnf install -y dkms gcc make "kernel-devel-$(uname -r)" "kernel-headers-$(uname -r)"
sudo rpm -ivh nvidia-linux-grid-<branch>-<version>.x86_64.rpm
sudo reboot

G.4 Distribusi Linux Apa Pun (Penginstal .run)

Penginstal .run bekerja di mana saja dan melepaskan diri dari keunikan pengemasan distribusi, tetapi tidak memperbarui dirinya sendiri melalui manajer paket Anda.

bash
sudo sh NVIDIA-Linux-x86_64-<version>-grid.run --dkms
sudo reboot

Opsi --dkms mendaftarkan modul ke DKMS sehingga dibangun kembali secara otomatis ketika kernel tamu diperbarui. Tanpanya, driver akan berhenti dimuat setelah pembaruan kernel berikutnya.

Jika penginstal melaporkan konflik dengan nouveau, izinkan penginstal menulis daftar hitam (blacklist), lalu reboot dan jalankan kembali.

G.5 Windows

  1. Salin file penginstal driver tamu .exe ke dalam VM.
  2. Jalankan dan terima pengaturan default.
  3. Reboot.
  4. Konfirmasikan bahwa adaptor muncul di Device Manager di bawah Display adapters.

G.6 Verifikasi

Di dalam VM tamu:

bash
nvidia-smi

Perintah ini harus melaporkan nama profil dan ukuran framebuffer yang Anda pilih, misalnya:

| GPU  Name                 Persistence-M | Bus-Id          Disp.A |
|   0  GRID T4-2Q                     On  |   00000000:05:00.0 Off |
|                                         |       1MiB /   2048MiB |

Untuk mengonfirmasi bahwa tamu benar-benar menggunakan vGPU dan bukan kartu passthrough:

bash
nvidia-smi -q | grep -A2 "GPU Virtualization Mode"
#     Virtualization Mode : VGPU

Di host, sesi yang sama harus terlihat dari sisi luar, yang juga mengonfirmasi bahwa driver host dan tamu saling berkomunikasi:

bash
nvidia-smi vgpu
#   0  Tesla T4    | 00000000:81:00.0 |   0%
#      3251634273  GRID T4-2Q | 0c6a...  my-vm |   0%

G.7 Lisensi Tamu

Tanpa server lisensi, driver tetap dapat dimuat dan nvidia-smi berfungsi dengan melaporkan status Unlicensed. Konfigurasikan alamat Delegated License Service (DLS) atau Cloud License Service (CLS) Anda di /etc/nvidia/gridd.conf di dalam VM tamu (atau melalui NVIDIA control panel di Windows) untuk melisensikannya secara penuh.

H. Mengelola Perangkat vGPU pada Host

Virtualization → vGPU Devices menampilkan setiap mediated device pada host, secara independen dari VM mana pun.

  • Capacity per profil, dengan profil yang sudah habis diredupkan.
  • Assigned To — VM yang memegang masing-masing instans, atau lencana Unassigned.
  • Create instans baru terlebih dahulu.
  • Remove instans untuk mengembalikan kapasitasnya ke GPU.

TIP

Menghapus vGPU dari VM tidak selalu menghancurkan instans yang mendasarinya. Instans yang dibuat Vapor untuk VM akan dihancurkan bersamanya, tetapi instans yang Anda buat sendiri hanya akan dilepaskan. Instans yang tidak ditetapkan (unassigned) tetap mengkonsumsi kapasitas GPU, jadi periksa halaman ini jika bagian (slice) gratis tampaknya hilang.

I. Pemecahan Masalah (Troubleshooting)

Tidak ada profil vGPU yang muncul di wizard. Periksa ubin NVIDIA vGPU Manager. Penyebab paling umum adalah driver host vGPU Manager belum diinstal — driver pusat data NVIDIA standar dan driver nouveau sumber terbuka tidak menyediakan vGPU, dan hanya paket vgpu-kvm yang membuat pohon profil.

"No capacity left for profile … available_instances is 0". Pada GPU tanpa SR-IOV (termasuk Tesla T4), kartu dikunci ke satu ukuran framebuffer selama instans apa pun ada. Jika Anda memiliki instans 2 GB yang berjalan, hanya profil 2 GB lainnya yang dapat dibuat. Untuk mengganti ukuran, hapus setiap instans yang ada pada GPU tersebut terlebih dahulu — termasuk instans yang belum ditetapkan (unassigned), yang terlihat di bawah vGPU Devices.

VM tidak dapat dimulai setelah reboot host. Vapor membuat instans secara persisten sehingga dibuat ulang secara otomatis saat boot. Instans yang dibuat di luar Vapor — dengan penulisan sysfs langsung, misalnya — bersifat sementara (transient) dan menghilang saat reboot, membuat VM mereferensikan perangkat yang tidak ada lagi. Periksa dengan:

bash
mdevctl list -d

Instans yang ditandai auto dibuat ulang saat boot.

nvidia-smi tidak ada di dalam VM. Driver tamu belum diinstal. Lihat bagian G.

Driver tamu terinstal tetapi nvidia-smi melaporkan kesalahan. Cabang driver host dan tamu kemungkinan tidak cocok. Bandingkan nvidia-smi pada host dengan versi driver tamu — keduanya harus berasal dari cabang yang sama.