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.
- In Proxmox: Discard-Option für die Disk aktivieren.
- 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 ... |