过去几天,我们宣布了 ZSvirt 正式开源,聊了开源背后的原因,带你亲手创建了第一台虚拟机,也剖析了这套经受住生产检验的引擎架构。作为系列的最后一篇,今天我们把镜头对准迁移——如何把现有 VMware 环境里的虚拟机平滑迁入 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,下载对应版本的迁移服务安装包。开源版本无需许可证,下载即用,只需确认平台已添加镜像存储资源,且镜像存储有足够的存储空间。

安装包下载完成后,即可进入平台开始部署。
2. 部署 ZMigrate
部署迁移服务分两步:先上传安装包,再安装部署。
上传安装包:在迁移服务页面点击「去上传」,支持 URL 和本地上传两种方式,并需指定一个存储路径用于存放安装包及解压后的文件。注意该目录要有充足的可用空间,且不能使用 /、/dev、/proc、/sys、/usr/bin、/bin、/opt 等系统目录,否则可能导致安装失败或服务器异常。
安装部署:上传完成后点击「去安装」,根据业务需求选择合适的规格,主要配置项包括:
- 数据中心 / 运行位置:迁移服务通过虚拟机数据网关部署,选择其运行的数据中心与位置;
- CPU / 内存:默认 8 核 8 GB,CPU 核数直接影响迁移并发能力;
- 存储位置 / 硬盘:默认系统盘 100 GB,存储位置为分布式存储时需指定存储池;
- 迁移网络 / IPv4 地址:指定分布式端口组作为迁移网络,需与源端、目标端平台网络互通。网络启用 DHCP 时自动分配 IP,未启用时需手动指定。
确认无误后点击确定,迁移服务开始部署。

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

3. 上传 VDDK
如果源平台是 VMware,还需要上传 VDDK(Virtual Disk Development Kit)包。ZMigrate 通过 VDDK 接口读取 VMware 源虚拟机的磁盘数据,这是 VMware 迁移链路中不可或缺的一环。在迁移服务页面点击「去上传」,将提前准备好的 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 格式。之后使用该镜像创建虚拟机,即完成迁移。
操作步骤如下:
-
在主菜单选择「资源中心 > 云资源池 > 计算配置 > 镜像」,进入镜像界面,点击「添加镜像」。
-
参考以下要点完成配置:
- 镜像类型:选择系统镜像;
- 镜像格式:选择 vmdk;
- 平台 / VirtIO:根据镜像内操作系统选择平台类型,并决定是否开启 VirtIO(开启后镜像操作系统将加载 VirtIO 磁盘和网卡驱动,性能更好;个别不支持 VirtIO 的低版本系统可选择不开启);
- 操作系统 / CPU 架构 / BIOS 模式:选择与镜像一致的配置,BIOS 模式需与镜像封装时一致(Legacy 或 UEFI),否则可能导致虚拟机无法正常工作;
- 镜像服务器:选择已创建的镜像服务器;
- 镜像路径:支持 URL(HTTP/HTTPS、FTP、SFTP)或本地文件上传,ImageStore 镜像服务器支持断点续传。

- 确认无误后点击确定,等待镜像上传和格式转换完成。
上传完成后,可以进入镜像详情页查看镜像 MD5 值,核对镜像是否完整(注意:VMDK 格式上传后会发生格式转换,此时 MD5 值不能作为完整性校验依据)。之后使用该镜像「创建虚拟机」,按需配置 CPU、内存、网络等参数,虚拟机创建完成即完成迁移,同样建议安装 VMTools。
写在最后
三种迁移方式没有绝对的优劣,关键看场景:批量迁移、业务不能停,选 ZMigrate;少量虚拟机、可以停机导出,选 OVF 导入;只有磁盘文件、想快速恢复数据,选 VMDK 镜像上传。
如果你正在规划从 VMware 到 ZSvirt 的迁移,建议先用一、两台非关键业务虚拟机走完一遍完整流程,熟悉同步、测试、割接的节奏后,再批量推进。迁移过程中遇到问题,欢迎到 ZSvirt 开源社区交流,获取更多细节。
加入社区
- 问题反馈:GitHub Issues
- 社区讨论:GitHub Discussions
- 社交媒体:
- YouTube:https://youtube.com/@ZSvirt
- LinkedIn:https://www.linkedin.com/in/zsvirt-community/
- X/Twitter:https://x.com/ZSvirt
- Email:community@zsvirt.io