Linux磁盘空间如何排查_完整流程拆解让问题迎刃而解【教程】

2次阅读

磁盘空间告警时应先用df定位高危挂载点和inode耗尽情况,再用du查找大目录,接着用find扫描大文件,最后检查lsof发现的已删未释文件并重启相关进程。

Linux磁盘空间如何排查_完整流程拆解让问题迎刃而解【教程】

磁盘空间告警时,别急着删文件。先搞清“谁占的、占在哪、能不能动”,整个排查过程其实有清晰路径可循。

看整体:用 df 定位高危挂载点

运行 df -h 查所有分区使用率,重点关注 Use% ≥ 80% 的挂载点(比如 //var/home)。 再加一个 df -i 看 inode 是否耗尽——有时空间还有余量,但因小文件太多导致无法新建文件,这也是“满”的一种表现。

查目录:用 du 锁定大容量来源

进到高危挂载点根目录(如 /),执行:
du -sh /* 2>/dev/NULL | sort -rh | head -15
快速列出顶层目录大小排名。常见“大户”包括:
/var(日志、docker、缓存)
/home(用户数据、备份、容器镜像)
/usr(软件安装、内核旧版本)
/tmp/var/tmp(残留临时文件)

找文件:用 find 挖出隐藏大文件

对可疑目录进一步扫描,例如:
find /var -type f -size +500M -exec ls -lh {} ; 2>/dev/null
能直接列出大于 500MB 的文件,含路径和大小。重点盯:
/var/log/*.log*.log.*(滚动日志未清理)
/var/lib/docker/containers/**/*-json.log(Docker 容器日志)
/home/*/Downloads/root/.cache(用户缓存积)

别漏掉“已删未释”:检查被进程占用的删除文件

有时文件已被 rm,但进程仍在写入,空间不释放。执行:
lsof +L1lsof | grep deleted
会列出这类“幽灵文件”。常见于:
– 长期运行的日志服务(rsyslog、journalctl)
– Docker 容器、java 应用、数据库进程
解决办法:重启对应服务,或用 kill -USR1 触发日志重载(视服务支持而定)。

基本上就这些。流程不复杂,但容易忽略 inode 或已删未释的情况。动手前建议先备份关键配置,清理时优先选可逆操作(如清空日志用 cat /dev/null > file.log 而非直接 rm)。

text=ZqhQzanResources