如何修复 vCenter 6.x / 7.x / 8.x 上的日志磁盘耗尽问题
vCenter 上的“日志磁盘耗尽”告警会快速升级。如果放任不管它将导致您的整个 vSphere 管理平面不可用。本指南涵盖所有根本原因、2 种经过验证的修复方法以及针对 vCenter 6.x、7.x 和 8.x 的版本特定解决方案。“日志磁盘耗尽”告警意味着什么“日志磁盘耗尽”告警意味着您的 vCenter Server Appliance (VCSA) 上的/storage/log分区已接近满载通常超过 75% 的容量。此分区存储所有核心 vCenter 服务的日志包括 SSO、VMware Directory Service 和vpxd。一旦该分区完全写满vCenter 将停止写入日志并关闭关键服务以防止数据损坏。在释放空间或扩展分区之前您将无法访问 vSphere Client也无法管理您的 ESXi 主机。vCenter 日志磁盘耗尽的 6 个常见原因找出日志膨胀的来源是永久修复的第一步。以下是 vCenter 存储日志被填满的六个最常见原因vmafdd.log 未被压缩vCenter 7.x / 8.x BugvCenter 7.0 和 8.0 中的一个已知问题涉及 VMware Authentication Framework Daemon (vmafdd)。注册表不匹配会导致该服务忽略日志轮转规则从而导致单个巨大的日志文件可能耗尽整个分区。支持包未自动删除在 Update 3 之前的 vCenter 8.0 版本中为故障排查生成的支持包有时不会被自动清除。这些支持包是体积较大的压缩文件如果多个支持包累积可能快速触发 VCSA 的日志磁盘耗尽。过多的 pod-startup.log 文件在早于 Update 3c 的 vCenter 7.0 环境中证书验证失败可能触发失控的日志循环。系统会重复生成pod-startup.log文件迅速用冗余的错误消息填满磁盘。SSO 和 lookupsvc 目录膨胀高流量环境或频繁进行 API 调用的环境可能会看到localhost_access.log和catalina.log文件的大幅增长。这些文件位于单点登录 (SSO) 和查找服务目录中在较旧的 6.x 和 7.x 版本中可能无法正确轮转。日志分区对于环境规模而言过小/storage/log默认的 10 GB 分配对于拥有数百台主机或数千台虚拟机的大型环境来说通常是不够的。高日志详细程度或快速的对象更替可能导致使用量比预期更快地超过限制。STIG pgaudit 配置错误vCenter 使用嵌入式 PostgreSQL 数据库来存储清单和配置数据。遵循 STIG 加固的环境可能会为此数据库启用pgaudit。如果配置错误每个数据库事务都会被记录从而很快填满日志分区。首先安全地进行诊断在删除文件或扩展磁盘之前先准确识别哪些文件占用了空间。在没有明确诊断的情况下操作可能导致删除关键系统数据或遗漏潜在的重复性问题。先决条件首先拍摄快照或进行备份在执行任何磁盘操作或文件删除之前请对 VCSA 拍摄 VM 级别快照或进行全新备份。在没有安全措施的情况下调整磁盘大小可能导致分区表损坏并使 VCSA 无法启动。如果 vCenter 是链接模式组的一部分请在进行操作前查看恢复的影响。步骤 1在 VAMI 中识别分区如果 UI 仍然可访问请登录 vCenter Appliance Management Interface (VAMI)地址为https://vcenter-fqdn:5480。导航到左侧边栏中的Monitor。选择Disks。找到标记为/storage/log的分区。健康状态为严重或使用率超过 75% 即确认该告警。步骤 2使用 SSH 检查磁盘使用情况如果 VAMI 无响应请以root用户身份通过 SSH 登录 VCSA。如果进入 Appliance Shell请键入shell切换到 Bash 界面。运行以下命令以可读格式查看磁盘使用情况df -h要筛选已超过 78% 使用率的分区请运行df -h | awk 0$5 78 {print}步骤 3查找占用空间最多的文件确认/storage/log是问题所在后运行以下命令列出 20 个最大的文件和目录du -ah /storage/log/ | sort -h -r | head -n 20查找异常大的文件数 GB或大量小型重复日志文件。注意sort中的-h标志可能并非在所有 VCSA 版本上都受支持。如果命令返回错误请改用sort -r并比较原始字节值。步骤 4检查 inode 耗尽即使有空闲空间分区也可能表现出已满的行为。当分区耗尽 inode文件系统用于跟踪单个文件的索引节点时会发生这种情况。数百万个小日志文件可能耗尽 inode 而不会按大小填满磁盘。使用以下命令检查 inode 使用情况df -i如果/storage/log的IUse%达到或接近 100%则 inode 耗尽可能是原因。步骤 5统计每个目录中的文件数如果步骤 4 显示 inode 使用率较高请运行此命令查找哪个目录包含的文件最多find /storage/log -type d -exec sh -c echo -n {}: ; ls -1 {} | wc -l \; | sort -n -k 2注意如果文件数量非常多此命令可能需要几分钟才能完成。如何使用 2 种方法修复 vCenter 上的日志磁盘耗尽找到原因后您可以通过清除不必要的日志数据或增加可用存储空间来解决该问题。根据诊断结果选择适合的方法。版本特定的已知问题及修复方法vCenter 7 和 8 中的一些日志磁盘耗尽案例是由软件错误引起的这些错误阻止日志正确轮转或压缩。请先查看下表——如果您的版本与已知问题匹配请先应用相应的修复方法。vCenter 版本已知问题修复方法vCenter 6.0 U3 之前cloudvm-ram-size.log 轮转故障升级到最新的 6.0/6.5 版本vCenter 7.0 U1 之前SSO 日志未被压缩升级到 7.0 U1 或更高版本vCenter 7.0 U3c 之前pod-startup.log 失控KB 解决方案或升级到 7.0 U3cvCenter 7.0 / 8.0 U1 之前vmafdd.log 注册表不匹配注册表修复KB 318575vCenter 8.0 U3 之前支持包未自动删除手动清理或升级到 8.0 U3方法 1手动清理日志文件此方法通过删除旧的、已轮转的日志归档文件来提供即时缓解。仅删除压缩文件或带编号的归档文件以.gz、.zip或.log.1结尾。请勿删除以 .log 结尾的活动日志文件。删除旧的压缩日志运行以下命令查找并删除 7 天前修改的压缩日志文件find /storage/log -name *.gz -mtime 7 -type f -delete清理支持包如果诊断中的du输出显示/storage/log/vc-support-bundles/下有大型文件请使用以下命令删除它们rm -rf /storage/log/vc-support-bundles/*重启 vCenter 服务释放空间后重启所有 vCenter 服务以释放服务可能仍持有的文件句柄service-control --stop --all service-control --start --all提示如果某个服务因磁盘完全满载而无法启动请手动删除额外的.gz文件直到使用率降至 95% 以下然后重试。方法 2扩展 /storage/log 虚拟磁盘如果环境已超出默认的 10 GB 分配空间扩展虚拟磁盘是更可持续的修复方案。识别正确的 VMDKVCSA 使用多个虚拟磁盘。Hard Disk 5 通常对应/storage/log但在进行任何更改之前请在 VAMI 中或在 shell 中运行lsblk进行验证。在 vSphere 中增加磁盘大小在 vSphere Client 中右键单击 VCSA VM 并选择Edit Settings。找到已识别的硬盘并增加其大小——例如从 10 GB 增加到 20 GB。VCSA 支持热磁盘扩展因此通常不需要关机但如果您尚未拍摄快照请先拍摄快照。在设备内部扩展分区回到 VCSA SSH 会话中运行以下脚本使设备识别并使用新的空间/usr/lib/applmgmt/support/scripts/autogrow.sh验证扩展再次运行df -h以确认/storage/log反映新的大小。注意此脚本路径适用于 vCenter 7.x 和 8.x。在运行前请验证您的特定版本对应的路径。在修复日志磁盘耗尽之前备份 vCenterVM 级别快照是一个好的起点但它不能替代正确的备份。快照与 VCSA 存储在同一个数据存储上并且可能因您正试图解决的相同存储问题而失效。对于生产 vCenter 环境在您触碰任何磁盘或文件之前专用备份解决方案可以为您提供可靠、独立的恢复点。i2Backup是一款企业级备份解决方案支持使用原生虚拟化 API 进行无代理 VMware VM 备份无需在 VCSA 本身上安装任何代理。i2Backup 关键功能无代理 VM 备份直接通过 VMware API 备份 VCSA无需在设备上安装任何软件。备份作业对生产工作负载零影响。即时 VM 恢复通过将备份镜像远程挂载到目标平台来恢复故障的 VCSA显著缩短恢复时间。时间点恢复捕获连续的备份日志因此您可以将 VCSA 恢复到日志磁盘问题发生之前的特定时间点而不仅仅是最新的备份。不可变备份存储支持 WORM 兼容存储防止备份被修改或删除同时在传输过程中提供 AES 和 SM4 加密。自动化调度备份计划配置后自动运行智能保留策略无需人工干预即可删除过时的备份。操作之前在调整任何磁盘或删除任何文件之前请使用英方软件的 i2Backup 对 VCSA 进行完整备份。如果在修复过程中出现问题干净的恢复点将决定是快速恢复还是完全重建 vCenter。常见问题问 1删除 /storage/log 中的文件是否安全这取决于您删除哪些文件。以.gz、.zip或.log.1结尾的压缩归档文件可以安全删除。以 .log 结尾的活动日志文件不应触碰——删除它们可能会中断正在运行的服务或导致 vCenter 出现意外行为。问 2没有 SSH 访问权限可以修复日志磁盘耗尽吗在大多数情况下不可以。VAMI 提供磁盘使用情况的可见性但不提供直接删除日志文件或调整分区大小的工具。本指南中的清理和扩展步骤需要 SSH 访问权限。如果 SSH 已禁用请在 VAMI 中通过AccessEdit临时启用然后再继续操作。问 3日志磁盘耗尽和 SEAT 磁盘耗尽有什么区别/storage/log分区存储 vCenter 组件生成的服务日志。SEATStatistics, Events, Alarms, and Tasks磁盘通常为/storage/seat存储历史性能数据和事件记录。两者都可能独立填满。症状类似但修复针对的是不同的分区和不同的文件集。问 4为什么 /storage/archive 总是 100%这正常吗是的。/storage/archive分区被设计为在接近或达到 100% 容量下运行。vCenter 将其用作日志归档的中转区系统会自动管理其内容。已满的/storage/archive不是告警条件不需要任何操作。问 5扩展磁盘会导致停机吗VCSA 支持热磁盘扩展因此您可以在不关闭设备的情况下增加虚拟磁盘大小。但是如果分区已经完全写满且服务已停止仍可能发生停机。在这种情况下请先使用方法 1 清理出足够的空间然后再尝试扩展。问 6如果 vCenter 已经无法访问503 错误怎么办如果 vSphere Client 返回 503 错误且 SSH 无响应则设备可能因磁盘已满而停止了大部分服务。通过将 vSphere Client 直接连接到 ESXi 主机 IP通过 ESXi 中的 VM 控制台直接访问 VCSA不经过 vCenter。通过控制台登录删除.gz文件释放空间然后使用 service-control –start –all 重启服务。如果磁盘已满到无法写入任何内容您可能需要先从 ESXi 主机级别扩展 VMDK然后设备才能恢复。结论vCenter 上的日志磁盘耗尽是一个可以恢复的问题但需要快速处理。已满的/storage/log分区将导致您的管理平面离线即使您的虚拟机继续运行也是如此。修复遵循一个直接的顺序进行备份、诊断哪些文件占用了空间、检查您的环境是否适用某个已知的版本特定 Bug然后清理日志文件或扩展分区。对于已超出默认 10 GB 分配空间的环境扩展磁盘是更长久的解决方案。问题解决后请考虑使用像 i2Backup 这样的专用工具为 VCSA 设置定期备份计划以确保在下次维护窗口之前您始终拥有一个干净的恢复点。