Wenn du zwei Proxmox Server mit lokalem Storage hast, kannst du dennoch VM Computer von einem auf den anderen Host migrieren (Offline Migration). Das funktioniert einfach und zuverlässig. Die Migration muss via CLI auf der Shell bzw. per SSH gemacht werden.
Um den Vorgang zu vereinfachen kannst du auf beiden Server einen Skript platzieren, welcher mittels Parameter aufgerufen werden kann.
Voraussetzung für die Migration: Es muss eine bestehende Cluster Verbindung vorhanden sein. Ausserdem müssen die lokalen Storages registriert sein (auf dem jeweiligen Node).
Beispiel Skript:
#!/bin/bash
# Bash-Skript zur Migration von VMs inkl. lokaler Disks zwischen zwei Proxmox-Servern
# Konfiguration
NODE1="proxm01"
NODE2="proxm02"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
# Argumente prüfen
if [[ $# -ne 2 ]]; then
echo "Usage: $0 <vmid> <target-node>"
echo "Beispiel: $0 105 siproxm02"
exit 1
fi
VMID=$1
TARGET_NODE=$2
# Lokaler Hostname herausfinden
LOCAL_NODE=$(hostname)
# Prüfen ob das Ziel != aktuellem Host ist
if [[ "$LOCAL_NODE" == "$TARGET_NODE" ]]; then
echo "❌ Die VM befindet sich bereits auf $LOCAL_NODE. Migration nicht nötig."
exit 1
fi
# Prüfen ob die VM existiert
if ! qm status "$VMID" &>/dev/null; then
echo "❌ VM $VMID existiert nicht auf diesem Node ($LOCAL_NODE)."
exit 1
fi
# VM-Status prüfen
VMSTATUS=$(qm status "$VMID" | awk '{print $2}')
if [[ "$VMSTATUS" != "stopped" ]]; then
echo "⚠️ VM $VMID ist aktuell '$VMSTATUS'. Wird jetzt gestoppt..."
qm shutdown "$VMID"
sleep 5
while [[ "$(qm status "$VMID" | awk '{print $2}')" != "stopped" ]]; do
echo "⏳ Warten auf Shutdown..."
sleep 3
done
echo "✅ VM wurde gestoppt."
fi
# Migration starten
echo "🚀 Starte Migration von VM $VMID von $LOCAL_NODE → $TARGET_NODE (inkl. lokale Disks)..."
qm migrate "$VMID" "$TARGET_NODE" --with-local-disks --targetstorage vol-10tb
# Erfolg prüfen
if [[ $? -eq 0 ]]; then
echo "✅ Migration erfolgreich abgeschlossen [$DATE]"
else
echo "❌ Migration fehlgeschlagen"
exit 1
fi
Skript ausführbar machen (chmod) und ausführen:
./migrate_vm.sh 105 proxm02