Best Practice Konfigurationen für virtuelle Maschinen unter Proxmox VE

Unsere Experten haben ihre empfohlenen Konfigurationen für virtuelle Maschinen unter Proxmox VE dokumentiert. 

Die hier enthaltenen Hinweise basieren auf Praxiserfahrungen und sollen als Orientierung bei der Einrichtung neuer VMs dienen.

Allgemeine Voreinstellungen

Machine Type/Chipsatz

Als Machine Type empfehlen wir generell q35. Dieser Chipsatz bietet bereits moderne PCIe-Unterstützung und ist Voraussetzung für bestimmte Features wie etwa TPM 2.0 oder PCIe-Passthrough.

 

BIOS

Für neue VMs verwenden wir OVMF (UEFI), sofern es das Gastbetriebssystem unterstützt. SeaBIOS sollte man nur für Legacy-Systeme oder ältere Betriebssystemversionen verwenden, ist aber nicht zwingend notwendig.

 

Einstellung  |  Empfehlung  |  Hinweis
Machine Type  |  q35  |  Moderne PCIe-Unterstützung
BIOS  |  OVMF (UEFI)  |  Legacy: SeaBIOS
SCSI Controller  |  VirtIO SCSI Single  |  Beste Performance
Netzwerkkarte  |  VirtIO (paravirtualisiert)  |  Treiber erforderlich

 

CPU

  • Die Anzahl der Sockets sollte nicht die des Hosts überschreiten.
  • vCPUs sollte nicht die Anzahl der Host Threads/Kerne übersteigen. => In aktuellen Proxmox Installationen ist das auch nicht mehr über die WebUI möglich.
  • Als CPU-Typ empfehlen wir x86-64-v2-AES (oder neuer) oder host.

    • host: Bietet zwar die maximale Performance, schränkt aber Live-Migration zwischen unterschiedlichen CPU-Generationen ein. Zudem kann diese Einstellung ggf. zu Problemen mit manchen Betriebssystemen führen. 
    • x86-64-v2-AES (oder neuer): Diese Option erlaubt einen guten Kompromiss zwischen Performance und Migrationskompatibilität. => Sofern man nicht alle CPU-Flags von Host benötigt, ist das die empfohlene Konfiguration. Es sollte der kleineste gemeinsame Nenner als Typ im Cluster gewählt werden. Dies kann pro Node ausgeführt werden, und teilt mit, welcher CPU Typ maximal möglich ist auf dieser Node: 

    wget -qO - https://cloud.starline.de/s/QmQt79dpJebtC46/download/checkCPUType.sh | awk -f -

  • Sie sollten NUMA-Topologie aktivieren, wenn die VM oder der Host mehr als einen CPU-Socket erhält. Dies ermöglicht, dass Proxmox die Ressourcen von einer VM auf einer NUMA Node hält.

 

Arbeitsspeicher

  • Die Größe sollten Sie in 1024er Schritten definieren. Beispielsweise 8 GB entsprechen 8 x 1024 = 8192 GB, 16 GB also 16384 GB usw.
  • Ballooning sollte immer aktiviert sein, aber mit einem sinnvollen Minimum-Wert konfiguriert werden. https://de.wikipedia.org/wiki/Ballooning_(Virtualisierung)
  • Bei Performanceproblemen könnte man probieren Ballooning zu deaktivieren, allerdings kommt es auf den Workload an.
  • Huge Pages können bei speicherintensiven Workloads die Performance verbessern (Host-seitige Konfiguration erforderlich). 

 

Storage / Festplatten

  • Controller: VirtIO SCSI Single
  • Disktyp: SCSI
  • Festplattenformat: qcow2 (flexibel für bspw. Snapshots auch unter LVM (Technology Preview)) oder raw (maximale Performance)
  • Discard aktivieren, wenn das Storage-Backend Thin Provisioning unterstützt (z. B. ZFS, LVM-Thin, CEPH).
  • IO Thread pro Disk aktivieren für bessere parallele I/O-Performance.
  • SSD-Emulation aktivieren, wenn das zugrundeliegende Storage ein SSD- oder Flash-System ist.
    • Optional, zeigt keine Performanceverbesserung und ist bspw. relevant, wenn das Gast-OS eine SSD erwartet.

Netzwerk

  • Netzwerkmodell: VirtIO (paravirtualisiert) für beste Performance.
  • MTU auf 1500 belassen, außer das Netzwerk unterstützt Jumbo Frames und ist entsprechend konfiguriert. Multiqueue kann bei hohen Bandbreiten auf maximal der Anzahl der zugewiesenen vCPUs der VM gesetzt werden. Dies ermöglicht höhere Bandbreiten.

Sonstiges

  • QEMU Guest Agent installieren und in der VM-Konfiguration aktivieren. Ermöglicht sauberere Snapshots, korrekte IP-Anzeige und gesteuerte Shutdowns.
    • Nicht vergessen unter VM > Options aktivieren
ProxmoxVE-VM_Best_Practice_Konfigurationen

Besonderheiten bei Windows VMs

CPU-Typ

Aktuelle Windows Installationen benötigen mindestens den x86-64-v3 CPU-Typ.

Alternativ ist die Host Konfiuration (Bei aktueller CPU) ebenfalls erlaubt.

 

Host

Viele Berichte im Forum deuten darauf hin, dass unter Einsatz von CPU-Typ Host, bei aktuellen Windows Installation, das "nested-virt" Flag entfernt werden muss.

