Ich habe eine einzelne Maschine mit ProxmoxVE konfiguriert und dort z.B. meine Firewalls laufen. Da die Hardware kein AES-NI unterstüzt und ich Bock auf was neues hatte, habe ich neue Hardware mit AES-NI Support gekauft. Wer mehr über Intel AES-NI erfahren möchte, der kann sich hier z.B. belesen: https://www.intel.de/content/www/de/de/architecture-and-technology/advanced-encryption-standard-aes/data-protection-aes-general-technology.html
Die virtuellen Maschinen sind als KVM installiert worden und liegen im LVM-thin Storage von ProxmoxVE. Nachfolgend beschreibe ich, wie ich alle VMs auf den neuen ProxmoxVE Host migriert habe. Der neue Host ist neu installiert worden und enthält noch keine weiteren VMs. Das ist generell wichtig, da die VM-IDs einmalig sein müssen. Die Migration kann aber auch mit enthaltenen VMs auf dem Zielhost vollzogen werden. Und los gehts:
- der Sourcehost = der alte ProxmoxVE Host
- der Zielhost = der neue ProxmoxVE Host
- LVM Group (VG) = pve (Default nach Installation)
Welche VM’s laufen auf dem Sourcehost und wie ist der Status:
# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 p1vm01 running 2048 16.00 1055
101 p1vm02 stopped 2048 10.00 0
102 p1vm03 stopped 1024 16.00 0
103 p1vm04 running 768 8.00 3701
104 p1vm05 stopped 512 8.00 0
Gut zu sehen, dass 5 KVM VMs auf dem Host angelegt sind, von denen 2 laufen. Wie sehen die Logical Volumes (LVS) auf dem Sourcehost aus:
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data pve twi-aotz-- 60.91g 37.69 2.70
root pve -wi-ao---- 27.75g
swap pve -wi-ao---- 7.00g
vm-100-disk-0 pve Vwi-aotz-- 16.00g data 23.34
vm-101-disk-1 pve Vwi-a-tz-- 10.00g data 89.37
vm-102-disk-1 pve Vwi-a-tz-- 16.00g data 8.31
vm-103-disk-0 pve Vwi-aotz-- 8.00g data 88.94
vm-104-disk-0 pve Vwi-a-tz-- 8.00g data 23.05
Nachdem der neue Host mit ProxmoxVE installiert wurde, er ausreichend Ressourcen für die Migration enthält, kann es weiter gehen. Als erstes werden die VMs auf dem Zielhost so erstellt und konfiguriert wie sie auf dem Sourcehost laufen! Dies kann wie gewohnt über die Web-GUI von Proxmox VE erfolgen. In meinem Fall habe ich sogar die Mac-Adressen kopiert und übernommen.
Nun schauen wir uns die Logical Volumes (LVS) auf dem Zielhost an:
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data pve twi-aotz-- <65.49g 12.22 2.00
root pve -wi-ao---- 29.50g
swap pve -wi-ao---- 7.00g
vm-100-disk-0 pve Vwi-aotz-- 16.00g data 0.00
vm-101-disk-0 pve Vwi-a-tz-- 10.00g data 0.00
vm-102-disk-0 pve Vwi-a-tz-- 16.00g data 0.00
vm-103-disk-0 pve Vwi-aotz-- 8.00g data 0.00
vm-104-disk-0 pve Vwi-a-tz-- 8.00g data 0.00
Hier gut zu sehen, dass die Disks in der selben Größe (LSize) erstellt wurden, wie die auf dem Sourcehost. Wichtig an dieser Stelle ist die Disk-ID, also vm-100-disk-0. Es wurden also alle LVs mit ID-Null erstellt.
Bevor ich die erste VM migriere, schaue ich mir noch die Konfiguration der ersten zu migrierenden Source-VM an:
~# cat /etc/pve/qemu-server/100.conf
...
scsi0: local-lvm:vm-100-disk-0,cache=writeback,size=16G
...
Wie sieht es bei der selben / zukünftigen VM auf dem Zielhost aus:
~# cat /etc/pve/qemu-server/100.conf
...
scsi0: local-lvm:vm-100-disk-0,cache=writeback,size=16G
...
Dies ist der Idealfall denn die Konfiguration der Disk ist entscheidend. Wenn diese gleich ist z.B. auf dem Sourcehost mit disk-0 und auf dem Zielhost mit disk-0, dann kann die VM direkt vom Source- zum Zielhost, in das LVM-thin kopiert werden, zuvor habe ich das System auf dem Sourcehost herunter gefahren.
Ich habe hierfür den Befehl ‚dd‘ mit dem Parameter „status=progress“ für die Anzeige des Verlaufes eingefügt und per weiteren Pipe mit SSH die Disk vom Sourcehost, auf das Zielsystem kopiert.
# dd if=/dev/pve/vm-104-disk-0 status=progress | ssh root@zielhost of=/dev/pve/vm-104-disk-0
root@zielhost's password:
5488299008 bytes (5.5 GB, 5.1 GiB) copied, 237 s, 23.2 MB/s
Damit wurde die erste VM kopiert und kann auf dem Zielhost gestartet werden. Weiter geht es mit der nächsten VM, bzw:
Nun war auch bei mir die LV-ID bei einigen Disk nicht gleich, siehe vm-101-disk-1 und vm-102-disk1, sodass vor dem Kopiervorgang noch Änderungen an der Konfiguration der VM und dem LogicVolume (LV), auf dem Zielhost erfolgen müssen. Als Beispiel an der vm-101, die auf dem Sourcehost disk-1 und auf dem Zielhost mit disk-0 im LV benannt ist. Vor dem kopieren ändere ich auf dem Zielhost beides auf disk-1:
# sed -i 's/disk-0/disk-1/g' /etc/pve/nodes/zielhost/qemu-server/101.conf
# lvrename pve/vm-101-disk-0 pve/vm-101-disk-1
Renamed "vm-101-disk-0" to "vm-101-disk-1" in volume group "pve"
Danach kann die VM heruntergefahren und die Disk vom Sourcehost zum Zielhost mittels ‚dd‘ kopiert werden, siehe oben. Die Schritte wiederholen sich dann bei jeder VM. Sind alle VMs migriert, kann das alte System herunter gefahren werden.
Thats it … have Fun.
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.