Home

VMware 虚拟机无法启动报正在处理另一个任务

现象

主机出现故障并伴随主机重启,重启后其中一个虚拟机恰好被备份软件开始备份

排查过程

1. 初步检查

需求就是以最快速度把这台虚拟机启动起来 根据现场人员的描述:

  • 主机是故障重启
  • 需要处理的虚拟机就这一台
  • 给出的线索还是虚拟机带有锁文件

2. 关键发现

根因

明确写出根因,不要只写“已恢复”。

处理步骤

我的思路是这样:

  1. 先查看当前的虚拟机状态
  2. 如果带有锁导致的无法启动那就尝试从软到硬到强制关闭虚拟机,让 ESXi 把锁释放
  3. 如果第二步无法释放,那就看看是哪个进程还在占用文件导致的锁
  4. 最差的是直接强制删除锁文件
# 列出所有正在运行的虚拟机,同时也获取到对应的wordID
esxcli vm process list

# 发现还在运行,就执行了软关闭
esxcli vm process kill --type=soft --world-id=3496027
# 因为已经启动了后面就没有继续
esxcli vm process kill --type=hard --world-id=3496027
esxcli vm process kill --type=force --world-id=3496027

但是后面在 web 刷新的时候已经是启动状态了。

但是呢以我的理解我大胆猜测一下这个过程:

  1. 主机故障重启后,vCenter/HA 开始拉起 VM。
  2. NetWorker 也在恢复后继续/重试备份任务,先触发了快照相关操作。
  3. 这台 VM 一度被“备份快照任务/磁盘句柄”占用,UI 出现“正在处理另一个任务”。
  4. 同时你手工做了重配电源/快照操作,和备份任务冲突,出现一串失败记录。
  5. 备份任务失败或超时退出后,锁自动释放。
  6. 资源也在这段时间波动(你看到过内存不足),稍后恢复。
  7. HA 或你的后续重试命中“锁已释放 + 资源恢复”的窗口,VM 最终自己启动成功。
flowchart TD A["ESXi 主机故障并重启"] --> B["vCenter/HA 开始恢复虚拟机任务"] B --> C["NetWorker Backup 恢复后重试<br/>触发快照/磁盘操作"] C --> D["VM 出现任务占用或锁定<br/>报'正在处理另一个任务'"] D --> E["人工操作叠加<br/>重配/开机/快照任务冲突"] E --> F["出现多条失败记录<br/>含备份失败、开机失败"] F --> G["备份任务失败或超时退出<br/>锁自动释放"] G --> H["主机资源逐步恢复(含内存波动回落)"] H --> I["HA或人工重试再次开机"] I --> J["VM 最终成功启动"] style C fill:#ffe9cc,stroke:#d79b00 style D fill:#ffd6d6,stroke:#b85450 style G fill:#d5e8d4,stroke:#82b366 style J fill:#d5e8d4,stroke:#82b366

验证结果

  • 验证项 1:虚拟机正常启动
  • 验证项 2:第二天验证业务正常运行

经验沉淀

定位错误的位置

补充说明

文章附件目录:/assets/images/blog/{{slug}}/

故障排查