Skip to content
Linux 基础与服务器治理 · 第 1 篇 / 共 7 篇
领域运维与部署
专题Linux 与服务器治理专题
当前序列Linux 基础与服务器治理
阅读位置第 1 篇 / 共 7 篇当前专题第 1 个序列 / 共 4 个序列

df 和 du 到底有什么区别:磁盘满了时该先看谁

Linux 磁盘排查里,dfdu 是最常见也最容易混用的两条命令。

很多时候不是不会用,而是不清楚它们看的根本不是同一个层面。

先说结论

可以直接这样记:

  • df 看的是文件系统整体还剩多少空间
  • du 看的是目录或文件实际占了多少空间

所以当你发现“磁盘满了”时,通常不是二选一,而是:

  1. 先用 df 判断哪个挂载点满了
  2. 再用 du 去那个目录里继续定位大文件和大目录

一、df 看的是文件系统视角

最常用的命令:

bash
df -h

如果想连文件系统类型一起看:

bash
df -hT

它回答的是这类问题:

  • / 分区还剩多少空间
  • /data 这个挂载点是不是快满了
  • 当前是哪块磁盘或哪个文件系统出问题

所以 df 适合做“全局定位”。

二、du 看的是目录视角

最常用的命令:

bash
du -sh /var/log

如果想继续看下一层目录:

bash
du -h --max-depth=1 /var

它回答的是:

  • 哪个目录最占空间
  • 是日志目录大,还是上传文件目录大
  • 一个具体文件夹到底占了多少

所以 du 更适合做“精细排查”。

三、一个最实用的排查顺序

假设服务器告警说磁盘快满了,可以这样查:

1. 先确认哪个挂载点满了

bash
df -h

2. 对问题挂载点做一级目录扫描

bash
du -h --max-depth=1 / | sort -hr | head

如果问题在 /data

bash
du -h --max-depth=1 /data | sort -hr | head

3. 继续向下钻

哪一层目录大,就继续对那一层执行 du

这比全盘乱翻快很多。

四、为什么 df 和 du 有时候对不上

这是排查里非常常见的现象。

典型场景是:

  • df 显示磁盘几乎满了
  • du 加起来又没看到那么多文件

常见原因有几个:

1. 文件被删了,但进程还占着句柄

比如一个大日志文件已经被删除,但 Java 进程还没释放文件句柄。

这时:

  • du 看不到,因为目录里已经没这个文件了
  • df 仍然显示空间被占着,因为文件系统还没真正回收

可以用下面这条命令排查:

bash
lsof | grep deleted

2. 挂载点看错了

有时你以为在查 /data,实际大文件写到了根分区 /

3. 容器、日志、临时文件残留

比如:

  • Docker overlay 层
  • 大量容器日志
  • 临时导出文件

这些都可能把空间吃掉。

五、排查磁盘空间时常用的几条命令

查看 inode 使用率

bash
df -i

有时候不是磁盘空间满,而是 inode 用完了。

看块设备和挂载关系

bash
lsblk

适合确认磁盘、分区、挂载点之间的对应关系。

排序找大目录

bash
du -h --max-depth=1 /var | sort -hr

六、工程里最常见的几个大户

如果你在服务器上排查磁盘问题,优先怀疑这些地方:

  • /var/log
  • 应用日志目录
  • Docker 镜像和容器层
  • 上传文件目录
  • 备份和导出目录
  • Heap Dump、GC 日志、临时压缩包

一句话总结

df 是先回答“哪块盘满了”,du 是继续回答“到底是谁占满了”。

真正高效的排查方式,不是背更多命令,而是先用 df 缩小范围,再用 du 逐层钻进去。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读chmod 和 chown 怎么用适合把磁盘、权限、链接、systemd、日志和服务器初始化这些基础能力集中起来看。Linux 与服务器治理专题 · Linux 基础与服务器治理同一序列 · 顺着当前主线继续读ln 怎么用:软链接和硬链接到底有什么区别适合把磁盘、权限、链接、systemd、日志和服务器初始化这些基础能力集中起来看。Linux 与服务器治理专题 · Linux 基础与服务器治理同专题其他序列 · 共享标签:Linux、选型对比cron 和 systemd timer 怎么选适合把进程、负载、I/O 和定时任务放在一起看。Linux 与服务器治理专题 · Linux 性能分析与系统时钟同专题其他序列 · 共享标签:Linux、部署交付tcpdump 抓包时最常见的误区有哪些适合把 CPU、IO、网络连接、抓包和 cgroup 限制放在同一条 Linux 排查主线上看。Linux 与服务器治理专题 · Linux 系统资源与网络排查跨专题关联 · 共享标签:选型对比、部署交付灰度、蓝绿、滚动发布到底怎么选:以及上线失败后怎么回滚适合沿着流水线设计、自动部署、发布策略、数据库变更和多环境治理这条线往下读。CI/CD 与发布治理专题 · CI/CD 与发布治理跨专题关联 · 共享标签:选型对比、部署交付ConfigMap、Secret、Volume 和环境变量怎么选适合把 Deployment、Service、ConfigMap、资源限制和探针放在一起看。Kubernetes 专题 · Kubernetes 核心对象与资源治理
继续阅读Linux 基础与服务器治理当前序列第 1 篇 / 共 7 篇当前专题第 1 个序列 / 共 4 个序列
往前看
上一序列AI 协作流程与治理从第 1 篇开始:把 AI 接进开发流程
往后看
下一篇chmod 和 chown 怎么用继续当前序列下一章下一序列Linux 性能分析与系统时钟从第 1 篇开始:进程、线程和 load average 怎么一起理解

把零散经验整理成可查、可复用、可持续更新的企业级知识门户