Ubuntu 20.04 设定硬盘 Quota 配额


Quota 是用作限制使用者或群组使用的碟硬空间, 如果没有设定 Quota 限制, 使用者可以无上限地储使用硬盘空间。以下是在 Ubuntu 20.04 设定 Quota 的步骤。

在设定使用者的 Quota 前, 需要先安装 quota 套件, 可以用 apt 安装:

$ sudo apt install quota

然后检查 Ubuntu 的 kernel 是否支援有管理 quota 的模组, 执行以下指令检查:

find /lib/modules/ -type f -name ‘*quota_v*.ko*’

如果有支援 quota 的模组, 会有类似以下输出:

/lib/modules/5.4.0-99-generic/kernel/fs/quota/quota_v2.ko
/lib/modules/5.4.0-99-generic/kernel/fs/quota/quota_v1.ko

但如果上面 find 指令没有输出, 那便要安装 linux-image-extra-virtual 套件, 它是给 kernel 实现 quota 的必要模组:

$ sudo apt install linux-image-extra-virtual

安装好后, 现在修改要设定 quota 硬盘的挂载选项, 开启档案 /etc/fstab:

$ sudo vi /etc/fstab

在修改 /etc/fstab 时要格外小心,尤其透过 SSH 修改远端机器的设定,因为改错了可能不能开机。

/etc/fstab 包括所有默认挂载的档案系统,在需要设定 quota 的档案系统那一行,把原来 defaults 的关键字改成 usrquota,grpquota, 如果原来已经不是 defaults,是其他设定,需要在原来的设定后加上 usrquota,grpquota, 我原来的只是 defaults,所以只需直接修改:

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

上面的例子是设定根目录,但需要重新开机才会生效,要立即生效可以执行 mount 指令重新挂载:

$ sudo mount -o remount /

要留意上面的 usrquota,grpquota,只用逗号分号分隔,不可以加入空格,否则会出现以下报错:

mount: /etc/fstab: parse error

这样需要改好 /etc/fstab 档案,再重新执行 mount 指令。

档案系统支援 quota 后,第一次需要执行 quotacheck 指令,这个指令会建立 /aquota.user 及 /aquota.group 两个档案,这两个档案包含了档案系统的限制及使用状况。

$ sudo quotacheck -ugm /

重新开机会把 quota 模组加载 kernel,如果不想重新开机,可以执行以下指令:

$ sudo modprobe quota_v1 -S 5.4.0-99-generic
$ sudo modprobe quota_v2 -S 5.4.0-99-generic

上面的版本号需要根据上面用 find 指令找到的模组版本号输入。

接着开启 quota:

$ sudo quotaon -v /

现在可以设定使用者的硬盘空间限制,例如要设定帐号 ltsplus 的 quota,执行以下指令:

$ sudo setquota -u ltsplus 1000M 1000M 0 0 /

以上指令会设定帐号 ltsplus 的空间限制为 1000MB,要检视使用者的 quota 设定,可以执行以下指令:

$ sudo quota -vs ltsplus

Leave a Reply