Linuxinfrastructure

Proxmox VE 9.2 Custom CPU Model for Cross-CPU Migration

Find your cluster's newest common CPU level and set a migratable CPU model in Proxmox VE 9.2, so VMs live-migrate between nodes with different processors.

DistrosProxmox VE 9.2
Shellbash
Updated
Script
bash
# Proxmox VE 9.2 custom CPU model for cross-CPU live migration.
# Full walkthrough: /articles/proxmox-92-custom-cpu-models
# The model is built in the GUI (Datacenter > Custom CPU Models); the shell
# commands below only INSPECT, so they are safe to run read-only on each node.

# --- Find each node's newest supported x86-64 level (run on EVERY node) ---
# VERIFIED read-only command:
/lib64/ld-linux-x86-64.so.2 --help | grep 'x86-64-v'
#   e.g. -> x86-64-v2 (supported, searched)
#           x86-64-v3 (supported, searched)   (no v4 line = v4 unsupported here)

# Raw CPU flags + model, for corroboration:
grep -m1 'model name' /proc/cpuinfo
grep -m1 flags /proc/cpuinfo

# --- Choose + apply (GUI: Datacenter > Custom CPU Models) ---
#  1. Pick the HIGHEST x86-64 level that EVERY node reports 'supported'.
#  2. Either set the VM CPU type to that baseline (e.g. x86-64-v3), OR build a
#     custom model: Datacenter > Custom CPU Models > Add. The 9.2 dialog has a
#     flag grid with search, a kvm/tcg accelerator selector, and a per-node
#     multi-select showing which flags every chosen node supports.
#  3. Reference a custom model from the VM as CPU type  custom-<name>.

# --- Prove it (read-only status; migration itself is a GUI/CLI action) ---
qm config <vmid> | grep -i '^cpu'          # confirm the VM's CPU type
# then live-migrate the VM between two unlike nodes and confirm it stays up.

What this does

This finds your Proxmox cluster’s newest common CPU capability and sets a VM CPU model that can live-migrate across nodes with different processors — instead of the host type, which pins a VM to identical hardware and makes QEMU stop mid-migration when a CPU flag is missing on the target.

Full reasoning (the host vs kvm64 vs x86-64-vN tradeoff and the 9.2 cross-node flag selector) is in Proxmox VE 9.2 Custom CPU Models for Live Migration.

Prerequisites

  • Proxmox VE 9.2 (the custom-CPU-model GUI and cross-node flag selector are 9.2 features).
  • A cluster with more than one node, especially if the nodes’ CPUs differ.
  • A brief maintenance window per VM you re-type (CPU type only changes on a full power cycle).

Notes

  • Honest status: tested: false overall. The read-only level-check command was verified on real hardware this session (an AMD Ryzen 5 PRO 2400G node reported x86-64-v2 and x86-64-v3 supported, no v4). The custom-model creation and the live migration themselves are the official 9.2 GUI/CLI workflow and were not run on a production cluster here — validate on your own lab.
  • Make these values your own: <vmid> and custom-<name> are placeholders, and the right x86-64 level is whatever your nodes all support. If a value looks specific to one machine, it’s a placeholder to change.
  • Pick the newest common level. Run the level check on every node and choose the highest level they all report supported. That’s your migratable ceiling.
  • host is fast but pinned. Use it only on single nodes or where you never migrate; it blocks migration to any unlike CPU.
  • CPU type changes need a full stop/start, not an in-guest reboot — the guest’s CPU is fixed at boot.
  • Custom models are referenced as custom-<name> in the VM’s CPU setting after you create them under Datacenter → Custom CPU Models.