过去几天,我们宣布了 ZSvirt 正式开源,聊了开源背后的原因,带你亲手创建了第一台虚拟机,也剖析了这套经受住生产检验的引擎架构。作为系列的最后一篇,今天我们把镜头对准迁移——如何把现有 VMware 环境里的虚拟机平滑迁入 ZSvirt。

ZSvirt 在线迁移演示:从部署迁移服务到完成割接的完整流程。

ZSvirt 迁移实战:从 VMware 迁移虚拟机的三种方式

在虚拟化平台的建设和替换过程中,虚拟机迁移是绕不开的一环。ZSvirt 提供了完整的迁移能力矩阵,针对不同的迁移规模、业务连续性要求和数据形态,提供三种迁移方式:

  • ZMigrate 迁移服务:在线迁移方案。通过部署迁移服务和数据网关,直接对接 VMware vSphere 等源平台,将虚拟机的系统及数据完整同步到目标平台,支持增量同步、测试虚拟机验证和平滑割接,适合批量迁移、对业务连续性要求高的场景。
  • 导入虚拟机:离线导入方案。将源虚拟机导出为 OVF 模板(包含 OVF、VMDK、MF 文件),再在目标平台通过「新建虚拟机 > 导入虚拟机」上传模板文件完成导入,适合少量虚拟机、可接受停机导出的场景。
  • 上传 VMDK 镜像:磁盘级迁移方案。只需将虚拟机的 VMDK 磁盘文件上传为平台镜像(自动转换为 qcow2/raw 格式),再用镜像创建虚拟机,方式最轻量,适合只需迁移磁盘数据的场景。

三种方式如何选择,可以先参考这张对比:

维度 ZMigrate 迁移服务 导入虚拟机(OVF) 上传 VMDK 镜像
迁移方式 在线同步 + 割接 离线导出导入 离线上传磁盘
业务中断 短(仅割接窗口) 较长(导出期间需关机) 较长(拷贝期间需关机)
配置保留 完整保留,可克隆网络配置/MAC 基于OVF 描述文件 不保留,需重新配置
适用规模 批量迁移 少量虚拟机 少量虚拟机、仅磁盘数据
前置准备 部署迁移服务、数据网关、VDDK 导出 OVF 模板 准备 VMDK 磁盘文件

下面分别介绍三种方式的具体操作。

一、ZMigrate 迁移服务

ZMigrate 是 ZSvirt 的在线迁移服务,核心思路是「先同步、后割接」:迁移任务运行期间源虚拟机业务照常运行,数据持续同步到目标平台,最后在割接窗口内完成业务切换,把停机时间压缩到最短。

使用 ZMigrate 前,首先需要安装迁移服务。进入「运维管理 > 迁移服务」,可以看到完整的流程指引,以及相关的基本信息和配置信息。整个迁移工作流可以归纳为六个步骤:官网下载安装包 → 部署 ZMigrate → 上传 VDDK → 添加数据网关 → 创建源平台 → 创建迁移任务,随后进入数据同步与割接阶段。

1. 官网下载安装包

迁移之旅从官网开始。前往 ZSvirt 官网资源中心,在「迁移工具」分类下找到 ZMigrate for ZSvirt,下载对应版本的迁移服务安装包。开源版本无需许可证,下载即用,只需确认平台已添加镜像存储资源,且镜像存储有足够的存储空间。

官网下载 ZMigrate 安装包

安装包下载完成后,即可进入平台开始部署。

2. 部署 ZMigrate

部署迁移服务分两步:先上传安装包,再安装部署。

上传安装包:在迁移服务页面点击「去上传」,支持 URL 和本地上传两种方式,并需指定一个存储路径用于存放安装包及解压后的文件。注意该目录要有充足的可用空间,且不能使用 //dev/proc/sys/usr/bin/bin/opt 等系统目录,否则可能导致安装失败或服务器异常。

安装部署:上传完成后点击「去安装」,根据业务需求选择合适的规格,主要配置项包括:

  • 数据中心 / 运行位置:迁移服务通过虚拟机数据网关部署,选择其运行的数据中心与位置;
  • CPU / 内存:默认 8 核 8 GB,CPU 核数直接影响迁移并发能力;
  • 存储位置 / 硬盘:默认系统盘 100 GB,存储位置为分布式存储时需指定存储池;
  • 迁移网络 / IPv4 地址:指定分布式端口组作为迁移网络,需与源端、目标端平台网络互通。网络启用 DHCP 时自动分配 IP,未启用时需手动指定。

