df -h 是最直接有效的命令,可秒级读取内核元数据并显示各挂载点(如 /、/home、/var)的 Use% 占比,该百分比反映文件系统整体占用率,非目录逻辑占比;若某行 Use% ≥90%,需立即排查。

df -h 能直接看到挂载点的使用百分比
想看具体文件系统节点(比如 /、/home、/var)的占用百分比,df -h 是最直接有效的命令。它不查文件内容,而是读取文件系统元数据,秒级返回结果。
输出中 Use% 列就是你要的百分比,对应每一行的 Mounted on(挂载点)。注意:这个百分比是针对整个文件系统(如 /dev/sda1)计算的,不是某个目录的逻辑占比。
- 如果某行
Use%达到 90% 以上,说明该挂载点已接近满载,需进一步排查 -
df -h /path可以只查指定路径所在文件系统的使用率,比如df -h /var/log实际查的是/var所在分区 - 某些系统(如 FreeBSD)可能显示超过 100%,这是预留空间给 root 导致的,Linux 一般不会
du 命令不能替代 df 查“节点”占用率
du 统计的是目录树里实际可见文件的磁盘用量,它不反映文件系统级的占用情况——比如被删除但进程仍打开的大文件(lsof +L1 可查),或者 ext4 的 reserved blocks、journal 占用空间,这些 du 都看不见。
常见误区:用 du -sh / 算出的大小 ≠ df -h / 显示的 Used。差值可能很大,尤其当有大量未释放的 deleted 文件时。
-
du -sh /慢、权限敏感、可能被 permission denied 中断 -
du --max-depth=1 /只能帮你定位哪个子目录大,但无法解释为什么df和du不一致 - 若
df显示已用 95%,但所有du加起来只有 70%,大概率是有进程占着已删文件,得用lsof +L1或重启相关服务
df -i 查 inode 是否耗尽,这也会导致“磁盘满”假象
即使 df -h 显示空间充足,但 df -i 显示某个挂载点的 IUse% 接近 100%,新建文件就会失败(报错 No space left on device),因为没 inode 可分配了。
- 小文件多的场景(如日志轮转、容器镜像层、邮件队列)极易触发 inode 耗尽
-
df -i /可单独检查根文件系统 inode 使用率 - 找不到具体是谁占的?用
find / -xdev -type f | cut -d/ -f2 | sort | uniq -c | sort -n粗略统计各二级目录下文件数
别忽略 /boot 和 /boot/efi 这类小分区
很多服务器的 /boot 是独立小分区(200–500MB),内核更新不清理旧版本时会迅速打满。一旦满,apt upgrade 或 yum update 会失败,甚至无法启动新内核。
- 运行
df -h /boot和df -h /boot/efi单独确认 -
ls -lt /boot/vmlinuz*查看旧内核文件,保留最近 2–3 个即可 - Ubuntu 用
sudo apt autoremove --purge;CentOS/RHEL 用sudo yum remove $(yum list installed kernel | grep ^kernel | awk '{ print $2 }' | head -n -2)
真正卡住人的往往不是总容量,而是某个小分区、inode 耗尽、或 deleted 但未释放的文件。先跑 df -h 和 df -i,再决定要不要动 du 或 lsof ——顺序错了,容易在错误方向上浪费半小时。


















