预约咨询 提交工单

Linux SRE 生产环境故障排查手册:磁盘空间耗尽

本文深入探讨 Linux 生产服务器磁盘空间耗尽(Disk Full)的故障排查与处理流程,提供从症状识别、诊断命令、风险控制到回滚验证的完整实战指南。适用于 SRE 工程师和运维人员,帮助快速恢复服务并规避常见风险。

Linux SRE 生产环境故障排查手册:磁盘空间耗尽
DevOps 6min 65 浏览 2026-07-02
LinuxSRE磁盘空间故障排查运维

场景描述

生产服务器上的应用程序突然无法写入文件,错误日志频繁显示 "No space left on device"。监控系统触发磁盘使用率超过阈值(例如 95%)的告警。受影响的服务可能包括数据库、Web 服务器或日志收集器,导致用户请求失败或数据丢失风险。

症状

  • 应用程序日志中出现 write error: No space left on device
  • df -h 显示某个分区的 Used 接近 100%
  • 系统日志(如 /var/log/messages)报告空间不足
  • 部分服务无法启动或响应缓慢
  • 可能伴随 inode 耗尽(df -i 显示 IUse% 接近 100%)

诊断步骤

  1. 快速查看磁盘空间 bash df -h df -i # 检查 inode 使用情况 确认具体分区和剩余空间。

  2. 定位大文件/目录 bash du -sh /* 2>/dev/null | sort -rh | head -10 du -sh /var/* | sort -rh | head -5 优先检查 /var(日志)、/tmp/home 等常见增长点。

  3. 查找已删除但占用空间的文件 bash lsof +L1 # 列出所有被删除但仍被进程持有的文件 重点关注这些文件,它们需要重启进程或 truncate 以释放空间。

  4. 检查日志轮转状态 bash ls -lh /var/log/*.log systemctl status logrotate cat /etc/logrotate.conf 确保日志轮转正确运行,手动触发轮转:logrotate -f /etc/logrotate.conf

  5. 查找大于 1GB 的文件 bash find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null 对结果进行审核,确认是否可删除或压缩。

风险控制

  • 切勿直接 rm -rf 未知文件,可能导致服务崩溃。
  • 对于日志文件,确保核心数据备份(如数据库二进制日志)。
  • 使用 truncate -s 0 <filename> 清空文件而非删除,保留文件句柄。
  • 清理前检查相关进程是否依赖该文件(例如 lsof 结果)。
  • 在操作前拍摄快照(如果云环境支持)或备份关键目录。

处理方法

  1. 临时释放空间 - 清空大日志文件:truncate -s 0 /var/log/syslog - 删除过期临时文件:find /tmp -type f -atime +7 -delete - 压缩归档旧日志:gzip /var/log/*.log.1

  2. 永久解决方案 - 配置 logrotate 保留更短周期或开启压缩 - 调整监控阈值并设置自动清理脚本 - 扩容磁盘或挂载新卷(迁移数据)

  3. 处理已删除但占用空间的文件 - 对于不需要的进程,直接 kill 或重启服务 - 使用 > /proc/<pid>/fd/<N> 清空文件描述符(高风险,需谨慎)

回滚方案

  • 如果误删文件,从备份恢复(需要提前配置备份策略)。
  • 若清空日志后应用异常,重启受影响服务(日志写入通常会重新创建)。
  • 对于通过 truncate 操作的文件,若进程崩溃,可能需要停止并删除文件,再启动服务。
  • 如果扩容了磁盘分区,回滚操作通常不可逆,备用的回滚措施是卸载新卷并重启服务。

验证

  • 运行 df -h 确认使用率下降。
  • 检查应用日志,确认无空间错误。
  • 执行应用功能测试(如写入操作)。
  • 监控系统验证告警恢复。
  • 测试日志轮转正常:生成新日志并检查轮转。

何时提交 OpsGlobal 工单

  • 无法确定空间消耗源头。
  • 需要恢复已删除但关键的文件(如数据库文件)。
  • 怀疑文件系统损坏(dmesg 显示 I/O 错误)。
  • 需要规划长期扩容或架构调整。
  • 团队缺乏 Linu x 系统管理经验时。

OpsGlobal 工程师将远程协助完成深度分析、根因定位和修复,并提供后续预防建议。

适用场景

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

问题背景

本文深入探讨 Linux 生产服务器磁盘空间耗尽(Disk Full)的故障排查与处理流程,提供从症状识别、诊断命令、风险控制到回滚验证的完整实战指南。适用于 SRE 工程师和运维人员,帮助快速恢复服务并规避常见风险。

排查步骤

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

命令示例

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

风险说明

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

回滚方案

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

交付清单

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

!

遇到类似技术问题?

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

工单 WhatsApp 联系 咨询