Das deaktiviert die virtualisiertungsbaiserte Sicherheit, die aktuell zu vielen Problemen (niedrige Performance, hohe Latenz und unerklärbare Freezes) führt.

Demnach CPU > Advanced anhaken sofern nicht bereits geschehen > "" bei nested-virt in der Spalte Flag setzen > OK

Proxmox_VE_VM_Best_Practice_Konfigurationen_1781681105551

VirtIO-Treiber

Windows bringt keine VirtIO-Treiber mit. Sie müssen manuell installiert werden.

  • VirtIO-Treiber-ISO bei der Installation als zweites CD-Laufwerk einbinden.
  • Enthält Treiber für: Netzwerk, Storage, Balloon, Serial, Guest Agent.
  • Für die aktuelle ISO bitte immer erst den Proxmox Artikel und Known Issues prüfen! => https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers


Sie können die aktuell empfohlene VirtIO Version 271 hier herunterladen.

Mitunter gibt es bei älteren und neueren Versionen Probleme. Unter Known Issues können Sie es hier vorab überprüfen.

 

Ballooning unter Windows

Ballooning unter Windows ist etwas spezieller. Leider funktioniert die Implementation mit dem automatischen Zuweisen und Entfernen von RAM unter Windows nicht so zuverlässig. Es kann zu Performance-Problemen oder Abstürzen führen. Da Ballooning allerdings für das korrekte RAM Reporting benötigt wird, muss dieser Dienst auch unter Windows aktiviert bleiben.

Daher wird empfohlen, den Min/Max Wert von Ballooning identisch zu setzen. Somit findet keine Umverteilung des RAMs für diese VM statt, aber das RAM-Reporting funktioniert weiterhin zuverlässig.

 

TPM 2.0

  • Windows 11 erfordert TPM 2.0. Für Windows Server ist dies bislang optional (<=WS2025).
  • In Proxmox kann ein emuliertes TPM 2.0 (Software-TPM) hinzugefügt werden (vTPM).
  • Voraussetzung: Machine Type q35 und BIOS OVMF (UEFI).

 

Empfohlene Einstellungen für Windows

 

Einstellung  |  Empfehlung
Machine Type/Chipsatz  |  q35
BIOS  |  OVMF (UEFI)
TPM  |  v2.0
SCSI Controller  |  VirtIO SCSI Single
Netzwerk  |  VirtIO (nach Treiberinstallation)
Guest Agent  |  QEMU Guest Agent (VirtIO-Paket)

 

Hinweise

  • Windows Aktivierung kann bei Hardware-Änderungen (z. B. Machine Type Wechsel) fehlschlagen – vor Änderungen Lizenzstatus prüfen.
  • Bei Verwendung von VirtIO-Netzwerk vor der Migration den Treiber vorab installieren, da sonst keine Netzwerkverbindung nach der Umstellung besteht.

Besonderheiten bei Linux VMs

VirtIO-Unterstützung

Moderne Linux-Kernel (ab ca. 2.6.25+) bringen VirtIO-Treiber nativ mit. Eine separate Treiberinstallation ist in der Regel nicht erforderlich.

 

QEMU Guest Agent

Dieser muss allerdings nachinstalliert werden, könnte allerdings bei frischer Installation des Gast-Betriebssystems automatisch mit installiert werden.

  • Paketname je nach Distribution:
    • Debian/Ubuntu: apt install qemu-guest-agent
    • RHEL/Rocky/AlmaLinux: dnf install qemu-guest-agent
  • Dienst aktivieren: systemctl enable --now qemu-guest-agent

 

Empfohlene Einstellungen für Linux

Einstellung  |  Empfehlung
Machine Type/Chipsatz  |  q35 oder i1440fx
BIOS  |  OVMF (UEFI) oder SeaBIOS
SCSI Controller  |  VirtIO SCSI Single
Netzwerk  |  VirtIO
Guest Agent  |  qemu-guest-agent (Paket)
Cloud-Init  |  Empfohlen für Template-Deployments

 

Hinweise

  • Discard/TRIM sollten Sie innerhalb der VM konfigurieren, damit der Host den freigegebenen Speicher zurückerhält. Die alleinige Konfiguration in der VM Disk reicht nicht aus. Meist ist dies im Gast-OS aber bereits standardmäßig konfiguriert, jedoch dann meist nur für SSDs => SSD-Emulation ggf. notwendig oder manuelle Konfiguration bspw. in fstab.

 

Was gibt es noch zu beachten?

CPU-Typ Host

Dieser CPU Typ bietet zwar die meisten Features und ist am performantesten, allerdings könnte dieser Typ für zukünftige Live-Migrationen einschränken.

Generell ist eine Live-Migration mit Typ Host zwischen zwei unterschiedlichen Host-CPUs nicht möglich oder nur sehr instabil. (Bspw. neu auf alte CPU geht meist nicht, alte auf neue CPU Generation könnte klappen).

Das könnte ggf. bei Clusterweiterung zu Problemen führen. Daher empfehlen wir meist eine der x86-64-vX CPUs zu wählen, da diese ein festgesetztes CPU-Feature Set haben und über alle Nodes hinweg gleich bleiben. Es sollte der kleinste gemeinsame Nenner im Cluster gewählt werden.

Zusätzlich verursacht dieser CPU-Typ manchmal Probleme unter Windows (ggf. nested-virt Flag entfernen).

Noch Fragen?

starline_computer_gmbh_logo
Kevin Fietz
Technik

Unser Experte für unter anderem Ceph, GRAID, PetaSAN und Proxmox