系统管理

作者:Jan Rooijackers

磁盘使用率始终是一个问题,无论您使用的是 Linux、DOS 还是任何其他操作系统。在发现磁盘已满后,首先要做的是找出哪些文件占用了最多的磁盘空间以及这些文件的所有者。您可以使用三个不同的命令来获取此信息——dfduls(有关更多信息,请查阅 man 手册)。

在使用这些命令之一后,您会发现一个或多个用户分配的磁盘空间比您多。系统管理员避免此类问题的一种方法是为每个用户实施磁盘配额。

开始

在实施 quota 实用程序之前,您必须拥有支持它的内核。Quota 从 2.0 版本开始默认在 Linux 内核中受支持。如果您尚未运行 2.0.x 内核,则必须安装 quota 软件包并创建一个支持它的新内核。

使配额可用

要使 quota 可用于特定文件系统,您必须编辑 /etc/fstab 文件并为 usrquota 和/或 grpquota 添加条目。

我的 fstab 文件如列表 1所示。单词 usrquota 是 fstab 中的一个选项,用于为此设备上的用户启用 quota。您也可以使用 grpquota 为此设备启用 grpquota,或同时使用两者。

在您可以使用 quota 软件包之前,必须运行命令 quotacheck 以检查指定文件系统中任何先前设置的配额。如果这是您第一次使用该命令并且未找到配额,它将在指定文件系统的根目录中创建 quota.user 或 quota.group 文件或多个文件。创建哪些文件取决于 fstab 文件中指定的选项。quotacheck 命令在您每次启动系统时运行。

我第一次在我的机器上运行 quotacheck 时,输出如下所示

quotacheck -v /dev/hda3
Scanning /dev/hda3 [/home] done
Checked 50 directories and 331 files
Using quotafile /home/quota.user

现在 quotacheck 已经运行,您可以使用命令 quotaon 为您的系统启用 quota。此命令有不同的选项。对于首次使用,最简单的一个是

quotaon -av
此命令在 etc/fstab 文件中标记为读/写的所有文件系统上安装 quota,并显示一条消息,显示哪些文件系统已启用 quota。这是另一个例子
newroom:~# quotaon -av
/dev/hda3: user quotas turned on
newroom:~#
要使 quotaon 在您每次启动机器时都运行,请将以下行添加到 /etc/rc.d/rc.local 文件中
quotaon -avug
quotaon 的反义词是 quotaoff,它具有相同的选项。此命令为文件系统禁用 quota
给予配额

现在是时候为用户或组指定配额了。最简单的方法是为每个人提供相同数量的磁盘空间。

要指示每个用户当前正在使用多少空间,请使用命令 repquota。此命令显示指定文件系统的磁盘使用情况和配额的摘要。对于每个用户,都会打印当前文件数和空间量(以千字节为单位),以及使用 edquota 创建的任何配额(请参阅下面对此命令的说明)。此摘要的示例在列表 2中显示。

用于设置磁盘配额的命令称为 edquota。此命令调出 quota 编辑器,其使用方式与上述命令相同。-u 选项用于指定用户配额,-g 选项用于指定组配额。当您将 edquota 与其中一个选项一起使用时,将创建一个临时文件,其中包含该用户或组的当前磁盘配额的 ASCII 表示形式,并为该文件调用编辑器。您可以使用编辑器修改或添加新配额等。退出编辑器后,edquota 读取临时文件并修改二进制 quota 文件以反映更改。在编辑器中时,您应该只编辑 = 符号后面的数字。对于每个使用 quota 的文件系统,临时文件中都放置了两行

Quotas for user dsnjaro:
/dev/hda3: blocks in use: 49, limits (soft = 0, hard = 0)
        inodes in use: 30, limits (soft = 0, hard = 0)

第一行包含正在使用的块数以及用户或组可以分配的块数。第二行包含正在使用的 inode 数以及可以分配的 inode 数。soft 参数指定“软限制”——个人或组可以在一定时间内(由 -t 选项设置)超过此限制。hard 参数指定“硬限制”——用户或组可以拥有的绝对最大空间量。

如果您不希望为特定用户或组设置配额,请为 softhard 都分配值 0。与将此用户或组排除在 user.quota 或 group.quota 文件之外相比,这是一个文档记录更好的解决方案。

要更改硬限制和软限制,请使用带有 -t 选项集的 edquota 命令。使用编辑器,您可以以天、小时、分钟或秒为单位指定这些时限。如果将硬限制设置为等于软限制,则不允许用户或组拥有超过此值。

要为系统上的每个人提供相同的配额,请使用 -p 选项定义原型用户。要为每个人提供与此原型用户相同的配额,请给出命令

edquota -p <uid of the prototype> *

本文中描述的所有命令仅供系统管理员使用(几乎每个命令都必须读取所有目录及其文件),这是出于安全原因。

用户如何检查其配额

每个用户或组都可以使用命令 quota 检查其磁盘配额。此命令生成一个报告,其中包含 /etc/fstab 中列出的所有文件系统的信息。给出命令 quota -u(用于用户配额)或 quota -g(用于组配额)或它们的组合以获取此信息。如果未设置配额,则命令 quota -u 会产生以下输出

Disk quotas for dsnjaro (uid 503):none

如果已设置配额,则输出如下所示

Disk quotas for user dsnjaro (uid 503):
File system blocks  quota  limit  grace  files  quota  limit grace
/dev/hda3   49   100   110       30    0    0
只有系统管理员可以使用以下任一命令
quota -u <
quota <-g <group-id>
Quota 在我的工作中运行良好,我们的系统上大约有 300 个用户。

System Administration
Jan Rooijackers 在 Ericsson Data Netherlands 担任信息系统工程师。他第一次接触 Unix 是在 1991 年,接触 Linux 是在 1994 年。他喜欢与家人和他的 PC 共度时光。可以通过电子邮件 Jan.Rooijackers@dsn.ericsson.se 与他联系。
加载 Disqus 评论