互联网 有很多查看磁盘空间使用情况的工具,但对于 Linux 系统而言,它只需要有一个强大的内置工具”df”就够了。

df 是指”disk filesystem”,用于获取 Linux 系统上文件系统可用和已用磁盘空间的完整摘要。

使用 “-h”参数(”df -h”)会以”人类可读”的格式显示文件系统磁盘空间统计信息,这意味着它会以字节、兆字节和千兆字节为单位显示详细信息。

在本教程中,我们将向您详细展示如何实际解读”df”的输出,如何组合选项以获得更有用的结果,以及如何在因磁盘空间问题导致停机之前将其解决。

df 命令可以显示的信息

当我们执行 df  命令时,它会为每个挂载的文件系统显示6列报告信息:

 

显示列 意义
Filesystem 设备或文件系统名(例如/dev/sda1)
1K-blocks 以1024字节每块换算的总量
Used 当前已经使用空间
Available 对于非 root 用户的剩余可用空间
Use% 使用空间占总空间的百分比
Mounted on 挂载点

注意:可用空间(Available)并非简单地等于”总空间减去已用空间”。Linux 会为每个文件系统预留一部分空间(通常为 5%)给 root 用户,以防止磁盘空间不足时系统崩溃。这就是为什么已用空间加可用空间通常不等于总空间的原因。

df 命令的语法

如果没有指定文件系统,df 将报告所有当前已挂载的文件系统。

# df [OPTIONS] [FILESYSTEM]

1. 检查磁盘空间总体使用情况

不带任何参数的情况下,df 命令会显示文件系统上的设备名称、总块数、总磁盘空间、已用磁盘空间、可用磁盘空间和挂载点信息。

# df

图.1 使用 df 命令查看磁盘空间使用情况

以上输出对于编写脚本非常有用,因为原始的块数量更容易通过程序进行解析。而在日常的系统管理工作中,我们总是会希望加上”-h”参数。

2. 以易读格式显示磁盘空间

“-h”参数会自动将字节转换为 KB、MB、GB 或 TB,具体选用哪种单位,取决于哪种单位最适合所涉及的大小。

# df -h

图.2 以易读格式显示磁盘空间

重要提示:任何时候使用率超过 85%,都应将其视为警告信号并进行调查。使用率超过 95% 时,就可能会开始遇到应用程序错误、写入失败和日志文件损坏等问题。

3. 显示所有文件系统(包括伪文件系统)

命令”df -a”用于显示所有已挂载文件系统的磁盘空间使用情况信息,包括总空间、已用空间、可用空间、内存使用率以及每个文件系统的空间使用百分比。

它还会显示伪文件系统,例如 tmpfs、sysfs、proc 和 devtmpfs–这些伪文件系统通常显示 0 个块,并且默认情况下处于隐藏状态。

通常会在调试容器环境、chroot 设置或 systemd 挂载单元问题时使用此命令,尤其是在伪文件系统挂载行为异常的情况下。

# df -a

图.3 查看文件系统详细信息

4. 在磁盘使用情况增加显示文件系统类型

将”-T”(文件系统类型)与”-h”(人类可读格式)这两个选项结合使用,相比单独运行其中任何一个,能够提供更为实用且全面的概览信息。这在管理那些混合使用了 ext4、xfs 和 btrfs 文件系统的服务器时尤为有益,因为需要据此确定在执行文件系统扩容或修复操作时应选用何种工具。

# df -Th

图.4 增加显示文件系统类型

5. 查看特定目录或分区磁盘空间

命令”df -hT /home”用于以人类可读的格式显示 /home 目录或分区的磁盘空间使用情况。其中的 -T 选项会连同其他信息一并显示文件系统类型(ext4)。

# df -Th /home

图.5 查看 /home 目录磁盘空间信息

当然,也可以使用如下命令一次显示多个目录信息:

# df -Th /home /var

6. 使用特定单位显示磁盘空间信息

df 命令还可以指定磁盘空间容量的单位,其中”-k”参数以1k 字节为单位,”-m”参数以MB 为单位,”-B”参数则允许显式指定块大小。其中,”-BG”强制使用GB 为单位,”-BM”强制使用 MB 为单位,而”-BK”则强制使用 KB 为单位–这为脚本和报告提供了可预测的固定单位输出,而非”-h”标志所采用的自动缩放行为。

# df -k
# df -m
# df -BG

图.6 指定磁盘空间显示单位

7. 查看 Linux 系统 Inode 使用情况

Inode 是 Linux 用于追踪文件和目录的机制–它追踪的并非文件内容本身,而是文件的元数据(包括权限、所有权、时间戳以及指向数据块的指针)。文件系统有时可能会耗尽 Inode 资源,尽管此时磁盘空间依然充裕;这会导致系统报错”设备上已无剩余空间”(No space left on device),即便”df -h”命令显示仍有可用空间。

# df -ih /home

图.7 查看磁盘 Inode 使用情况

需要特别注意的是:如果 IUse%(inode 使用率)超过 90%,则表明正面临 inode 耗尽的问题。这种情况通常发生在邮件服务器、存储大量小型缓存文件的 Web 服务器,或因失控进程创建了数千个临时文件而受影响的系统上。

8. 筛选特定文件系统进行显示

使用”-t”参数后跟文件类型就可以显示该文件系统类型的磁盘空间情况,而使用”-x”参数后跟文件系统类型,就会显示除文件系统类型外的其他文件系统磁盘空间信息:

# df -t ext4
# df -x tmpfs

图.8 显示特定文件系统磁盘空间信息

9. 输出自定义列

“–output”选项允许精确指定要显示的列及其顺序,这在需要特定列布局的脚本和监控工具中特别有用。可用字段包括:source、fstype、itotal、iused、iavail、ipcent、size、used、avail、pcent、file 和 target。

# df -h --output=source,fstype,size,used,avail,pcent,target

图.9 自定义 df 输出列

10. 查看 df 命令选项

可以使用如下方式获取 df 命令的简要使用方法,如果想要了解详细信息,可以使用”man df”命令:

#df --help

总之,df 命令简单易懂,使用方便,了解其输出信息的实际意义后,对于系统管理将具有很大帮助。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注