Proxmox VE Logo

ProxmoxVE Migrating LVM-Thin Volumes zum anderen Host

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.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.