如何在Ubuntu上设置文件系统(磁盘)配额

本文介绍了如何为单个用户设置基于块的文件系统磁盘配额,以及如何在Ubuntu中生成有关文件系统配额使用情况的报告。

文件系统配额是Linux内核中的标准内置功能。 配额确定文件支持用户活动所必须具有的空间量。 磁盘配额还限制了用户可以在系统上创建的文件数。

支持配额系统的文件系统包括xfs,ext2,ext4和ext3。 配额的分配特定于文件系统和每个用户。 本文包含您在多用户Ubuntu 18.04环境中使用配额文件系统所需的全部知识。

你需要什么

这里的假设是您使用的Ubuntu 18.04系统的用户( howtoing)具有sudo权限。 只要您使用正确的实现技术,此处共享的想法就可以在任何Linux发行版上使用。

第1步:在Ubuntu中安装配额

为了使配额准备就绪并可用,请使用apt命令安装quota命令行工具,但在此之前,您需要更新系统软件包。

$ sudo apt update

现在,使用以下命令在Ubuntu上安装配额软件包。

$ sudo apt install quota
在Ubuntu中安装配额

在Ubuntu中安装配额

Y ,然后按Enter以开始安装过程。

通过运行以下命令来确认安装版本。 您的版本号可能与下面看到的不同。

$ quota --version
在Ubuntu中检查配额版本

在Ubuntu中检查配额版本

第2步:安装配额内核模块

那些运行基于云的虚拟系统的默认Ubuntu安装可能会缺少支持配额使用的内核模块。 您必须确认使用查找工具,并确保两个模块quota_v1quota _v2位于/ lib / modules目录中。

$ find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'

这应该是以上命令的结果。

检查配额内核模块

检查配额内核模块

只要存在两个模块,就不必担心内核版本。 如果未找到,请使用以下命令来安装配额内核模块,如图所示。

$ sudo apt install linux-image-extra-virtual
安装配额内核模块

安装配额内核模块

您将获得实现配额所需的正确模块。

第3步:更新文件系统挂载选项

为了使配额在特定系统上处于活动状态,必须将其与相关的配额选项一起安装。 您可以通过更新/ etc / fstab文件中的文件系统条目来做到这一点。

$ sudo nano /etc/fstab

您应该准备适当地编辑文件。 fstab文件和桌面文件之间的区别是/或根文件系统表示整个磁盘空间的方式不同。 使用下面的行替换指向根系统的行(/)

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0

这些行将更改,以允许访问userquotagrpquota 您可以保留不属于最终配置的内容。 如果fstab有一些选项,请在该行的末尾添加新选项。 进行追加时,请用逗号分隔新项目,但它们之间没有空格。

重新挂载文件系统,以使更改生效。

$ sudo mount -o remount /

注意 :确认/ etc / fstab中的选项之间没有空格,以避免出现此类错误。

mount: /etc/fstab: parse error

通过grep对在/ proc / mounts文件中挂载文件系统时使用新选项的使用进行验证。 该命令显示文件中的根文件系统条目。

$ sudo cat /proc/mounts | grep ' / '
检查Fstab中的根文件系统条目

检查Fstab中的根文件系统条目

从输出中,您可以看到我们设置的两个选项。 现在是时候打开配额系统了。

第4步:在Ubuntu上启用磁盘配额

首先,您必须运行quotacheck命令。

$ sudo quotacheck -ugm /

该命令将创建两个文件,即配额用户和配额组,这些文件具有有关文件系统的限制和使用情况的信息。 在开始使用配额之前,这些文件必须存在。

这是参数的定义:

  • -u :表示将创建基于用户的配额文件。
  • -g :表示将创建基于组的配额文件。
  • -m: disables remounting of the file system as a read-only while at the same time gives accurate results in an environment where the user keeps saving files. The m 在安装过程中-m: disables remounting of the file system as a read-only while at the same time gives accurate results in an environment where the user keeps saving files. The m选项不是必需的。

当不需要基于用户或组启用配额使用时,就无需运行quotacheckcheck选项。 通过使用ls命令列出根目录来确认这一点。

$ ls /
样本输出
aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

如果未在quotacheck命令中包含ug参数,则将丢失相应的文件。

现在,我们准备使用以下命令在根(/)文件系统上打开配额。

$ sudo quotaon -v /

第5步:为单个用户配置配额

