Linux服务器磁盘告警别等满了才处理:df、du与日志轮转一套组合拳
磁盘满了是最常见又最狼狈的服务器故障:服务先写不进日志,再写不进数据库,最后连登录都受影响。很多人等到报警才动手,其实一套固定的排查流程十分钟就能走完。
第一步先看整体:df -h 看各挂载点用量,重点看根分区和使用率超过80%的盘;再用 df -i 看 inode,有时磁盘还有空间但小文件太多把 inode 占满,照样写不进去。两者一起看,才不会误判。
第二步定位大户:du -sh /* 先看一级目录,再对可疑目录逐层下钻,比如 du -sh /var/log/、du -sh /var/lib/docker/。生产机上别一上来就 du 整盘扫,IO 大、耗时长,先从日志、缓存、备份、容器数据这几个常见大户查起。找大文件也可以用 find /var/log -type f -size +100M 列出超过100M的文件,目标更明确。
第三步处理日志:先确认是哪个服务在狂写日志,再决定是删还是转。直接删正在被写的文件要小心,空间未必立即释放;更稳妥的做法是先清空内容,例如 : > /var/log/xxx.log,或者用 truncate -s 0 处理。长期办法是配好 logrotate:按天或按大小轮转、保留最近若干份、压缩旧日志,配置文件放在 /etc/logrotate.d/ 下,改完用 logrotate -d /etc/logrotate.d/xxx 先演练一遍再上线。
第四步清理可回收空间:apt clean 清包缓存、journalctl --vacuum-size=500M 限制 systemd 日志、docker system prune 清理无用镜像和容器(生产机执行前务必确认没有要保留的容器和卷)。备份目录也要定期检查,旧备份不设保留期,迟早会把盘吃光。
第五步留好防线:给根分区和数据盘设使用率告警,80%提醒、90%必须处理;再配一个每周跑一次的清理脚本,只清明确可再生的缓存和已轮转旧日志,不碰业务数据。磁盘问题怕的不是满,而是满了才发现。把 df、du、logrotate 这三件套变成固定动作,多数磁盘告警在变成故障之前就能处理掉。
- 点赞
- 收藏
- 关注作者
评论(0)