Skip to main content
RunBook Academy

Proxmox VEXXV · Proxmox Datacenter ManagerOperating across clusters

Cross-cluster guest migration through PDM

Advanced⏱ ~30 minproxmox-datacenter-manager-clientqmpct

What you'll learn

  • Describe what PDM cross-remote migration does and which PVE mechanism it drives
  • Enumerate the prerequisites: bridge mapping, storage mapping, VMID selection, privileges and bandwidth
  • Explain the default --delete behaviour and the duplicate-guest hazard it creates
  • Estimate the cost of a cross-cluster move in terms of disk size and link bandwidth rather than memory
  • Argue why cross-cluster migration is not high availability, not disaster recovery, and not a rebalancer

Prerequisites

Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12

Not yet marked complete on this device.

Of everything PDM does, this is the feature people repeat to each other. Move a running virtual machine from a cluster in one building to a cluster in another, from a dialog box, without downtime.

It is real. It has been in the product since the first alpha. And it is surrounded by more sharp edges per square metre than anything else in this part, starting with a two-word label in the Proxmox VE command reference that almost nobody who uses the feature has read.

What it is, underneath

PDM’s Migrate action moves a guest to another node, within the same remote (cluster) or across remotes. It is not offered for templates.

Across remotes, PDM is driving the Proxmox VE remote-migration API — the same mechanism reachable on a cluster as qm remote-migrate for a virtual machine and pct remote-migrate for a container. The PDM CLI exposes it directly:

Service impact possiblecross-remote migration from the PDM CLI
proxmox-datacenter-manager-client pve qemu remote-migrate site-a 141 site-b \
--map-bridge vmbr0:vmbr0 \
--map-storage local-zfs:ceph-vm \
--target-vmid 3141 \
--online true \
--bwlimit 200000

The container form is pve lxc remote-migrate with the same shape. For a move inside one cluster, the command is pve qemu migrate <remote> <vmid> <target>, which is the ordinary intra-cluster migration you already know from Part IX and carries none of the hazards below.

Prerequisite one: map every bridge

The two clusters are independent. They do not share an SDN configuration, a bridge namespace or a VLAN scheme, and nothing guarantees that vmbr1 on site-A means what vmbr1 means on site-B.

So the mapping is mandatory. In the PDM CLI it is --map-bridge FROM:TO, which may be given more than once — once per source bridge. The PVE-side equivalent, --target-bridge, offers two shorthands worth knowing because they explain the semantics: providing a single bridge ID maps all source bridges to that one bridge, and providing the special value 1 maps each source bridge to itself.

That last shorthand is where estates get hurt. --target-bridge 1 reads as “keep the networking the same” and means “assume the target cluster has a bridge of the same name, and that it is attached to the same layer-2 domain”. The first half of that assumption fails loudly — the migration errors. The second half fails silently: the guest arrives, attaches to a bridge that has the right name and the wrong VLAN, and is unreachable on an IP it still believes it owns.

Prerequisite two: map every storage

Same reasoning, larger consequences. --map-storage FROM:TO, once per source storage. The PVE-side --target-storage has the same two shorthands: a single storage ID maps everything to it, and 1 maps each source storage to itself.

The storage map is where the physics of the operation shows up. Within a cluster with shared storage, migrating a running VM moves memory and leaves the disks where they are — a few gigabytes of RAM over a fast local link. Across clusters there is no shared storage by definition, so every disk is copied over the network.

That changes the arithmetic completely:

Intra-cluster, shared storageCross-cluster
What movesMemory, plus dirty-page convergenceEvery disk, then memory
Dominant costRAM sizeDisk size divided by link bandwidth
Typical linkCluster network, 10 GbE and upWhatever runs between the sites
A 2 TB VMseconds to a minutehours

A 2 TB guest over a 1 Gbit/s inter-site link is, at perfect efficiency, about four and a half hours of copying. Real links are not perfectly efficient and are not idle. Plan cross-cluster migrations in hours, size the maintenance window from the disk, and use --bwlimit (in KiB/s) to keep the copy from consuming the link that everything else at both sites depends on.

Prerequisite three: the VMID

Two independent clusters have two independent VMID spaces, and 141 is a popular number. PDM 1.1 added a helpful behaviour here: when migrating a guest to a new cluster, PDM queries the remote cluster for its next free VMID and uses it to pre-fill the migration dialog.

