Grüß euch,
ich selber bin kein Neuling mehr in Sachen ProxMox und nutze diese tolle Virtualisierung schon sehr viele Jahre (wenn ich mich nicht irre schon ab dem Jahr 2010+) als meine persönliche Virtualisierungslösung an meinem 19" Server. Und Linux/Debian nutze ich seit den 2000er Anfängen.
Als Server nutzte ich einen sehr effizienten und stromsparenden AsRock Rack Pentium Dual Core ECC und 16 GB DDR4 ECC und 5x 4 TB RAIDZ2 Brutto-Speicher von denen ich nur grob unter einem TB nutzte.
Wegen den stark angestiegenen Energiepreise (Bitte keine Diskussionen darüber - Eingefleischte wissen wohl sehr genau warum weshalb und wieso) habe ich mich entschlossen meinen Ryzen 5 Gaming-Rechner als All-In-One ProxMox Server & Gaming-Maschine umzubauen - Mit Erfolg
Da ich den tollen AMD X570 Chipset habe schreit dieses System förmlich nach IOMMU und Virtualisierung. Und noch dazu ist dieser Gaming-Rechner auch noch Solarelektrifiziert und Energieeffizient, da ich im Stromspar-Gaming mit meiner Radeon RX480/580 8GB mit -50% Power Limit und -40% CPU Clock inklusive 4x 2TB Hitachi SATA sowie 2x NVMe sowie 1x SSD und 2x 2,5" HDDs 1TB im Gehäuse hab ~ 285 Watt im Gaming Modus fahre und entsprechend ~ 100 Watt weniger im Desktop-Surf-Modus.
Meine ProxMox-Config sieht so aus dass ich 2x 1TB WD Reds im ZFS Mirror als rpool-Boot fahre.
Falls wer den Gaming-Unterbau (PlaýStatión) nachbauen möchte:
IOMMU sowie die Virtualisierung muss zwingend im BIOS aktiviert werden. PCIe AER wäre auch noch cool aber kein Muss.
Damit eine PCIe-Grafikkarte in einer VM bereitgestellt werden kann muss der Host hier zwingend zwei GPUs besitzen ansonsten
funktioniert die VM-Virtualisierung nicht mit nur einer GPU. Im Idealfall hat das System eine Onboard-GPU (Prozessorintern etc) oder
eine GPU eines anderen Herstellers die auch als Boot-GPU im Bios gesetzt ist. Die zweite GPU - in meinem Fall meine Radeon darf nicht
als Haupt-GPU im System gestartet sein - ansonsten auch hier keine VM-Virtualisierung.
Hier ist es wichtig dass man zwei unterschiedliche Hersteller der GPUs im System hat und nicht zwei gleiche - z.B. zwei Radeon Grafikkarten.
Da die Radeon-Linux-Treiber im Debian/Proxmox deaktiviert werden ist das halt dann etwas doof weil man hier nicht mit zwei gleichen Herstellern
auftrennen kann.
Wer Legacy Boot benutzt muss unter /etc/default/grub folgende Zeile abändern:
Hier amd_iommu=on und iommu=pt hinzufügen.
Wer den UEFI Boot benutzt muss unter /etc/kernel/cmdline folgende Zeile abändern:
Hier amd_iommu=on und iommu=pt hinzufügen.
(Damit man sich nicht wundert warum im Legacy/UEFI-Modus man zwar die PCI-IDs in der VM sehen und auswählen kann aber ProxMox meckert dass kein IOMMU aktiviert ist ...)
Als finaler Schritt müssen die Eintragungen dem Kernel / InitRAMFS mitgeteilt werden sowie der Host neu gestartet werden:
Ist IOMMU - was zwingend für den PCIe-Virtualisiermodus benötigt wird - aktiviert ?:
Wer hier folgende Konsolen-Meldung sieht darf sich freuen. Alle anderen die nichts von enabled sehen oder gar nix bekommen brauchen nicht weiter zu machen:
Unter dem Dateinamen /etc/modules müssen folgende Module geladen werden:
Unter /etc/modprobe.d/ müssen folgende Dateien erstellt werden:
Hier muss zwingend die Secondard GPU - in meinem Fall meine Radeon-GPU die ich virtualisiert nutzen möchte vom System ausgeklammert werden.
(Wer eine nVidia-Karte hat muss entsprechend das nVidia-Modul blacklisten)
Meine Config für eine Radeon-Grafikkarte:
blacklist.conf:
vfio.conf:
Um die PCIe-IDs herauszufinden - um diese dann in der Config korrekt einzutragen - müssen folgende Befehle eingegeben werden:
Wer hier folgende Konsolen-Meldung sieht darf sich freuen. Alle anderen die nichts von enabled sehen oder gar nix bekommen brauchen - wie immer - nicht weiter zu machen:
Jetzt kommt der lustige Teil indem man die Hardware-IDs der Grafikkarte finden und in die vfio.conf oben ersetzen muss:
In meinen Fall ist meine Secondary GPU interessant:
Hier spring euch die PCIe-ID 1002:67df in die Augen. Gut! Also oben eintragen.
Wer noch den Audio-Output der GPU nutzt muss entsprechend die PCIe-ID der GPU-Audioausgabe eintragen:
Hier spring euch die PCIe-ID 1002:aaf0 in die Augen. Gut! Also oben dazuschreiben.
Herzlichen Glückwunsch! Nun könnt ihr eine VM erstellen, die GPU unter Proxmox hinzufügen und das System starten! Wenn alles reibungslos ist solltet ihr an der Secondary GPU am Ausgang ein Bild bekommen.
Natürlich kann man auch andere PCI(e)-Gerätschaften wie Netzwerkcontroller oder Speichercontroller etc so hinzufügen wobei man theoretisch nichts in der vfio.conf eintragen muss, das sollte für Nicht-Grafikkarten out of the box funktionieren.
Viel Spaß![Big Grin :D :D](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f600.png)
ich selber bin kein Neuling mehr in Sachen ProxMox und nutze diese tolle Virtualisierung schon sehr viele Jahre (wenn ich mich nicht irre schon ab dem Jahr 2010+) als meine persönliche Virtualisierungslösung an meinem 19" Server. Und Linux/Debian nutze ich seit den 2000er Anfängen.
Als Server nutzte ich einen sehr effizienten und stromsparenden AsRock Rack Pentium Dual Core ECC und 16 GB DDR4 ECC und 5x 4 TB RAIDZ2 Brutto-Speicher von denen ich nur grob unter einem TB nutzte.
Wegen den stark angestiegenen Energiepreise (Bitte keine Diskussionen darüber - Eingefleischte wissen wohl sehr genau warum weshalb und wieso) habe ich mich entschlossen meinen Ryzen 5 Gaming-Rechner als All-In-One ProxMox Server & Gaming-Maschine umzubauen - Mit Erfolg
![Smile :-) :-)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Da ich den tollen AMD X570 Chipset habe schreit dieses System förmlich nach IOMMU und Virtualisierung. Und noch dazu ist dieser Gaming-Rechner auch noch Solarelektrifiziert und Energieeffizient, da ich im Stromspar-Gaming mit meiner Radeon RX480/580 8GB mit -50% Power Limit und -40% CPU Clock inklusive 4x 2TB Hitachi SATA sowie 2x NVMe sowie 1x SSD und 2x 2,5" HDDs 1TB im Gehäuse hab ~ 285 Watt im Gaming Modus fahre und entsprechend ~ 100 Watt weniger im Desktop-Surf-Modus.
Meine ProxMox-Config sieht so aus dass ich 2x 1TB WD Reds im ZFS Mirror als rpool-Boot fahre.
Falls wer den Gaming-Unterbau (PlaýStatión) nachbauen möchte:
IOMMU sowie die Virtualisierung muss zwingend im BIOS aktiviert werden. PCIe AER wäre auch noch cool aber kein Muss.
Damit eine PCIe-Grafikkarte in einer VM bereitgestellt werden kann muss der Host hier zwingend zwei GPUs besitzen ansonsten
funktioniert die VM-Virtualisierung nicht mit nur einer GPU. Im Idealfall hat das System eine Onboard-GPU (Prozessorintern etc) oder
eine GPU eines anderen Herstellers die auch als Boot-GPU im Bios gesetzt ist. Die zweite GPU - in meinem Fall meine Radeon darf nicht
als Haupt-GPU im System gestartet sein - ansonsten auch hier keine VM-Virtualisierung.
Hier ist es wichtig dass man zwei unterschiedliche Hersteller der GPUs im System hat und nicht zwei gleiche - z.B. zwei Radeon Grafikkarten.
Da die Radeon-Linux-Treiber im Debian/Proxmox deaktiviert werden ist das halt dann etwas doof weil man hier nicht mit zwei gleichen Herstellern
auftrennen kann.
Wer Legacy Boot benutzt muss unter /etc/default/grub folgende Zeile abändern:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
GRUB_CMDLINE_LINUX=""
Hier amd_iommu=on und iommu=pt hinzufügen.
Wer den UEFI Boot benutzt muss unter /etc/kernel/cmdline folgende Zeile abändern:
root=ZFS=rpool/ROOT/pve-1 boot=zfs amd_iommu=on iommu=pt
Hier amd_iommu=on und iommu=pt hinzufügen.
(Damit man sich nicht wundert warum im Legacy/UEFI-Modus man zwar die PCI-IDs in der VM sehen und auswählen kann aber ProxMox meckert dass kein IOMMU aktiviert ist ...)
Wer ein Intel System mit VT-d (IOMMU Pendant) und Vanderpool (Virtualisierungsmodus) besitzt muss entsprechend anstatt amd_iommu=on intel_iommu=on umschreiben.
Man kann auch in beiden Dateien die Addons eintragen ohne dass was in Rauch aufgeht![]()
Als finaler Schritt müssen die Eintragungen dem Kernel / InitRAMFS mitgeteilt werden sowie der Host neu gestartet werden:
update-grub
proxmox-boot-tool refresh
reboot
Ist IOMMU - was zwingend für den PCIe-Virtualisiermodus benötigt wird - aktiviert ?:
dmesg | grep -e DMAR -e IOMMU
Wer hier folgende Konsolen-Meldung sieht darf sich freuen. Alle anderen die nichts von enabled sehen oder gar nix bekommen brauchen nicht weiter zu machen:
[ 0.396517] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[ 0.403545] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[ 0.403759] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
Unter dem Dateinamen /etc/modules müssen folgende Module geladen werden:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Unter /etc/modprobe.d/ müssen folgende Dateien erstellt werden:
Hier muss zwingend die Secondard GPU - in meinem Fall meine Radeon-GPU die ich virtualisiert nutzen möchte vom System ausgeklammert werden.
(Wer eine nVidia-Karte hat muss entsprechend das nVidia-Modul blacklisten)
Meine Config für eine Radeon-Grafikkarte:
blacklist.conf:
blacklist amdgpu
blacklist radeon
vfio.conf:
options vfio-pci ids=1002:67df,1002:aaf0 disable_vga=1
Um die PCIe-IDs herauszufinden - um diese dann in der Config korrekt einzutragen - müssen folgende Befehle eingegeben werden:
find /sys/kernel/iommu_groups/ -type l
Wer hier folgende Konsolen-Meldung sieht darf sich freuen. Alle anderen die nichts von enabled sehen oder gar nix bekommen brauchen - wie immer - nicht weiter zu machen:
/sys/kernel/iommu_groups/17/devices/0000:06:00.0
/sys/kernel/iommu_groups/17/devices/0000:02:08.0
/sys/kernel/iommu_groups/17/devices/0000:06:00.3
/sys/kernel/iommu_groups/17/devices/0000:06:00.1
/sys/kernel/iommu_groups/7/devices/0000:00:07.0
Jetzt kommt der lustige Teil indem man die Hardware-IDs der Grafikkarte finden und in die vfio.conf oben ersetzen muss:
lspci -n -v
In meinen Fall ist meine Secondary GPU interessant:
a:00.0 0300: 1002:67df (rev c7) (prog-if 00 [VGA controller])
Subsystem: 1682:9480
Flags: bus master, fast devsel, latency 0, IRQ 134, IOMMU group 24
Memory at c0000000 (64-bit, prefetchable) [size=256M]
Memory at d0000000 (64-bit, prefetchable) [size=2M]
I/O ports at f000 [size=256]
Memory at fbd00000 (32-bit, non-prefetchable) [size=256K]
Hier spring euch die PCIe-ID 1002:67df in die Augen. Gut! Also oben eintragen.
Wer noch den Audio-Output der GPU nutzt muss entsprechend die PCIe-ID der GPU-Audioausgabe eintragen:
0a:00.1 0403: 1002:aaf0
Subsystem: 1682:aaf0
Flags: bus master, fast devsel, latency 0, IRQ 132, IOMMU group 24
Memory at fbd60000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Hier spring euch die PCIe-ID 1002:aaf0 in die Augen. Gut! Also oben dazuschreiben.
Herzlichen Glückwunsch! Nun könnt ihr eine VM erstellen, die GPU unter Proxmox hinzufügen und das System starten! Wenn alles reibungslos ist solltet ihr an der Secondary GPU am Ausgang ein Bild bekommen.
Natürlich kann man auch andere PCI(e)-Gerätschaften wie Netzwerkcontroller oder Speichercontroller etc so hinzufügen wobei man theoretisch nichts in der vfio.conf eintragen muss, das sollte für Nicht-Grafikkarten out of the box funktionieren.
Viel Spaß
![Big Grin :D :D](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f600.png)