过去几周,我们宣布了 ZSvirt 正式开源,聊了开源背后的原因,带你亲手创建了第一台虚拟机,剖析了这套经受住生产检验的引擎架构,也走完了从 VMware 迁移虚拟机的完整流程。今天,我们把视角拉回到评估本身:当你认真考虑用 ZSvirt 替代现有虚拟化环境时,应该从哪些环节入手验证?

评估 ZSvirt 是否适合替代 VMware:一份从部署到迁移的 PoC 指南

寻找 VMware 替代方案时,创建并启动一台虚拟机,只完成了最基础的计算链路验证。

完整评估还需要覆盖围绕虚拟机形成的运维体系:主机和集群如何管理,存储与网络如何接入,权限如何分配,任务失败后如何恢复,以及现有 VMware 工作负载如何迁移。

本文提供一套可在实际环境中执行的 PoC 路径。完成测试后,你应该能够回答一个具体问题:

ZSvirt 能否在我们的硬件、网络、存储和工作负载条件下承接现有虚拟化环境?

在开始之前:先定义你要替代什么

“替代 VMware”涉及一整套基础设施能力。

对于只运行少量虚拟机的团队,评估范围可能集中在现有服务器上的 Linux 和 Windows 工作负载。对于规模较大的基础设施团队,还需要考虑集群管理、共享存储、分布式网络、权限控制、自动化接口、高可用和迁移流程。

因此,PoC 可以从记录当前环境开始。

至少需要整理以下信息:

  • vCenter、集群、主机和虚拟机数量;
  • CPU 架构、代际以及现有硬件的保留计划;
  • 虚拟磁盘规模、快照及持续写入情况;
  • VLAN、地址分配、安全策略和外部网络依赖;
  • Linux、Windows 及特殊操作系统版本;
  • 备份、监控、审计和自动化系统的连接方式;
  • 可接受停机的工作负载,以及需要缩短割接窗口的工作负载。

这份清单将决定后续测试范围。每个 VMware 环境的资源结构和业务依赖都有差异,需要结合实际情况完成迁移判断。

第一步:跑通最小资源链路

评估 ZSvirt 最直接的起点,是按照首次虚拟机部署指南,完成一套最小环境。

在测试阶段,一台服务器即可同时作为管理节点和计算节点。完成 ISO 安装后,依次创建数据中心和集群,添加主机、数据存储、镜像存储、分布式交换机与端口组,最后创建第一台虚拟机。

虚拟机进入“运行中”状态后,还需要继续检查各项资源是否正常协作:

  1. 主机能否稳定连接到管理节点;
  2. 镜像能否正常上传并用于创建虚拟机;
  3. 虚拟磁盘能否完成创建、挂载和删除;
  4. 虚拟机能否获得预期地址;
  5. 网关、外部地址和域名解析是否正常;
  6. 控制台能否打开;
  7. 关闭、启动、重启和删除操作是否留下清晰的任务记录。

确认计算、存储、网络、镜像和虚拟机链路全部正常后,再进入集群与迁移测试。这样可以在后续出现问题时,更快判断问题来自平台配置、基础设施条件还是迁移过程。

第二步:验证日常运维

虚拟化平台的长期使用体验,主要体现在持续数年的日常变更中。

在 PoC 环境中,建议继续执行以下操作:

  • 扩容虚拟磁盘;
  • 添加和移除数据盘;
  • 创建、恢复并删除快照;
  • 修改虚拟机计算规格;
  • 调整网络配置;
  • 将虚拟机迁移到其他主机;
  • 模拟一项操作在中途失败;
  • 检查失败任务的回滚过程和错误信息。

ZSvirt 使用异步任务、无状态服务和工作流机制处理长执行路径。以创建虚拟机为例,底层可能涉及调度计算节点、准备镜像、创建磁盘、配置网络以及生成虚拟机配置。任意环节失败,都可能留下已经创建但不再使用的资源。

工作流会将此类操作拆分为可执行、可回滚的步骤。关于相关机制,可以继续阅读 ZSvirt 架构详解工作流引擎设计

PoC 中可以主动制造一次可控失败,例如提供不可用的存储路径或错误的网络参数,然后观察:

  • 任务停在哪一步;
  • 界面和 API 返回了什么错误;
  • 已完成的步骤是否被清理;
  • 是否产生孤立磁盘或残留配置;
  • 修正问题后能否重新执行。

这项测试能够直观展示平台在异常情况下的处理和恢复行为。

第三步:分别验证存储和网络

在虚拟化替代项目中,存储与网络往往决定最终的稳定性和运维复杂度。

存储验证

配置页面中出现某种存储类型,只能说明平台提供了相应的接入入口。实际验证还应包括:

  • 镜像导入和基于镜像创建虚拟机;
  • 系统盘与数据盘的创建和挂载;
  • 快照与恢复;
  • 共享存储下的跨主机迁移;
  • 主机或存储路径异常后的状态;
  • 典型业务负载下的延迟和吞吐;
  • 备份与恢复所需时间。

如果生产环境使用 SAN、NFS、Ceph 或其他存储系统,应使用计划保留的设备完成测试。本地磁盘适合跑通最小环境,测试结果无法直接代表共享存储环境的表现。

