How to Live Migrate VMs Between Proxmox Nodes

Needing to take a Proxmox node offline for maintenance used to mean shutting down every VM running on it first.

proxmox

Needing to take a Proxmox node offline for maintenance used to mean shutting down every VM running on it first. Proxmox live migration eliminates that downtime entirely, moving a running VM from one cluster node to another while it continues operating, with users typically never noticing the transition happened at all.

What Is Live Migration?

Live migration transfers a running VM’s memory state and disk (if not already on shared storage) from one Proxmox node to another while the VM keeps running throughout the process. Rather than a “shutdown, copy, restart” sequence, Proxmox copies the VM’s memory contents to the destination node while it’s still actively running on the source, then performs a nearly instantaneous final handoff once the memory state is fully synchronized.

Prerequisites for Live Migration

  • A Proxmox cluster – multiple nodes joined together
  • Shared or accessible storage – ideally Ceph, NFS, or another shared storage backend so the VM’s disk doesn’t need to be copied during migration; without shared storage, Proxmox can still migrate the disk alongside the VM, but this takes considerably longer
  • Matching or compatible CPU types – nodes should have similar enough CPU architectures, or the VM should be configured with a generic CPU type, to avoid compatibility issues on the destination node

Performing a Live Migration via the Web UI

  1. Right-click the VM you want to migrate in the Proxmox web interface.
  2. Select Migrate.
  3. Choose the Target Node from the dropdown.
  4. Ensure Online migration mode is selected (rather than offline, which would require shutting the VM down first).
  5. Click Migrate to begin the process.

Proxmox displays real-time progress as it copies memory pages to the destination, with the VM continuing to run and serve traffic on the source node throughout most of the process.

Performing a Live Migration via Command Line

qm migrate <vmid> <target-node> --online

What Happens During Migration

Live migration works by repeatedly copying the VM’s memory pages to the destination node while the VM continues running and potentially modifying that same memory on the source. Proxmox tracks which pages change during each copy pass and re-copies only the modified ones, converging toward a point where the remaining unsynchronized data is small enough to transfer in a final, brief pause — typically a few hundred milliseconds — before the VM resumes running entirely on the destination node.

Why Shared Storage Matters So Much

If the VM’s disk already lives on shared storage accessible from both source and destination nodes, live migration only needs to transfer memory state, making the process fast and lightweight. Without shared storage, Proxmox also needs to copy the entire disk image alongside the memory state, which for a large VM disk can take considerably longer and puts more strain on your network during the migration window.

Common Reasons to Use Live Migration

  • Planned node maintenance – applying Proxmox updates or hardware changes to a node without taking its VMs offline
  • Load balancing – manually redistributing VMs across nodes if one is becoming more resource-constrained than others
  • Preparing for hardware replacement – migrating everything off a node you’re about to physically decommission or replace

Troubleshooting Failed Migrations

Common causes of migration failures include CPU type incompatibilities between source and destination nodes, insufficient resources on the target node to accommodate the VM, or network connectivity issues between nodes during the transfer. Checking the migration task log in the Proxmox web interface typically identifies the specific cause clearly.

Live Migration vs High Availability Failover

It’s worth distinguishing these two related but different concepts: live migration is a deliberate, planned action you initiate yourself for a running, healthy VM, while HA failover () is Proxmox’s automatic response to an unexpected node failure, restarting affected VMs on healthy nodes rather than migrating an already-running VM smoothly.

Final Thoughts

Proxmox live migration turns what would otherwise require scheduled downtime — node maintenance, hardware upgrades, load rebalancing — into a smooth, largely invisible transition for anything running on your cluster. Combined with shared storage and the HA features covered elsewhere in this series, live migration is one of the most practically useful capabilities a multi-node Proxmox cluster provides over a single-host setup.

Related Posts

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *