Linux虚拟机如何实现数据迁移
导读:Linux 虚拟机数据迁移实用指南 一、先明确迁移类型与适用场景 文件级迁移:只迁移部分目录或业务数据(如 /home、/var/www、数据库目录)。适合不改虚拟机位置、只做内容更新的场景。常用工具:scp、rsync、SFTP、共享文...
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,适合主机与虚拟机间频繁小文件交互。
- VMware:
三、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>
- 基于 SSH(最常用):
- 常见注意事项
- 使用公共网桥 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。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux虚拟机如何实现数据迁移
本文地址: https://pptw.com/jishu/750621.html
