在Linux系统中,磁盘空间管理是系统维护的重要环节,而df命令(disk free的缩写)是查看磁盘空间使用情况最常用的工具之一。df -h是最常用的组合选项,它以人类可读的格式显示磁盘空间信息,帮助管理员快速理解磁盘使用状态,本文将详细解析df -h命令的输出内容、核心参数、使用场景及注意事项。

df -h命令的基本语法与功能
df命令的基本语法为df [选项] [文件或目录],而-h选项(–human-readable)的作用是将磁盘空间大小自动转换为KB、MB、GB等易读的单位。1048576字节会被显示为0G,避免了手动换算的麻烦,如果不加-h选项,df默认以1024字节为单位显示大小,对于大容量磁盘来说,数字会非常冗长。df命令还可以指定文件或目录,查看特定挂载点的信息,若不指定,则显示所有挂载文件系统的使用情况。
df -h命令输出详解
执行df -h后,终端会返回一个表格式的输出,包含以下列(以常见Linux发行版为例):
| 列名 | 含义说明 |
|---|---|
| Filesystem | 文件系统的设备名称或挂载点标识,如/dev/sda1、/mnt/data等。 |
| Size | 文件系统的总容量,单位由-h选项自动调整为易读格式(如G、M)。 |
| Used | 已使用的磁盘空间大小。 |
| Avail | 可用空间大小(通常基于-i选项的剩余inode数或剩余块数计算)。 |
| Use% | 使用率,计算公式为(Used/Size)*100%,是判断磁盘是否满载的关键指标。 |
| Mounted on | 文件系统的挂载目录,如、/home、/var等。 |
以输出行/dev/sda1 50G 20G 28G 43% /为例,表示设备/dev/sda1总容量为50GB,已使用20GB,剩余28GB可用,使用率为43%,挂载在根目录,需注意,Use%的计算可能因文件系统类型(如ext4、xfs)或选项(如-i查看inode使用率)而略有差异。
常用选项与扩展功能
除了-h,df命令还支持多个实用选项,结合使用可满足不同需求:

-i:显示inode使用情况,而非磁盘块,inode存储文件元数据,当磁盘剩余空间充足但inode耗尽时,仍无法创建新文件。-T:显示文件系统类型(如ext4、xfs、nfs等),便于区分本地磁盘与网络文件系统。-t:仅显示指定类型的文件系统,如df -t ext4只列出ext4文件系统。-x:排除指定类型的文件系统,如df -x tmpfs可过滤掉临时文件系统。–output=:自定义输出列,例如df -h --output=source,size,used,pcent,target只显示设备名、大小、已用、使用率和挂载点。
df -ih会以人类可读格式显示inode使用情况,而df -Th则会同时显示文件系统类型和易读的磁盘空间。
使用场景与注意事项
- 磁盘空间监控:通过
df -h定期检查各挂载点的使用率,避免因磁盘写满导致服务异常,当/var目录使用率超过90%时,需清理日志文件或扩容。 - 挂载点排查:若某个目录无法写入,可用
df -h确认是否挂载失败或空间不足。/mnt/data未显示在输出中,可能表示未正确挂载。 - 文件系统类型识别:结合
-T选项,确认文件系统是否支持特定功能(如xfs的大文件支持)。 - 注意事项:
df显示的是文件系统级别的空间,而非单个文件大小,需配合du命令分析目录占用。- 某些特殊文件系统(如
tmpfs、proc)使用虚拟内存,其Size可能动态变化,需结合实际场景判断。 - 网络文件系统(如NFS)的响应速度可能较慢,
df命令会短暂阻塞。
相关问答FAQs
Q1: 为什么磁盘还有剩余空间,但无法创建新文件?
A: 可能是inode耗尽,文件系统中每个文件和目录都需占用一个inode,即使磁盘块未用完,inode不足也会导致创建失败,可通过df -ih检查inode使用率,若已满,需删除无用文件或格式化扩容inode。
Q2: df -h显示的Avail和du -sh统计的目录占用空间不一致,为什么?
A: 两者统计范围和机制不同。df的Avail是文件系统层面的剩余空间,受保留空间(root_reserve)影响,普通用户可用空间通常小于Avail;而du统计的是指定目录的实际占用,可能包含被删除但未释放的文件(被进程占用)或稀疏文件。df包含文件系统元数据开销,du则不统计。

