VMs erstellen & verwalten
Virtuelle Maschinen mit KVM - von der Erstellung bis zur Optimierung.
🤔 Wann brauche ich eine VM?
Virtuelle Maschinen bieten vollstaendige Hardware-Virtualisierung mit eigenem Kernel.
VM verwenden fuer:
- ✓ Windows-Betriebssysteme
- ✓ BSD, Solaris, andere OS
- ✓ Eigene Kernel-Module noetig
- ✓ GPU/PCIe-Passthrough
- ✓ Maximale Isolation gewuenscht
- ✓ Nested Virtualization
Besser LXC Container:
- → Reine Linux-Services
- → Docker/Container-Host
- → Ressourcen-Effizienz wichtig
- → Schnelle Start-Zeiten
- → Viele kleine Instanzen
Performance-Unterschied
VMs haben ca. 5-10% Overhead gegenueber Bare-Metal. LXC Container nur ca. 1-2%. Fuer die meisten Linux-Workloads sind Container effizienter.
💿 ISO-Images vorbereiten
Bevor du eine VM erstellen kannst, brauchst du ein Installations-ISO.
ISO hochladen (Web-UI)
- Datacenter → Storage → local (oder anderer Storage)
- ISO Images → Upload
- ISO-Datei auswaehlen und hochladen
# ISO direkt auf Server herunterladen
cd /var/lib/vz/template/iso/
# Debian
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso
# Ubuntu Server
wget https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.iso
# Windows VirtIO-Treiber (wichtig fuer Windows-VMs!)
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
# Alternativ: Download from URL in der Web-UI
# Datacenter → Storage → ISO Images → Download from URL
# URL eingeben, Proxmox laedt direkt herunter
Windows-VMs
Fuer Windows-VMs unbedingt die VirtIO-Treiber-ISO herunterladen! Ohne diese erkennt Windows die virtuellen Festplatten nicht.
🖱️ VM erstellen (Web-UI)
Rechtsklick auf den Node → Create VM
1. General
- Node: Auf welchem Server die VM laufen soll
- VM ID: Eindeutige Nummer (100-999999999)
- Name: Beschreibender Name (z.B. "debian-webserver")
2. OS
- ISO image: Installations-ISO auswaehlen
- Guest OS: Typ und Version (Linux/Windows)
3. System
- Machine: q35 (modern) oder i440fx (legacy)
- BIOS: OVMF (UEFI) oder SeaBIOS (Legacy)
- SCSI Controller: VirtIO SCSI single (beste Performance)
- Qemu Agent: Aktivieren fuer bessere Integration
4. Disks
- Bus/Device: SCSI (VirtIO)
- Storage: local-lvm oder ZFS
- Disk size: Nach Bedarf (kann spaeter vergroessert werden)
- Cache: Write back (mit BBU) oder None
- Discard: Aktivieren fuer SSDs (TRIM)
- IO thread: Aktivieren fuer bessere Performance
5. CPU
- Sockets: 1 (ausser Multi-Socket-Server)
- Cores: Nach Bedarf
- Type: host (beste Performance) oder x86-64-v2-AES
6. Memory
- Memory: RAM in MiB
- Ballooning: Aktivieren fuer dynamisches RAM
7. Network
- Bridge: vmbr0 (oder andere Bridge)
- Model: VirtIO (paravirtualized)
- VLAN Tag: Optional fuer VLAN-Zuweisung
- Firewall: Proxmox-Firewall aktivieren
Empfohlene Einstellungen
- Machine:
q35+ BIOS:OVMF (UEFI) - CPU Type:
host - SCSI Controller:
VirtIO SCSI single - Disk:
Discard=on, IO thread=on - Network:
VirtIO (virtio)
⌨️ VM erstellen (CLI)
VMs lassen sich auch komplett per CLI erstellen und verwalten.
# Debian/Ubuntu Server VM
qm create 100 \
--name "debian-server" \
--ostype l26 \
--machine q35 \
--bios ovmf \
--efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1 \
--cpu host \
--cores 2 \
--sockets 1 \
--memory 4096 \
--balloon 2048 \
--scsihw virtio-scsi-single \
--scsi0 local-lvm:32,discard=on,iothread=1,ssd=1 \
--ide2 local:iso/debian-12.5.0-amd64-netinst.iso,media=cdrom \
--net0 virtio,bridge=vmbr0,firewall=1 \
--agent enabled=1 \
--boot order=scsi0;ide2
# VM starten
qm start 100
# Windows 11 VM (mit VirtIO-Treiber-ISO)
qm create 101 \
--name "windows11" \
--ostype win11 \
--machine q35 \
--bios ovmf \
--efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1 \
--tpmstate0 local-lvm:1,version=v2.0 \
--cpu host \
--cores 4 \
--sockets 1 \
--memory 8192 \
--scsihw virtio-scsi-single \
--scsi0 local-lvm:64,discard=on,iothread=1,ssd=1 \
--ide0 local:iso/Win11_23H2_German_x64.iso,media=cdrom \
--ide2 local:iso/virtio-win.iso,media=cdrom \
--net0 virtio,bridge=vmbr0,firewall=1 \
--agent enabled=1 \
--boot order=scsi0;ide0
# TPM ist fuer Windows 11 erforderlich!
Windows-Installation
Bei der Windows-Installation "Treiber laden" waehlen und auf die VirtIO-ISO navigieren. Dort den passenden Storage-Treiber (vioscsi) und Netzwerk-Treiber (NetKVM) laden.
🔧 VMs verwalten
Wichtige Befehle fuer die taegliche VM-Verwaltung.
# Alle VMs auflisten
qm list
# VM-Status abfragen
qm status 100
# VM starten
qm start 100
# VM herunterfahren (graceful via ACPI)
qm shutdown 100
# VM sofort stoppen (wie Stecker ziehen)
qm stop 100
# VM neu starten
qm reboot 100
# VM pausieren/fortsetzen
qm suspend 100
qm resume 100
# VM-Konfiguration anzeigen
qm config 100
# CPU-Cores aendern
qm set 100 --cores 4
# RAM aendern
qm set 100 --memory 8192
# Weitere Festplatte hinzufuegen
qm set 100 --scsi1 local-lvm:50,discard=on
# Festplatte vergroessern
qm resize 100 scsi0 +20G
# Netzwerk aendern
qm set 100 --net0 virtio,bridge=vmbr0,tag=100
# CD-ROM auswerfen
qm set 100 --ide2 none,media=cdrom
# Beschreibung setzen
qm set 100 --description "Webserver fuer Produktion"
# VNC-Konsole (im Terminal)
qm terminal 100
# QEMU Guest Agent Befehle
qm agent 100 ping
qm agent 100 get-osinfo
qm agent 100 get-host-name
qm agent 100 get-memory-blocks
qm agent 100 get-vcpus
# Datei in VM ausfuehren (Guest Agent)
qm agent 100 exec -- 'cat /etc/os-release'
Guest Agent installieren
Fuer volle Funktionalitaet den QEMU Guest Agent in der VM installieren:
# Debian/Ubuntu
apt install qemu-guest-agent
systemctl enable --now qemu-guest-agent
📋 Klonen & Templates
Templates und Klone sparen Zeit bei der Erstellung mehrerer aehnlicher VMs.
Full Clone
- Komplette Kopie aller Daten
- Unabhaengig vom Original
- Braucht vollen Speicherplatz
- Fuer: Produktive VMs
Linked Clone
- Nur Aenderungen werden gespeichert
- Abhaengig vom Original (Snapshot)
- Spart Speicherplatz
- Fuer: Tests, temporaere VMs
# VM herunterfahren
qm shutdown 100
# Cloud-Init vorbereiten (optional, fuer automatische Konfiguration)
qm set 100 --ide2 local-lvm:cloudinit
qm set 100 --boot order=scsi0
qm set 100 --serial0 socket --vga serial0
# In Template umwandeln
qm template 100
# Template kann nicht mehr gestartet werden!
# Nur noch klonen moeglich
# Full Clone erstellen
qm clone 100 200 --name "webserver-prod" --full
# Linked Clone erstellen (schneller, aber abhaengig)
qm clone 100 201 --name "webserver-test"
# Clone mit anderem Storage
qm clone 100 202 --name "webserver-backup" --full --storage backup-storage
Cloud-Init
Mit Cloud-Init koennen VMs automatisch konfiguriert werden (Hostname, SSH-Keys, Netzwerk). Ideal fuer Infrastructure-as-Code Workflows.
🔄 Migration zwischen Nodes
VMs koennen zwischen Cluster-Nodes verschoben werden - online oder offline.
# Offline Migration (VM muss gestoppt sein)
qm migrate 100 pve2
# Online Migration (VM laeuft weiter)
qm migrate 100 pve2 --online
# Mit lokalem Storage (kopiert Disks)
qm migrate 100 pve2 --online --with-local-disks
# Ziel-Storage angeben
qm migrate 100 pve2 --online --targetstorage local-lvm
Voraussetzungen fuer Live-Migration
- Gemeinsamer Storage (Ceph, NFS, iSCSI) ODER
--with-local-disks - Gleiche CPU-Features (oder
--force) - Cluster korrekt konfiguriert
- Ausreichend RAM auf Ziel-Node
🎮 GPU Passthrough (PCI)
Dedizierte Grafikkarte direkt an eine VM durchreichen.
# /etc/default/grub anpassen
# Intel:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# AMD:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
# Grub aktualisieren
update-grub
reboot
# /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
# GPU von Host-Treiber trennen
# /etc/modprobe.d/vfio.conf
# GPU-IDs mit "lspci -nn" herausfinden
options vfio-pci ids=10de:2684,10de:22ba disable_vga=1
# Blacklist Host-Treiber
# /etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist nvidia
# Initramfs aktualisieren
update-initramfs -u -k all
reboot
# PCI-Geraete auflisten
lspci -nn | grep -i nvidia
# GPU zur VM hinzufuegen (Web-UI: Hardware → Add → PCI Device)
qm set 100 --hostpci0 0000:01:00,pcie=1,x-vga=1
# Fuer NVIDIA: ROM-Bar deaktivieren falls Probleme
qm set 100 --hostpci0 0000:01:00,pcie=1,x-vga=1,rombar=0
GPU Passthrough Hinweise
- Nicht alle GPUs/Mainboards unterstuetzen Passthrough
- IOMMU-Gruppen beachten (ACS Override evtl. noetig)
- GPU kann nur von einer VM gleichzeitig genutzt werden
- Fuer Gaming/CAD: CPU-Type
hostwichtig
🔧 Troubleshooting
# VM startet nicht - Logs pruefen
qm start 100
journalctl -u pve-qemu-server@100 -e
# UEFI Boot-Probleme
# EFI-Disk neu erstellen
qm set 100 --efidisk0 local-lvm:1,efitype=4m
# Kein Netzwerk in der VM
# Bridge pruefen
brctl show
ip a show vmbr0
# VirtIO-Treiber fehlen (Windows)
# VirtIO-ISO als zweites CD-Laufwerk einbinden
# VM haengt beim Shutdown
# Forcierter Stop
qm stop 100 --skiplock
# Disk voll
df -h /var/lib/vz
lvs
# CPU-Auslastung pruefen
qm monitor 100
# Dann: info cpus
# I/O-Statistiken
qm monitor 100
# Dann: info block
# Live-Ansicht der VM-Ressourcen
watch -n 1 'qm status 100 --verbose'
# Host-CPU-Typ pruefen (fuer type: host)
cat /proc/cpuinfo | grep "model name" | head -1
Hilfe bei der VM-Einrichtung?
Wir unterstuetzen bei der Planung und Konfiguration deiner virtuellen Infrastruktur.
Beratung anfragen →