Enterprise Virtualization: KVM & Cockpit on RHEL (Artikel 118)
Professionelle Virtualisierung unter RHEL. Erfahren Sie den Umgang mit Cockpit-Machines, das Härten von KVM-Instanzen und fortgeschrittene Performance-Optimierungen.
# Enterprise Virtualization on RHEL: KVM im Unternehmenseinsatz
TL;DR / Management Summary RHEL ist die Geburtsstätte von KVM. Während wir unter Debian oft
virt-managernutzen, setzt Red Hat nun voll auf Cockpit zur grafischen Verwaltung und Libvirt für die CLI-Automatisierung. Ein Enterprise-Setup nutzt zudem Hugepages für den RAM, vHost-Net für den Netzwerkdurchsatz und stellt sicher, dass VMs durch SELinux (sVirt) voneinander isoliert sind.
# 1. Einführung & Architektur
Der RHEL Virtualisierungs-Stack.
Red Hat hat den virt-manager als veraltet (deprecated) markiert. Die Zukunft des lokalen VM-Managements ist Web-basiert.
# Architektur-Übersicht (Mermaid)
graph TD
A[Admin: Browser / CLI] -->|HTTPS 9090| B[Cockpit Web UI]
A -->|SSH| C[virsh CLI]
B --> D[libvirtd Daemon]
C --> D
D --> E[KVM Kernel Module]
D --> F[QEMU Emulator]
E/F --> G[VM: Windows / Linux]
H[SELinux: sVirt] --> G
# 2. Installation & Web-Management
Cockpit vorbereiten.
# Pakete installieren
sudo dnf install cockpit cockpit-machines libvirt
sudo systemctl enable --now libvirtd
sudo systemctl enable --now cockpit.socket
Greifen Sie nun über https://<server_ip>:9090 auf den Bereich “Virtual Machines” zu.
# 3. Performance Tuning: Der Enterprise-Schliff
Wo Red Hat glänzt.
# Hugepages (RAM Optimierung)
Standardmäßig nutzt Linux 4KB Memory-Pages. Für große VMs (Datenbanken) sind Hugepages (2MB oder 1GB) effizienter, da sie die CPU-TLB-Last senken.
# Reserviere 2048 Hugepages (2MB) = 4GB RAM
echo 2048 > /proc/sys/vm/nr_hugepages
# CPU Pinning
Verhindern Sie, dass VM-Prozesse zwischen physischen Kernen hin- und herspringen.
<!-- In der virsh XML -->
<cputune>
<vcpupin vcpu='0' cpuset='1'/>
<vcpupin vcpu='1' cpuset='2'/>
</cputune>
# 4. Sicherheit: sVirt (SELinux Isolation)
Schutz vor VM-Escape.
RHEL nutzt sVirt, um jede VM mit einem eigenen SELinux-Kontext zu versehen (ähnlich wie Container, siehe Artikel 108).
- Vorteil: Selbst wenn ein Angreifer aus der VM ausbricht und Root-Rechte auf dem QEMU-Prozess erlangt, verhindert SELinux den Zugriff auf das Dateisystem des Hosts oder andere VMs.
# Status prüfen
ps -eZ | grep qemu
# Output: system_u:system_r:svirt_t:s0:c12,c45 ...
# 5. Troubleshooting & “War Stories”
Wenn die VM hakt.
# Story 1: “Der VNC-Tastatur Albtraum”
Symptom: In der Cockpit-Konsole (VNC) passen die Sonderzeichen nicht, obwohl das OS der VM auf ‘Deutsch’ steht.
Ursache: Das Keymap-Setting in der Libvirt-XML steht auf en-us (Standard).
Lösung: virsh edit <name> -> <graphics type='vnc' port='-1' autoport='yes' keymap='de'/>.
# Story 2: “Disk-I/O Hänger bei Snapshots”
Symptom: Während eines Backups (Snapshot) friert die Datenbank in der VM für 10-20 Sekunden ein. Ursache: Das QCOW2-Dateisystem muss massiv Metadaten schreiben, während der Hypervisor den Disk-State puffert. Lösung: Nutzen Sie RAW-Devices auf einem LVM-Thin-Pool oder ZFS. KVM kann Snapshots dann direkt auf der Storage-Ebene machen, was deutlich schneller ist als auf File-Ebene.
# 6. Fazit & Empfehlung
- GUI: Gewöhnen Sie sich an Cockpit. Es ist der neue Standard für RHEL-Admins.
- Automation: Nutzen Sie Terraform (siehe Artikel 051) mit dem Libvirt-Provider für reproduzierbare VM-Deployments.
- Monitoring: Nutzen Sie
virt-top, um die Ressourcennutzung Ihrer VMs auf der CLI zu überwachen.
# Anhang: Cheatsheet
| Aufgabe | RHEL Befehl |
|---|---|
| VM Liste | virsh list --all |
| Cockpit Start | systemctl start cockpit |
| Resource Monitor | virt-top |
| VM Log-Datei | /var/log/libvirt/qemu/<name>.log |
| XML Export | virsh dumpxml <name> > backup.xml |
| Host Info | virt-host-validate |