磁盘配额

出自 ArchWiki

出自 维基百科

"磁盘配额是系统管理员设置的限制,用于限制现代操作系统上文件系统使用的某些方面。 设置磁盘配额的功能是以合理的方式分配有限的磁盘空间。"

本文介绍磁盘配额的安装和设置。

安装

安装 quota-tools 软件包。

配置

设置文件系统

编辑 fstab 以在选定的文件系统上启用配额挂载选项,例如

/etc/fstab
/dev/sda3 /home ext4 defaults,usrquota 0 2

要额外启用组配额挂载选项

/etc/fstab
/dev/sda3 /home ext4 defaults,usrquota,grpquota 0 2

如果 内核文件系统 支持,建议使用日志配额

/etc/fstab
/dev/sda3 /home ext4 defaults,usrjquota=aquota.user,jqfmt=vfsv1 0 2

追加 grpjquota=aquota.group 以启用组配额。

重新挂载分区以应用更改

# mount -vo remount /home

创建配额索引

要为 /home 创建配额索引

# quotacheck -cum /home

追加 -g 参数以同时创建组索引。

要为所需的文件系统启用磁盘配额

# quotaon -v /home

要为文件系统禁用磁盘配额

# quotaoff -v /home

用法

为用户/组启用配额

提示
  • 要找出分区有多少个 1 千字节块,请使用 $ df
  • 您可以使用在线字节转换器来计算正确的块数量 [1]
  • 命令 # setquota 可以替代 # edquota 使用 [2]
注意: 块大小静态设置为 1k,与文件系统块大小无关 [3]

配额使用 edquota(以 root 用户身份)进行配置,该命令将在默认配置的文本编辑器中打开

# edquota user
Disk quotas for user user (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                        24          0          0          6        0        0
blocks
指示用户/组当前使用的 1k 块的数量。
soft
指示在发出警告并开始宽限期倒计时之前,用户/组的最大块数。 如果设置为“0”(零),则不强制执行限制。
hard
指示用户/组可以使用的最大块数。 如果已达到最大数量,则无法使用更多磁盘空间。 如果设置为“0”(零),则不强制执行限制。
inodes
指示用户/组当前使用的 inodes 数量。
soft
指示用户/组的软 inode 限制。
hard
指示用户/组的硬 inode 限制。

考虑以下 ftpuser1 的配置

# edquota ftpuser1
Disk quotas for user ftpuser1 (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                        24    1000000    1048576          6        0        0

在这种情况下,如果 ftpuser1 使用超过 976MB 的空间,将发出警告。 如果已达到 1GB 的硬限制,则用户将无法写入更多数据。

请参阅 #指定宽限期,以便在用户达到其软限制时,给予他们特定的时间来减少存储使用量。

警告: hard 限制适用于各自用户/组写入和使用的所有文件,包括启动应用程序的临时文件,这些文件可能在此点崩溃。

指定宽限期

为了给当前用户一些时间来减少其文件使用量,可以配置宽限期。 这指定了用户/组可以超过其软限制并在其硬限制之下的允许时间

# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sda3              7days                  7days

宽限期可以设置为秒、分钟、小时、天、周或月。

报告

显示所有已配置的配额

# repquota -a

显示特定分区上的配额

# repquota /home

显示适用于 用户/用户组 的配额

# quota -u user
# quota -g group

复制配额设置

复制到一个或多个用户

要将配额设置从 user1 复制到 user2

# edquota -p user1 user2

要将配额设置复制到其他几个用户,请追加 user3 user4 ...

复制到组

要将配额设置从 group1 复制到 group2

# edquota -g -p group1 group2

复制到所有用户

想法是修改一个用户的配额设置,并将该设置复制到所有其他用户。 为 user1 设置配额,并将配额应用于 UID 大于 999 的用户

# edquota -p user1 $(awk -F: '$3 > 999 {print $1}' /etc/passwd)

技巧与诀窍

配额警告

命令 warnquota 可用于警告用户关于他们的配额。 配置可在 /etc/warnquota.conf 中找到。

统计信息

命令 quotastats 可用于提供有关当前配额使用情况的更多信息

$ quotastats
Number of dquot lookups: 101289
Number of dquot drops: 101271
Number of still active inodes with quota : 18
Number of dquot reads: 93
Number of dquot writes: 2077
Number of quotafile syncs: 134518740
Number of dquot cache hits: 7391
Number of allocated dquots: 90
Number of free dquots: 2036
Number of in use dquot entries (user/group): -1946

参见