linux-suse-opensuse proxmox virtualization sles optimization enterprise

SLES in Proxmox: VM Optimization (Artikel 180)

Der definitive Guide für SLES-Gäste unter Proxmox VE. Erfahren Sie alles über Treiber-Optimierung, Btrfs-Besonderheiten in VMs und die perfekte Integration in den Hypervisor.

# SLES on Proxmox: Enterprise-Performance im virtuellen Rechenzentrum

TL;DR / Management Summary Wer SUSE Linux Enterprise Server (SLES) auf Proxmox betreibt, erwartet höchste Stabilität. Um diese zu erreichen, müssen der QEMU Guest Agent korrekt installiert, die VirtIO-Pipeline optimiert und das Btrfs-Dateisystem an die Gegebenheiten der Virtualisierung angepasst werden. Dieses Modul zeigt, wie Sie SLES-Instanzen so konfigurieren, dass sie sich nahtlos in die Proxmox-Infrastruktur einfügen und maximale I/O-Werte erreichen.


# 1. Einführung & Architektur

Die Brücke zwischen SLES und KVM.

SLES erkennt KVM nativ. Die Optimierung konzentriert sich auf die Reduzierung des Overheads bei I/O und CPU-Zyklen.

# Die Architektur-Kette (Mermaid)

graph TD
    A[SLES Guest: / (Btrfs)] -->|VirtIO-SCSI| B[Proxmox Hypervisor]
    A -->|Guest Agent Socket| C[Host Control API]
    B -->|CPU Type: Host| D[Intel/AMD Physical CPU]
    C -->|Backup Sync: fsfreeze| A
    B -->|IOThread| E[ZFS / Ceph Backend]

# 2. Gast-System Vorbereitung

Den Agenten und Treiber aktivieren.

# Schritt 1: QEMU Guest Agent

Unter SLES ist der Agent oft nicht standardmäßig aktiv.

sudo zypper install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

# Schritt 2: VirtIO-Optimierung

Stellen Sie sicher, dass in Proxmox für die Disk der Controller VirtIO SCSI Single mit aktiviertem iothread gewählt ist. In SLES sorgt der Kernel automatisch für die korrekte Modul-Ladung.


# 3. Storage-Tuning in der VM

Btrfs und Discard.

# Btrfs für VMs anpassen

Wenn SLES auf einem Thin-Provisioned Storage (LVM-Thin, ZFS) läuft, muss die VM ungenutzte Blöcke zurückgeben.

  1. In Proxmox: Discard-Option für die Disk aktivieren.
  2. In SLES:
# Wöchentliches TRIM via Systemd
sudo systemctl enable --now fstrim.timer

# I/O Scheduler

Da der Hypervisor (Proxmox) das Scheduling übernimmt, sollte SLES intern den mq-deadline oder none Scheduler nutzen.

# Prüfen
cat /sys/block/sda/queue/scheduler
# [mq-deadline] none

# 4. Day-2 Operations: Registration & Klonen

Das Subscription-Dilemma.

Beim Klonen von SLES-VMs in Proxmox kommt es oft zu doppelten Registrierungen im SCC (SUSE Customer Center).

# Vor der Template-Erstellung (Cleanup)

Bevor Sie eine SLES-VM zum Template machen:

# 1. Registrierung entfernen
sudo SUSEConnect --de-register
sudo SUSEConnect --cleanup

# 2. Machine-ID leeren (verhindert DHCP/Log-Konflikte)
sudo truncate -s 0 /etc/machine-id
sudo rm -f /var/lib/dbus/machine-id

# 3. Zypper Cache leeren
sudo zypper clean -a

# 5. Troubleshooting & “War Stories”

Wenn die Performance einbricht.

# Story 1: “Der hängende Proxmox-Backup”

Symptom: Das tägliche Proxmox-Backup der SLES-VM bleibt bei 0% oder 100% hängen. Ursache: Der Guest Agent kann das Dateisystem nicht einfrieren (fsfreeze), weil ein Btrfs-Scrubbing oder eine Balance-Operation im Hintergrund läuft. Lösung: Planen Sie Btrfs-Wartungsaufgaben zeitversetzt zu den Proxmox-Backups. Prüfen Sie journalctl -u qemu-guest-agent.

# Story 2: “Uhrzeit-Drift bei Last”

Symptom: In SLES-Gästen geht die Uhr nach, was zu Fehlern bei Kerberos oder Datenbank-Syncs führt. Ursache: Hohe CPU-Last auf dem Host führt zu verpassten Ticks in der VM. Lösung: Nutzen Sie immer chrony im Gast und stellen Sie in Proxmox den Timetick-Modus auf kvm-clock.


# 6. Fazit & Empfehlung

  • CPU: Setzen Sie den CPU-Typ in Proxmox auf host, um Features wie AES-NI (Verschlüsselung) nativ in SLES zu nutzen.
  • Netzwerk: Nutzen Sie den virtio Netzwerk-Controller für Durchsatzraten bis zu 40 Gbit/s.
  • Wartung: Nutzen Sie Cloud-Init (Artikel 054), um SLES-VMs nach dem Klonen automatisch zu registrieren.

# Anhang: Cheatsheet

Aufgabe Ort Befehl / Einstellung
Agent Check Gast systemctl status qemu-guest-agent
IP-Anzeige Host qm agent <vmid> get-ip-address
Disk Rescan Gast echo 1 > /sys/block/sda/device/rescan
Btrfs Usage Gast btrfs fi usage /
Console Zugriff Host qm terminal <vmid>
Performance Test Gast fio --name=test --ioengine=libaio --rw=randwrite ...