迁移 4 种场景总览
| 场景 | 条件 | 方式 | 停机 |
|---|---|---|---|
| 同集群・在线热迁移 | 集群、共享存储 (Ceph/NFS/iSCSI),无直通,CPU 兼容 | 右键‑迁移‑Online | 几乎 0 停机 |
| 同集群・离线迁移 | 集群,本地磁盘 / 有直通设备,虚拟机关机 | 右键‑迁移‑Offline | 停机,拷贝磁盘网络传输 |
| 非集群两台独立 PVE 主机 | 不在一个集群,主机之间网络互通 | 备份恢复 VMA,无集群迁移按钮 | 停机,最稳妥跨主机方案 |
| 同节点存储迁移 | 同一台机器,换存储介质(local‑zfs→ceph) | 硬件→磁盘→移动存储 | 可在线 / 离线 |
⚠️在线迁移不能用本地磁盘;本地磁盘只能离线迁移;PCI 直通设备无法在线迁移。

一、同集群在线迁移(零停机生产)
前置条件
- 两台节点加入同一个 PVE 集群
- 虚拟机磁盘放在共享存储(Ceph RBD/NFS/iSCSI),不能 local‑zfs/local‑lvm 本地盘
- 不使用 PCIe 直通、GPU 直通
- CPU 尽量兼容;不要用
hostCPU 模式跨不同 CPU 代际;建议改为x86‑64‑v2‑AES通用 CPU 类型,避免迁移失败 - 网络稳定,生产建议 10G 以上,可配置独立迁移网络
- 目标节点 PVE 版本≥源节点版本,禁止高版本往低版本迁移
WebUI 操作
- 选中运行中虚拟机 → 右键
Migrate(迁移) - Mode:Online(在线),选择目标节点
- 存储:磁盘已经在共享存储无需修改
- 点击迁移,任务面板看进度(只拷贝内存页,磁盘不走网络)
CLI 命令
qm migrate 105 pve-node2 --online
二、同集群离线迁移(本地磁盘 / 直通设备)
虚拟机必须关机,完整磁盘通过网络复制到目标节点本地存储。
WebUI:右键迁移,Mode 选Offline,可指定 Target Storage 目标存储池。
qm migrate 105 pve-node2 --offline --targetstorage local-zfs
磁盘越大迁移时间越长,大磁盘预留充足时间。
三、两台独立 PVE 主机(不在集群,最常用)
没有集群,没有迁移按钮,只能备份恢复 VMA 文件,虚拟机需要关机。
- 源 PVE:选中虚拟机 → 备份,存储选 local,模式
Stop,生成.vma.zst备份文件
路径:/var/lib/vz/dump/ - 把备份文件传到目标 PVE 同样目录:
#源主机执行scp scp /var/lib/vz/dump/vzdump-qemu-105-*.vma.zst root@目标PVEIP:/var/lib/vz/dump/
- 目标 PVE 网页:数据中心→备份,选中备份文件,点击恢复,选择目标存储,完成。
高级:共享备份存储(NFS),两台 PVE 都挂载同一个 NFS 备份存储,直接恢复,不用拷贝文件。
四、同节点存储迁移(换存储,不换节点)
同一主机,把磁盘从 local‑zfs 迁移到 Ceph/NFS,支持在线。
虚拟机硬件 → 选中磁盘 → 磁盘操作 → 移动存储
- 勾选
删除源:迁移完成自动删除原磁盘,不勾选源盘保留为 unused 磁盘。
qm move-disk 105 scsi0 ceph-rbd --delete 1
⚠️迁移踩坑清单(高频报错)
- can't migrate VM with local CD/DVD
虚拟机硬件挂载了本地 ISO 镜像。解决:删除 CD/DVD 设备,再迁移;ISO 放到共享存储再挂载。 - CPU 报错 host CPU doesn't support requested features
使用host直通 CPU,源目标 CPU 指令集不一致。修改虚拟机 CPU 类型为通用 x86‑64‑v2‑AES。 - SSH 公钥密钥验证失败
集群节点证书异常,执行:
pvecm updatecerts --force #测试节点之间ssh连通 ssh root@pve-node2
- 在线迁移提示本地磁盘无法迁移
在线迁移不支持本地磁盘,要么切换离线迁移,要么磁盘迁移到共享存储再在线迁移。 - OVMF (UEFI) 启动失败:目标节点缺少
edk2‑ovmf
apt install edk2-ovmf
- 迁移后虚拟机网络不通:目标节点没有对应网桥 vmbrX,需要修改虚拟机硬件网卡网桥。
✅迁移完成后必做校验
- 启动虚拟机,检查系统、IP、业务服务是否正常
- 确认磁盘大小、快照是否完整
- 确认业务完全正常后,再删除源端虚拟机,不要迁移完立刻删源机
