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

> 介绍 ZSvirt 的三种虚拟机迁移方式——ZMigrate 在线迁移、OVF 导入虚拟机、VMDK 镜像上传，附 ZMigrate 从下载部署到割接成功的完整实操流程。

- 发布时间: 2026-08-19
- 更新时间: 2026-08-19
- 作者: [ZSvirt 团队](https://github.com/ZSvirt)
- 分类: 最佳实践
- 标签: ZSvirt, 虚拟化, 迁移, ZSvirt 迁移, ZMigrate, VMware 迁移, OVF 导入, VMDK 镜像, 开源虚拟化

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

<figure class="blog-demo-video" data-home-demo-video="liveMigration">
  <video controls playsinline preload="none" poster="/images/reference-home/demo-live-migration-cover.svg" aria-label="ZSvirt 在线迁移演示视频" width="1280" height="720">
    <source src="https://oss.zstack.io/product_downloads/ZSvirt/video/ZMigrate.mp4" type="video/mp4" />
    你的浏览器不支持视频播放，请<a href="https://oss.zstack.io/product_downloads/ZSvirt/video/ZMigrate.mp4">直接打开在线迁移视频</a>。
  </video>
  <figcaption>ZSvirt 在线迁移演示：从部署迁移服务到完成割接的完整流程。</figcaption>
</figure>

在虚拟化平台的建设和替换过程中，虚拟机迁移是绕不开的一环。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，下载对应版本的迁移服务安装包。开源版本无需许可证，下载即用，只需确认平台已添加镜像存储资源，且镜像存储有足够的存储空间。

[图片可在规范 HTML 页面中查看: 官网下载 ZMigrate 安装包](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

### 2. 部署 ZMigrate

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

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

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

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

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

[图片可在规范 HTML 页面中查看: 部署 ZMigrate 服务](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

[图片可在规范 HTML 页面中查看: ZMigrate 部署中](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

### 3. 上传 VDDK

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

[图片可在规范 HTML 页面中查看: 上传 VDDK](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

### 4. 添加数据网关

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

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

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

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

[图片可在规范 HTML 页面中查看: 添加数据网关](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

### 5. 创建源平台

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

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

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

[图片可在规范 HTML 页面中查看: 创建源平台](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

[图片可在规范 HTML 页面中查看: 源平台列表](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

### 6. 创建迁移任务

新建迁移任务分两步：

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

[图片可在规范 HTML 页面中查看: 创建迁移任务：第一步](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

[图片可在规范 HTML 页面中查看: 创建迁移任务：第二步虚拟机配置](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

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

[图片可在规范 HTML 页面中查看: 创建迁移任务：第二步割接配置](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

### 7. 同步与割接

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

[图片可在规范 HTML 页面中查看: 迁移任务同步中](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

[图片可在规范 HTML 页面中查看: 迁移任务可割接](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

[图片可在规范 HTML 页面中查看: 割接确认](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

[图片可在规范 HTML 页面中查看: 割接成功](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

## 二、导入虚拟机（OVF 方式）

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

**第一步：导出 OVF 模板**。在源平台（如 VMware vSphere）中将目标虚拟机关机，导出为 OVF 模板，通常会得到三类文件：

- **OVF 文件**：虚拟机的描述文件，定义了虚拟机的硬件配置；
- **VMDK 文件**：虚拟机的磁盘数据文件；
- **MF 文件**：清单文件，用于校验文件完整性。

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

[图片可在规范 HTML 页面中查看: 选择导入虚拟机方式](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

然后完成两部分配置：

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

[图片可在规范 HTML 页面中查看: 导入虚拟机配置](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

确认无误后点击确定，虚拟机即导入完成。导入后建议安装 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 镜像服务器支持断点续传。

[图片可在规范 HTML 页面中查看: 添加 VMDK 镜像](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)

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

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

## 写在最后

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

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

## 加入社区

- **问题反馈**：[GitHub Issues](https://github.com/zsvirt/zsvirt/issues)
- **社区讨论**：[GitHub Discussions](https://github.com/ZSvirt/zsvirt/discussions)
- **社交媒体**：
  - YouTube：[https://youtube.com/@ZSvirt](https://youtube.com/@ZSvirt)
  - LinkedIn：[https://www.linkedin.com/in/zsvirt-community/](https://www.linkedin.com/in/zsvirt-community/)
  - X/Twitter：[https://x.com/ZSvirt](https://x.com/ZSvirt)
  - Email：[community@zsvirt.io](mailto:community@zsvirt.io)

## 官方链接


- [规范 HTML 页面](https://zsvirt.io/zh/blog/zmigrate-workflow-walkthrough/)
- [在 GitHub 讨论](https://github.com/ZSvirt/zsvirt/discussions)
