Linux df 命令:生成磁盘空间报告

LinuxBeginner
立即练习

介绍

在本实验中,你将探索 df 命令,这是 Linux 系统中用于监控磁盘空间使用情况的关键工具。你将扮演一名管理繁忙 Web 服务器的系统管理员,使用 df 来分析磁盘使用情况、识别潜在的存储问题,并确保服务器的平稳运行。本实验专为初学者设计,所以如果你是 Linux 新手也不必担心——我们会仔细引导你完成每一个步骤。

这是一个引导式实验,提供了逐步指令来帮助你学习和实践。请仔细遵循说明以完成每个步骤并获得动手经验。历史数据表明,这是一个初学者级别的实验,完成率为 98%。它获得了学习者 100% 的好评率。

了解基础 df 命令

作为系统管理员,你的首要任务是全面了解 Web 服务器的磁盘空间使用情况。不带任何选项的 df 命令可以提供所有已挂载文件系统的快速快照。

首先,让我们进入项目目录:

cd ~/project

现在,运行基础的 df 命令:

df

提示:由于虚拟机存储的动态变化,df 命令的输出可能会有所不同,此问题可以忽略。

你应该会看到类似如下的输出:

Filesystem     1K-blocks     Used Available Use% Mounted on
overlay         20971520  1314600  19656920   7% /
tmpfs              65536        0     65536   0% /dev
tmpfs            4068320        0   4068320   0% /sys/fs/cgroup
shm                65536        0     65536   0% /dev/shm
/dev/vdb       104806400 17442788  87363612  17% /etc/hosts
tmpfs             102400    51200     51200  50% /mnt/ramdisk

让我们来解析一下这些输出内容:

  • Filesystem:此列显示设备或分区的名称。
  • 1K-blocks:以 1KB 为单位显示文件系统的总大小。
  • Used:表示已使用了多少个 1KB 块。
  • Available:表示还有多少个 1KB 块可用。
  • Use%:显示已使用的文件系统百分比。
  • Mounted on:显示文件系统在目录树中的挂载点。

请注意 overlay 文件系统,它通常用于容器化环境。/dev/vdb 设备可能是一个虚拟磁盘,我们还可以看到一个挂载在 /mnt/ramdisktmpfs 文件系统,这是一个基于内存的文件系统。

使 df 输出更具可读性

df 的默认输出以 1KB 块为单位显示大小,这可能很难快速解读。想象一下,试图算出 20640796 个 1KB 块是多少 GB!幸运的是,我们可以使用 -h 选项(代表「human-readable」,即易读格式)使输出更易于理解。

运行以下命令:

df -h

你应该会看到类似如下的输出:

Filesystem      Size  Used Avail Use% Mounted on
overlay          20G  1.3G   19G   7% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/vdb        100G   17G   84G  17% /etc/hosts
tmpfs           100M   50M   50M  50% /mnt/ramdisk

注意现在的大小是以 GB 和 MB 为单位显示的。这在视觉上更容易理解。例如,我们可以快速看到主文件系统(overlay)的大小为 20G,仅使用了 1.3G,剩余 19G 可用。

显示文件系统类型

作为系统管理员,了解服务器上的文件系统类型非常重要。不同的文件系统类型具有不同的特性和性能表现。使用 -T 选项可以查看此信息。

运行以下命令:

df -T

你应该会看到类似如下的输出:

Filesystem     Type    1K-blocks     Used Available Use% Mounted on
overlay        overlay  20971520  1314600  19656920   7% /
tmpfs          tmpfs       65536        0     65536   0% /dev
tmpfs          tmpfs     4068320        0   4068320   0% /sys/fs/cgroup
shm            tmpfs       65536        0     65536   0% /dev/shm
/dev/vdb       xfs     104806400 17442728  87363672  17% /etc/hosts
tmpfs          tmpfs      102400    51200     51200  50% /mnt/ramdisk

此输出包含了一个新列 Type,它显示了每个已挂载文件系统的类型。让我们看看这些类型:

  • overlay:这是一种联合文件系统(union filesystem),常用于容器化环境。
  • tmpfs:这是一种驻留在内存和/或交换分区中的临时文件系统。
  • xfs:这是一种高性能的日志文件系统,此处用于 /etc/hosts 挂载。

了解文件系统类型可以帮助你排查问题并优化系统性能。

分析索引节点使用情况

在 Linux 中,索引节点(inode)是存储文件重要信息的数据结构,例如权限、所有权和在磁盘上的位置。系统中的每个文件都会占用一个索引节点。有趣的是,即使磁盘空间充足,索引节点也可能会耗尽,这将导致你无法创建新文件。这就是为什么监控索引节点使用情况至关重要的原因。

让我们使用 -i 选项检查索引节点使用情况:

df -i

你应该会看到类似如下的输出:

Filesystem       Inodes  IUsed    IFree IUse% Mounted on
overlay        52428800 539001 51889799    2% /
tmpfs           1017080    206  1016874    1% /dev
tmpfs           1017080     17  1017063    1% /sys/fs/cgroup
shm             1017080      1  1017079    1% /dev/shm
/dev/vdb       52428800 539001 51889799    2% /etc/hosts
tmpfs           1017080      2  1017078    1% /mnt/ramdisk

让我们解析一下这些输出内容:

  • Inodes:文件系统的索引节点总数
  • IUsed:当前已使用的索引节点数量
  • IFree:空闲的索引节点数量
  • IUse%:已使用的索引节点百分比

