温馨提示×

Ubuntu虚拟机如何迁移至其他服务器

小樊
38
2025-11-30 16:20:56
栏目: 云计算

迁移前准备

  • 在源宿主机上先对虚拟机执行关机或暂停,避免文件处于不一致状态;对运行中的业务尽量安排在维护窗口
  • 明确虚拟化平台:如 VirtualBox/VMware/Virt-Manager(KVM/QEMU)/Portable-VirtualBox,不同平台的迁移路径不同。
  • 准备网络与权限:确保目标宿主机磁盘空间充足、网络带宽满足镜像大小、具备 SSH/SCP 或共享存储访问权限。
  • 规划目标环境:CPU 架构一致(如 x86_64)、虚拟化扩展已开启、存储路径与网络桥接/网卡命名一致(减少改动)。
  • 做好全量备份(镜像与配置),迁移失败可快速回滚。

常用迁移方法

  • 导出为镜像或打包迁移(适合跨平台、一次性搬运)

    • VirtualBox:将虚拟机的 .vdi/.vmdk.vbox 文件一并拷贝;在新宿主机用 VirtualBox 注册磁盘并重新生成 UUID(VBoxManage internalcommands sethduuid),再注册 .vbox 启动。
    • VMware:在 Workstation/Player 中“文件-导出为 OVF”,在目标端用 VirtualBox 或 VMware 导入;若导入后提示找不到磁盘,移除后重新添加磁盘文件。
    • Portable-VirtualBox:在源端“管理-导出虚拟电脑”为 OVA,目标端安装 Portable-VirtualBox 后“管理-导入虚拟电脑”,导入时可勾选重新初始化网卡 MAC以避免冲突。
    • 裸盘镜像:用 dd 制作整盘镜像(如:sudo dd if=/dev/sda of=backup.img bs=4M status=progress && sync),在目标端将镜像写回磁盘(sudo dd if=backup.img of=/dev/sda bs=4M status=progress && sync),适用于物理到虚拟或平台间“同构”迁移。
  • KVM/QEMU 静态迁移(离线,简单稳妥)

    1. 在源端关闭虚拟机:virsh shutdown ;确认状态为 shut off。
    2. 拷贝磁盘与配置:
      • 磁盘:scp /var/lib/libvirt/images/.qcow2 root@dst:/var/lib/libvirt/images/
      • 配置:virsh dumpxml > .xml
    3. 在目标端导入并定义:virsh define .xml;virsh start
      说明:静态迁移停机时间短则取决于磁盘拷贝时长,适合大多数场景。
  • KVM/QEMU 动态迁移(在线,几乎无感知)
    前提:源/目标使用共享存储(如 NFS)且磁盘路径一致,或基于块/文件复制的共享机制。

    1. 搭建 NFS 共享并挂载到两端相同路径(如 /opt)。
    2. 源端启动待迁实例(示例):
      qemu-system-x86_64 -hda /opt/ -m 2048 -smp 2 -vnc :0 -monitor stdio
    3. 目标端预启动接收进程(示例):
      qemu-system-x86_64 -hda /opt/ -m 2048 -smp 2 -vnc :0 -incoming tcp:0:6666
    4. 源端 monitor 执行迁移:migrate tcp:<dst_ip>:6666
    5. 迁移完成后,目标端实例自动接管运行。
      说明:动态迁移要求网络稳定、共享存储一致,适合高可用与不停机需求。

迁移后配置与验证

  • 网络与身份:为避免冲突,导入时可重新初始化网卡 MAC;如从桥接改为 NAT 或相反,需在目标宿主机调整网络模式。
  • IP 与主机名:若目标网络网段不同,需在 /etc/netplan/(或 /etc/network/interfaces)调整 IP/网关/DNS;必要时修改 /etc/hostname/etc/hosts
  • SSH 主机密钥:为避免“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED”,清理旧密钥:ssh-keygen -R <new_ip>。
  • 启动与依赖:确认 cloud-init(如使用)不会覆盖你的网络配置;检查挂载点、LVM、RAID、ZFS、Docker/容器与数据库状态。
  • 验证清单:
    • 业务进程与端口:ss -tulpen | grep
    • 磁盘与文件系统:df -h、lsblk、mount
    • 日志:journalctl -xe、/var/log/ 关键日志
    • 数据一致性:重要目录的校验和或快照对比(如 rsync -a --checksum)

常见问题与排错

  • 导入时报“系统找不到指定的文件”:在虚拟化软件中移除缺失的磁盘后重新添加磁盘文件;VMware 导入 OVF 后若磁盘路径变更,需指向新路径。
  • 动态迁移失败:检查两端磁盘路径完全一致、NFS 导出与挂载是否正常、防火墙/SELinux 是否放行迁移端口(如 6666/TCP)、目标端是否已处于 -incoming 监听。
  • 网卡冲突或无法上网:导入时勾选重新初始化 MAC;确认桥接网卡已在目标宿主机创建并启用;必要时改用 NAT 或调整网桥配置。
  • 性能与稳定性:大镜像迁移建议使用 NFS/块复制 或物理介质;跨公网迁移可先压缩/分片再传输;迁移窗口内限制业务写入,减少脏页与复制压力。

0