Linux磁盘空间如何排查_高频场景实战指导更易上手【指导】

12次阅读

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

Linux 磁盘空间如何排查_高频场景实战指导更易上手【指导】

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 查残留 → 清理讲方法。不复杂但容易忽略细节,动手前多看一眼,少踩一半坑。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-21发表,共计1312字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources