Passthrough ve virtuálních strojích (VM) je technika, která umožňuje hostujícímu operačnímu systému (OS) přímý přístup k hardwarovým zařízením, která jsou normálně spravována hostitelským OS. Tento přístup obchází hostitelský OS, což může významně zvýšit výkon a umožnit hostujícímu OS využít zařízení, jako by bylo přímo připojeno k jeho vlastnímu hardwaru.
Existují dvě běžné aplikace passthrough technologie:
PCI Passthrough: Umožňuje hostujícímu OS přístup k PCI zařízením (jako jsou grafické karty, síťové karty atd.). To je užitečné například pro hráče, kteří chtějí využívat výkonnou grafickou kartu přímo ve virtuálním stroji.
USB Passthrough: Umožňuje hostujícímu OS přístup k USB zařízením (jako jsou USB disky, tiskárny, kamery atd.). To je užitečné pro případy, kdy je nutné používat specifická USB zařízení ve virtuálním prostředí.
————————————————————————————————————————————-
Ujistěte se, že máte povolené VT-d (pro Intel) nebo AMD-Vi (pro AMD) v BIOSu hostitelského stroje a v Proxmox VE node terminal:
# dmesg | grep -e DMAR -e IOMMU
Povolení IOMMU v Proxmox VE na hostitelském serveru a na hostovaném VM OS Linux :
Otevrete /etc/default/grub a pridejte intel_iommu=on nebo amd_iommu=on
ideálně vypadající grub:
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on iommu=pt nofb nomodeset video=vesafb:off,efifb:off initcall_blacklist=sysfb_init“
nomodeset se zadává pouze na hostitelském serveru pouze v node proxmox ve.
Ostatní parametry jsou třeba doplnit i na hostovaném OS např. ve VM OS Linux.
info: nofb a vesafb, efifb = nechceme frame buffer, protože na vzdálené ploše to dělá nepořádek.
——————————————————- Přidání na blacklist u hostovaného a hostitelském OS Linux :
echo „blacklist nouveau“ >> /etc/modprobe.d/blacklist.conf
echo „blacklist nvidiafb“ >> /etc/modprobe.d/blacklist.conf
——————————————————-
na hostitelském serveru přidejte do /etc/modules :
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
————————
… V obou případech aktualizujte grub pro načtení při spuštění :
# sudo update-grub
…. a aktualizujeme přidání nových modulů
# sudo update-initramfs -u
Poté se můžeme vrhnout na instalaci ovladačů pro vaše GPU
————————————————————————————————————————————-
Aby jste mohli passthrough naplno využít multi GPU HW, je třeba určit podle vendoru a ID, konkrétní GPU určené pro hostované VM OS.
Což je třeba udělat na vašem node v Proxmox VE.
příklad vypadající informace o hardwaru GPU :
# lspci -nn | grep -i vga
..class…..device……ID……..iommgroup….vendor….name …..
¦0x030000¦0x24b0¦0000:84:00.0 ¦….5…..¦… 0x10de..¦..GA104GL [RTX A4000]
84:00.0 0300: 10de:24b0 (rev a1) GPU
84:00.1 0403: 10de:228b (rev a1) GPU Sound output
Musí se dát vědět Proxmoxu, že nechceme aby využíval tyto GPU, nebo HW, protože jej chceme používat v modu passthrough ve vybraném hostovaném VM OS.
# sudo nano /etc/modprobe.d/vfio.conf pridej radek takto >
options vfio-pci ids=10de:24b0, 10de:228b, … dalsi HW
V configu vfio.conf se IDs skládá z vendor bez 0x a device bez 0x
,což znamená dvě 32bit. hodnoty.
Pokud používáte více kusů stejného hardware, budou mít IDs ve vfio.conf stejnou hodnotu a nemusíte je uvádět duplicitně.
Což znamená, že blíže specifikovat číslo karty GPU, nebo HW, upřesníte přímo v nastavení hardwaru pro VM v proxmox VE, a to přidáním PCI hardwaru.
Doporučuji zaškrtnout PCI-E pro GPU a doplnit Vendor a ID, pokud používáte i zvuk z GPU uvedete jako podřazený vendor a ID, zvuku.
Vendor ID zvuku naleznete ve výpisu při nastavení hardwaru ve stejném kroku.
——————– IOMMU skupiny ————————————–
Ověř, zda jsou obě GPU v samostatných IOMMU skupinách.
Použij tento příkaz:
for d in /sys/kernel/iommu_groups/*; do echo „IOMMU group $(basename „$d“)“; for i in „$d/devices/“*; do echo -n „$(basename „$i“) „; lspci -nns „${i##*/}“; done; done
———————–Kontrola ve virtuálním stroji (VM)—————————————
Uvnitř virtuálního stroje spusť příkaz: lspci -nnk | grep -i vga.
Tento příkaz by měl zobrazit obě GPU a ovladače, které je používají.
Pokud jsou GPU správně předány, měly by být detekovány virtuálním strojem a používány ovladači nainstalovanými ve VM.
————-CUDA a ověření funkčnosti passthrought ve VM OS ——————————————————–
Můžete použít samozřejmě příkaz : nvidia-smi
Můžeš použít nástroje pro testování grafického výkonu (např. glxgears nebo Unigine Heaven) k ověření funkčnosti GPU.
—————————–
bylo Ubuntu 6.06 LTS (Dapper Drake), které vyšlo 1. června 2006 jako čtvrté vydání Canonical. Až do vydání Ubuntu 12.04 LTS (Precise Pangolin), které bylo k dispozici 26. dubna 2012, měly verze LTS tříletou podporu na Ubuntu Desktop a pět let na Ubuntu Serveru.
2 komentáře
Autor
Pokud si neplatíte předplatné u Proxmox VE, je třeba nezapomenout přepnout v update na balíčky no-subscribe.
Autor
Passthrough ve virtuálních strojích (VM) je technika, která umožňuje hostujícímu operačnímu systému (OS) přímý přístup k hardwarovým zařízením, která jsou normálně spravována hostitelským OS. Tento přístup obchází hostitelský OS, což může významně zvýšit výkon a umožnit hostujícímu OS využít zařízení, jako by bylo přímo připojeno k jeho vlastnímu hardwaru.
Existují dvě běžné aplikace passthrough technologie:
PCI Passthrough: Umožňuje hostujícímu OS přístup k PCI zařízením (jako jsou grafické karty, síťové karty atd.). To je užitečné například pro hráče, kteří chtějí využívat výkonnou grafickou kartu přímo ve virtuálním stroji.
USB Passthrough: Umožňuje hostujícímu OS přístup k USB zařízením (jako jsou USB disky, tiskárny, kamery atd.). To je užitečné pro případy, kdy je nutné používat specifická USB zařízení ve virtuálním prostředí.
————————————————————————————————————————————-
Ujistěte se, že máte povolené VT-d (pro Intel) nebo AMD-Vi (pro AMD) v BIOSu hostitelského stroje a v Proxmox VE node terminal:
# dmesg | grep -e DMAR -e IOMMU
Povolení IOMMU v Proxmox VE na hostitelském serveru a na hostovaném VM OS Linux :
Otevrete /etc/default/grub a pridejte intel_iommu=on nebo amd_iommu=on
ideálně vypadající grub:
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on iommu=pt nofb nomodeset video=vesafb:off,efifb:off initcall_blacklist=sysfb_init“
nomodeset se zadává pouze na hostitelském serveru pouze v node proxmox ve.
Ostatní parametry jsou třeba doplnit i na hostovaném OS např. ve VM OS Linux.
info: nofb a vesafb, efifb = nechceme frame buffer, protože na vzdálené ploše to dělá nepořádek.
——————————————————-
Přidání na blacklist u hostovaného a hostitelském OS Linux :
echo „blacklist nouveau“ >> /etc/modprobe.d/blacklist.conf
echo „blacklist nvidiafb“ >> /etc/modprobe.d/blacklist.conf
——————————————————-
na hostitelském serveru přidejte do /etc/modules :
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
————————
… V obou případech aktualizujte grub pro načtení při spuštění :
# sudo update-grub
…. a aktualizujeme přidání nových modulů
# sudo update-initramfs -u
Doporučená doinstalace knihoven do Proxmox VE node hostitelský server:
apt install dkms libc6-dev proxmox-default-headers –no-install-recommends
apt install -y pve-headers-$(uname -r)
apt install build-essential pkg-config xorg xorg-dev libglvnd0 libglvnd-dev
Poté se můžeme vrhnout na instalaci ovladačů pro vaše GPU
————————————————————————————————————————————-
Aby jste mohli passthrough naplno využít multi GPU HW, je třeba určit podle vendoru a ID, konkrétní GPU určené pro hostované VM OS.
Což je třeba udělat na vašem node v Proxmox VE.
příklad vypadající informace o hardwaru GPU :
# lspci -nn | grep -i vga
..class…..device……ID……..iommgroup….vendor….name …..
¦0x030000¦0x24b0¦0000:84:00.0 ¦….5…..¦… 0x10de..¦..GA104GL [RTX A4000]
84:00.0 0300: 10de:24b0 (rev a1) GPU
84:00.1 0403: 10de:228b (rev a1) GPU Sound output
Musí se dát vědět Proxmoxu, že nechceme aby využíval tyto GPU, nebo HW, protože jej chceme používat v modu passthrough ve vybraném hostovaném VM OS.
# sudo nano /etc/modprobe.d/vfio.conf pridej radek takto >
options vfio-pci ids=10de:24b0, 10de:228b, … dalsi HW
V configu vfio.conf se IDs skládá z vendor bez 0x a device bez 0x
,což znamená dvě 32bit. hodnoty.
Pokud používáte více kusů stejného hardware, budou mít IDs ve vfio.conf stejnou hodnotu a nemusíte je uvádět duplicitně.
Což znamená, že blíže specifikovat číslo karty GPU, nebo HW, upřesníte přímo v nastavení hardwaru pro VM v proxmox VE, a to přidáním PCI hardwaru.
Doporučuji zaškrtnout PCI-E pro GPU a doplnit Vendor a ID, pokud používáte i zvuk z GPU uvedete jako podřazený vendor a ID, zvuku.
Vendor ID zvuku naleznete ve výpisu při nastavení hardwaru ve stejném kroku.
——————– IOMMU skupiny ————————————–
Ověř, zda jsou obě GPU v samostatných IOMMU skupinách.
Použij tento příkaz:
for d in /sys/kernel/iommu_groups/*; do echo „IOMMU group $(basename „$d“)“; for i in „$d/devices/“*; do echo -n „$(basename „$i“) „; lspci -nns „${i##*/}“; done; done
———————–Kontrola ve virtuálním stroji (VM)—————————————
Uvnitř virtuálního stroje spusť příkaz: lspci -nnk | grep -i vga.
Tento příkaz by měl zobrazit obě GPU a ovladače, které je používají.
Pokud jsou GPU správně předány, měly by být detekovány virtuálním strojem a používány ovladači nainstalovanými ve VM.
————-CUDA a ověření funkčnosti passthrought ve VM OS ——————————————————–
Můžete použít samozřejmě příkaz : nvidia-smi
Můžeš použít nástroje pro testování grafického výkonu (např. glxgears nebo Unigine Heaven) k ověření funkčnosti GPU.
—————————–