磁盘配额是Linux系统中限制用户或组在指定文件系统(分区)内磁盘空间使用量的核心机制,旨在防止单个用户/组过度占用资源,保障系统稳定运行。其核心特性包括:
常见文件系统如ext4、XFS均支持磁盘配额,但需在挂载时启用对应选项。通过mount命令查看当前挂载信息,若输出中包含usrquota(用户级)和/或grpquota(组级)参数,则表示已启用;若未启用,需修改/etc/fstab文件。
多数Linux发行版默认未安装配额管理工具,需手动安装:
sudo apt install quota;sudo yum install quota。使用文本编辑器(如vim)打开/etc/fstab,在需要启用配额的文件系统挂载行末尾添加usrquota(用户级)和/或grpquota(组级)选项,以/dev/sdb1挂载到/data为例:
/dev/sdb1 /data ext4 defaults,usrquota,grpquota 0 0
修改完成后,保存文件并通过以下命令重新挂载(或重启系统):
sudo mount -o remount /data # 重新挂载指定分区
# 或 sudo reboot # 重启系统使配置生效
通过mount | grep sdb1验证是否成功启用:
/dev/sdb1 on /data type ext4 (rw,usrquota,grpquota)
使用quotacheck命令扫描文件系统,生成存储配额信息的隐藏文件(aquota.user用于用户配额,aquota.group用于组配额):
sudo quotacheck -cugm /data
参数说明:
-c:创建配额文件(若不存在);-u:检查用户配额;-g:检查组配额;-m:强制检查(不卸载文件系统)。使用quotaon命令手动开启指定文件系统的配额限制:
sudo quotaon -vug /data
参数说明:
-v:显示详细操作信息;-u:开启用户配额;-g:开启组配额。sudo quotaon -avug。使用edquota命令编辑用户或组的配额设置:
设置用户配额(以用户zhu为例):
sudo edquota -u zhu
执行后会进入vi编辑界面,重点修改以下参数(单位:KB):
Disk quotas for user zhu (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 40 1500000 2000000 5 0 0
参数说明:
blocks:当前已使用空间;soft:磁盘容量的软限制(如1.5GB);hard:磁盘容量的硬限制(如2GB);inodes:当前已使用文件数;soft/hard(inode):文件数量的软/硬限制(如0表示无限制)。设置组配额(以组teacher为例):
sudo edquota -g teacher
操作逻辑与用户配额一致,设置后组内所有用户的配额总和不能超过限制。
软限制超过后,系统会进入宽限期(默认7天),用户可在宽限期内继续写入数据,但会收到警告。使用edquota -t命令修改宽限期:
sudo edquota -t
进入编辑界面后,修改时间单位(如7days、3days或12hours):
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/sdb1 7days 7days
查看指定用户的配额:
sudo quota -u zhu
输出示例:
Disk quotas for user zhu (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 40 1500000 2000000 5 0 0
参数说明:grace列显示剩余宽限期(未超软限制则为空)。
查看所有用户的配额:
sudo repquota /data
输出示例:
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
zhu 40 1500000 2000000 5 0 0
root -- 156232 0 0 166 0 0
用户自身查看配额:
普通用户可通过quota命令查看自己的配额:
quota -u $(whoami)
若需为多个用户设置相同配额,可使用edquota -p命令复制已有用户的配额:
sudo edquota -p zhu -u li # 将用户zhu的配额复制给用户li
执行后,用户li的配额将与zhu一致。
若需临时或永久关闭配额,使用quotaoff命令:
sudo quotaoff /data
sudo quotaoff -a
参数说明:-a表示所有文件系统。
/)启用配额,否则可能导致系统无法启动或root用户无法登录;同样,不建议对root用户设置配额。usrquota/grpquota的文件系统内有效,未设置的文件系统不受限制。edquota设置配额,无需额外操作;旧版本可能需要先运行quotacheck初始化。