将 VMware 虚拟机迁移至 IBM Cloud 虚拟服务器,并实现网络实时迁移

通过 virt-v2v 和 Transit Gateway 连接,利用网络流式传输磁盘数据,将 VMware 虚拟机(VM)迁移到 IBM Cloud VPC 虚拟服务器。

架构组件

实时网络传输迁移的架构组件包括

实时网络传输迁移方法的架构组件
架构组件 描述
Transit Gateway 将 VMware 环境(Classic、NSX 或 VCFaaS )连接到 VPC。 这将提供源虚拟机(在 VMware 中)与工作虚拟服务器实例(在 VPC 中)进行通信所需的第 3 层路由。
工人虚拟服务器实例 与方法 2 类似,但这里纯粹是一个接收器--在网络端口上监听传入的磁盘数据。
实时 ISO

可启动 ISO,提供

  • 网络配置工具

  • 磁盘读取工具 (dd)

  • 压缩工具 (gzip, pigz)

  • 网络传输工具 (netcat, socat, ssh)

启动源选项
  • Ubuntu 安装 ISO:帮助菜单中有一个 "输入 shell "选项,包括大多数需要的工具

  • TinyCore Linux : 非常小,但需要安装 ssh/qemu 的软件包

  • virt-p2v ISO:由 Red Hat 专门为 P2V 迁移而构建,在接收器上与 virt-v2v 集成

  • G4L (Ghost for Linux ):以成像为重点的实时 Linux

实时网络传输迁移过程概述

以下步骤介绍了使用实时网络传输进行迁移的过程。

  1. 规定 Transit Gateway

    1. 在 Transit Gateway 中创建 IBM Cloud
    2. 将其连接到 VMware 环境:
    • 经典:直接连接经典账户
    • NSX:连接 NSX 边缘的 GRE 隧道
    • VCFaaS: VCFaaS 边缘的 GRE 隧道
    1. 在 VMware 网络和 VPC 子网之间配置路由选择
    2. 首次迁移前彻底测试连接性
  2. 在 VPC 中配置工人虚拟服务器实例

    1. Ubuntu 或资源充足的 RHEL
    2. 使用短暂虚拟服务器实例技术创建目标卷(方法 2 步骤 2-4)
    3. 将目标卷附加到工作站
    4. 安装 netcat: apt-get install netcatyum install nc
  3. 准备传输源 VM

    1. 中将实时 ISO 附加到虚拟机 vCenter/VCFaaS
    2. 配置虚拟机启动顺序,使其首先从 CD/ISO 启动
    3. 注意当前的 IP 配置,以便在实时环境中进行网络设置
  4. 从 ISO 启动源虚拟机

    1. 重启虚拟机,使其进入实时环境
    2. 可以访问虚拟机的磁盘,但操作系统没有运行(相当于清洁关机)
  5. 在实时环境中配置网络

    1. 确定网络接口名称(可能有所不同:eth0、ens192 等)
    2. 配置 IP 和路由:
    ip addr add 10.50.200.3/26 dev ens192
    ip route add 0.0.0.0/0 via 10.50.200.1
    ping 192.168.100.5  # Test connectivity to worker virtual server instance
    
  6. 发起转移

    1. 在 Worker 虚拟服务器实例上(先启动监听器):
    # Listen for incoming data, decompress, write to volume
    nc -l 192.168.100.5 8080 | gunzip | dd of=/dev/vdb bs=16M status=progress
    
    1. 在源虚拟机上(在实时 ISO 中):
    # Read disk, compress, send to worker
    dd if=/dev/sda bs=16M | gzip | nc -N -v 192.168.100.5 8080
    
    • 监测双方的进展情况
    • 传输时间取决于磁盘大小和网络带宽
    • 压缩后,操作系统磁盘的性能通常可提高 2-4x
  7. 对其他磁盘重复

    • 对于多磁盘虚拟机,对每个磁盘重复此操作:

      # Worker (disk 2)
      nc -l 192.168.100.5 8080 | gunzip | dd of=/dev/vdc bs=16M status=progress
      # Source (disk 2)
      dd if=/dev/sdb bs=16M | gzip | nc -N -v 192.168.100.5 8080
      
  8. 移交后处理

    1. 验证转账:fdisk -l /dev/vdb on worker
    2. 可选择使用 virt-v2v 进行转换:virt-v2v-in-place -i disk /dev/vdb
    3. 刷新缓冲区:blockdev --flushbufs /dev/vdb
  9. 从卷创建虚拟服务器实例

    1. 将卷从工作站中分离出来
    2. 使用现有启动卷创建最终虚拟服务器实例(与方法 2 第 8 步相同)
  10. 关闭源虚拟机

    1. 验证虚拟服务器实例启动成功后,关闭源虚拟机
    2. 可选择在 VMware 中创建快照作为回滚点

设计优势

下表介绍了实时网络传输迁移的设计优势。

实时网络传输迁移方法的设计优势
设计优势 描述
无导出开销 消除整个导出步骤--无需花费时间导出 VMDK,无需导出存储,无需将导出内容传输到 VPC。
高效的网络利用率 带压缩功能的直接流媒体可充分利用可用带宽。
并行迁移能力 配置多个 Worker 虚拟服务器实例,并同时迁移多个虚拟机,仅受网络带宽和 Worker 资源的限制。
最大的灵活性 易于与 virt-v2v 转换集成,同时支持 VCFaaS 和 vCenter,,可与任何虚拟机配合使用,无论磁盘数量多少。
磁盘清理状态 从 ISO 启动可确保源操作系统不在运行,从而提供干净、一致的磁盘状态(类似于冷快照)。

设计约束与限制

下表描述了实时网络传输迁移的约束和限制。

实时网络传输迁移方法的局限性和制约因素
限制或约束 描述
Transit Gateway 要求 需要对设置和测试 Transit Gateway 连接进行前期投资。
可启动 ISO 镜像的制作
  • 您需要准备和测试所选的实时 ISO,并可能使用所需工具对其进行定制。
对网络带宽的依赖性 传输速度受环境间网络带宽的限制。 监测并制定相应计划。
手动网络配置 对于每个源虚拟机,您都需要在实时 ISO 环境中配置网络(可以编写脚本)。
不适用于热迁移 这是一种冷迁移方法--源虚拟机在传输过程中处于离线状态。

virt-p2v 整合

virt-p2v 集成更加自动化,但需要使用 RHEL/ Ubuntu 混合组件构建 libguestfs。

Red Hat virt-p2v ISO 就是专为这种使用情况而设计的。 它规定

  • 选择要传输磁盘的图形界面
  • 内置网络连接至 virt-v2v 接收器
  • 自动驱动程序注入和操作系统准备

virt-p2v 整合过程

  1. 从 virt-p2v ISO 引导源虚拟机
  2. 配置网络并连接到在服务器模式下运行 virt-v2v 的 Worker 虚拟服务器实例
  3. virt-p2v 传输磁盘和 virt-v2v 自动转换磁盘
  4. 生成的卷可附加到虚拟服务器实例

实时网络传输迁移非常适合大规模迁移(10 台以上虚拟机)、导出开销过高的情况,以及具备建立 Transit Gateway 和实时 ISO 环境的专业知识的情况。 初始设置成本较高,但每个虚拟机的迁移效率更高。