实战
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 / 容器挂载会让输出杂乱