3. 诊断工具链与日志体系

复杂故障诊断的效率,往往不取决于工程师对某个命令的熟悉程度,而取决于是否建立了“分层取证”的意识:先判断问题落在哪一层,再选择该层最合适的工具与日志,最后用支持包把证据固化下来。本节围绕 ESXi 主机、vCenter Server 与存储/网络三个层面,梳理一条可复用的工具链与日志体系。

一、工具链的分层定位

ESXi 主机侧的核心工具是 esxcli,它按命名空间组织,覆盖存储、网络、虚拟机、硬件等多个子系统。诊断时常用的命名空间包括:

  • esxcli storage core path list:查看路径状态(active/dead/standby)、路径选择策略与 HBA 信息,是判断存储多路径故障的第一入口。
  • esxcli storage vmfs extent list:确认 VMFS 数据存储的 extent 组成与容量,用于排查数据存储不可访问或容量异常。
  • esxcli network vm list / esxcli network nic list:核对虚拟机端口组归属与物理网卡链路状态、速率、双工。
  • esxcli system syslog config get:确认远程 syslog 目标是否配置,决定日志能否被集中留存。

vmkfstools 则聚焦 VMFS 与虚拟磁盘文件层面,典型用途是查询磁盘描述符、检查快照链与磁盘几何信息:

vmkfstools -D /vmfs/volumes/datastore1/VM01/VM01.vmdk
vmkfstools -P /vmfs/volumes/datastore1
vmkfstools -X check /vmfs/volumes/datastore1/VM01/VM01-flat.vmdk

其中 -D 输出磁盘的锁定信息与 owner,是排查“虚拟机无法开机、提示磁盘被占用”的关键;-P 显示 VMFS 版本、块大小与容量;-X check 用于对 thin 磁盘做一致性检查。需要注意,vmkfstools 的部分写操作具有破坏性,诊断阶段应优先使用只读查询。

二、日志体系与关键文件

ESXi 日志位于 /var/log,其中与故障诊断最相关的是:

  • vmkernel.log:记录存储路径切换、设备发现、NMP/PSP 事件、内存与 CPU 调度异常,是存储与硬件类故障的主日志。
  • hostd.log:vSphere API 与主机代理层日志,虚拟机注册、任务失败、权限问题多在此体现。
  • vpxa.log:主机与 vCenter 之间的代理通信日志,用于判断是主机侧还是 vCenter 侧的问题。
  • fdm.log:HA 代理日志,用于分析 HA 隔离、主机故障切换失败。

vCenter 侧日志集中在 VCSA 的 /var/log/vmware/vpxd/ 与 /var/log/vmware/vsphere-client/,其中 vpxd.log 记录清单操作、任务与告警,vpxd-profiler.log 可用于性能与响应时间分析。排查“vCenter 操作超时但主机正常”这类问题时,应同时比对 vpxd.log 与对应主机的 vpxa.log,确认请求在哪一跳被阻塞。

日志时间戳默认使用 UTC。比对 vCenter 与 ESXi 日志前,先确认 NTP 同步状态(esxcli system time get),否则时间偏移会导致因果判断错误。

三、性能图表与支持包

vCenter 性能图表提供 CPU、内存、磁盘、网络四类指标的实时与历史视图,适合定位“趋势性劣化”而非瞬时故障。诊断时应关注:CPU 的 Ready 时间(反映资源争用)、内存的 Balloon 与 Swap、磁盘的 DAVG/KAVG 延迟、网络的丢包率。图表用于缩小范围,日志用于确认根因,两者不可互相替代。

当现场无法继续在线排查时,应收集支持包(Support Bundle)。ESXi 侧通过 vm-support 生成,vCenter 侧通过 VAMI 或 vc-support.sh 生成。支持包包含日志、配置、性能数据与清单快照,是离线分析与厂商支持的基础。收集前应记录故障发生的时间窗口与现象,便于后续按时间轴检索。

vSphere 故障诊断工具链与日志分层 从现象定位 → 分层取证 → 证据固化 vCenter Server 层 vpxd.log 清单/任务/告警 vpxd-profiler.log 响应时间分析 性能图表 CPU/内存/磁盘/网络 vc-support.sh VCSA 支持包 vpxa 通信 ESXi 主机层 vmkernel.log 存储/硬件 hostd.log API/任务 vpxa.log 与 vCenter 通信 fdm.log HA 隔离/切换 vm-support ESXi 支持包 esxcli storage / network vmkfstools -D / -P / -X esxcli system syslog config get 离线分析与证据固化 时间轴对齐 NTP 校验 + 时间窗口 跨层比对 vpxd ↔ vpxa ↔ vmkernel 根因确认 路径/锁/资源争用 支持包归档 厂商/复盘

四、一次存储路径故障的取证示例

假设某虚拟机在 vCenter 中显示“无法访问数据存储”,且任务超时。可按以下顺序取证:

  1. 在主机执行 esxcli storage core path list,观察目标 LUN 的路径是否出现 dead 或 off,并记录 Runtime Name 与 Transport。
  2. 查看 vmkernel.log 中对应时间段的 NMP、scsi 关键字,确认是否发生路径切换或设备丢失。
  3. 用 vmkfstools -D 检查该虚拟机磁盘的 owner 与锁定状态,排除“磁盘被其他主机占用”。
  4. 若主机侧日志正常,再回到 vCenter 查看 vpxd.log 与 vpxa.log,确认请求是否在代理层被阻塞。
  5. 最后收集 vm-support 与 VCSA 支持包,按时间窗口归档,供厂商或复盘使用。
不要仅凭 vCenter 告警就断定主机故障。vCenter 的告警可能来自代理通信中断,而主机本身仍在正常运行。跨层比对是避免误判的关键。

五、工具选择速查

现象首选工具/日志关键观察点
数据存储不可访问esxcli storage core path list路径状态、PSP、HBA 链路
虚拟机磁盘被占用vmkfstools -Downer、锁定模式
vCenter 任务超时vpxd.log + vpxa.log请求在哪一跳阻塞
HA 切换失败fdm.log隔离判定、代理状态
性能趋势劣化vCenter 性能图表Ready、DAVG、丢包率
离线分析/厂商支持vm-support / vc-support.sh时间窗口与现象记录

工具链的价值不在于命令数量,而在于“现象—层级—工具—证据”的对应关系。把这条链路固定下来,复杂故障的定位时间会显著缩短,支持包也能成为可复用的分析资产。