Linux磁盘告警应先用df -h和df -i定位高占用挂载点及inode耗尽,再用du -sh * | sort -hr逐层查找大目录,接着用lsof +L1揪出已删未释放的大文件,最后按场景安全清理。

Linux磁盘空间告警?别急着删日志,先找准“真凶”。多数情况下,不是磁盘真的满了,而是某个目录悄悄吃掉了大量空间,或者有被删除但进程仍在写入的大文件占着 inode 不放。排查关键在分层定位 + 快速验证,下面按高频场景直给操作路径。
看整体:用 df 确认哪块设备真紧张
注意:df -h 显示的是挂载点空间,不是目录大小。先执行:
-
df -h —— 找出使用率超 85% 的挂载点(如 /、/var、/home)
-
df -i —— 检查 inode 是否耗尽(尤其 /var/log 或容器环境常见,即使磁盘空,inode 满也会报“no space left on device”)
- 若 /dev/mapper/xxx 或 /dev/nvme0n1p2 这类设备使用率高,说明问题在该分区;若 /boot 使用率 100%,大概率是旧内核没清理
找大目录:用 du 定位空间“黑洞”
进到高负载挂载点下(比如 df 显示 /var 使用率高,就 cd /var),运行:
-
du -sh * | sort -hr | head -10 —— 查看当前层各子目录大小,从大到小排前 10
- 发现某目录异常大(如 /var/log/journal、/var/lib/docker/overlay2),再进该目录重复上一步,逐层钻取
- 快捷技巧:用 du -sh .[!.]* * 包含隐藏目录(如 .cache、.local)
揪隐形文件:已删除但未释放的大文件
某些进程(如 tail -f、rsyslog、java 应用)打开大文件后被 rm,但句柄未关,空间不释放。查法:
-
lsof +L1 —— 直接列出所有已链接数为 0(即被删但仍被占用)的文件
-
lsof -nP | grep deleted | awk '{print $7,$9}' | sort -nr | head -5 —— 按大小倒序看前 5 个被删大文件
- 确认后,可重启对应进程释放空间(如 systemctl restart rsyslog),或直接 kill -HUP 进程 PID(谨慎操作)
清缓存/旧物:安全释放空间的实操建议
定位到目标后,别盲目 rm -rf。优先选低风险方式:
- /var/log/:用 journalctl --disk-usage 看 journald 占用,再用 journalctl --vacuum-size=200M 保留最近 200MB 日志
- /var/cache/apt/archives/(Debian/Ubuntu):运行 apt clean
- /var/lib/docker/:确认无用镜像/容器后,用 docker system prune -a --volumes(注意加 --volumes 会删卷)
- 旧内核(/boot):用 dpkg --list 'linux-image-*' | grep ^ii | awk '{ print $2 }' | sort -V | sed -n '/'$(uname -r)'!p' | xargs apt purge -y(Ubuntu/Debian)
基本上就这些。排查顺序记住:df 定范围 → du 找目录 → lsof 查残留 → 清理讲方法。不复杂但容易忽略细节,动手前多看一眼,少踩一半坑。
以上就是Linux磁盘空间如何排查_高频场景实战指导更易上手【指导】的详细内容,更多请关注php中文网其它相关文章!