在IDC日常运维中,磁盘空间告警是最常见的问题之一。凌晨三点被叫醒,发现业务因为磁盘写满挂了,相信很多运维同行都有过这种经历。今天分享一套成熟的磁盘空间排查清理流程,让你10分钟内解决问题。

第一步:快速定位大文件,别瞎找

磁盘满了不要一个个目录瞎翻,用这三条命令准确定位:

  1. 先看整体分区使用情况:df -h 直接看到哪个分区占满,重点看 //var/data 这几个常用分区
  2. 找当前目录下的大目录:du -sh * | sort -hr | head -10 按大小排序,一眼看到哪个目录最占空间
  3. 精准找大于1G的文件:find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null 直接列出所有大文件

最常见的"元凶":未切割的日志文件、Docker镜像容器缓存、业务上传的临时文件、数据库备份文件。

第二步:安全清理,别乱删文件

找到大文件后不要直接rm -rf,先确认能不能删:

  1. 日志文件:正在写入的日志不要直接删,会导致进程句柄泄漏,空间释放不了。正确做法:> 文件名 清空文件内容,或者用 logrotate 配置自动轮转
  2. Docker清理docker system prune -af 一键清理未使用的镜像、容器、网络,这个命令安全又高效
  3. Yum/Apt缓存yum clean allapt clean 清理系统包缓存,经常能清出几个G
  4. 临时文件/tmp/var/tmp 下超过7天的文件可以放心删,用 find /tmp -type f -mtime +7 -delete

第三步:预防为主,别等告警了才处理

真正优秀的运维不是会救火,而是让火根本烧不起来:

  1. 配置日志轮转:/etc/logrotate.d/ 下给所有业务日志加配置,设置按天切割、保留7天
  2. 磁盘监控告警:设置80%预警、90%严重告警,不要等100%了才收到通知
  3. 分区规划要合理:系统和数据分开,/var 单独分区,日志写满不会影响系统运行
  4. 定期巡检:每周一上班先看一眼磁盘使用率,养成习惯

磁盘空间问题说大不大,说小不小,处理不好就是生产事故。这套流程我用了五年,几百台服务器从没在磁盘问题上翻过车。运维这行,把简单的事做细,就是专业。