网络验证

建议选择一个接近生产环境的 VLAN 和地址段,验证:

  • 分布式交换机和端口组配置;
  • DHCP 或静态地址分配;
  • VLAN 与物理交换机配置是否一致;
  • 虚拟机跨主机迁移后的网络连通性;
  • 安全规则的应用位置和生效范围;
  • 主机或网络组件状态变化后的流量路径。

出现网络故障时,管理员应当能够回答三个问题:流量从哪里进入、规则在哪里执行、问题应该从哪一层开始排查。

如果流量路径和规则位置仍不清楚,说明相关验证还需要继续。

第四步:验证权限、审计与自动化

对于多人管理的环境,除了 Web 界面的操作体验,还应验证权限边界、审计记录和自动化接口。

建议创建至少两类测试账户:

  • 具备基础虚拟机操作权限的日常运维人员;
  • 能够管理主机、存储、网络和账户的管理员。

分别检查两类账户在界面和 API 中能够查看和执行的内容,并确认被拒绝的操作是否留下记录。

接着通过 API 完成一条最小自动化链路:

  1. 查询主机、存储、网络和镜像;
  2. 创建一台虚拟机;
  3. 查询异步任务状态;
  4. 为资源添加标签;
  5. 读取操作结果和审计记录;
  6. 主动提交一个错误参数并检查返回信息。

ZSvirt 提供 RESTful/OpenAPI 接口,以及 Terraform Provider 和 Go、Python、Java SDK。PoC 需要确认现有门户、脚本、ITSM、监控或资产系统能否稳定调用这些接口。相关能力和开源范围可参阅我们为什么开源 ZSvirt

第五步:从一台非关键虚拟机开始迁移

基础平台验证完成后,可以开始测试 VMware 迁移。

ZSvirt 当前提供三种常见迁移路径:

迁移方式 适用场景 主要验证内容
ZMigrate 在线迁移 希望保持源虚拟机运行,并在计划窗口完成割接 全量与增量同步、网络映射、目标验证和最终割接
OVF 导入 已有标准 OVF/OVA 导出文件 虚拟硬件配置、磁盘、启动模式和网络适配
VMDK 镜像上传 已经取得 VMware 虚拟磁盘文件 磁盘格式、系统启动、驱动和虚拟网卡

完整操作过程可参考ZSvirt 迁移实践:从 VMware 迁移虚拟机的三种方法

第一次测试建议避开关键生产系统,也不宜选择完全空闲的演示虚拟机。更合适的对象是一台运行真实服务、存在持续磁盘写入,同时具备回退条件的 Linux 或 Windows 虚拟机。

一次完整迁移至少应记录:

  • 初始数据量与同步耗时;
  • 增量同步期间源虚拟机的负载;
  • 最终割接窗口;
  • 目标虚拟机首次启动时间;
  • IP、路由和安全策略是否正确;
  • 应用服务、文件系统和数据库一致性;
  • 迁移失败后的重试与回退方式;
  • 应用负责人最终确认结果。

迁移任务达到 100% 后,还需要完成目标平台上的业务验证,并确认团队能够在异常情况下执行回退。

建议执行的 PoC 清单

在讨论生产替换之前,建议至少完成以下十项测试:

  1. 使用 ISO 部署 ZSvirt 管理节点;
  2. 创建数据中心和集群并添加主机;
  3. 配置镜像、数据存储和虚拟网络;
  4. 分别创建并运行 Linux 与 Windows 虚拟机;
  5. 验证控制台、地址分配与外部网络;
  6. 测试磁盘挂载、扩容、快照与恢复;
  7. 在共享存储条件下执行跨主机迁移;
  8. 验证角色权限、操作记录和审计信息;
  9. 通过 API 创建虚拟机并跟踪异步任务;
  10. 使用 ZMigrate 完成一台 VMware 虚拟机的同步、验证、割接与回退演练。

每一项都应该包含明确的预期结果、实际结果和负责人。对于未通过的项目,还应记录日志位置、恢复方式,以及它是否会阻止生产迁移。

如何判断 PoC 结果

不同虚拟化场景对平台能力有不同要求。

如果只需要管理一台服务器和少量实验虚拟机,完整的集群控制平面可能超出实际需求。如果团队已经采用 Kubernetes 原生的基础设施模式,也可以将 Kubernetes 虚拟化方案纳入比较。如果现有环境依赖特定 VMware 插件或专有集成,则需要单独验证替代路径。

ZSvirt 面向希望保留以集群、主机、虚拟机、存储和网络为核心的运维模型,同时需要开放源代码、开放 API 和 VMware 迁移路径的团队。

PoC 结束后,可以依据以下问题形成内部结论:

  • 现有硬件能否继续使用;
  • 关键工作负载能否稳定运行;
  • 运维人员能否理解并排查平台行为;
  • 自动化和外部系统能否完成接入;
  • 迁移窗口与回退流程是否符合业务要求。

完成这些验证后,团队将获得一项可以在内部评审、复现和继续推进的迁移结论。

开始验证 ZSvirt

你可以从一台服务器和第一台虚拟机开始:

加入社区