Linux 磁盘空间排查的五个实用方法
在 Linux 运维中,磁盘空间不足是最常见的告警之一。遇到 / 或数据盘使用率达到 90%+ 时,不要盲目 rm,按以下五个方法依次排查,可以高效定位并回收空间。
一、用 df -h 查看各挂载点整体使用率
df -h 列出所有文件系统的已用/可用空间和使用率。先看哪个挂载点逼近 100%,再决定往哪查。df -i 可以补充查看 inode 是否耗尽(小文件多时即使容量有剩余也会报错 No space left)。
二、用 du -sh 排序找出占空间的目录
进入可疑挂载点后,用 du -sh /* 看各一级目录的大小,然后逐层深入。配合排序可以更快定位大户:du -sh /var/* | sort -rh | head -20。对大目录也可以限定深度:du -ah /path --max-depth=2 | sort -rh | head -30。
三、用 find -size 查找大文件
有时候空间被少量大文件吃掉。用 find 按大小过滤:find /var -type f -size +500M -exec ls -lh {} + 2>/dev/null | sort -k5 -rh。可以配合 -mtime 排除近期才生成的文件,缩小范围。
四、lsof +L1 查已删除仍被占用的文件
用 df 看到空间满了,但 du 加总却对不上,多半是有文件被 rm 删除后,仍有进程持有打开句柄,空间未能释放。执行 lsof +L1 列出硬链接数为 0 的文件,查看持有进程。杀掉对应进程或重启服务后,空间才会真正回收;对日志类文件也可以先 truncate 而不是直接删除。
五、日志轮转与 journalctl --vacuum 清理
日志是磁盘吃大户。确认 /etc/logrotate.conf 及各应用的 logrotate 配置生效(定期轮转、compress、保留份数)。对 systemd _journal_ 日志,用 journalctl --vacuum-time=7d 只保留最近 7 天,或用 journalctl --vacuum-size=500M 限制总大小。/var/log 下也可以清理过期的 .gz 归档。
小结:先 df -h 定位挂载点,再用 du -sh 排序缩小目录范围,用 find -size 抓大文件,用 lsof +L1 回收"删而未放"的幽灵占用,最后用日志轮转和 journalctl --vacuum 做长效治理,基本可以覆盖绝大多数磁盘空间告警。
- 点赞
- 收藏
- 关注作者
评论(0)