df -h 用于以易读单位(kb/mb/gb)显示文件系统磁盘使用情况,输出包括总容量、已用、可用空间、使用率及挂载点,但不显示文件系统类型、挂载选项或权限信息。

df -h 命令本身不显示挂载点类型或详细权限
直接运行 df -h 只输出各挂载点的总空间、已用、可用、使用率和挂载路径,但不会告诉你这个分区是 ext4 还是 xfs,也不显示是否只读(ro)、是否启用 noatime 等挂载选项。如果你需要确认某个路径是否真的可写,或者怀疑挂载异常,光靠 df -h 是不够的。
实操建议:
- 加
-T参数看文件系统类型:df -hT - 加
-t或-x过滤特定类型(如跳过 tmpfs):df -h -x tmpfs - 配合
mount或findmnt查看完整挂载属性:findmnt /home
df -h 显示的“Available”不等于“你能真正写入的空间”
Linux 为 root 用户保留 5% 的空间(ext 类文件系统默认),这部分在 df -h 的 Avail 列里已扣除,但普通用户无法使用。如果你看到使用率 95%,Avail 还剩 2GB,却仍收到“no space left on device”,很可能是 inode 耗尽,或该分区对当前用户启用了配额(quota)。
检查要点:
- 查 inode 使用:
df -i - 查用户配额:
quota -u $USER(需系统启用 quota) - 确认保留空间比例:
tune2fs -l /dev/sda1 | grep "Reserved block count"
df -h 不刷新缓存,可能显示过期数据
当 NFS 挂载点服务端磁盘变化(比如清空大文件),客户端的 df -h 有时仍显示旧的已用空间,尤其在 soft mount 或 server 崩溃后恢复时。这不是命令 bug,而是 NFS 缓存机制导致的延迟更新。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
应对方式:
- 强制重新统计(仅限本地文件系统):
sync && echo 3 > /proc/sys/vm/drop_caches(慎用,影响性能) - NFS 场景优先用
stat -f验证单个路径:stat -f /mnt/nfs - 检查挂载参数是否含
noac(关闭属性缓存)或调低actimeo
别把 df -h 和 du -sh 混用,它们统计逻辑完全不同
df -h 统计的是文件系统级块占用,而 du -sh 是遍历目录累加文件大小。两者结果不一致非常常见——比如删了大文件但进程还占着句柄(lsof +L1 可查),或存在硬链接、稀疏文件、快照占用。
快速比对建议:
- 定位差异根源:
du -sh /* 2>/dev/null | sort -hr | head -5 - 查被删除但未释放的文件:
lsof +L1 - 检查 btrfs/xfs 快照:
btrfs subvolume list /或xfs_info /
实际维护中,df -h 是第一眼扫描工具,但它只是入口,不是真相。真正卡住你的,往往在它没显示的那一层。










