当前位置: 首页 > 新闻动态 > 技术教程

Linux磁盘空间如何排查_常见误区解析避免新手踩坑【技巧】

作者:舞姬之光 浏览: 发布日期:2025-12-21
[导读]:根分区空间告警但du统计偏小,主因是inode耗尽、已删未释放文件、挂载点遮挡或系统预留空间;需按dfdf-isudodulsof+L1mount顺序排查。
根分区空间告警但du统计偏小,主因是inode耗尽、已删未释放文件、挂载点遮挡或系统预留空间;需按df→df -i→sudo du→lsof +L1→mount顺序排查。

磁盘空间告警了,df -h 显示根分区 99%,但 du -sh /* 加起来才 60G?别急着删文件——问题很可能不在“看得见”的地方。真正卡住空间的,往往是隐藏行为、残留句柄或系统保留策略。

先看真实占用,别被表象骗

运行 df -h 确认哪个挂载点爆满,重点关注 Use% 列。但注意两点:

  • 如果 df -i 显示 IUse% 接近 100%,说明是 inode 耗尽,不是空间不够——大量小文件(如日志碎片、session 文件)占满了索引节点,du 统计不出实际压力;
  • df 显示的 Used + Avail 是正常现象:ext4 默认为 root 预留 5% 空间(紧急保底),可通过 tune2fs -m 1 /dev/sda1 调低,不建议清零;
  • 某些云盘或 LVM 卷可能有配额限制或 thin-provisioning 延迟释放,需结合 lvslvdisplay 或厂商控制台确认。

找大目录要带权限和过滤

直接在 / 下跑 du -sh * 很容易失败——大量 Permission denied 会掩盖真实结果,也跳过隐藏目录:

  • sudo du -shx --max-depth=1 / 2>/dev/null | sort -hr:-x 防跨文件系统,2>/dev/null 屏蔽报错,结果才可信;
  • 别漏掉 /var/home/opt/usr/local 这些常驻大户,尤其 /var/log/var/lib/docker
  • 加个 du -ah . | grep -E "^\s*[0-9.]+[TG]" 快速筛出 G/T 级文件,比纯排序更直给。

大文件≠可见文件,已删未释放最坑人

这是新手最常踩的坑:rm 删除了一个 20G 日志,df 却没变化。原因很常见:

  • 进程仍在写该文件(比如 tail -f 或服务未重启),内核保留其 inode 和块指针,空间不回收;
  • lsof +L1 直接列出所有已删除但被打开的文件,输出里带 deleted 字样就是元凶;
  • 对应处理:重启相关服务(如 nginx、java 应用、rsyslog),或用 echo > /proc/PID/fd/N 清空句柄(慎用,需确认业务影响)。

别忽略挂载点“遮挡”和缓存假象

有些空间“消失”是因为路径被覆盖了:

  • 检查 mount | grep "^/dev",确认关键目录(如 /data、/mnt)是否真的挂载成功;
  • 若曾挂载过新盘到 /tmp,后来卸载了,但 /tmp 原有文件还在,此时 du 会统计它们,而 df 不计入——先 umount /tmp,再 du -sh /tmp 看原始大小;
  • 包管理器缓存(apt/yum/dnf)、journald 日志、Docker 构建缓存都可能静默膨胀,用 journalctl --disk-usagedocker system dfapt clean 分别验证。

基本上就这些。排查顺序建议固定:df → df -i → sudo du -shx --max-depth=1 / 2>/dev/null → lsof +L1 → 检查 mount 和服务状态。不复杂但容易忽略细节。

免责声明:转载请注明出处:http://jing-feng.com.cn/news/74203.html

扫一扫高效沟通

多一份参考总有益处

免费领取网站策划SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!