ZSvirt 社区 QA:20 个问题,带你了解 ZSvirt(下篇)

本文是 ZSvirt 开源 FAQ 的下篇。上篇回答了安装部署与登录、Windows/GPU/ARM 支持、网络与存储配置,共 10 个问题;下篇继续整理迁移与备份恢复、API 与 SDK 调用、文档与社区反馈、开源范围与平台选型。

问题列表一览

  • 迁移与备份恢复
    • 问题 11:从 VMware 迁入 ZSvirt,如何选择迁移方式?
    • 问题 12:OVF 如何导入?数据盘未识别怎么办?
    • 问题 13:Veeam 对接有何计划?内置备份、恢复和异地同步怎么做?
  • API 与 SDK 调用
    • 问题 14:Java SDK 如何初始化?HTTP 202 如何获取最终结果?
    • 问题 15:ZSvirt 支持 API 对接吗?如何认证和调用?
  • 文档与社区反馈
    • 问题 16:官方文档在哪里?为什么保留 ZStack/ZSphere 的历史命名?
    • 问题 17:故障、功能需求和界面翻译问题如何反馈?
    • 问题 18:安全漏洞如何报告和处理?
  • 开源范围与平台选型
    • 问题 19:开源版能免费用于生产吗?和 OpenStack 是什么关系?
    • 问题 20:平台选型与性能如何评估?有哪些自动化对接入口?

迁移与备份恢复

问题 11:从 VMware 迁入 ZSvirt,如何选择迁移方式?

可根据停机窗口和现有文件,选择 ZMigrate 在线迁移、OVF 整机导入或 VMDK 磁盘导入。

ZMigrate 在线迁移

适合批量迁移或需要缩短停机时间的场景。无须在源 VM 内安装代理,源 VM 运行时同步数据,最终割接时再停机。

操作顺序:部署 ZMigrate → 上传 VDDK → 配置数据网关 → 添加 VMware 源平台 → 创建迁移任务 → 同步并测试验证 → 停止源 VM 并割接。

在线迁移有并发限制;OVF、VMDK 离线导入不受该在线并发限制。

OVF 整机导入

适合可安排停机导出的场景。关闭源 VM,导出包含 .ovf、关联 VMDK 和 MF 文件的完整文件集,再通过“新建虚拟机 > 导入虚拟机”导入。

VMDK 磁盘导入

适合已有 VMDK、只需迁移磁盘数据的场景。将 VMDK 添加为平台镜像,平台按镜像存储类型自动转换为 qcow2 或 raw,再用镜像创建 VM。CPU、内存和网络需重新配置,BIOS 模式须与源 VM 一致。

参考:三种迁移方式与操作流程、无代理迁移说明、并发范围说明

问题 12:OVF 如何导入?数据盘未识别怎么办?

OVF 导入需准备完整文件集,确保引用匹配,并配置可用的镜像存储。

支持单机及分布式镜像仓库,生成 VM 后默认自动清理对应临时模板。

  1. 准备 .ovf、全部关联的 VMDK 和 MF 文件,文件名、个数及配置须与 OVF 描述一致。
  2. 进入“新建虚拟机 > 导入虚拟机”,上传文件集,选择镜像存储、运行位置和目标数据存储,提交导入。
  3. 导入后的硬盘 1 默认使用 IDE,数据盘使用 Virtio。客户机缺少 Virtio 驱动时,安装并启动 VMTools 后,系统才可识别数据盘。不要初始化原有数据盘。

参考:导入手册

问题 13:Veeam 对接有何计划?内置备份、恢复和异地同步怎么做?

Veeam 对接所需的 API Proxy 包计划在后续版本提供,具体发布日期以官方发布为准。

当前推荐使用 ZSvirt 内置备份与恢复功能,操作步骤如下:

  1. 添加备份存储;复用镜像存储时,选择已启用、已连接的单机镜像仓库,填写备份网络 CIDR。
  2. 创建 VM 备份计划,选择对象、备份存储和策略;执行一次备份,等待生成成功的恢复点。
  3. 在“数据保护 > 已保护资源”选择 VM 和成功的备份数据,点击“新建虚拟机”,配置运行位置和网络后创建。恢复验证时接入隔离网络,避免与源 VM 冲突。

适用条件

创建备份计划前,确认备份额度可用,VM 处于运行或暂停状态,且未绑定其他备份计划。共享盘和 RDM 盘不在备份范围内。

异地同步

