磁盘满了怎么办?df 和 du 的区别与排查思路
"磁盘空间不足"是服务器最常见的告警之一。很多新手第一次遇到时只会反复执行 df -h,却不知道下一步该干什么。这篇文章讲清 df 和 du 的分工,以及一套快速定位大文件的流程。
一、df 和 du 分别看什么
- df(disk free):看文件系统层面的磁盘占用,按挂载点统计。告警系统报的"磁盘使用率 90%"就是它。
- du(disk usage):看目录/文件实际占了多少空间,用来向下钻取。
两者视角不同,有时会出现 df 显示满了、du 加起来却差很多的情况,常见原因是有进程持有已删除的大文件(空间未释放),重启对应进程或 lsof | grep deleted 即可定位。
二、五步定位大文件
1. df -h 先确认哪个分区满了
2. du -h --max-depth=1 /data | sort -rh 逐层往下找最大的目录
3. 进入可疑目录继续 du,直到定位到具体文件
4. 确认文件可以删:日志类先看是否有进程在写,用 truncate -s 0 file 清空而不是直接 rm
5. 删完 df -h 复查是否释放
三、日常预防
- 日志轮转:配好 logrotate,避免单个日志无限膨胀
- 监控告警:磁盘使用率超过 80% 就告警,留出处理时间
- 定期清理:包管理缓存(apt clean / yum clean all)、旧内核、临时目录
总结:df 定位分区,du 钻取目录,lsof 处理"删了但没释放"的幽灵文件。三件套用熟,磁盘告警就不再是事故。
- 点赞
- 收藏
- 关注作者
评论(0)