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。
- 离线迁移(关机)
- 在源主机导出配置:
virsh dumpxml <VM> > /root/<VM>.xml
- 拷贝磁盘与配置到目标:
scp /var/lib/libvirt/images/<VM>.qcow2 <目标>:/var/lib/libvirt/images/,scp /root/<VM>.xml <目标>:/etc/libvirt/qemu/
- 在目标主机注册并启动:
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、VirtualBox 或 KVM),再按需调整配置与网络。
- 说明:该方式迁移的是磁盘与文件,诸如 .vmdk/.vdi 等平台元数据需按目标平台流程重新处理。
- 异构虚拟化/CPU 架构
- 不同 CPU 架构(如 x86 ↔ ARM)通常无法直接热迁移;建议采用导出/导入镜像、或在目标平台重建并恢复数据(配合 rsync/备份恢复)。
五、迁移后的验证与排错清单
- 连通性与服务:
ping、ssh 可达;关键业务(如 Nginx/数据库)进程与端口正常;必要时回滚计划就位。
- 数据一致性:对比校验(如
rsync -av --dry-run 预演、重要目录 md5sum/sha256sum 抽样校验)。
- 网络与桥接:确认 MAC 地址未冲突、桥接/VLAN 配置一致;公共网桥迁移后网络仍可用。
- 资源与权限:目标宿主机 CPU/内存/磁盘 充足;目录权限与 SELinux/AppArmor 策略正确;迁移用户具备所需 sudo 权限。
- 性能与带宽:实时迁移带宽需高于虚机脏页产生速率;必要时调大并发通道或适当提高
maxdowntime。