在这个例子中,我们可以看到主文件系统(overlay)仅使用了 2% 的可用索引节点。这很好——这意味着我们离耗尽索引节点还很远,不会出现因索引节点不足而无法创建新文件的情况。

组合选项进行综合分析

现在我们已经探索了单个选项,让我们将它们组合起来,以便更全面地查看服务器的存储状况。我们可以同时使用多个选项,通过一个命令获取所需的所有信息。

运行以下命令:

df -hT

此命令结合了易读格式(-h)和文件系统类型(-T)选项。

你应该会看到类似如下的输出:

Filesystem     Type     Size  Used Avail Use% Mounted on
overlay        overlay   20G  1.3G   19G   7% /
tmpfs          tmpfs     64M     0   64M   0% /dev
tmpfs          tmpfs    3.9G     0  3.9G   0% /sys/fs/cgroup
shm            tmpfs     64M     0   64M   0% /dev/shm
/dev/vdb       xfs      100G   17G   84G  17% /etc/hosts
tmpfs          tmpfs    100M   50M   50M  50% /mnt/ramdisk

此输出提供了文件系统的综合概览,包括它们的类型和易读的大小。这是快速获取系统存储状况详细快照的绝佳方式。

关注特定文件系统

作为系统管理员,你可能经常需要检查特定文件系统的状态。例如,你可能想快速检查根文件系统的空间。我们可以通过在 df 命令后指定挂载点来实现这一点。

让我们关注根文件系统。运行以下命令:

df -h /

你应该会看到类似如下的输出:

Filesystem      Size  Used Avail Use% Mounted on
overlay          20G  1.3G   19G   7% /

此命令可以让你快速查看根文件系统的空间使用情况。当你只对某个特定文件系统感兴趣,而不需要其他文件系统的信息时,这非常有用。

检查用户主目录的可用空间

作为服务器管理职责的一部分,你需要确保用户在其主目录中有足够的空间。在许多系统中,用户主目录位于 /home 目录中。让我们检查 /home 目录的可用空间。

运行以下命令:

df -h /home

你可能会看到类似如下的输出:

Filesystem      Size  Used Avail Use% Mounted on
overlay          20G  1.3G   19G   7% /

这表明 /home 目录与根目录(/)位于同一个文件系统上。在这种情况下,我们可以看到用户主目录有充足的可用空间(19G)。

如果你发现文件系统快满了(Use% 值很高),你可能需要调查哪些用户占用的空间最多,或者考虑增加存储容量。

排除某些文件系统类型

有时,你可能希望从 df 输出中排除某些文件系统类型。例如,你可能想排除临时文件系统,因为它们存储在内存中,不代表物理磁盘的使用情况。我们可以使用 -x 选项来实现这一点。

运行以下命令以排除 tmpfs 文件系统:

df -h -x tmpfs

你应该会看到类似如下的输出:

Filesystem      Size  Used Avail Use% Mounted on
overlay          20G  1.3G   19G   7% /
/dev/vdb        100G   17G   84G  17% /etc/hosts

注意,输出中不再列出 tmpfs 文件系统。当你只关心物理磁盘使用情况并希望过滤掉虚拟文件系统时,这非常有用。

显示总计摘要

作为最后的概览,让我们显示所有文件系统的总计摘要。我们可以使用 --total 选项来完成。当你想要查看所有文件系统的整体磁盘使用情况时,这特别有用。

运行以下命令:

df -h --total

你应该会看到类似如下的输出:

Filesystem      Size  Used Avail Use% Mounted on
overlay          20G  1.3G   19G   7% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/vdb        100G   17G   84G  17% /etc/hosts
tmpfs           100M   50M   50M  50% /mnt/ramdisk
total           125G   18G  107G  15% -

这提供了所有文件系统磁盘使用情况的总计摘要。最后一行显示了所有文件系统的总和,表明整体上 125G 中使用了 18G,约占总可用空间的 15%。

总结

在本实验中,你学习了如何使用 df 命令来监控和分析 Linux 系统上的磁盘空间使用情况。你探索了 df 命令的各种选项,包括:

  • df 的基本用法
  • 使用 -h 使输出更具可读性
  • 使用 -T 显示文件系统类型
  • 使用 -i 分析索引节点使用情况
  • 组合选项进行综合分析
  • 关注特定文件系统
  • 使用 -x 排除某些文件系统类型
  • 使用 --total 显示总计摘要

这些技能对于有效的系统管理和确保 Linux 服务器的最佳性能至关重要。随着你在系统管理领域的不断深入,你会发现 df 命令是工具箱中不可或缺的工具。

本实验未涵盖的其他 df 选项包括:

  • -a:显示所有文件系统,包括虚拟的、重复的和不可访问的文件系统
  • -k:以 KB 为单位显示大小(默认)
  • -m:以 MB 为单位显示大小
  • -P:使用 POSIX 输出格式
  • --sync:在获取使用信息之前调用 sync
  • -t:仅列出特定类型的文件系统

请记住,虽然 df 功能强大,但它只是监控磁盘使用的众多工具之一。随着你在 Linux 学习之路上的进步,你可能还想探索其他命令,如 du(磁盘使用量)、ncdu(基于 NCurses 的磁盘使用量分析)以及各种系统监控工具。