首页主机资讯Linux虚拟机如何实现数据迁移

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

时间2025-11-18 22:44:03发布访客分类主机资讯浏览677
导读: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,适合主机与虚拟机间频繁小文件交互。

三、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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux虚拟机如何实现数据迁移
本文地址: https://pptw.com/jishu/750621.html
Linux Jenkins怎样确保构建安全 Linux Jenkins怎样实现持续集成

游客 回复需填写必要信息