来源与分类
问题元数据
- 问题编号: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,再启动下一类任务;不能只错开“开始时间”而让长任务重叠。
日志识别步骤(只读)
- 在 Veeam 中记录 job/session ID、虚拟机 UUID、开始和结束时间;在 ZSphere 任务中心记录同一虚拟机的平台备份或迁移任务
apiId。时间必须精确到分钟,用于判断两类任务是否真正重叠。 - 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。
- 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,应分别使用各自请求行中的值。
- 在虚拟机所在 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 前置冲突识别、解除入口和验收标准。
