在Linux服务器运维场景中,磁盘配额是管理存储资源的重要手段,通过它可以限制指定用户或用户组能够使用的磁盘空间大小,防止个别用户占用过多存储影响其他服务的正常运行。无论是个人开发环境还是企业级服务器,合理设置磁盘配额都能提升存储资源的利用率。

设置磁盘配额的前期准备
首先需要确认系统已经安装了quota工具包,如果没有安装可以通过对应发行版的包管理器进行安装。以CentOS系统为例,安装命令如下:
# 安装quota工具包 yum install -y quota
其次要确认目标磁盘使用的文件系统类型,不同的文件系统配置磁盘配额的步骤存在差异,常见的文件系统为ext4和xfs,可以通过以下命令查看磁盘的文件系统类型:
# 查看磁盘文件系统类型 df -Th
ext4文件系统下设置磁盘配额
1. 开启文件系统的配额支持
需要修改/etc/fstab文件,在对应磁盘的挂载选项中添加usrquota和grpquota参数,分别开启用户配额和组配额支持。假设我们要对/dev/sdb1挂载到/data的磁盘设置配额,修改前/etc/fstab对应行内容如下:
/dev/sdb1 /data ext4 defaults 0 0
修改后内容为:
/dev/sdb1 /data ext4 defaults,usrquota,grpquota 0 0
修改完成后重新挂载磁盘使配置生效:
# 重新挂载/data分区 mount -o remount /data
2. 生成配额数据库文件
执行以下命令生成配额数据库文件,首次执行会创建 aquota.user和aquota.group两个文件,分别存储用户和组的配额信息:
# 生成配额数据库文件 quotacheck -cugv /data
参数说明:-c表示创建新的配额文件,-u扫描用户配额,-g扫描组配额,-v显示执行过程。
3. 开启配额功能
执行以下命令开启指定分区的配额功能:
# 开启/data分区的配额功能 quotaon /data
4. 配置用户配额规则
使用edquota命令为用户设置配额,比如为用户testuser设置配额:
# 编辑testuser的配额规则 edquota -u testuser
执行命令后会打开一个编辑界面,内容如下:
Disk quotas for user testuser (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 102400 204800 0 0 0
各字段含义:blocks是当前已使用的磁盘块数,soft是软限制(单位KB,超过后会有宽限期),hard是硬限制(单位KB,绝对不能超过),inodes是当前已使用的文件数,后面两个soft和hard是文件数的软硬限制。上面的配置表示限制testuser最多使用200MB磁盘空间,超过100MB后会进入宽限期。
5. 验证配额是否生效
切换到testuser用户,尝试创建大文件验证配额是否生效:
# 切换到testuser用户 su - testuser # 创建150MB的测试文件 dd if=/dev/zero of=/data/testfile bs=1M count=150
如果配置生效,创建超过软限制的文件时会有警告提示,超过硬限制时会创建失败。
xfs文件系统下设置磁盘配额
1. 开启文件系统的配额支持
xfs文件系统的配额配置和ext4有所不同,同样需要修改/etc/fstab文件,在挂载选项中添加uquota和gquota参数,比如/dev/sdc1挂载到/xfsdata的xfs分区,修改前内容:
/dev/sdc1 /xfsdata xfs defaults 0 0
修改后内容:
/dev/sdc1 /xfsdata xfs defaults,uquota,gquota 0 0
重新挂载分区使配置生效:
# 重新挂载xfsdata分区 mount -o remount /xfsdata
2. 配置用户配额规则
xfs文件系统不需要单独生成配额数据库文件,直接通过xfs_quota命令配置即可,比如为用户testuser设置配额:
# 设置testuser在/xfsdata分区的配额为硬限制200MB,软限制100MB xfs_quota -x -c "limit -u bsoft=100m bhard=200m testuser" /xfsdata
参数说明:-x表示开启专家模式,-c后面跟要执行的命令,bsoft是块软限制,bhard是块硬限制,单位可以是m(兆)、g(吉)等。
3. 验证配额是否生效
同样切换到testuser用户,创建测试文件验证:
# 切换到testuser用户 su - testuser # 创建250MB的测试文件 dd if=/dev/zero of=/xfsdata/testfile bs=1M count=250
如果配置正确,创建超过200MB的文件时会提示空间不足,无法创建。
磁盘配额的日常维护
可以通过以下命令查看用户的配额使用情况:
# 查看testuser的配额使用情况 quota -u testuser
如果需要关闭某个分区的配额功能,执行以下命令:
# 关闭/data分区的配额功能 quotaoff /data
设置配额时需要注意,软限制的宽限期默认是7天,可以通过edquota -t命令修改宽限期时长。另外,配额规则只对普通用户生效,对root用户默认不生效,如果需要限制root用户的配额,需要额外配置相关参数。