Hallo liebe Leser, heute migrieren wir eine virtuelle Maschine von VMware ESXi auf Proxmox VE.
Heute arbeiten wir nicht in unserer Laborumgebung, sondern in der Produktionsumgebung. Wir haben eine Ausfallzeit für diesen Migrationsprozess geplant. Wir migrieren einen virtuellen NTP-Server von unserem alten ESXi auf den neuen Proxmox-Cluster.
Migration vorbereiten
Wir haben ein RAID5-Festplatten-Array als Datenspeicher für unseren älteren ESXi-Hypervisor und Gluster FS Replicated Storage als gemeinsam genutzten Speicher im Proxmox-Cluster. Wir wissen, dass VMware ESXi VM-Festplatten im VMDK-Image-Format speichert und für Proxmox benötigen wir das QCOW2-Festplatten-Image-Format. Daher ändern wir das Bildformat von VMDK in QCOW2. Um mehr über Proxmox zu erfahren, können Sie unsere anderen Posts auf Proxmox besuchen.
Wir können die VMware-Festplatte direkt in Proxmox Hypervisor importieren, aber es wird die volle Festplattengröße verwendet, die dem virtuellen Festplatten-Image zugewiesen ist. Das Importieren des Disk-Images als Thin Provisioning würde etwas Speicherplatz sparen und es uns ermöglichen, Speicherplatz zwischen virtuellen Maschinen zu überschreiben.
Um eine Festplatte einer virtuellen Maschine als Thin Provisioning zu importieren und unnötigen Speicherplatz zu entfernen, der vom Festplatten-Image verwendet wird, verwenden wir einen anderen zwischengeschalteten CentOS-Virtualisierungshost mit dem Dienstprogramm qemu-img und dem darin installierten Komprimierungstool virt-sparsify, pigz.
In diesem Artikel führen wir alle Operationen über die Befehlszeilenschnittstelle aus. Wir benötigen also Shell-Zugriff für alle 3 Hosts. Um den SSH-Zugriff in VMware ESXi zu aktivieren, lesen Sie bitte dieses Dokument. Wir müssen dem SSH-Client auch erlauben, Disk-Image-Dateien vom ESXi-Host zu sCPen; Gehen Sie im ESXi-Hostportal zu Netzwerk -> Firewall-Regeln -> SSH-Client. Klicken Sie auf Aktionen und dann auf Aktivieren.
VMware ESXi-Festplatten-Image vorbereiten
Identifizieren Sie die Ziel-VM in ESXi.
# vim-cmd vmsvc/getallvms
Oder verwenden Sie grep, um unnötige Ausgaben herauszufiltern
# vim-cmd vmsvc/getallvms | grep -i ntp
Hier haben wir festgestellt, dass die VM-ID 19 ist und ihre Konfigurationsdatei sich in datastore2/NTP-1 befindet Verzeichnis.
Fahren Sie jetzt die virtuelle Zielmaschine herunter und überprüfen Sie den Energiestatus der VM
# vim-cmd vmsvc/power.getstate 19
Navigieren Sie zum VM-Verzeichnis und ermitteln Sie den Namen der virtuellen Festplatte
VMware verwendet das Disk-Image-Format VMDK zum Speichern von Daten. In ESXi verwendet es eine Metadatendatei und tatsächliche Disk-Image-Namen als IMAGENAME-flat.vmdk. Hier stellen wir fest, dass wir solche 2 Dateien haben, NTP-1.vmdk (Metadaten) und NTP-1-flat.vmdk.
Da das virtuelle Laufwerk NTP-1-flat.vmdk größer ist, werden wir es komprimieren, damit es uns nicht mehr Zeit kostet, Daten von ESXi auf den CentOS-Host zu übertragen.
# pigz -v -1 -k -p8 NTP-1-flat.vmdk
Hinweis:Wenn Sie Hochgeschwindigkeitsnetzwerkverbindungen zwischen Servern haben, können Sie die Komprimierung überspringen.
Nach Abschluss der Komprimierung senden wir das komprimierte Disk-Image und die Metadatendatei per SCP an unseren CentOS-Virtualisierungs-Zwischenhost, um das Disk-Image zu konvertieren und zu spärifizieren.
Konvertieren Sie VMDK in QCOW2 und sparen Sie das QCOW2-Festplatten-Image
Um das Disk-Image von VMDK in das QCOW2-Format zu konvertieren, benötigen wir qemu-img Dienstprogramm, das auf dem CentOS-Virtualisierungshost vorinstalliert sein sollte. Sie können es auch mit dem folgenden Befehl installieren
# yum install -y qemu-img
Navigieren Sie zum Disk-Image-Verzeichnis und dekomprimieren Sie die Disk-Image-Datei
# pigz -v -d NTP-1-flat.vmdk.gz
Konvertieren Sie das Dateiformat von VMKD in QCOW2
# qemu-img convert -p -O qcow2 NTP-1.vmdk NTP-1.qcow2
Installieren Sie virt-sysprep Tools im CentOS-Host
# yum install -y /usr/bin/virt-sysprep
Um Probleme mit der temporären Verzeichnisgröße zu vermeiden, erstellen wir ein tmp Verzeichnis innerhalb unserer vmdata Verzeichnis und volle Berechtigung für alle Benutzer
# mkdir /vmdata/tmp # chmod 777 -R tmp
Sparse die qcow2-formatierte Disk-Image-Datei
# virt-sparsify --tmp tmp --compress NTP-1.qcow2 ntp-1-sparsed.qcow2
Laden Sie die neue Sparsed-Disk-Image-Datei auf den Proxmox VE-Host hoch
Stellen Sie die VM in Proxmox VE von einem vorhandenen QCOW2-Festplatten-Image bereit
Lassen Sie uns eine VM in Proxmox VE erstellen
qm create 120 --name ntp-1 \ --sockets 1 --cores 2 --vcpus 2 --cpu host \ --memory 4096 \ --ostype l26 --arch x86_64 \ --agent enabled=1 \ --scsihw virtio-scsi-pci \ --bootdisk scsi0 \ --boot c
Hier ist 120 die VM-ID in Proxmox
Importieren Sie das Disk-Image ntp-1-sparsed.qcow2 in die VM
# qm importdisk 120 /path/to/image/ntp-1-sparsed.qcow2 glusterFSname --format=qcow2 # qm set 120 --scsi0 glusterFSname:120/vm-120-disk-0.qcow2
Konfigurieren Sie das Netzwerk für die VM
# qm set 120 --net0 model=virtio,bridge=vmbr0,firewall=1,tag=10
Hier haben wir VLAN-ID 10 für Server-LAN verwendet, verwenden Sie Ihre VLAN-ID für Tagged/Trunk-Switchport-Typ.
Überprüfen Sie die VM-Konfiguration
# qm config 120
Starten Sie die VM
# qm start 120
Das war’s, Ihre VM wurde erfolgreich von VMware ESXi auf Proxmox VE migriert.