Tomas' Labroratory

Migrating ZFS backed VMs between Proxmox Clusters

Migrating VMs inside a proxmox cluster is easy. But what to do when you need to migrate a VM to another proxmox cluster? With a bit of command line, the rest is easy as long as you're using ZFS. Even for the largest VMs the amount of down time required is mimimal.

#####################################Example scenario                  ######################################Source cluster host: PVEA#Source cluster VM ID: 199 (WARNING! make sure your IDs don't overlap on clusters otherwise you may overwrite your data)#Destination cluster host PVEB#on PVEA take snapshot and call it "migrate"#confirm you're migrating the right one PVEA>zfs list #send data.  This command may run very long time, but it's ok because the source VM keeps running PVEA>zfs send rpool/data/vm-199-disk-0@migrate  | ssh PVEB zfs recv rpool/data/vm-199-disk-0#when it finishes shutdown VM ID 199#on PVEA take snapshot and call it "migrate2"#send incremental dataPVEA>zfs  send -i rpool/data/vm-199-disk-0@migrate  rpool/data/vm-199-disk-0@migrate2 | ssh PVEB zfs recv  rpool/data/vm-199-disk-0#check that you got the data (this transfer should be super fast)PVEB>zfs list -t snapshot#send config overPVEA>scp 199.conf PVEB:/etc/pve/qemu-server/199.conf #on PVEB start VM ID 199 (and optionaly delete snapshots)#done!