从根因到修复:全面解析vCenter ‘Log Disk Exhaustion‘ 告警的排查与应对
1. 告警现象与触发机制
当你登录vCenter管理界面时,突然看到"Log Disk Exhaustion on vcsa"的红色告警,这意味着什么?简单来说,就是vCenter Server Appliance(VCSA)的日志磁盘空间即将耗尽。这个告警通常会在/storage/log分区使用率达到75%时触发黄色警告,达到85%时升级为红色严重告警。
我遇到过不少客户对这个告警感到困惑,因为他们觉得"明明还有15%的空间,怎么就告警了?"这其实和汽车油量警示灯一个道理——系统需要提前预警,避免真正耗尽时导致服务中断。当/storage/log分区完全填满时,可能会导致vCenter服务不可用,出现503错误,甚至影响vSAN健康状态检查等功能。
通过VAMI(vSphere Appliance Management Interface)的监控界面,你可以直观看到各磁盘分区的使用情况。这里有个实用技巧:点击"Monitor > Disk"后,系统会用不同颜色标识磁盘状态:
- 绿色:正常(使用率<75%)
- 黄色:警告(75%≤使用率<85%)
- 红色:严重(使用率≥85%)
2. 常见根因深度分析
2.1 日志轮转机制失效
这是最常见的问题根源。正常情况下,vCenter的各组件日志应该会自动轮转(rotation)和压缩,但某些情况下这个机制会失效。我曾在多个环境遇到过这些典型场景:
- SSO日志未压缩:在vCenter 7.0 U1之前的版本中,/storage/log/vmware/sso/目录下的日志文件可能不会自动压缩,导致大量未压缩的catalina.log和localhost_access.log堆积
- Pod启动日志泛滥:7.0 U3c之前的版本存在一个已知Bug,/storage/log/vmware/pod-startup/目录会生成大量pod-startup.log文件且不会自动清理
- vmafdd服务日志异常:同样在7.0 U3c之前,/storage/log/vmware/vmafdd/vmafdd.log文件不会按预期压缩,可能增长到数GB大小
2.2 支持包未自动清理
很多管理员不知道,通过vSphere Client导出的支持包默认会保存在/storage/log/vc-support-bundles/目录下。我见过一个案例,某客户连续三个月每天自动导出支持包,最终占用了近200GB空间!这些文件通常以"vc-support-bundle-日期.tgz"命名,可以通过以下命令快速查看:
ls -lh /storage/log/vc-support-bundles/ | wc -l2.3 默认分区大小不足
随着环境规模扩大,默认的10GB日志分区可能不够用。特别是以下场景会加速日志增长:
- 大规模vSAN集群(会产生更多调试日志)
- 频繁vMotion操作
- 启用了详细调试日志级别
- 存在大量告警和事件
2.4 版本特定Bug
根据VMware知识库,这些版本存在已知问题:
- 6.0 U3之前:cloudvm-ram-size.log轮转失效
- 7.0 U1之前:SSO日志压缩功能异常
- 7.0 U3c之前:pod-startup.log和vmafdd.log问题
- 8.0 U3之前:支持包不会自动删除
3. 诊断与排查实战
3.1 快速定位问题分区
首先通过SSH登录VCSA(如果提示"Appliance Shell",输入shell进入Bash环境),执行:
df -h | grep -E 'Filesystem|storage'典型输出类似:
/dev/mapper/log_vg-log 10G 8.7G 1.3G 87% /storage/log /dev/mapper/core_vg-core 25G 5.1G 20G 21% /storage/core3.2 查找大文件
使用组合命令找出前20大文件:
find /storage/log -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 20我曾用这个方法发现一个8.4GB的stdstream.log.stderr文件,原因是WCP服务持续报错。
3.3 检查inode使用情况
有时候磁盘有剩余空间但仍报"no space left",可能是inode耗尽了:
df -i /storage/log如果IUse%接近100%,说明有海量小文件。进一步分析:
find /storage/log -type d | while read dir; do echo "$dir: $(find "$dir" -type f | wc -l)"; done | sort -n -k2 | tail -n 103.4 服务特定日志检查
重点关注这些高危目录:
- /storage/log/vmware/vpxd/ - vCenter核心服务日志
- /storage/log/vmware/vsphere-ui/ - Web客户端日志
- /storage/log/vmware/eam/web/ - ESX Agent Manager日志
- /storage/log/vmware/lookupsvc/ - Lookup Service日志
4. 解决方案与实操步骤
4.1 安全清理日志文件
原则:只删除已压缩或轮转的旧日志(如*.gz、.log.1),不要删除正在写入的当前日志(.log)。
清理7天前的压缩日志:
find /storage/log -name "*.gz" -mtime +7 -type f -delete针对特定服务的清理示例(WCP服务日志):
rm -f /storage/log/vmware/wcp/stdstream.log-*.stderr4.2 手动轮转日志
对于持续增大的当前日志,可以强制轮转:
/usr/sbin/logrotate -f /etc/logrotate.d/vmware-vpxd然后重启相关服务:
service-control --restart vmware-vpxd4.3 扩容/storage/log分区
步骤1:确认当前磁盘布局
lsblk -o NAME,SIZE,MOUNTPOINT步骤2:在vSphere Client中扩展VMDK(通常为Hard Disk 5)
步骤3:执行自动扩容脚本:
/usr/lib/applmgmt/support/scripts/autogrow.sh验证:
vpxd_servicecfg storage lvm autogrow echo $? # 返回0表示成功4.4 应用补丁修复已知问题
根据版本选择对应补丁:
- KB 318575:修复vmafdd.log问题
- KB 318217:解决pod-startup.log问题
- KB 318209:处理SSO日志压缩
5. 预防措施与最佳实践
5.1 日志管理策略
- 定期清理计划:设置cronjob每月清理旧日志
0 3 1 * * /usr/bin/find /storage/log -name "*.gz" -mtime +30 -delete- 调整日志级别:避免不必要的DEBUG日志
vim-cmd vpxd/setloglevel info5.2 监控配置建议
在VAMI中设置预警阈值:
- 访问 https://<vCenter_IP>:5480
- 导航到"Monitor > Health"
- 调整"Storage"告警阈值
5.3 容量规划指南
根据环境规模建议的日志分区大小:
- 小型环境(<100主机):15GB
- 中型环境(100-500主机):30GB
- 大型环境(>500主机):50GB+
对于特别活跃的环境,可以考虑将某些高频日志(如vSAN日志)重定向到共享存储。
