当前位置:首页>Linux>Linux 命令:df 详解

Linux 命令:df 详解

  • 2026-10-11 08:30:01
Linux 命令:df 详解

一、是什么

1.1 基本定义

df 是“disk free”的缩写,是 Linux 和 Unix 系统中用于报告文件系统磁盘空间使用情况的核心命令行工具。它从文件系统层面(而非单个文件或目录)展示已挂载分区的总容量、已用空间、可用空间以及挂载点等关键信息,帮助管理员快速掌握磁盘整体健康状态。

1.2 应用场景

  • 系统告警响应:当收到“磁盘空间不足”告警时,第一时间使用 df -h 定位哪个分区已满。
  • 容量规划:定期巡检关键分区(如 /、/var、/data)的使用率,预判是否需要扩容。
  • 故障排查:应用无法写入日志、数据库启动失败等问题,常与磁盘空间耗尽相关。
  • 运维自动化:在监控脚本中集成 df 命令,实现磁盘使用率的自动采集与告警。

1.3 相关对比

df 与 du 是磁盘管理的“黄金搭档”,但定位截然不同:

  • df:查看文件系统级别的使用情况(宏观视角),回答“哪个分区快满了?”。
  • du:查看目录/文件级别的磁盘占用(微观视角),回答“哪个目录占用了最多空间?”。
“

关键区别:df 读取的是文件系统的元数据(超级块),速度快;du 需递归遍历目录树,速度较慢但能定位具体文件。

二、基本语法

2.1 语法格式

df [选项]... [文件或目录]...

2.2 参数说明

选项作用典型用途
-h
以人类可读格式显示(KB/MB/GB/TB)
日常使用,提升可读性
-i
显示 inode 使用情况而非块使用
排查“有空间但无法创建文件”问题
-T
显示文件系统类型(如 ext4, xfs)
了解分区格式
-a
显示所有文件系统(包括伪文件系统)
查看 tmpfs、devtmpfs 等
-t <类型>
仅显示指定类型的文件系统
过滤特定类型(如 -t ext4)
-x <类型>
排除指定类型的文件系统
排除 tmpfs(如 -x tmpfs)

三、常见示例

场景1:快速查看磁盘整体使用情况

场景描述:系统响应变慢,怀疑磁盘空间不足。
具体命令:

df -h

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       200G   80G  110G  43% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/sda1       500M   60M  440M  12% /boot

结果解读:

  • /dev/sda2 是根分区(/),使用率 43%,状态健康。
  • tmpfs 是内存文件系统,不占用物理磁盘,可忽略。
  • 重点关注 Use% 超过 80% 的分区,超过 90% 需立即处理。

场景2:查看指定目录所在分区的空间

场景描述:应用部署在 /opt,需确认该路径所在分区是否有足够空间。
具体命令:

df -h /opt

输出示例:

[root@iZ2zehegwjg73eh63wad2pZ ~]# df -h /opt
文件系统        容量  已用  可用 已用% 挂载点
/dev/vda1       237G  182G   45G   81% /

结果解读:/opt目录所在的文件系统为/dev/vda1,该文件系统的总容量为237G,已使用182G,可用空间为45G,已用百分比为81%。其挂载点为根目录/,表明/opt是根文件系统的一部分,并未被单独分区。当前45G的可用空间需要根据应用部署的实际需求来评估是否充足。

场景3:排查“磁盘有空间但无法创建文件”问题

场景描述:df -h 显示磁盘有剩余空间,但系统提示 “No space left on device”。
具体命令:

df -i

输出示例:

Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda2      10485760 10400000 85760  99% /

结果解读:

  • inode 是文件的“身份证”,每个文件需占用一个 inode。
  • 此处 inode 使用率高达 99%,说明系统创建了海量小文件(如日志、缓存),导致无法创建新文件。
  • 解决方案:清理小文件目录(如 /var/spool/clientmqueue)。

场景4:仅查看物理磁盘分区(排除虚拟文件系统)

场景描述:df -h 输出包含大量 tmpfs、devtmpfs 等虚拟文件系统,干扰判断。
具体命令:

df -h -t ext4 -t xfs

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       200G   80G  110G  43% /
/dev/sdb1       500G  300G  200G  60% /data

结果解读:仅显示 ext4 和 xfs 类型的物理分区,输出更简洁。

场景5:显示文件系统类型

场景描述:需确认某分区是 ext4 还是 xfs 格式,以便执行相应维护操作。
具体命令:

df -hT

输出示例:

Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda2      ext4   200G   80G  110G  43% /
/dev/sdb1      xfs    500G  300G  200G  60% /data

结果解读:Type 列明确显示文件系统类型,便于后续操作(如 xfs 需 xfs_growfs 扩容)。

四、常见问题

问题1:为什么 df 和 du 统计的磁盘使用量不一致?

  • 已删除但被进程占用的文件:若一个日志文件被删除,但写入它的进程未关闭文件句柄,df 仍会计入已用空间(因文件系统未真正释放),而 du 只统计现存文件。
  • 解决方案:使用 lsof | grep deleted 查找占用已删除文件的进程,重启该进程释放空间。

问题2:tmpfs 文件系统是否需要关注?

  • 不需要。tmpfs 是基于内存的虚拟文件系统(如 /dev/shm),重启后数据自动清除,不占用物理磁盘空间。日常监控可忽略。

问题3:如何避免 inode 耗尽?

  • 定期清理小文件目录:如邮件队列(/var/spool/clientmqueue)、应用缓存。
  • 调整文件系统参数:格式化时使用 -i 选项增加 inode 数量(如 mkfs.ext4 -i 16384)。
  • 监控 inode 使用率:将 df -i 纳入日常巡检。

问题4:根分区(/)使用率过高,如何快速定位大目录?

  • 配合 du 命令逐层排查:
du -sh /* 2>/dev/null | sort -rh | head -10  # 找出根目录下最大的10个目录
du -sh /var/* 2>/dev/null | sort -rh | head -10  # 深入/var目录
  • 重点检查:/var/log(日志)、/var/cache(缓存)、/tmp(临时文件)。

最新文章

随机文章