Virtualisierte Netzwerkkarten liefern für die meisten Workloads ausreichende Performance. Doch wenn eine VM bare-metal-nahe Netzwerk-Durchsatzraten benötigt — etwa als OPNsense-Firewall, als Storage-Gateway mit iSCSI oder als Packet-Processing-Appliance — ist PCIe Passthrough die Lösung. Dabei wird eine physische PCI-Express-Karte direkt an eine VM durchgereicht, ohne den Umweg über die virtuelle Netzwerkbrücke.
Voraussetzungen
Hardware-Anforderungen
PCIe Passthrough setzt IOMMU-Unterstützung voraus — eine CPU- und Chipsatz-Funktion, die physische Geräte in isolierte Gruppen unterteilt:
- Intel: VT-d (Virtualization Technology for Directed I/O)
- AMD: AMD-Vi (AMD I/O Virtualization Technology)
Nicht jede Mainboard-CPU-Kombination unterstützt IOMMU vollständig. Server-Hardware (Xeon, EPYC) bietet in der Regel die beste Kompatibilität. Consumer-Boards haben teilweise unbrauchbare IOMMU-Gruppen, in denen zu viele Geräte zusammengefasst sind.
BIOS/UEFI-Einstellungen
Aktivieren Sie im BIOS:
- Intel VT-d oder AMD IOMMU (je nach CPU)
- Above 4G Decoding (für GPUs relevant, bei NICs meist nicht nötig)
- ACS Override (falls vorhanden — verbessert die IOMMU-Gruppentrennung)
IOMMU im Kernel aktivieren
Kernel-Parameter setzen
Bearbeiten Sie die GRUB-Konfiguration:
# Für Intel-CPUs
nano /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# Für AMD-CPUs
# GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
Der Parameter iommu=pt (Passthrough-Modus) sorgt dafür, dass nur Geräte, die tatsächlich durchgereicht werden, den IOMMU-Overhead erfahren. Alle anderen Geräte arbeiten wie gewohnt.
Wenn Proxmox mit systemd-boot installiert wurde:
# Datei bearbeiten
nano /etc/kernel/cmdline
# Inhalt: root=ZFS=rpool/ROOT/pve-1 boot=zfs quiet intel_iommu=on iommu=pt
# Boot-Konfiguration aktualisieren
proxmox-boot-tool refresh
VFIO-Module laden
Erstellen Sie eine Konfigurationsdatei für die benötigten Kernel-Module:
cat <<EOF > /etc/modules-load.d/vfio.conf
vfio
vfio_iommu_type1
vfio_pci
EOF
Aktualisieren Sie den Initramfs und starten Sie neu:
update-initramfs -u -k all
reboot
IOMMU-Aktivierung prüfen
Nach dem Neustart verifizieren Sie die Aktivierung:
dmesg | grep -e DMAR -e IOMMU
# Erwartete Ausgabe enthält:
# DMAR: IOMMU enabled
# DMAR: Intel(R) Virtualization Technology for Directed I/O
IOMMU Groups analysieren
Jedes PCI-Gerät gehört zu einer IOMMU-Gruppe. Beim Passthrough wird die gesamte Gruppe an die VM übergeben — nicht nur ein einzelnes Gerät. Deshalb ist es entscheidend, dass die gewünschte Netzwerkkarte in einer eigenen oder kleinen Gruppe liegt.
#!/bin/bash
# IOMMU Groups anzeigen
for d in /sys/kernel/iommu_groups/*/devices/*; do
n=${d#*/iommu_groups/*}
n=${n%%/*}
printf "IOMMU Group %s: " "$n"
lspci -nns "${d##*/}"
done | sort -t: -k1 -n
Typische Ausgabe für eine dedizierte Intel-Netzwerkkarte:
IOMMU Group 14: 03:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)
IOMMU Group 14: 03:00.1 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)
Wenn die Netzwerkkarte in einer Gruppe mit dem Root-Port oder anderen essentiellen Geräten liegt, benötigen Sie einen ACS Override Patch oder müssen auf eine andere PCIe-Slot-Konfiguration ausweichen.
Gerät für vfio-pci reservieren
Damit Proxmox das Gerät nicht mit dem Standard-Treiber belegt, muss es explizit für vfio-pci reserviert werden:
# PCI-IDs der Netzwerkkarte ermitteln
lspci -nn | grep -i ethernet
# Ausgabe: 03:00.0 Ethernet controller [0200]: Intel Corporation I350 [8086:1521]
# vfio-pci für diese Vendor:Device-ID konfigurieren
echo "options vfio-pci ids=8086:1521" > /etc/modprobe.d/vfio.conf
Bei mehreren identischen Karten (gleiche Vendor:Device-ID) werden alle Karten mit dieser ID an vfio-pci gebunden. Falls Sie nur eine bestimmte Karte durchreichen möchten, verwenden Sie stattdessen die PCI-Adresse:
# Spezifisches Gerät per Adresse binden
echo "options vfio-pci ids=8086:1521" > /etc/modprobe.d/vfio.conf
# Standard-Treiber blacklisten (falls nötig)
echo "blacklist igb" >> /etc/modprobe.d/blacklist.conf
Initramfs aktualisieren und neustarten:
update-initramfs -u -k all
reboot
Binding verifizieren
lspci -nnk -s 03:00.0
# Kernel driver in use: vfio-pci
Wenn vfio-pci als Treiber angezeigt wird, ist das Gerät korrekt reserviert.
Passthrough in der VM konfigurieren
Über die Weboberfläche
- Öffnen Sie die VM-Konfiguration in Proxmox VE
- Hardware > Add > PCI Device
- Wählen Sie das gewünschte Gerät aus der Liste
- Aktivieren Sie All Functions (bei Multi-Port-Karten)
- Aktivieren Sie PCI-Express (für PCIe-Geräte, nicht für Legacy-PCI)
- Setzen Sie den Machine Type auf
q35(unter Options > Machine)
Über die Konfigurationsdatei
# /etc/pve/qemu-server/<VMID>.conf
machine: q35
hostpci0: 03:00,pcie=1
Für Multi-Port-Karten mit mehreren Funktionen:
hostpci0: 03:00.0;03:00.1,pcie=1
BIOS-Typ und Machine Type
PCIe Passthrough erfordert den q35-Chipsatz. Der ältere i440fx-Chipsatz unterstützt kein natives PCIe. Wählen Sie außerdem OVMF (UEFI) statt SeaBIOS als Firmware — OVMF bietet bessere PCIe-Kompatibilität.
SR-IOV: Virtuelle Funktionen statt vollem Passthrough
Single Root I/O Virtualization (SR-IOV) teilt eine physische Netzwerkkarte in mehrere Virtual Functions (VFs), die jeweils an unterschiedliche VMs durchgereicht werden können. Im Gegensatz zu vollem Passthrough bleibt die physische Funktion (PF) beim Host.
SR-IOV aktivieren
# Prüfen, ob die Karte SR-IOV unterstützt
lspci -vvv -s 03:00.0 | grep -i "sr-iov"
# Virtual Functions aktivieren (Beispiel: Intel X710)
echo 4 > /sys/class/net/ens1f0/device/sriov_numvfs
# Persistent machen
cat <<EOF > /etc/udev/rules.d/10-sriov.rules
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:03:00.0", \
ATTR{device/sriov_numvfs}="4"
EOF
Nach der Aktivierung erscheinen die VFs als eigene PCI-Geräte:
lspci | grep -i virtual
# 03:02.0 Ethernet controller: Intel Corporation X710 Virtual Function
# 03:02.1 Ethernet controller: Intel Corporation X710 Virtual Function
Jede VF kann wie ein normales PCI-Gerät an eine VM durchgereicht werden — mit eigenem MAC, VLAN und QoS-Profil.
Vorteile von SR-IOV
| Merkmal | Volles Passthrough | SR-IOV |
|---|---|---|
| VMs pro Karte | 1 | Bis zu 64 VFs |
| Host-Zugriff | Nein | Ja (PF bleibt beim Host) |
| Live-Migration | Nein | Eingeschränkt (Bond-Failover) |
| Performance | Native | Nahezu native |
| Hardware-Anforderung | Beliebige PCIe-Karte | SR-IOV-fähige Karte |
HBAs durchreichen (Storage Controller)
Für TrueNAS- oder ZFS-VMs ist das Durchreichen eines HBA (Host Bus Adapter) im IT-Modus essentiell. ZFS benötigt direkten Zugriff auf die Festplatten — ein Hardware-RAID-Controller dazwischen verhindert die ZFS-eigene Datenintegrität.
# HBA identifizieren
lspci -nn | grep -i "SAS\|SCSI\|LSI"
# 01:00.0 Serial Attached SCSI controller [0107]: Broadcom / LSI SAS3008 [1000:0097]
# Für vfio-pci reservieren
echo "options vfio-pci ids=1000:0097" >> /etc/modprobe.d/vfio.conf
update-initramfs -u -k all
reboot
Troubleshooting
VM startet nicht
Fehler: vfio: failed to set up container
- Prüfen Sie, ob IOMMU korrekt aktiviert ist (
dmesg | grep IOMMU) - Stellen Sie sicher, dass alle Geräte der IOMMU-Gruppe an vfio-pci gebunden sind
Fehler: BAR resources not available
- Aktivieren Sie Above 4G Decoding im BIOS
- Verwenden Sie q35 als Machine Type
Instabile Netzwerk-Performance
- Prüfen Sie die Interrupt-Zuordnung:
cat /proc/interrupts | grep vfio - CPU-Pinning für die VM konfigurieren, um NUMA-Crossing zu vermeiden
- Bei Intel-Karten: Interrupt-Moderation prüfen (
ethtool -c <interface>)
IOMMU-Gruppe zu groß
Wenn mehrere Geräte in einer Gruppe zusammengefasst sind:
- Karte in einen anderen PCIe-Slot umstecken
- ACS Override Patch verwenden (Kernel-Parameter
pcie_acs_override=downstream,multifunction) - Server-Hardware mit besserem IOMMU-Support nutzen
Monitoring mit DATAZONE Control
DATAZONE Control überwacht VMs mit durchgereichten PCI-Geräten: Netzwerk-Durchsatz, Latenz und Fehlerzähler der physischen NICs fließen in das zentrale Dashboard. Bei SR-IOV-Setups werden sowohl die Physical Function als auch alle Virtual Functions einzeln getrackt — inklusive Alerting bei Link-Down oder steigenden Error-Countern.
Sie planen PCIe Passthrough für Ihre Proxmox-Umgebung? Kontaktieren Sie uns — wir beraten bei der Hardware-Auswahl und konfigurieren Passthrough und SR-IOV für maximale Performance.
Mehr zu diesen Themen:
Weitere Artikel
Backup-Strategie für KMU: Proxmox PBS + TrueNAS als zuverlässiges Backup-Konzept
Backup-Strategie für KMU mit Proxmox PBS und TrueNAS: 3-2-1-Regel umsetzen, PBS als primäres Backup-Target, TrueNAS-Replikation als Offsite-Kopie, Retention Policies und automatisierte Restore-Tests.
Proxmox Notification-System: Matcher, Targets, SMTP, Gotify und Webhooks
Proxmox Notification-System ab PVE 8.1 konfigurieren: Matcher und Targets, SMTP-Setup, Gotify-Integration, Webhook-Targets, Notification-Filter und sendmail vs. neue API.
Proxmox Cluster-Netzwerk richtig planen: Corosync, Migration, Storage und Management
Proxmox Cluster-Netzwerk designen: Corosync-Ring, Migration-Network, Storage-Network für Ceph/iSCSI, Management-VLAN, Bonding/LACP und MTU 9000 — mit Beispiel-Topologien.