如何检查 Linux 中是否启用了磁盘配额

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何确定 Linux 系统上是否启用并配置了磁盘配额。你将探索三种关键方法:使用 quota 命令检查当前用户和组的配额状态,检查 /etc/fstab 文件以验证与配额相关的文件系统挂载选项,以及使用 quotacheck 命令检查特定文件系统上的配额设置。在本实验结束时,你将能够有效地检查 Linux 环境中磁盘配额的存在和配置情况。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/which("Command Locating") linux/FileandDirectoryManagementGroup -.-> linux/whereis("File/Command Finding") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") subgraph Lab Skills linux/help -.-> lab-558787{{"如何检查 Linux 中是否启用了磁盘配额"}} linux/ls -.-> lab-558787{{"如何检查 Linux 中是否启用了磁盘配额"}} linux/cat -.-> lab-558787{{"如何检查 Linux 中是否启用了磁盘配额"}} linux/which -.-> lab-558787{{"如何检查 Linux 中是否启用了磁盘配额"}} linux/whereis -.-> lab-558787{{"如何检查 Linux 中是否启用了磁盘配额"}} linux/sudo -.-> lab-558787{{"如何检查 Linux 中是否启用了磁盘配额"}} end

使用 quota 检查配额状态

在这一步中,你将学习如何使用 quota 命令检查用户和组的磁盘配额状态。磁盘配额用于限制用户或组在文件系统上可以使用的磁盘空间量或文件数量。

首先,让我们检查当前用户的配额状态。如果终端尚未打开,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来打开终端。

现在,输入以下命令并按回车键:

quota

如果文件系统上启用并配置了配额,你可能会看到类似以下的输出:

Disk quotas for user labex (uid 5000):
     Filesystem  blocks   soft   hard  inodes   soft   hard
      /dev/sda1       0      0      0       0      0      0

让我们来分析一下输出内容:

  • Filesystem:应用配额的文件系统(例如 /dev/sda1)。
  • blocks:当前以块为单位的磁盘空间使用量(通常为 1KB 块)。
  • soft:磁盘空间的软限制。如果使用量超过此限制,将发出警告。
  • hard:磁盘空间的硬限制。使用量不能超过此限制。
  • inodes:当前使用的文件数量。
  • soft:文件数量的软限制。
  • hard:文件数量的硬限制。

在这种情况下,输出显示全为零,这表明在 /dev/sda1 上没有为 labex 用户设置特定的配额。

你还可以通过提供用户名作为参数来检查特定用户的配额状态。例如,要检查 root 用户的配额,你可以输入:

quota root

如果没有为 root 用户设置配额,输出可能也会显示为零:

Disk quotas for user root (uid 0):
     Filesystem  blocks   soft   hard  inodes   soft   hard
      /dev/sda1       0      0      0       0      0      0

同样,你可以使用 -g 选项后跟组名来检查组的配额状态。例如,要检查 labex 组的配额:

quota -g labex

同样,如果没有为该组设置配额,你可能会看到类似以下的输出:

Disk quotas for group labex (gid 5000):
     Filesystem  blocks   soft   hard  inodes   soft   hard
      /dev/sda1       0      0      0       0      0      0

如果配额已启用,quota 命令是查看当前使用情况和限制的快捷方法。在接下来的步骤中,我们将探讨如何验证文件系统上是否启用了配额。

点击 Continue 进入下一步。

在 /etc/fstab 中验证配额

在上一步中,你使用 quota 命令检查了当前的配额状态。然而,quota 命令仅在文件系统上的配额已经激活时才会显示信息。要确定文件系统是否配置了配额,你需要查看 /etc/fstab 文件。

/etc/fstab 文件(文件系统表)是一个配置文件,包含了你系统上所有文件系统的信息。它告诉操作系统在启动时如何挂载文件系统。配额选项通常在这个文件中指定。

我们将使用 cat 命令查看 /etc/fstab 的内容。由于 /etc/fstab 是一个系统文件,你可能需要使用 sudo 来访问它,不过 cat 通常在读取时不需要 sudo 也能工作。

在终端中输入以下命令并按回车键:

cat /etc/fstab

你会看到类似以下的输出,它列出了文件系统及其挂载选项:

## /etc/fstab: static file system information.
#
## Use 'blkid' to print the universally unique identifier for a
## device; this may be used with UUID= as a more robust way to name devices
## that works even if disks are added or removed. See fstab(5).
#
## <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/sda1       /               ext4    errors=remount-ro 0       1
/dev/sda2       none            swap    sw              0       0

