文档目录

来源与分类

  • 来源渠道:内部 Jira/TIC。
  • 分类结论:已确认产品互斥限制;UI/API 前置提示和解除入口属于待实现改进。
  • 确认依据:同一虚拟机同时运行第三方 CBT 和平台备份时,日志指向 block job 互斥;关联产品改进要求在 API/UI 层提前识别并提供受控解除入口。
  • 内部追踪:TIC-6011、ZSV-12711。

问题元数据

  • 问题编号:TIC-6011、ZSV-12711
  • 组件代码:ZSphere
  • 组件/产品:ZVF / ZSphere
  • 状态:Open,产品改进尚未交付
  • 优先级/严重程度:待确认
  • 报告版本:ZSphere 4.10.25
  • 首个修复/受影响版本:受影响版本为 ZSphere 4.10.25;首个修复版本待定
  • 问题定义日期:待确认
  • 工程确认日期:待确认
  • 最后更新时间:2026-09-02

问题描述

CBT、平台虚拟机/硬盘备份和迁移需要占用同一虚拟机/硬盘的 block job/NBD 资源,不能并发执行。平台可以拦截自身已登记的调度任务,但外部 Veeam 任务不一定注册为 ZSphere 调度任务,因此 API 前置校验可能看不到外部占用,直到数据面创建 job 时才失败。当前没有经验证的 UI 一键解除能力,必须先确认外部 block job/NBD 资源已经释放,再继续执行平台侧备份或迁移操作。

现有证据补充:当前代码在 CbtBackupApiInterceptor 中会检查虚拟机及其硬盘关联的调度任务,发现虚拟机备份、根硬盘备份或数据硬盘备份时拒绝启用 CBT;导出/取消导出 NBD 还要求虚拟机处于 Stopped。外部 Veeam 任务不一定登记为 ZSphere 调度任务,因此现场仍可能出现平台看不到外部占用、两条链路实际并发的情况。

现象

  • 备份日志出现 expect N block jobs, only found M,或指向 CBT/备份互斥。
  • 同一策略有时成功、有时失败;调整限速不能稳定消除问题。
  • 管理节点日志中出现 The vm ... has already created a backup job, cannot enable the cbt task at the same time 或类似互斥提示。
  • ZSphere 任务中心可能只看到平台备份或迁移任务失败,无法直接从 UI 判断外部 CBT 任务是否仍占用同一虚拟机。

影响

  • 同一虚拟机的平台备份、CBT 或迁移任务可能失败。
  • 失败后可能残留尚未取消的 NBD/block job 占用,导致下一次任务继续失败。
  • 单纯调低备份限速不能解除互斥;只有避免同一虚拟机任务重叠并确认资源释放后,才能降低复发概率。

规避方案

  • 已验证自助方案:将 Veeam CBT 与 ZSphere 平台备份/迁移错峰。对同一虚拟机,先暂停另一套系统的计划,等待当前任务结束并确认没有运行中的 job,再启动下一类任务;不能只错开“开始时间”而让长任务重叠。

日志识别步骤(只读)

  1. 在 Veeam 中记录 job/session ID、虚拟机 UUID、开始和结束时间;在 ZSphere 任务中心记录同一虚拟机的平台备份或迁移任务 apiId。时间必须精确到分钟,用于判断两类任务是否真正重叠。
  2. SSH 登录管理节点,用平台任务的 apiId 查询当前和归档日志:
   KB_API_UUID='将ZSphere任务详情中的apiId粘贴到这里'
   cd /usr/local/zstack/apache-tomcat/logs || exit 1
   ls -lh management-server.log*
   zgrep -a -n -C 3 "$KB_API_UUID" management-server.log*
   zgrep -a -n "$KB_API_UUID" management-server.log* | grep -iE 'json POST|http response|cbt|backup|nbd|block job'

从 json POST 和 http response 行记录目标 ZSphere 主机/备份服务器、URI、taskuuid/taskUuid 和完整互斥错误。若平台任务没有可用 apiId,先用虚拟机 UUID 和准确时间检索 management-server.log*,再从命中的请求行取得 taskuuid。

  1. SSH 登录请求对应的 ZSphere 主机,执行:
   KB_TASK_UUID='将management-server日志中的taskuuid粘贴到这里'
   cd /var/log/zstack || exit 1
   zgrep -a -n -C 5 "$KB_TASK_UUID" zstack-kvmagent.log*

再 SSH 登录请求对应的镜像存储(ImageStore)备份服务器,执行:

   KB_TASK_UUID='将management-server日志中的taskuuid粘贴到这里'
   cd /var/log/zstack/zstack-store || exit 1
   zgrep -a -n -C 5 "$KB_TASK_UUID" zstore*
   zgrep -a -n "$KB_TASK_UUID" zstore* | grep -iE 'expect.*block jobs|only found|cbt|backup|nbd|error|fail'

两组命令必须在各自节点执行;不要因为管理节点日志同时打印两个目标节点,就在同一台机器假定两个日志都存在。ZSphere 主机与镜像存储(ImageStore)请求可能具有不同 taskuuid,应分别使用各自请求行中的值。

  1. 在虚拟机所在 ZSphere 主机设置虚拟机 UUID,并确认当前是否仍有 block job:
   KB_VM_UUID='将虚拟机 UUID 粘贴到这里'
   virsh qemu-monitor-command "$KB_VM_UUID" '{"execute":"query-block-jobs","arguments":{}}' --pretty

若同一时间窗同时存在 Veeam CBT 会话和平台任务,且日志出现 expect N block jobs, only found M 或明确 CBT/backup 互斥,即命中本文。任务结束后 QMP 为空只表示查询当下无 block job,仍应保留故障时间窗日志。需要上下翻看当前日志时使用 vim -R 日志文件,输入 / 后粘贴 UUID 并按 Enter,按 n 看下一处,输入 :q! 退出。

  • 预期结果:一个时间窗只存在 CBT 或平台备份/迁移中的一类任务,前一任务结束并释放 NBD/block job 后,后一任务正常创建。
  • 支持协助方案:任务已失败但占用仍在时,禁止手工杀 qemu-nbd 或修改数据库。保存两侧任务 ID、QMP job/NBD 状态,由 ZStack 支持按准确版本取消/解除;现有 UI 没有已验证的一键解除按钮。
  • 停止条件:无法唯一确认任务归属、QMP 仍有进行中的 job、NBD 仍被使用或两套备份时间线无法对齐时,不启动下一类任务,也不执行手工清理。

受影响产品

  • 产品线:ZVF
  • 产品/组件:ZSphere
  • 受影响版本:ZSphere 4.10.25 报告环境;其他版本是否受影响需结合相同场景日志确认。
  • 运行环境:同一虚拟机同时被 Veeam/第三方 CBT 与 ZSphere 平台备份或迁移使用的环境。
  • 不受影响场景:同一虚拟机的 CBT、平台备份和迁移任务已严格错峰,且前一任务结束后 block job/NBD 资源已释放。

修复状态

  • 当前状态:Open,产品改进尚未交付。
  • 修复版本:待定。
  • 关联补丁/修复包:暂无明确补丁或修复版本。
  • 关联缺陷/修复记录:ZSV-12711 跟踪 API/UI 前置冲突识别、解除入口和验收标准。

关联信息

  • 关联 TIC/Jira:TIC-6011、ZSV-12711。
  • 关联产品记录当前仅提出 UI 按钮、冲突范围和验收标准,不能写成已有修复。
同一虚拟机同时执行 CBT 与平台备份导致任务失败 | 产品已知问题 · KB | ZStack 资源中心