首页/系统/Linux 运维命令速查/df 查看文件系统磁盘空间
磁盘与文件系统51 条

df 查看文件系统磁盘空间

df 报告各挂载点文件系统的已用/可用空间,是判断磁盘是否写满的常用命令;-h 人类可读、-i 看 inode、-T 看文件系统类型。

Linux 运维命令速查系统更新于 2026-10-13

df 是什么

df 报告已挂载文件系统的空间使用情况,同时给出两套口径:块空间与 inode 数量。它读取的是文件系统元数据,因此速度极快、数值可靠,适合作为容量判断的第一依据。要记住它是文件系统视角而不是目录视角:df /var/log 显示的是 /var/log 所在文件系统的整体情况,与目录下有多少文件无关,这也是它和 du 结果经常对不上的根本原因。

基本信息

适用平台Linux、macOS、BSD(GNU coreutils / BSD df);--output、-x 等属 GNU 扩展
命令语法df [选项] [文件或挂载点...]
常用选项-h 人类可读、-T 显示文件系统类型、-i 显示 inode 使用、-a 包含伪文件系统、-x 排除指定类型、--output 自定义列、-P 使用 POSIX 格式、--total 附加总计行
权限要求普通用户即可执行;不同用户看到的结果一致,不受目录权限影响
两套口径默认输出块空间(1K-blocks、Used、Avail、Use%),加 -i 切换为 inode(Inodes、IUsed、IFree、IUse%)

典型使用场景

  • 容量巡检:一条 df -hT 掌握所有挂载点的使用率与文件系统类型
  • 写入失败初判:应用报 No space left on device 时先确认是块空间还是 inode 耗尽
  • 挂载确认:新建挂载后确认挂载点存在、类型正确且容量符合预期
  • 阈值筛选:配合 awk 过滤出使用率超过 80% 的挂载点用于告警
  • 定位归属:对某个路径执行 df 确认它落在哪个文件系统上
  • 文件系统类型判断:确认是 ext4 还是 xfs,决定后续用哪些工具与参数

常用示例

常用示例
df -hT
df -i /var                             # 只看 inode
df -h --output=source,fstype,size,used,avail,pcent,target
df -h | awk 'NR==1 || $5+0>=80'        # 只看使用率 80% 以上的行
df -h -x tmpfs -x devtmpfs             # 排除内存文件系统
df -hT --total                         # 附加总计行
df -P /var/log                         # POSIX 格式,字段固定便于解析
df -ih | awk '$5+0>=80'                # inode 使用率超阈值

输出逐列读法

列含义怎么看
Filesystem设备名或文件系统标识LVM、overlay、tmpfs 一眼可辨
Type文件系统类型(-T 才有)决定 inode 是否固定
Size文件系统总容量与磁盘规格对比时注意文件系统开销
Used已使用量包含保留给 root 的部分
Avail普通用户可用量,通常小于 Size 减 Used差异来自预留块,不是计算错误
Use%使用百分比接近 100% 且 Avail 变 0 才是真的写满
Mounted on挂载点路径确认路径与预期一致
Avail 小于 Size 减 Used 是正常的:ext4 默认把约 5% 的块保留给 root 与关键进程使用(这个比例可以在建文件系统时用 -m 调整),另外文件系统自身还需要元数据空间。看到这部分差值就把容量规划算错,是很常见的误判。运维上更要关注 Avail 的绝对值:它决定了还能写入多少数据,而 Use% 只反映比例。
df 与 du 的口径不同:df 统计文件系统层面被占用的块,du 统计目录树里可见文件占用的块。两者差得离谱时,优先怀疑已删除但仍被进程持有的文件、容器分层存储(overlay2)、以及挂载点嵌套导致的重复统计,而不是继续找隐藏文件。
默认输出包含 tmpfs 与 devtmpfs 这类内存文件系统,它们的容量看着小、使用率看着高,容易干扰判断与告警。做容量巡检时用 -x tmpfs -x devtmpfs 排除,或明确只对带 -T 的真实块设备挂载点做判断。脚本解析建议使用 -P 固定字段顺序,或用 --output 指定列名;默认格式在挂载点路径很长时会折行,按列解析容易错位。

易错点

  • 已删除但仍被进程持有的文件不释放空间,df 显示占用而 du 看不到,须用 lsof +L1 定位持有进程
  • 把 inode 耗尽误当成空间满:df -h 还有余量而 df -i 已 100% 时同样无法创建新文件,两者要一起看
  • 把 Avail 与 Size 减 Used 的差值当成计算错误,实际是文件系统的预留块
  • 容器里看到的 df 是宿主文件系统与 overlay 层的数字,不能代表容器可用配额;容器配额应查 cgroup 或存储驱动配置
  • 拿 df 去找「哪个目录占空间」是方向错误,它只给文件系统级汇总,逐层定位要用 du

数据来源与参考

  • man 1 df(GNU coreutils)
  • GNU Coreutils 手册 §df invocation

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