《Linux 磁盘空间告急排查:df/du 实战笔记》
服务器半夜发来磁盘告警,磁盘使用率 92%,服务随时可能写不进数据。别慌,也别上来就删文件,先定位再动手,两条命令就能锁定元凶。
第一步看整体:df -h。输出里重点看 Use% 和挂载点,确认是哪块盘满了。再补一条 df -i:空间明明还有剩余却写不进文件,多半是 inode 耗尽,小文件太多时常见。
第二步定位大户:du -sh /* 按目录看占用,一眼找出最大的几个;再往下钻,du -sh /var/log/* 配合 sort -rh | head 排序,几分钟就能追到具体目录。只看数字别急着删,先确认里面是什么。
常见的几个元凶,处理方法各不相同:
日志暴涨最常见。/var/log 下某个应用日志几个 G 是常事,先用 tail 看最后几行确认是否还在刷;正在写的日志不要直接 rm,用 truncate -s 0 文件名 清空,再配好 logrotate 按天轮转、保留固定天数,从根上止血。
被删却仍被占用的文件也常被忽略。进程还拿着句柄的文件,rm 后空间不会释放,用 lsof | grep deleted 就能看到,重启对应进程空间才会真正回来;不能重启的服务就等窗口期。
Docker 占用的也不少。docker system df 看一眼镜像、容器、卷各占多少,docker system prune 能一次清理无用镜像与停止的容器;但带 --volumes 时要小心,卷里可能有数据,生产环境先确认再动手。
治标之后要治本:磁盘使用率设个 80% 的告警阈值,cron 每周跑一次清理,日志轮转配好,备份目录单独挂盘。磁盘满不是技术难题,是日常习惯问题,定期巡检一次,比半夜救火轻松得多。
- 点赞
- 收藏
- 关注作者
评论(0)