找到对应根文件系统 (/) 的行,通常是 /dev/sda1 并挂载在 / 上。在这一行的 <options> 列中,你要查找像 usrquotagrpquota 这样的选项。

  • usrquota:表示该文件系统启用了用户配额。
  • grpquota:表示该文件系统启用了组配额。

在上面的示例输出中,/dev/sda1 的选项是 errors=remount-ro。这意味着在这个配置中,默认情况下用户和组配额未启用。

如果启用了配额,这一行可能看起来像这样(这只是一个示例,不要期望在你当前的环境中看到这个):

/dev/sda1       /               ext4    errors=remount-ro,usrquota,grpquota 0       1

通过检查 /etc/fstab,你可以验证文件系统在挂载时是否配置为支持配额。

点击 Continue 进入下一步,我们将介绍 quotacheck 命令。

使用 quotacheck 检查配额设置

在这一步中,你将使用 quotacheck 命令。quotacheck 命令用于扫描文件系统的磁盘使用情况,并创建、检查和修复配额文件。在设置或验证配额时,这是一个关键步骤。

在运行 quotacheck 之前,重要的是要明白它需要扫描文件系统。为了获得准确的结果,理想情况下文件系统应该是未挂载的或只读挂载的。然而,在一个正在运行的系统中,对于根文件系统 (/) 来说,这通常是不可行的。quotacheck 通常可以在已挂载的文件系统上运行,但可能会发出警告。

由于我们是在 LabEx 环境中工作,并且不容易卸载根文件系统,因此我们将在已挂载的文件系统上运行 quotacheck

quotacheck 的基本语法是 quotacheck [选项] 文件系统。我们将使用以下选项:

  • -c:创建新的配额文件 (aquota.useraquota.group)。
  • -u:检查用户配额。
  • -g:检查组配额。
  • -v:详细输出,显示命令正在执行的操作。
  • -M:不尝试将文件系统重新挂载为只读。

我们需要使用 sudo 来运行 quotacheck,因为它需要 root 权限来扫描文件系统并创建/修改配额文件。

在终端中输入以下命令并按回车键:

sudo quotacheck -cugvM /

你会看到表明 quotacheck 正在扫描文件系统的输出。具体的输出可能会因系统状态而异,但大致如下:

quotacheck: Scanning /dev/sda1 [/] done
quotacheck: Checked 10 directories and 100 files

此命令扫描根文件系统 (/),检查用户 (-u) 和组 (-g) 的磁盘使用情况,如果配额文件不存在则创建新的配额文件 (-c),提供详细输出 (-v),并避免尝试将文件系统重新挂载为只读 (-M)。

运行 quotacheck 后,如果文件系统在 /etc/fstab 中配置了配额,并且安装了配额软件包,通常会在文件系统的根目录(例如 /aquota.user/aquota.group)创建或更新配额文件。

你可以使用 ls 命令检查这些文件是否存在:

ls -l /aquota.*

如果创建了配额文件,你可能会看到类似以下的输出(同样,这取决于系统配置以及配额是否真正启用):

-rw------- 1 root root 6144 Feb 13 10:00 /aquota.group
-rw------- 1 root root 7168 Feb 13 10:00 /aquota.user

在我们当前的 LabEx 环境中,由于配额没有完全配置,这些文件可能不会被创建,或者可能显示为零大小。关键要点是要理解 quotacheck 是用于根据实际磁盘使用情况生成和维护这些配额文件中数据的工具。

这一步结束了我们对检查配额状态和配置文件的探索。你已经学习了如何使用 quota 查看当前使用情况,使用 cat /etc/fstab 检查配额挂载选项,以及使用 quotacheck 扫描文件系统并管理配额数据文件。

点击 Continue 完成实验。

总结

在这个实验中,你学习了如何检查 Linux 中是否启用了磁盘配额。你首先使用 quota 命令查看用户和组的磁盘配额状态,了解了诸如文件系统、块数、块和索引节点的软限制与硬限制等输出字段。你练习了检查当前用户以及像 root 这样的特定用户的配额。

本实验还指导你如何通过检查 /etc/fstab 文件来验证配额配置,查看已挂载文件系统是否存在 usrquotagrpquota 选项。最后,你学习了使用 quotacheck 命令扫描文件系统的磁盘使用情况并更新配额文件,这是设置或验证配额的关键步骤。