确认无误后点击确定,迁移服务开始部署。

部署 ZMigrate 服务

部署过程预计需要 5~10 分钟,页面会显示「部署中」状态,耐心等待即可。

ZMigrate 部署中

3. 上传 VDDK

如果源平台是 VMware,还需要上传 VDDK(Virtual Disk Development Kit)包。ZMigrate 通过 VDDK 接口读取 VMware 源虚拟机的磁盘数据,这是 VMware 迁移链路中不可或缺的一环。在迁移服务页面点击「去上传」,将提前准备好的 VDDK 压缩包上传即可,上传成功后系统会自动完成加载。

上传 VDDK

4. 添加数据网关

数据网关是源端平台与目标端平台之间的中转枢纽,承担数据传输的关键角色。它通常部署在平台中的一台虚拟机上,用于提供网关服务,需要确保其与源端平台、目标端平台以及迁移服务平台之间网络互通。

在部署ZMigrate服务时,平台会创建一个默认的数据网关,若需要批量迁移虚拟机,你可以创建多台数据网关,提高迁移的并发能力。

在导航栏选择「运维管理 > 迁移资源 > 数据网关」,点击「添加数据网关」,支持两种添加方式:

  • 新建虚拟机:由平台新建一台虚拟机作为数据网关,主要配置包括:
    • 数据中心 / 运行位置:选择虚拟机所在的数据中心与运行位置;
    • CPU / 内存:默认 8 核 8 GB,按迁移并发需求调整;
    • 存储位置 / 硬盘:默认系统盘 100 GB;
    • 网络 / IPv4 地址:指定分布式端口组,需与源端、目标端平台网络互通。网络启用 DHCP 时自动分配 IP,未启用时需手动指定;启用 IP 地址管理后,手动指定的地址需在所选网络段内。
  • 已有 IP:如果已有现成的网关虚拟机,直接输入 IP 地址,连通后系统将自动获取主机名称,点击「检测」测试网络是否可达即可。

添加数据网关

确认无误后点击确定,数据网关即创建完成。

5. 创建源平台

源平台即需要被迁移的业务平台。添加源平台时主要配置:

  • 名称:设置源平台名称;
  • 数据网关:选择已创建的数据网关,或直接输入新数据网关 IP 地址;
  • 平台类型:VMware;
  • vCenter/ESXi 地址:输入 VMware 环境地址;
  • 用户名 / 密码:输入登录凭据。

填写完成后点击「检测」进行连通性测试,确保连接正常。当源平台和数据网关均准备完成,即可开始创建迁移任务。

创建源平台

创建完成后,可以在源平台列表中查看平台类型、vCenter/ESXi 地址、关联的数据网关以及连接状态,状态为「已连接」即表示源平台对接成功。

源平台列表

6. 创建迁移任务

新建迁移任务分两步:

  • 第一步:选择源平台,勾选需要迁移的源虚拟机。
  • 第二步:配置迁移后虚拟机的相关参数,包括目标数据中心、集群、主机、存储位置、总线类型、CPU 模式、目标网络端口组等;随后填写割接配置。

创建迁移任务:第一步

创建迁移任务:第二步虚拟机配置

割接是整个迁移流程中的关键步骤——指在完成数据同步后,将业务从旧平台停止,并平滑切换到新平台运行。割接配置提供了几个实用选项:

  • 立即割接:数据初始同步完成后自动执行割接;
  • 创建回滚快照:割接前为目标虚拟机创建快照,出问题时可回滚;
  • 源虚拟机自动关机:割接前自动关闭源虚拟机,避免 IP 冲突;
  • 自动安装 VMTools:系统转换完成后自动安装 VMTools。

创建迁移任务:第二步割接配置

确认无误后点击确定,迁移任务即创建完成,任务状态进入「同步中」。

7. 同步与割接

任务创建后,系统会自动同步源虚拟机的数据到目标平台,任务列表中可以看到任务状态为「同步中」。

迁移任务同步中

当任务状态变更为「可割接」时,表示数据同步阶段已完成,迁移流程进入最后的割接阶段。

迁移任务可割接

