实战

df -h
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/sda1        30G   12G   17G  42% /
# tmpfs           1.6G  1.4M  1.6G   1% /run
# /dev/sda2       100G   45G   51G  47% /data

常用参数

参数 含义
-h 人类友好(K/M/G)
-H 同上但用 1000 进制
-T 显示文件系统类型
-i 显示 inode 用量
-x TYPE 排除某类型
-a 含 0 块的文件系统
--total 加合计行

实战

df -h                              # 默认
df -hT                             # 含类型
df -h /                            # 仅根
df -h --total                      # 加合计

# 排除 tmpfs / devtmpfs(看真实磁盘)
df -h -x tmpfs -x devtmpfs -x overlay

# 看 inode("磁盘没满但写不进"通常是 inode 用完)
df -i

inode 满了

No space left on device

df -h 显示还有空间?看 inode:

df -i
# Filesystem        Inodes  IUsed   IFree IUse% Mounted on
# /dev/sda1        1900000 1900000      0  100% /          ← inode 用光了

通常是小文件太多(如 mail 队列 / cache)—— 找出哪个目录文件数巨多:

sudo find / -xdev -type f | awk -F/ '{ print $2"/"$3 }' | sort | uniq -c | sort -rn | head

df 看的是什么

df 报的是文件系统级统计——和 du(目录占用)可能不一致:

  • df -h / → 30G 已用
  • du -sh /* → 加起来只有 25G

差异可能来自:

  • 已删但被进程占着的文件(lsof | grep deleted
  • 稀疏文件
  • 不同的块大小算法

  • df 默认按 1024 块(KiB),-H 才是 1000 块(厂商标的 KB)
  • 容器里 df 显示宿主的——cgroup 限制看 /sys/fs/cgroup
  • 看根分区只看 df -h /——所有 tmpfs / 容器挂载会让输出杂乱