预约咨询 提交工单

Linux SRE 运维手册:诊断和解决 /var/log 磁盘空间耗尽问题

SRE 的分步指南,用于故障排除 /var/log 磁盘空间耗尽,包括安全日志清理、风险缓解和升级时机。

Linux SRE 运维手册:诊断和解决 /var/log 磁盘空间耗尽问题
DevOps 6min 25 浏览 2026-06-18
LinuxSRE故障排除日志管理

场景:监控警报显示 /var/log 磁盘使用率超过 90%。应用程序日志写入失败,关键服务开始崩溃。这是常见的生产事件,需要立即但谨慎的处理。

症状: - df -h 显示 /var/log 使用率为 100%。 - 应用程序错误:日志中出现“设备上没有剩余空间”。 - Logrotate 因磁盘满而失败。 - rsyslog 或 journald 等服务停止运行。

诊断: 1. 检查磁盘使用情况:df -h /var/log 2. 找出大文件:du -sh /var/log/* | sort -rh | head -10 3. 检查已删除但仍在打开的文件:lsof | grep '(deleted)'——这些文件仍占用空间,直到文件描述符关闭。 4. 检查 logrotate 状态:cat /var/lib/logrotate/status 5. 对于 systemd 日志:journalctl --disk-usage

命令与恢复步骤: 1. 安全截断未在写入的大日志文件。示例:truncate -s 0 /var/log/large-old.log 2. 对于打开的文件,使用 > /proc/<PID>/fd/<N>(极度谨慎,确保文件是日志)。 3. 强制 logrotate:logrotate -f /etc/logrotate.conf 4. 清理旧轮转日志:find /var/log -name '*.gz' -mtime +30 -delete 5. 如果使用 journald,减少保留量:journalctl --vacuum-size=500M 6. 重启日志服务:systemctl restart rsyslogsystemctl restart systemd-journald

风险控制: - 切勿删除仍在打开的文件;始终截断或在 logrotate 中使用 copytruncate。 - 清理前,尽可能快照文件系统。 - 先在非生产系统上测试 logrotate 配置。 - 清理后监控磁盘空间,确保不会快速再次填满。

回滚: - 如果服务在截断后失败,重启服务以重新打开日志。 - 如果 logrotate 配置错误,从备份恢复原始配置并重新运行 logrotate。

验证: - 检查磁盘使用情况:df -h /var/log - 验证服务健康:systemctl status <service> 针对受影响的服务。 - 确认日志写入:tail -f /var/log/syslog

何时提交 OpsGlobal 工单: - 如果根本原因不明确(例如,日志填充速度超出预期)。 - 如果磁盘空间耗尽发生在非日志分区。 - 如果需协助调整 logrotate 策略或设置监控阈值。 - 如果清理后事件再次发生,表明存在系统性问题。

适用场景

适合正在处理 DevOps、Linux, SRE, 故障排除, 日志管理 相关问题的团队,用于快速建立排查路径和交付标准。

问题背景

SRE 的分步指南,用于故障排除 /var/log 磁盘空间耗尽,包括安全日志清理、风险缓解和升级时机。

排查步骤

先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。

命令示例

示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。

风险说明

生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。

回滚方案

保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。

交付清单

问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。

!

遇到类似技术问题?

如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。

工单 WhatsApp 联系 咨询