我们可以使用edquotasetquota命令为用户或组设置它们。

使用edquota

edquota命令可编辑配额,例如,我们可以使用以下命令编辑属于howtoing用户的配额:

$ sudo edquota -u howtoing

使用-u选项指定配额属于用户。 如果您需要编辑属于一个组的配额,请使用-g选项。 该命令将使用您选择的文本编辑器打开一个文件。

检查磁盘上的用户配额

检查磁盘上的用户配额

输出列出用户名,uid,具有活动配额的文件系统以及块和索引节点的用法。 基于配额的inode限制了用户可以创建的文件和目录的数量,无论他们在磁盘上使用的大小如何。 大多数管理员更喜欢控制磁盘空间的基于块的配额。

注意 :块的使用并未显示其如何根据不同的因素(例如,命令行工具报告它们)而改变。 在Ubuntu的上下文配额内,我们可以假设一个块等于一千字节的磁盘空间。

使用上面的命令行,用户将使用2032个块,这与/ dev / sda1上的2032KB空间相同。 0值禁用软限制和硬限制。

每个配额设置都可以设置软限制和硬限制。 超出软限制的用户可能超出了她的配额,但没有禁止使用更多的空间或索引节点。 在这种情况下,用户有7天的时间来赎回其软限制空间,否则,将很难保存或创建文件。

硬限制意味着您一旦达到限制,新块或索引节点的创建就会停止。 用户将报告在执行常规任务时看到警告或错误。

我们可以更新howtoing的阻止配额,使其软限制为100MB ,硬限制为110MB

设置用户配额限制

设置用户配额限制

编辑后,关闭文件并使用quota命令检查新的用户配额限制设置。

$ sudo quota -vs howtoing
检查用户配额限制

检查用户配额限制

注意 :在不执行sudo命令的情况下 ,为您的用户提供了分析其配额的机会,必须在第四步的创建阶段为他们提供读取配额文件的访问权限。 一种简单的方法是创建用户组并授予该组访问权限,以便您可以向其中添加用户。

使用setquota

setquota使用单个命令即可更新配额信息,而无需任何交互式设置。 该命令需要用户名,并设置块和索引节点将使用的软限制和硬限制。 您还需要声明配额将使用的文件系统。

$ sudo setquota -u howtoing 200M 220M 0 0 /

该命令将基于块的配额限制增加了一倍,分别为200兆字节和220兆字节。 2 0 0表示没有同时设置硬限制和软限制,即使不需要设置基于inode的配额,这也是一个要求。

像往常一样,使用quota命令验证您的进度。

$ sudo quota -vs howtoing
验证用户配额限制

验证用户配额限制

第6步:生成配额报告

生成配额报告时,它必须指示所有用户的使用情况。 使用命令repquota

$ sudo repquota -s /
生成配额报告

生成配额报告

上面的输出是关于/根文件系统的报告。 -s指示repquota以人类可读的格式给出结果。

默认的块宽限时间为7天 宽限度列会在拒绝访问资源磁盘之前的天数内警告用户。

第7步:设置配置宽限期

宽限期是指用户在默认时间之外获得工作许可的时间。

$ sudo setquota -t 864000 864000 /

该命令指示块和索引节点的宽限期为864000秒,相当于10天。 该设置将影响所有用户,因此,即使不使用块和索引节点,也需要设置值。 时间值必须以秒为单位。

确认更改,并使用以下命令查看更改是否生效:

$ sudo repquota -s /

常见错误消息

quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

如果您尝试使用命令qoutaon打开配额,然后再尝试使用命令quotacheck检查配额的状态,则上述错误很常见。

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

此错误告诉管理员内核不支持,或者您在计算机上的版本可能不正确(我们拥有quota_v1quota_v2 )。 对于Ubuntu而言 ,此类错误在基于云的虚拟服务器上很常见。

通过使用apt命令安装Linux-image-extra-virtual软件包来修复错误。

quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory

当当前用户没有读取配额文件的权限时,该错误将很明显。 作为管理员,您只需要进行正确的权限更改或在需要访问配额系统或文件中的文件时使用sudo。

结论

在本文的顶部,我们从配额命令行工具和内核版本验证开始,并进一步说明了如何为单个用户设置基于块的配额以及如何生成有关文件系统配额的报告。用法。

本文还介绍了常见错误以及如何使用额外的程序包或在系统上验证内核版本来避免这些错误。