在IDC运维工作中,磁盘空间告警是最常见的问题之一。当服务器磁盘使用率超过90%时,不仅会影响服务正常运行,还可能导致数据库写入失败、日志无法记录等严重后果。本文将分享一套完整的磁盘排查与处理流程。

第一步:快速定位大文件

使用df -h命令查看整体磁盘使用情况,确认哪个分区告急。然后用du -sh /* | sort -hr找出占用空间最大的目录,逐层深入排查。通常/var/log/var/lib/docker/tmp这三个目录是"重灾区"。

第二步:安全清理日志文件

日志文件是磁盘空间的主要消耗者。不要直接rm -rf正在写入的日志文件,这样会导致文件句柄泄漏,空间无法真正释放。正确做法是:

  • echo "" > /var/log/nginx/access.log 清空正在写入的日志
  • find /var/log -type f -name "*.log" -mtime +7 -delete 删除7天前的旧日志
  • 配置logrotate自动轮转日志

第三步:处理Docker占用空间

Docker环境下,镜像、容器和卷会占用大量空间。执行docker system df查看占用情况,用docker system prune -a清理未使用的资源。注意加上-a会删除所有未运行的镜像,生产环境需谨慎。

第四步:预防措施

  1. 设置磁盘使用率告警阈值(建议85%)
  2. 定期执行清理脚本(建议每周一次)
  3. 关键业务数据单独分区,避免日志撑满系统盘
  4. 数据库开启自动清理binlog,设置保留天数

处理完后一定要验证:再次执行df -h确认空间已释放,检查相关服务状态是否正常。磁盘空间管理是运维的基本功,建立规范的清理流程能避免90%以上的磁盘告警问题。