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