点击「割接」,阅读并确认风险信息后,割接正式开始,虚拟机业务切换至目标平台。

割接确认

割接成功后,可以看到原 VMware 平台的虚拟机已迁移至此平台中。

割接成功

二、导入虚拟机(OVF 方式)

如果只有少量虚拟机需要迁移,且业务可以接受停机导出,也可以不使用 ZMigrate,直接通过 OVF 模板导入的方式完成迁移。整体思路是:先在源平台将虚拟机导出为 OVF 模板,再在目标平台上传导入。

第一步:导出 OVF 模板。在源平台(如 VMware vSphere)中将目标虚拟机关机,导出为 OVF 模板,通常会得到三类文件:

  • OVF 文件:虚拟机的描述文件,定义了虚拟机的硬件配置;
  • VMDK 文件:虚拟机的磁盘数据文件;
  • MF 文件:清单文件,用于校验文件完整性。

第二步:在目标平台导入。在导航栏中右键单击目标集群、主机或镜像,点击「新建虚拟机」,在新建方式中选择「导入虚拟机」:

选择导入虚拟机方式

然后完成两部分配置:

  • 上传信息:选择镜像存储(用于临时存放上传的模板文件,生成虚拟机后自动删除),模板类型选择 OVF,并依次上传 OVF 文件、VMDK 文件和 MF 文件。注意 VMDK 文件需与 OVF 文件中定义的配置保持一致,包括文件个数和内容。
  • 基本信息:设置虚拟机名称、分组、运行位置(主机或集群)、存储位置(不设置则自动分配),按需配置高可用、虚拟机加密/硬盘加密,以及导入完成后是否自动开机。

导入虚拟机配置

确认无误后点击确定,虚拟机即导入完成。导入后建议安装 VMTools,以使虚拟机的部分配置生效。

三、上传 VMDK 镜像

除了 OVF 模板导入,还有一种更直接的方式:只上传虚拟机的磁盘文件。如果手头已经有虚拟机的 VMDK 磁盘文件(例如从 VMware 导出的磁盘),可以将其作为镜像上传到镜像服务器,平台会自动完成格式转换——上传至 ImageStore 镜像服务器后将自动转换为 qcow2 格式,上传至 Ceph 镜像服务器后将自动转换为 raw 格式。之后使用该镜像创建虚拟机,即完成迁移。

操作步骤如下:

  1. 在主菜单选择「资源中心 > 云资源池 > 计算配置 > 镜像」,进入镜像界面,点击「添加镜像」。

  2. 参考以下要点完成配置:

    • 镜像类型:选择系统镜像;
    • 镜像格式:选择 vmdk;
    • 平台 / VirtIO:根据镜像内操作系统选择平台类型,并决定是否开启 VirtIO(开启后镜像操作系统将加载 VirtIO 磁盘和网卡驱动,性能更好;个别不支持 VirtIO 的低版本系统可选择不开启);
    • 操作系统 / CPU 架构 / BIOS 模式:选择与镜像一致的配置,BIOS 模式需与镜像封装时一致(Legacy 或 UEFI),否则可能导致虚拟机无法正常工作;
    • 镜像服务器:选择已创建的镜像服务器;
    • 镜像路径:支持 URL(HTTP/HTTPS、FTP、SFTP)或本地文件上传,ImageStore 镜像服务器支持断点续传。

添加 VMDK 镜像

  1. 确认无误后点击确定,等待镜像上传和格式转换完成。

上传完成后,可以进入镜像详情页查看镜像 MD5 值,核对镜像是否完整(注意:VMDK 格式上传后会发生格式转换,此时 MD5 值不能作为完整性校验依据)。之后使用该镜像「创建虚拟机」,按需配置 CPU、内存、网络等参数,虚拟机创建完成即完成迁移,同样建议安装 VMTools。

写在最后

三种迁移方式没有绝对的优劣,关键看场景:批量迁移、业务不能停,选 ZMigrate;少量虚拟机、可以停机导出,选 OVF 导入;只有磁盘文件、想快速恢复数据,选 VMDK 镜像上传。

如果你正在规划从 VMware 到 ZSvirt 的迁移,建议先用一、两台非关键业务虚拟机走完一遍完整流程,熟悉同步、测试、割接的节奏后,再批量推进。迁移过程中遇到问题,欢迎到 ZSvirt 开源社区交流,获取更多细节。

加入社区