Proxmox VE 虚拟机迁移指南 🔄

🚀 将虚拟机从A节点迁移到B节点的完整流程,包含多种迁移方式和详细操作步骤
📖 目录导航
🎯 迁移前准备
📊 环境信息
项目 |
A节点 |
B节点 |
IP地址 |
10.10.10.254 |
10.10.10.1 |
虚拟机ID |
100 |
105 |
存储类型 |
LVM |
LVM |
✅ 前置检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| qm status 100
qm list | grep 105
ping -c 4 10.10.10.1
pvesm status
qm config 100 | grep cpu qm config 105 | grep cpu
pveversion -v
|
📦 A节点操作
1. 📁 传输虚拟机配置文件
1 2 3 4 5 6 7 8 9 10 11
| cp /etc/pve/qemu-server/100.conf /etc/pve/qemu-server/100.conf.backup
scp /etc/pve/qemu-server/100.conf root@10.10.10.1:/etc/pve/qemu-server/105.conf
ssh root@10.10.10.1 "ls -la /etc/pve/qemu-server/105.conf"
ssh root@10.10.10.1 "cat /etc/pve/qemu-server/105.conf"
|
2. 💾 导出虚拟机磁盘镜像
1 2 3 4 5 6 7 8 9 10 11 12
| qm stop 100 && echo "VM stopped successfully" || echo "Failed to stop VM"
dd if=/dev/pve/vm-100-disk-0 of=/tmp/vm-100-disk-0.raw bs=1M status=progress
ls -lh /tmp/vm-100-disk-0.raw file /tmp/vm-100-disk-0.raw
md5sum /tmp/vm-100-disk-0.raw > /tmp/vm-100-disk-0.raw.md5
|
3. 📤 传输磁盘镜像到B节点
1 2 3 4 5 6 7 8 9 10 11
| scp /tmp/vm-100-disk-0.raw root@10.10.10.1:/tmp/vm-105-disk-0.raw
rsync -avz --progress /tmp/vm-100-disk-0.raw root@10.10.10.1:/tmp/vm-105-disk-0.raw
scp /tmp/vm-100-disk-0.raw.md5 root@10.10.10.1:/tmp/
rm -f /tmp/vm-100-disk-0.raw /tmp/vm-100-disk-0.raw.md5
|
📥 B节点操作
1. 📥 导入磁盘镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ls -lh /tmp/vm-105-disk-0.raw
md5sum -c /tmp/vm-105-disk-0.raw.md5
qm importdisk 105 /tmp/vm-105-disk-0.raw local
tail -f /var/log/syslog | grep import
ls -la /dev/pve/ | grep 105
|
2. ⚙️ 配置虚拟机
1 2 3 4 5 6 7 8 9 10 11 12
| qm config 105
qm set 105 --ide0 local:105/vm-105-disk-0.raw
qemu-img convert -f raw -O qcow2 /dev/pve/vm-105-disk-0 /dev/pve/vm-105-disk-0.qcow2 qm set 105 --ide0 local:105/vm-105-disk-0.qcow2
qm set 105 --boot order=ide0
|
⚙️ 迁移后配置
1. 🔧 清理和优化配置
1 2 3 4 5 6 7 8 9 10 11
| rm -f /tmp/vm-105-disk-0.raw /tmp/vm-105-disk-0.raw.md5
nano /etc/pve/qemu-server/105.conf
|
2. 🌐 网络配置更新
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| qm config 105 | grep net
qm set 105 --delete net0
qm set 105 --net0 virtio,bridge=vmbr0
qm set 105 --net0 virtio,bridge=vmbr0,mac=XX:XX:XX:XX:XX:XX
for i in {1..3}; do qm set 105 --net$i virtio,bridge=vmbr$i done
|
3. 💾 存储优化
1 2 3 4 5 6 7 8 9 10 11
| qemu-img info /dev/pve/vm-105-disk-0
qemu-img convert -f raw -O qcow2 /dev/pve/vm-105-disk-0 /dev/pve/vm-105-disk-0.qcow2
qm set 105 --ide0 local:105/vm-105-disk-0.qcow2
qm set 105 --cache writeback
|
🔧 验证与测试
1. ✅ 配置验证
1 2 3 4 5 6 7 8 9 10 11
| qm config 105
qemu-img check /dev/pve/vm-105-disk-0
cat /etc/pve/qemu-server/105.conf | grep net
qm config 105 | grep cpu
|
2. 🚀 启动测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| qm start 105
qm monitor 105
tail -f /var/log/syslog | grep 105
qm status 105
qm terminal 105
|
3. 📊 性能测试
1 2 3 4 5 6 7 8
| qm guest exec 105 -- fio --name=test --filename=/tmp/test --size=1G --readwrite=randread --ioengine=libaio --direct=1
qm guest exec 105 -- ping -c 4 8.8.8.8
qm guest exec 105 -- sysbench memory --memory-block-size=1K --memory-total-size=10G run
|
💡 替代方案
🔄 使用PVE内置迁移工具(推荐)
1 2 3 4 5 6 7 8 9 10 11
| qm migrate 100 10.10.10.1 --online
qm migrate 100 10.10.10.1
qm migrate 100 10.10.10.1 --bwlimit 50
qm migrate 100 10.10.10.1 --with-local-disks
|
📦 使用备份/恢复方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| vzdump 100 --compress zstd --mode stop --storage local
vzdump 100 --compress zstd --mode snapshot --storage local
scp /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst root@10.10.10.1:/var/lib/vz/dump/
qm restore 105 /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst
qm restore 105 /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst -storage local-lvm
|
🐳 使用容器化方案(LXC)
1 2 3 4 5
| pct migrate 100 10.10.10.1 --restart
pct migrate 100 10.10.10.1 --restart --target-storage local-lvm
|
⚠️ 注意事项
- 📋 兼容性检查:确保A、B节点硬件和软件版本兼容
- 💾 存储空间:确认B节点有足够存储空间
- ⏰ 停机时间:规划合适的维护窗口进行迁移
- 🔒 安全考虑:传输过程中考虑使用加密连接
- 📊 性能影响:大规模迁移可能影响网络性能
- 🔄 回滚计划:始终保留原虚拟机直到新虚拟机稳定运行
🔧 故障排除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| tail -f /var/log/syslog journalctl -u pvedaemon -f
traceroute 10.10.10.1 mtr 10.10.10.1
iptables -L -n nft list ruleset
pvesm status lvs vgs pvs
pvecm status
|
🔄 回滚步骤
1 2 3 4 5 6
| qm start 100
qm destroy 105 --purge rm -f /etc/pve/qemu-server/105.conf
|
🎯 提示:对于生产环境,建议先在测试环境进行演练。大规模迁移时考虑分批次进行,并确保有完整的回滚方案。
📚 扩展阅读:
迁移完成检查清单:
- [ ] 虚拟机配置文件已正确传输
- [ ] 磁盘数据完整无误
- [ ] 网络配置已更新
- [ ] 虚拟机启动正常
- [ ] 服务运行正常
- [ ] 性能测试通过
- [ ] 原虚拟机已备份(保留至少24小时)