介绍
在本实验中,你将学习如何使用 Linux 的 quota 命令为文件系统上的用户设置和管理磁盘配额。实验涵盖了磁盘配额的关键概念,包括软限制和硬限制,以及如何监控和管理磁盘使用情况。你将学习如何为用户设置磁盘配额,以及如何监控和管理配额使用情况。本实验提供了实际示例,帮助你在 Linux 环境中有效理解和应用 quota 命令。
理解磁盘配额的概念
在这一步中,我们将探讨 Linux 中磁盘配额的概念。磁盘配额是一种系统,允许系统管理员为用户或组在文件系统上设置磁盘空间的使用限制。
为了理解磁盘配额的概念,让我们首先检查系统当前的磁盘使用情况:
df -h
示例输出:
Filesystem Size Used Avail Use% Mounted on
overlay 39G 15G 22G 41% /
tmpfs 64M 0 64M 0% /dev
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sda1 39G 15G 22G 41% /
tmpfs 3.9G 0 3.9G 0% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
如你所见,文件系统的总容量为 39GB,已使用 15GB,可用空间为 22GB。这是系统上的整体磁盘使用情况。
现在,假设我们想限制特定用户的磁盘空间使用。这就是磁盘配额发挥作用的地方。磁盘配额允许我们为用户或组设置磁盘空间的使用限制。
磁盘配额的关键概念包括:
软限制(Soft Limit):软限制是用户在收到警告之前可以使用的最大磁盘空间量。如果用户超过软限制,他们仍然可以继续使用文件系统,但会定期收到警告。
硬限制(Hard Limit):硬限制是用户可以使用的绝对最大磁盘空间量。如果用户达到硬限制,他们将无法分配更多的磁盘空间,任何进一步的尝试都会失败。
Inodes:除了限制磁盘空间的使用量外,磁盘配额还可以限制用户可以创建的文件数量(inodes)。这对于防止用户创建过多的小文件非常有用,因为这些小文件也可能占用大量的磁盘空间。
通过理解这些概念,你将能够有效地使用 quota 命令管理 Linux 系统上的磁盘空间使用情况,我们将在下一步中探讨这一命令。
为用户设置磁盘配额
在这一步中,我们将学习如何在 Linux 系统上为用户设置磁盘配额。
首先,让我们创建一个名为 quota_user 的新用户,并将其添加到 sudo 组中:
sudo useradd -m quota_user
sudo usermod -aG sudo quota_user
接下来,我们需要为用户的主目录所在的文件系统启用磁盘配额。在本例中,这是根文件系统(/):
sudo quotacheck -cug /
sudo quotaon /
quotacheck 命令会扫描文件系统,构建当前磁盘使用情况的表,并启用配额统计。quotaon 命令则会为文件系统启用配额强制执行。
然后,我们将为 quota_user 设置软限制和硬限制:
sudo setquota -u quota_user 500M 1G 0 0 /
此命令为 quota_user 在根文件系统(/)上设置了 500MB 的软限制和 1GB 的硬限制。最后两个 0 值用于 inode(文件数量)的软限制和硬限制,本例中我们未设置这些限制。
要验证 quota_user 的配额设置,我们可以使用 repquota 命令:
sudo repquota /
示例输出:
*** Report for user quotas on device /
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 15360 0 0 1 0 0
quota_user 0 500M 1G 0 0 0
如你所见,quota_user 的磁盘空间使用软限制为 500MB,硬限制为 1GB。
现在,让我们通过以 quota_user 身份登录并尝试创建一个超过软限制的文件来测试配额:
sudo -u quota_user touch ~/large_file.txt
sudo -u quota_user dd if=/dev/zero of=~/large_file.txt bs=1M count=600
第一条命令创建了一个名为 large_file.txt 的空文件,第二条命令向文件中填充了 600MB 的数据。由于这超过了 500MB 的软限制,用户应该会收到一条警告信息。
监控和管理磁盘配额使用情况
在这最后一步中,我们将学习如何在 Linux 系统上监控和管理磁盘配额的使用情况。
首先,让我们检查 quota_user 当前的磁盘配额使用情况:
sudo repquota /
示例输出:
*** Report for user quotas on device /
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 15360 0 0 1 0 0
quota_user 600M 500M 1G 0 0 0
如你所见,quota_user 当前使用了 600MB 的磁盘空间,超过了 500MB 的软限制。
为了监控磁盘配额的使用情况,我们可以使用 quota 命令:
sudo -u quota_user quota
示例输出:
Disk quotas for user quota_user (uid 1001):
Filesystem blocks quota limit grace files quota limit grace
/ 614400 512000 1048576 [EXCEEDED] 0 0 0
此命令显示了 quota_user 在根文件系统(/)上的当前磁盘使用情况、软限制和硬限制。
如果用户超过了软限制,他们将定期收到警告信息。为了管理磁盘配额的使用情况,我们可以:
- 使用
setquota命令增加软限制和/或硬限制,就像我们在上一步中所做的那样。 - 要求用户删除一些文件以减少磁盘使用量。
让我们尝试为 quota_user 增加软限制:
sudo setquota -u quota_user 1G 2G 0 0 /
此命令为 quota_user 在根文件系统(/)上设置了 1GB 的软限制和 2GB 的硬限制。
现在,让我们验证更新后的配额设置:
sudo repquota /
示例输出:
*** Report for user quotas on device /
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 15360 0 0 1 0 0
quota_user 600M 1G 2G 0 0 0
如你所见,quota_user 的软限制已增加到 1GB,硬限制已增加到 2GB。
总结
在本实验中,我们首先探讨了 Linux 中磁盘配额的概念,它允许系统管理员为用户或组在文件系统上设置磁盘空间的使用限制。我们学习了磁盘配额的关键概念,包括软限制、硬限制和 inodes。接着,我们为用户设置了磁盘配额,并监控和管理其磁盘配额使用情况。这种实践方法为你提供了在 Linux 环境中有效实施和管理磁盘配额的实用理解。



