磁碟配額 (Disk Quota) 以檔案系統 (分區) 為單位,限制用戶/群組的磁碟空間與 inode 使用量,防止單一用戶佔滿磁碟導致服務癱瘓。本文詳細記錄從核心支援、檔案系統掛載、配額檔案建立、限額設定、寬限期配置到啟用/關閉/稽核的完整流程。
CONFIG_QUOTA、CONFIG_QUOTACTL (現代發佈版預設開啟)。dnf install quota -y (含 quotacheck, edquota, quotaon/off, repquota)。/dev/sda7 /home ext4 defaults,usrquota,grpquota 1 2
# usrquota: 用戶配額
# grpquota: 群組配額
# xfs 檔案系統改用 usrquota/grpquota (同參數),但工具為 xfs_quota
mount -o remount /home
# 或 reboot
cd /home
touch aquota.user aquota.group
chmod 600 aquota.user aquota.group
quotacheck -cug /home
# -c: 建立新檔 (忽略舊檔)
# -u: 掃描用戶
# -g: 掃描群組
# -v: 顯示進度
# 若分區為 read-write 掛載且無法卸載,加 -m 強制 (有資料不一致風險)
# 編輯用戶 user1 軟/硬限額 (區塊與 inode)
edquota -u user1
# 編輯群組
edquota -g group1
# 批量套用範本用戶 protuser 給 user1 user2 user3
edquota -p protuser user1 user2 user3
編輯器畫面說明:
Soft < Hard,給用戶緩衝空間。
edquota -t
# Grace period before enforcing soft limits for users:
# Time units: days, hours, minutes, seconds
# Filesystem Block grace period Inode grace period
# /dev/sda7 7days 7days
# 修改後存檔離開
quotaon -uv /home # -u 用戶 -v 顯示過程 -g 群組
# 輸出: /dev/sda7 [/home]: user/group quotas turned on
quota -u user1 # 查看單用戶配額
repquota -a # 所有分區完整報表
repquota -u /home # 僅用戶報表
| 操作 | 指令 | 備註 |
|---|---|---|
| 暫停配額 | quotaoff /home | 不刪除 aquota.* 檔案 |
| 重新啟用 | quotaon /home | |
| 強制掃描 (掛載中) | quotacheck -mfv /home | -m 強制 RW, -f 強制建立, 建議單用戶模式 |
| 修改現有限額 | edquota -u user1 | 即時生效 |
| 查看核心配額統計 | cat /proc/fs/quota |
quotacheck、aquota.* 檔案。usrquota,grpquota,prjquota (專案配額)。xfs_quota -x -c 'limit bsoft=10g bhard=12g user1' /mount。xfs_quota -x -c 'report -h' /mount。quotacheck 在配額已啟用的 RW 分區執行會警告,需加 -mf 或進入單用戶模式。quotactl 且掛載傳遞正確。磁碟配額是多用戶共享儲存環境的基礎防線。遵循「掛載選項 → 建立索引 → 設定軟/硬限額 → 寬限期 → 啟用 → 定期稽核」標準流程,配合 repquota 納入監控告警,即可有效避免磁碟寫滿事故。