Accept that gratefully and then think about it for ten seconds, because a changed VMID has consequences that outlive the migration:

  • Backup history does not follow the guest. A PBS backup group is keyed by guest type and ID. VM 141 arriving at site-B as VM 3141 starts a fresh backup chain; the old chain remains under 141 and is now orphaned from the running workload. Your retention policy is quietly protecting a guest that no longer exists while the live one has one backup.
  • Backup jobs do not follow either. A PVE backup job is cluster configuration, not guest configuration. The job on site-A still names 141; site-B has no job for 3141 until you create one. The window between migration and noticing is a window with no backups.
  • Monitoring, CMDB and runbooks refer to the old ID. Anything keyed on vmid needs updating, and nothing will tell you which.

The --target-vmid option exists so you can keep the number when it is free at the destination. Prefer that where you can; where you cannot, treat the ID change as a small migration of its own with its own checklist.

The default that surprises people

Read this option description from the qm reference slowly:

--delete <boolean> (default = 0) — Delete the original VM and related data after successful migration. By default the original VM is kept on the source cluster in a stopped state.

A successful cross-cluster migration, run with defaults, leaves you with two copies of the guest: one running on the target, one stopped on the source, with the same hostname, the same configuration, the same static IP addresses, the same service identity and, if it is a cluster member of something, the same node name.

Online, offline, and what the dialog offers

--online performs a live migration if the guest is running; it is ignored if the guest is stopped. For containers there is also --restart, which uses restart migration.

One honest note about the interface. The roadmap lists, under guest and resource management, “more options in the migration dialog, such as a bandwidth limit and an online/offline preference”. That wording indicates the dialog does not yet offer those two controls, even though the API and the PDM CLI both do.

So: the capability exists, and if you need to set a bandwidth limit or force an offline migration on PDM 1.1.7, reach for the CLI. Verify against your own version before writing it into a runbook — this is precisely the kind of gap that closes in a point release.

What this is not a substitute for

Cross-cluster migration is a planned, operator-initiated, both-ends-healthy operation. Four things it is repeatedly mistaken for:

It is not high availability. HA restarts a guest automatically when a node fails, inside one cluster, driven by quorum. Nothing about remote migration is automatic and nothing about it survives the source cluster being down. Part XII is unchanged.

It is not disaster recovery. A migration requires the source cluster to be up, reachable and healthy enough to read every disk. A site that has burned down cannot be migrated from. DR is Part XIV: backups at a second site, replication, a tested restore, and an RPO and RTO somebody has signed. The roadmap acknowledges the gap directly, listing “off-site replication copies of virtual guests for manual recovery on a datacenter failure” as future work, with the parenthetical “(not HA)” attached.

It is not a load balancer. There is no scheduler, no placement policy and no automation. Someone decides, and someone clicks.

It is not a substitute for capacity planning. Being able to move a workload does not create anywhere to move it to. If site-B has no headroom, the migration either fails or succeeds and makes site-B the new problem. Part II and Part XVII still own that question.

Key takeaways

  • PDM’s cross-remote migration drives PVE’s qm remote-migrate and pct remote-migrate, which the PVE command reference labels EXPERIMENTAL and which has no prose documentation chapter.
  • Bridge and storage mappings are mandatory and are not validated for meaning. A bridge with the right name on the wrong network is the silent failure.
  • Every disk crosses the network. Size the window from disk over bandwidth, not from RAM, and set --bwlimit so the copy does not become the incident.
  • The default leaves the source guest on the origin cluster in a stopped state. Rename it immediately and delete it on a schedule.
  • PDM pre-fills the next free VMID at the destination. A changed VMID orphans the PBS backup chain and leaves the guest outside every existing backup job.
  • Bandwidth limit and online/offline preference are CLI options today; the roadmap lists them as future additions to the migration dialog.
  • Migration is not HA, not DR, not a load balancer, and not capacity planning.

Knowledge check

Knowledge check · 4 questions

  1. Q1. A 2 TB database VM with 64 GB of RAM is migrated from site-A to site-B over a 1 Gbit/s inter-site link, using PDM, with no bandwidth limit set. What dominates the duration and what is the likely collateral effect?

  2. Q2. A cross-cluster migration completes successfully with default options. Six weeks later, an operator tidying up starts a stopped VM at the source site. What went wrong, and when?

  3. Q3. A guest is migrated from site-A to site-B and PDM pre-fills a new VMID because the original was taken. Which of these are genuine consequences that need handling? Select all that apply.

  4. Q4. The Proxmox VE command reference labels qm remote-migrate and pct remote-migrate as EXPERIMENTAL, and the administration guide has no prose chapter describing remote migration prerequisites or limitations.

Passing score: 75%. Answers are checked in this browser.