温馨提示×

Linux虚拟机如何实现数据迁移

小樊
34
2025-11-18 12:49:05
栏目: 云计算

Linux 虚拟机数据迁移实用指南

一、先明确迁移类型与适用场景

  • 文件级迁移:只迁移部分目录或业务数据(如 /home、/var/www、数据库目录)。适合不改虚拟机位置、只做内容更新的场景。常用工具:scp、rsync、SFTP、共享文件夹
  • 整机级迁移:把整台虚拟机(含磁盘镜像与配置)迁移到另一台宿主机。适合宿主机维护、扩容、平台升级。常用方式:KVM 离线迁移、KVM 实时迁移、导出/导入镜像

二、文件级迁移的常用做法

  • SCP 递归复制
    • 主机 → 虚拟机:scp -r -C /path/to/local user@VM_IP:/path/to/remote
    • 虚拟机 → 主机:scp -r -C user@VM_IP:/path/to/remote /path/to/local
    • 说明:-r 递归,-C 启用压缩,适合首次全量传输。
  • Rsync 增量同步(推荐)
    • 首次:rsync -avz /path/to/local/ user@VM_IP:/path/to/remote/
    • 后续:rsync -avz --delete /path/to/local/ user@VM_IP:/path/to/remote/
    • 说明:–delete 保持两端一致;断点续传能力强,适合大目录与频繁同步。
  • SFTP 客户端
    • 使用 FileZilla 等图形客户端,协议选 SFTP(端口 22),适合不熟悉命令行的场景。
  • 共享文件夹(VMware/VirtualBox)
    • VMware:sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
    • VirtualBox:sudo mount -t vboxsf <共享名> /mnt
    • 说明:需安装 open-vm-tools/VirtualBox Guest Additions,适合主机与虚拟机间频繁小文件交互。

三、KVM 整机迁移步骤(离线/实时)

  • 前提条件
    • 源/目标宿主机均为 KVM,网络互通;迁移端口开放:SSH 22、TLS 16514、TCP 16509、QEMU 迁移端口 49152–49215
    • 虚拟机磁盘需对两端可达:使用 SAN/Ceph 等共享存储,或确保镜像在两端可访问;实时迁移时磁盘必须在两端同时可见。
    • CPU 兼容:目标主机需支持源虚机的 CPU 特性;迁移前评估脏页率:virsh domdirtyrate-calc <VM> 30
  • 离线迁移(关机)
    1. 在源主机导出配置:virsh dumpxml <VM> > /root/<VM>.xml
    2. 拷贝磁盘与配置到目标:scp /var/lib/libvirt/images/<VM>.qcow2 <目标>:/var/lib/libvirt/images/scp /root/<VM>.xml <目标>:/etc/libvirt/qemu/
    3. 在目标主机注册并启动:virsh define /etc/libvirt/qemu/<VM>.xml && virsh start <VM>
  • 实时迁移(不停机)
    • 基于 SSH(最常用):virsh migrate --live --persistent <VM> qemu+ssh://<目标主机>/system
    • 多通道加速:virsh migrate --live --persistent --parallel --parallel-connections 4 <VM> qemu+ssh://<目标>/system
    • 调整停机上限(提高成功率):virsh migrate-setmaxdowntime <VM> 500(单位毫秒)
    • 迁移中查看统计:virsh domjobinfo <VM>
  • 常见注意事项
    • 使用公共网桥 tap 网络时,源/目标需在同一二层网络,否则迁移后网络不通。
    • 若未使用共享存储,实时迁移需保证镜像在两主机一致或使用 --copy-storage-all 复制磁盘;离线迁移则直接拷贝镜像与配置即可。

四、跨平台与异构场景

  • 导出/导入镜像方式
    • 将虚拟机磁盘打包:tar -czvf vm.tar.gz /path/to/vm/
    • 传输并解压:scp vm.tar.gz user@target:/path/ && tar -xzvf vm.tar.gz -C /path/
    • 在目标平台导入(如 VMware OVF、VirtualBoxKVM),再按需调整配置与网络。
    • 说明:该方式迁移的是磁盘与文件,诸如 .vmdk/.vdi 等平台元数据需按目标平台流程重新处理。
  • 异构虚拟化/CPU 架构
    • 不同 CPU 架构(如 x86 ↔ ARM)通常无法直接热迁移;建议采用导出/导入镜像、或在目标平台重建并恢复数据(配合 rsync/备份恢复)。

五、迁移后的验证与排错清单

  • 连通性与服务pingssh 可达;关键业务(如 Nginx/数据库)进程与端口正常;必要时回滚计划就位。
  • 数据一致性:对比校验(如 rsync -av --dry-run 预演、重要目录 md5sum/sha256sum 抽样校验)。
  • 网络与桥接:确认 MAC 地址未冲突、桥接/VLAN 配置一致;公共网桥迁移后网络仍可用。
  • 资源与权限:目标宿主机 CPU/内存/磁盘 充足;目录权限与 SELinux/AppArmor 策略正确;迁移用户具备所需 sudo 权限。
  • 性能与带宽:实时迁移带宽需高于虚机脏页产生速率;必要时调大并发通道或适当提高 maxdowntime

0