Xen Hypervisor on SLES: Advanced Isolation (Artikel 167)
Tiefgehende Analyse des Xen Hypervisors unter SLES. Erfahren Sie alles über die Dom0-Architektur, Para-Virtualisierung und das Management mittels xl-Toolset.
# Xen Masterclass: Hochsichere Virtualisierung auf SLES
TL;DR / Management Summary Während KVM ein Teil des Kernels ist, ist Xen ein eigenständiger Micro-Kernel (Hypervisor), der direkt auf der Hardware startet. Die Linux-Instanz, die Sie sehen, ist nur die privilegierte Domain-0 (Dom0). Dieser Architektur-Unterschied bietet eine stärkere Isolation und ist der Grund, warum Xen in Hochsicherheitsumgebungen und bei großen Cloud-Providern weiterhin geschätzt wird. Wer Xen unter SLES beherrscht, kann Virtualisierung mit maximaler Kontrolle über Hardware-Ressourcen betreiben.
# 1. Einführung & Architektur
Dom0 und DomU.
In Xen ist das Host-Betriebssystem selbst eine virtuelle Maschine mit Sonderrechten (Dom0).
# Die Xen-Architektur (Mermaid)
graph TD
A[Hardware: CPU / RAM / Disk] --- B[Xen Hypervisor: Micro-Kernel]
B --- C[Domain-0: SLES Admin Instance]
B --- D[Domain-U: Guest Linux]
B --- E[Domain-U: Guest Windows]
C -->|Controls| B
C -->|Hardware Access| A
- PV (Para-Virtualisierung): Gast-OS weiß, dass es virtuell läuft. Extrem schnell, keine Hardware-Emulation nötig.
- HVM (Hardware Virtual Machine): Gast-OS wird eine vollständige Hardware vorgegaukelt (nötig für Windows).
# 2. Management via xl Toolset
Die Ablösung von XM.
Früher nutzte Xen das xm Tool, heute ist xl (Xen Light) der Standard. Es ist schneller und braucht keinen zentralen Dämon für einfache Operationen.
# Grundbefehle
# Liste aller laufenden Domains
sudo xl list
# Details zu den Ressourcen-Zuweisungen
sudo xl info
# Top-ähnliche Ansicht für Xen
sudo xentop
# 3. Erstellung einer Xen-VM
Konfiguration über Textdateien.
Anstatt XML (wie bei Libvirt) nutzt Xen einfache .cfg Dateien.
# Beispiel: webserver.cfg
name = "webserver01"
vcpus = 2
memory = 2048
disk = [ 'format=raw, vdev=xvda, target=/dev/vg_data/lv_web' ]
vif = [ 'bridge=br0' ]
kernel = "/boot/vmlinuz-xxx"
ramdisk = "/boot/initrd-xxx"
extra = "root=/dev/xvda1"
Starten mit: sudo xl create webserver.cfg.
# 4. Day-2 Operations: Ressourcen-Kontrolle
Hardware-Nahe Zuweisung.
Ein großer Vorteil von Xen ist die exakte Zuweisung von Ressourcen.
# CPU Pinning
# Pinnen von vCPU 0 der VM 'web01' auf physischen Kern 4
sudo xl vcpu-pin web01 0 4
# Memory Ballooning
Ändern Sie den verfügbaren RAM im laufenden Betrieb:
sudo xl mem-set web01 4096
# 5. Troubleshooting & “War Stories”
Wenn die Dom0 streikt.
# Story 1: “Der Dom0 RAM-Engpass”
Symptom: Der Host wird extrem langsam, SSH-Logins dauern ewig, aber die VMs laufen flüssig.
Ursache: Der Hypervisor hat der Dom0 nicht genug RAM gelassen oder die Dom0 versucht, allen verfügbaren RAM für sich zu beanspruchen.
Lösung: Limitieren Sie den Dom0 RAM in den Boot-Parametern von GRUB:
dom0_mem=2G,max:2G. Dies stellt sicher, dass die Management-Instanz immer flüssig läuft.
# Story 2: “Netzwerk-Bridge Hänger”
Symptom: VMs können sich untereinander pingen, aber nicht nach außen.
Ursache: Xen nutzt eigene Skripte (vif-bridge), um Interfaces zur Bridge hinzuzufügen. Wenn diese mit Wicked (Artikel 134) kollidieren, schlägt das Setup fehl.
Lösung: Deaktivieren Sie das automatische Scripting in Xen und weisen Sie die Interfaces in der .cfg Datei explizit der bereits existierenden Bridge zu.
# 6. Fazit & Empfehlung
- Sicherheit: Nutzen Sie Xen für Mandanten-Systeme, bei denen eine strikte Trennung auf Hardware-Ebene gefordert ist.
- Performance: PV-Gäste (Para-virtualisiert) unter Xen sind bei I/O-Lasten oft effizienter als KVM-Gäste.
- Wartung: SLES bietet exzellenten Support für Xen. Nutzen Sie das YaST-Modul (Artikel 166), um das Grundsetup (Dom0 Kernel) zu erstellen.
# Anhang: Cheatsheet
| Aufgabe | Xen Befehl |
|---|---|
| Konsole der VM | xl console <name> |
| VM stoppen | xl shutdown <name> |
| VM hart killen | xl destroy <name> |
| Resource Monitor | xentop |
| Backup (Snapshot) | xl snapshot <name> <file> |
| Dom0 Kernel Logs | xl dmesg |
| PCI-Passthrough | xl pci-assignable-list |