Webseiten-Werkzeuge


virtualisierung:proxmox_kvm_und_lxc:optimierte_linuxvms_unter_proxmox_ve

Dies ist eine alte Version des Dokuments!


Optimierte LinuxVMs unter Proxmox VE

Du möchtest dich gerne für unsere Hilfe erkenntlich zeigen 8-o. Gerne. Wir bedanken uns bei dir für deine Spende! 🙏


Zum frei verfügbaren Apt-Repository
GITLAB:

Verwendete Systeme:

  • Proxmox VE 9.x [0]
  • Ubuntu-Server 24.04 LTS [1]

Einleitung

In diesem HowTo zeige ich dir einige Möglichkeiten um eine LinuxVM auf Proxmox VE optimiert zu gestalten. Es gibt natürlich viele verschiede Einsatzszenarien. Wobei ich mit dieser, in diesem Beitrag verwendeten Konfiguration für die meisten Anwendungsfälle empfehlen kann. Im laufe dieses Beitrags werde ich auch die wichtigsten Optionen kurz behandeln.

Voraussetzungen

  • Laufende Proxmox VE 9.x Node
  • Herunter geladenen Ubuntu-Server 24.04 LTS ISO [1]

Neue LinuxVM erstellen

  • Tab: „General → Keine spezielle Konfiguration
  • Tab: „OS“ → Guest OS Type „Linux“ mit Version „6.x - 2.6 Kernel“
  • Tab: „System“:
    • Graphics card: „VirtIO-GPU“ → Je nach Linuxversion hat der Gast Probleme Bootmeldungen anzuzeigen. Dabei werden nur unleserliche Dinge auf der noVNC Konsole angezeigt. Der wechsel zu „VirtIO-GPU“ löst dies. Da wir in spätere Folge dieses Artikel ohnehin die serielle Konsole als Default verwenden möchten, ist dies optional.
    • Machine: q35 → Bringt neuere virtuelle Hardware mit.
    • Das BIOS konfigurieren wir auf UEFI → Secureboot ist nur in Sonderfällen notwendig. In unserem Beispiel verzichten wir auf UEFI und deaktivieren „Pre-Enroll keys“.
    • Qemu Agent aktivieren wir selbstverständlich. Features und Vorteile darüber findest du auf [2].
  • Tab: „Disks“:
    • Bus/Device: SCSI → Dies ist der Default, hat unter normalen Umständen die beste Leistung und die meisten Features.
    • Discard aktivieren [3] → Das macht natürlich nur Sinn wenn dein verwendeter Storagespeicher auch Thin Provisioning unterstützt [4]. Wenn Discard aktiviert ist und das Gastbetriebssystem TRIM unterstützt, leitet der Controller diese Information an den Speicher weiter, sobald das Dateisystem der VM nach dem Löschen von Dateien Blöcke als ungenutzt markiert. Der Speicher verkleinert daraufhin das Disk-Image entsprechend. Damit der Gast TRIM-Befehle ausgeben kann, musst du die Option Discard auf dem Laufwerk aktivieren. Ubuntu macht dies automatisch in Zyklen. Solltest du Live-Discard verwenden wollen, kannst diese Option in der /etc/fstab im Gast bei dem gewünschten Laufwerk hinzfügen [5].
    • SSD emulation → Aktivieren sofern deine physische Storage SSDs oder NVMEs verwendet [3].
    • Eine Änderung der Cache und Async IO Konfiguration kann in bestimmten Fällen von Vorteil sein [6], [7].
  • Tab: „CPU“: Hier ist es natürlich ganz individuell wie viel Leistung zu benötigst und wie sich das auf die verfügbaren CPU-Sockets verteilen soll. Grundsätzlich verwende ich immer die Socketanzahl die mir zur Verfügung steht. Ab 2 Sockets aktiviere ich auch gleich mal NUMA [8]. Als CPUtype verwende ich in Linux grundsätzlich „host“ da man unter Linux (in Gegenzsatz zu Microsoft Windows) so gut wie immer die Beste Performance erziehlt. Aufpassen musst du natürlich wenn du einen Cluster betreibst und die VM Online zwischen verschieden physischen CPUtypen migrieren möchtest. Sollte dies der Fall sein, verwende bitte eine generische Variante wie z.B. x86-64-v2-AES.
  • Tab: „Memory“: Auch wieder individuell → Default OK.
  • Tab: „Network“: Auch wieder individuell → Solltest du ein 10 Gbit Netzwerk betreiben, wirst du die Option „Multiqueue“ [9] interessant finden.

Nachdem die VM erstellt wurde, fügen wir noch zwei zusätzliche Geräte hinzu:

  • Serielles Port → Für die serielle Konsole in Linux. Damit wird dir eine echte Konsole zur Verfügung gestelt, über diese du auch wie gewohnt mit copy/paste kopieren und einfügen kannst. (Konfiguration folgt weiter unten).
  • VirtIO RNG Device [10] → Liefer der VM Entropy. Gerade in Linux kann das die Performance in gewissen Situationen erheblich steigern (Bootprozess, SSL/TLS usw.)

Nach fertiger Installation des Betriebssystems in der VM...

Nachdem du nun deinen Server erfolgreich installiert hast, können wir uns der Konfiguration des Betriebssystems witmen.

Konfiguration Serielles Port

Damit wir den seriellen Output ansprechen können musst du die folgende Datei modifizieren /etc/default/grub und die Grubconfig aktualisieren. Für das serielle Port ist diese Zeile wichtig GRUB_CMDLINE_LINUX_DEFAULT.

- GRUB_CMDLINE_LINUX_DEFAULT=""
+ GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,115200 fsck.repair=preen verbose"

Genau, du hast dies richtig erkannt. Es gibt zwei zusätzliche Optionen. Diese sind für die Verwendung der seriellen Konsole nicht erforderlich, möchte ich aber im Zuge dieser Konfig empfehlen.

  • fsck.repair=preen → Im Falle einer gravierenden Dateisystembeschädigung, die normalerweise manuell repariert werden müsste, tut dies das System selbst, sollte so eine Situation eintreffen.
  • verbose → Zeigt dir alle Bootmeldungen immer visuell an.

Nachdem Abspeicher aktualisieren wir noch Grub update-grub, und nach dem reboot kannst du die serielle Konsole in Proxmox VE bereits mit xterm.js oder auch auf der Proxmox-Root-Shell direkt verwenden:

qm terminal

Solltest ausschließlich das serielle Terminal benötigen, könntest auch einfach die virtuelle Grafikkarte komplett aus der VM entfernen:

virtualisierung/proxmox_kvm_und_lxc/optimierte_linuxvms_unter_proxmox_ve.1773999105.txt.gz · Zuletzt geändert: von boospy