Migration VMware nach KVM/QEMU
Mit dem folgenden Script lassen sich mehrere virtuelle Maschinen von VMware zu Proxmox oder QMEMU basierten Systemen migrieren.
#!/bin/bash
# Liste der VM-Namen
VM_NAMES=("VM_Name_1" "VM_Name_2" "VM_Name_3")
SOURCE_SERVER="root@source_server_ip"
TARGET_STORAGE="local-lvm" # Hier den gewünschten Zielspeicher angeben
TEMP_DIR="/tmp" # Hier den Pfad zum temporären Verzeichnis festlegen
DELETE_TEMP_FILE=true # Setzen Sie auf "false", wenn die temporäre Datei nicht gelöscht werden soll
# Funktion zur Ermittlung der nächsten freien VMID
get_next_free_vmid() {
local vmids=($(qm list | awk '{if(NR>1)print $1}'))
local next_vmid=100 # Starten Sie bei VMID 100 oder passen Sie dies an Ihre Bedürfnisse an
while [[ " ${vmids[@]} " =~ " $next_vmid " ]]; do
((next_vmid++))
done
echo $next_vmid
}
# Schritt 2: Ermitteln des BIOS-Typs (UEFI oder nicht) und Import für jede VM
for VM_NAME in "${VM_NAMES[@]}"; do
echo "Verarbeite VM: $VM_NAME"
# Manuelle Definition des BIOS-Typs (true für UEFI, false für Legacy)
UEFI=true # Ändern Sie dies entsprechend dem BIOS-Typ Ihrer VM
# Schritt 1: Exportieren der VM von VMware mit ovftool
echo "Schritt 1: Exportieren der VM von VMware mit ovftool"
ovftool vi://$SOURCE_SERVER/$VM_NAME $TEMP_DIR/$VM_NAME.ova
# Schritt 2: Importieren der VM in Proxmox und Ermitteln der nächsten freien VMID
VMID=$(get_next_free_vmid)
echo "Schritt 2: Importieren der VM in Proxmox mit VMID $VMID"
qm importovf $VMID $TEMP_DIR/$VM_NAME.ova $TARGET_STORAGE
# Schritt 3: Setzen des BIOS auf UEFI oder Legacy
if [[ $UEFI == true ]]; then
echo "Schritt 3: Setzen des BIOS auf UEFI"
qm set $VMID --bios ovmf
else
echo "Schritt 3: Setzen des BIOS auf Legacy (nicht UEFI)"
qm set $VMID --bios seabios
fi
# Schritt 4: Anpassen der Speichercontroller-Einstellungen (nur für Windows)
if [[ $UEFI == true ]]; then
echo "Schritt 4: Anpassen der Speichercontroller-Einstellungen (nur für Windows)"
sed -i 's/scsi/sata/g' /etc/pve/qemu-server/$VMID.conf
fi
# Schritt 5: Starten der VM
echo "Schritt 5: Starten der VM"
qm start $VMID
# Optionale Löschung der temporären Datei
if [[ $DELETE_TEMP_FILE == true ]]; then
echo "Bereinigen temporärer Dateien"
rm $TEMP_DIR/$VM_NAME.ova
fi
echo "Migration der VM $VM_NAME abgeschlossen mit VMID $VMID"
done