在IDC日常运维中,磁盘空间告警是最常见的问题之一。凌晨三点被叫醒,发现业务因为磁盘写满挂了,相信很多运维同行都有过这种经历。今天分享一套成熟的磁盘空间排查清理流程,让你10分钟内解决问题。
第一步:快速定位大文件,别瞎找
磁盘满了不要一个个目录瞎翻,用这三条命令准确定位:
- 先看整体分区使用情况:
df -h直接看到哪个分区占满,重点看/、/var、/data这几个常用分区 - 找当前目录下的大目录:
du -sh * | sort -hr | head -10按大小排序,一眼看到哪个目录最占空间 - 精准找大于1G的文件:
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null直接列出所有大文件
最常见的"元凶":未切割的日志文件、Docker镜像容器缓存、业务上传的临时文件、数据库备份文件。
第二步:安全清理,别乱删文件
找到大文件后不要直接rm -rf,先确认能不能删:
- 日志文件:正在写入的日志不要直接删,会导致进程句柄泄漏,空间释放不了。正确做法:
> 文件名清空文件内容,或者用logrotate配置自动轮转 - Docker清理:
docker system prune -af一键清理未使用的镜像、容器、网络,这个命令安全又高效 - Yum/Apt缓存:
yum clean all或apt clean清理系统包缓存,经常能清出几个G - 临时文件:
/tmp和/var/tmp下超过7天的文件可以放心删,用find /tmp -type f -mtime +7 -delete
第三步:预防为主,别等告警了才处理
真正优秀的运维不是会救火,而是让火根本烧不起来:
- 配置日志轮转:
/etc/logrotate.d/下给所有业务日志加配置,设置按天切割、保留7天 - 磁盘监控告警:设置80%预警、90%严重告警,不要等100%了才收到通知
- 分区规划要合理:系统和数据分开,
/var单独分区,日志写满不会影响系统运行 - 定期巡检:每周一上班先看一眼磁盘使用率,养成习惯
磁盘空间问题说大不大,说小不小,处理不好就是生产事故。这套流程我用了五年,几百台服务器从没在磁盘问题上翻过车。运维这行,把简单的事做细,就是专业。
评论