提前添加异地备份存储后,可在备份计划中配置异地同步。使用异地备份创建 VM 前,需先将备份同步回本地备份存储。

参考:备份计划、复用镜像存储、恢复步骤

API 与 SDK 调用

问题 14:Java SDK 如何初始化?HTTP 202 如何获取最终结果?

Java SDK 初始化使用 ZSClient.configure(config)。HTTP 202 表示已受理,仍需获取最终结果。

提示 setConfig() 未调用

使用 Action 的 call() 方法前,先创建并配置 ZSConfig 对象,再调用 ZSClient.configure(config)。报错中的 setConfig() 是提示文字中的错误方法名。

参考:SDK 初始化源码

收到 HTTP 202

Java SDK 默认轮询获取最终结果;配置 WebHook 并接入回调处理后,通过回调获取结果。直接调用 REST API 时,对响应体中的 location 发起 GET 请求;若仍返回 202,则继续轮询,直至获得最终业务结果。失败信息见 error 字段。

参考:SDK 异步结果处理、服务端结果查询

问题 15:ZSvirt 支持 API 对接吗?如何认证和调用?

ZSvirt 提供 RESTful API,支持 Session 和 AccessKey 签名认证。

  • Session:账户登录 API 调用成功后,以响应中的 inventory.uuid 作为 Session UUID,请求头使用 Authorization: OAuth <SessionUUID>。
  • AccessKey:在 Java SDK 的 Action 对象中填写 accessKeyId、accessKeySecret,由 SDK 签名;直接 REST 调用按文档生成 Authorization: ZStack <AccessKeyID>:<签名>,并携带与签名计算一致的 Date 请求头。

使用有效 Session 查询虚拟机:

curl -H 'Authorization: OAuth <SessionUUID>' \
  'http://<管理节点IP>:8080/zstack/v1/vm-instances'

示例 URL 按实际 API 地址替换;查询成功后,虚拟机列表位于响应的 inventories 字段。

参考:账户登录 API、查询虚拟机 API、AccessKey 认证

文档与社区反馈

问题 16:官方文档在哪里?为什么保留 ZStack/ZSphere 的历史命名?

安装文档、用户手册、API 文档和分类 FAQ 均已开放,入口见文档中心。

ZSvirt 由 ZStack ZSphere 商业化项目开源并独立发展而来,部分代码、配置和文档仍保留 ZStack/ZSphere 的历史命名(如环境变量、配置项、依赖、路径、命令等)。这些命名仅用于兼容,不影响 ZSvirt 正常使用。

参考:命名说明

问题 17:故障、功能需求和界面翻译问题如何反馈?

故障反馈需附可复现信息,功能请求需说明使用场景。

故障、功能需求和界面翻译问题提交到 Issues,使用交流发布到 Discussions。故障反馈请附:

ZSvirt/SDK 版本与部署方式:
服务器、系统、CPU、网络和存储:
复现步骤、预期结果与实际结果:
失败时间及其时区、任务/资源 ID:
原始错误与对应时段日志:

在 GitHub 提交 Issue 或发布 Discussion 前,请移除日志中的密码、令牌和业务敏感数据;界面翻译问题请附页面路径和原文。

参考:贡献指南

问题 18:安全漏洞如何报告和处理?

疑似漏洞请通过安全邮箱私下报告:首选 security@zsvirt.io,备选 community@zsvirt.io。

不要在公开 Issue 披露漏洞细节。报告附受影响版本、复现条件、影响范围、脱敏证据及回联方式。

维护者按安全政策接收和验证报告,评估修复或缓解措施,并协调披露。

开源范围与平台选型

问题 19:开源版能免费用于生产吗?和 OpenStack 是什么关系?

ZSvirt 由 ZSphere 开源并独立发展,源代码采用 GPL 3.0,可用于生产,无需支付平台许可费。

ZSvirt 采用独立技术路线,不是 OpenStack 衍生项目。厂商驱动、第三方软件及商业服务遵循各自的许可和收费规则。

参考:开源范围说明、生产使用与技术路线说明

问题 20:平台选型与性能如何评估?有哪些自动化对接入口?

功能与管理方式可参考官方对比文章;性能和兼容性需按 PoC 指南,在目标硬件、存储和业务负载下验证。

自动化对接入口:REST API、SDK、Terraform Provider。

安装部署与登录、Windows/GPU/ARM 支持、网络与存储配置见上篇。


加入社区