)
Linux命令-repquota显示磁盘配额使用报告快速参考基本语法安装配额工具配置磁盘配额简明步骤repquota 输出详解常用选项设置用户配额使用 edquota监控配额使用情况用户查看自己的配额关闭配额故障排查总结快速参考repquota用于生成文件系统的磁盘配额使用报告。磁盘配额Quota是 Linux 系统中限制用户或组占用磁盘空间的机制。repquota可以显示哪些用户/组接近配额限制帮助系统管理员监控磁盘使用情况防止个别用户占用过多存储空间。前置条件使用repquota前需要确保文件系统已挂载时启用了配额支持usrquota, grpquota已创建配额数据库文件aquota.user, aquota.group已启用配额服务quotaon基本语法# 基本语法repquota[选项]文件系统...# 查看根文件系统的配额报告sudorepquota /# 查看所有已启用配额的文件系统sudorepquota-a# 以人类可读格式显示sudorepquota-s/home# 查看指定文件系统的配额报告sudorepquota /home /var安装配额工具# Debian/Ubuntusudoaptupdatesudoaptinstallquota# RHEL/CentOSsudoyuminstallquota# Arch Linuxsudopacman-Squota-tools# 验证安装whichrepquota repquota--version配置磁盘配额简明步骤# 步骤1修改 /etc/fstab启用配额 # 编辑 /etc/fstab在目标文件系统的挂载选项中添加 usrquota,grpquota# 示例修改前# /dev/sda2 /home ext4 defaults 0 2## 修改后# /dev/sda2 /home ext4 defaults,usrquota,grpquota 0 2# 实际操作sudocp/etc/fstab /etc/fstab.baksudovim/etc/fstab# 在 /home 所在行的第4列挂载选项添加 usrquota,grpquota# 步骤2重新挂载文件系统 sudoumount/homesudomount-oremount /home# 或者重启系统sudoreboot# 步骤3创建配额数据库文件 sudoquotacheck-cug/home# -c创建新配额文件# -u用户配额# -g组配额# 检查是否创建了数据库文件ls-l/home/aquota.*# 输出# -rw------- 1 root root 8192 Jan 10 14:30 /home/aquota.group# -rw------- 1 root root 8192 Jan 10 14:30 /home/aquota.user# 步骤4启用配额 sudoquotaon /home# 或者启用所有文件系统的配额sudoquotaon-a# 验证配额已启用sudoquotaon-p/home# 输出group quota on /home (/dev/sda2) is on# user quota on /home (/dev/sda2) is onrepquota 输出详解# 执行 repquotasudorepquota-a# 输出示例# *** Report for user quotas on device /dev/sda2# Block grace time: 7days; Inode grace time: 7days# Block limits File limits# User used soft hard grace used soft hard grace# ----------------------------------------------------------------------# root -- 102400 0 0 12345 0 0# user1 - 95000 80000 100000 6days 850 1000 1500# user2 - 100000 80000 100000 1200 1000 1500 5days## *** Report for group quotas on device /dev/sda2# ...组配额报告# 输出字段说明# User 用户名# used 已使用的块数1块1KB除非使用 -s 选项# soft 软限制超过后警告宽限期内仍可写入# hard 硬限制绝对不能超过的限制# grace 宽限时间超过软限制后还剩多少时间可以写入# used (右) 已使用的 inode 数文件数# soft (右) 文件数软限制# hard (右) 文件数硬限制# 标志说明第2列# -- 未超过软限制# - 超过软限制但在宽限期内# - 超过硬限制通常不会发生因为硬限制会阻止写入# 超过软限制和硬限制# 使用 -s 选项以人类可读格式显示sudorepquota-s/home# 输出示例大小以 K/M/G 显示# User used soft hard grace used soft hard grace# user1 - 92.8M 78.1M 97.7M 6days 850 1000 1500常用选项# -a, --all 报告所有已启用配额的文件系统sudorepquota-a# -s, --human-readable 以人类可读格式显示K/M/Gsudorepquota-s/home# -g, --group 显示组配额报告sudorepquota-g/home# -u, --user 显示用户配额报告默认sudorepquota-u/home# -v, --verbose 显示详细信息包括未使用配额的用户sudorepquota-v/home# -p, --raw-grace 以秒为单位显示宽限时间而不是天/小时sudorepquota-p/home# -i, --no-autofs 忽略 autofs 挂载点sudorepquota-a-i# -c, --cache 使用缓存的配额数据更快sudorepquota-c/home# -C, --nocache 不使用缓存直接从磁盘读取sudorepquota-C/home# 组合使用sudorepquota-as# 所有文件系统 人类可读sudorepquota-vsg/home# 详细 人类可读 组配额设置用户配额使用 edquota# 为指定用户设置配额sudoedquota-uusername# 会打开编辑器通常是 vi显示类似以下内容# Disk quotas for user username (uid 1001):# Filesystem blocks soft hard inodes soft hard# /dev/sda2 0 80000 100000 0 1000 1500## 修改 soft 和 hard 值后保存退出# 参数说明# blocks 已使用的块数不要修改# soft 块数软限制用户可以超过但有宽限期# hard 块数硬限制用户不能超过# inodes 已使用的 inode 数文件数# soft 文件数软限制# hard 文件数硬限制# 设置宽限期默认7天sudoedquota-t# 会打开编辑器可以修改宽限期# Grace period before enforcing soft limits for users:# Time units may be: days, hours, minutes, or seconds# /dev/sda2 7days 7days## 可以改为# /dev/sda2 1days 1days# 将某个用户的配额复制给另一个用户sudoedquota-puser1 user2 user3# 将 user1 的配额复制给 user2 和 user3监控配额使用情况# 1. 定期检查配额使用情况可以加入 cron#!/bin/bash# 配额监控脚本# 设置警告阈值已使用超过软限制的 90% 就警告WARNING_THRESHOLD0.9# 获取所有用户的配额信息repquota-a|tail-n4|whilereadline;do# 跳过空行和标题行[[-z$line]]continue[[$line*Report for*]]continue# 提取用户名、已使用、软限制user$(echo$line|awk{print $1})used$(echo$line|awk{print $2})soft$(echo$line|awk{print $3})# 跳过软限制为 0 的用户未设置配额[[$soft0]]continue# 计算使用百分比if[[$soft-gt0]];thenpercent$(echoscale2;$used/$soft* 100|bc)# 如果使用超过阈值发送警告if(($(echo $percent90|bc-l)));thenecho警告用户$user已使用${percent}% 的配额${used}K/${soft}K# 在这里添加发送邮件告警的代码# mail -s 配额警告 adminexample.com 用户 $user 配额即将用尽fifidone# 2. 查找接近配额限制的用户sudorepquota-a|awk$2 $3 * 0.8 $3 0 {print $1 已使用 $2 K超过软限制的 80%}# 3. 生成配额使用报告HTML 格式便于邮件发送#!/bin/bashechohtmlbodyh1磁盘配额使用报告/h1presudorepquota-asecho/pre/body/htmlquota_report.html用户查看自己的配额# 用户可以使用 quota 命令查看自己的配额quota-s# 输出示例# Disk quotas for user user1 (uid 1001):# Filesystem space quota limit grace files quota limit grace# /dev/sda2 92.8M 78.1M 97.7M 6days 850 1000 1500# 查看指定用户的配额需要 rootsudoquota-uusername# 查看组配额quota-g# 以人类可读格式显示quota-s关闭配额# 临时关闭配额不影响配置sudoquotaoff /home# 或者关闭所有sudoquotaoff-a# 永久关闭配额需要从 /etc/fstab 移除 usrquota,grpquota 选项sudovim/etc/fstab# 删除 ,usrquota,grpquota# 然后重新挂载sudomount-oremount /home故障排查# 问题1repquota 报错 quota not enabled# 解决启用配额sudoquotaon /home# 问题2repquota 报错 cannot find quota file# 解决创建配额数据库文件sudoquotacheck-cug/homesudoquotaon /home# 问题3修改配额后不生效# 解决重新启用配额sudoquotaoff /homesudoquotacheck-vug/homesudoquotaon /home# 问题4宽限期不生效# 解决检查宽限期设置sudoedquota-t# 确保宽限期已设置不是 0# 问题5repquota 显示的数据不准确# 解决重新扫描文件系统sudoquotacheck-vug/home总结核心价值repquota是监控磁盘配额使用情况的关键工具帮助管理员防止磁盘空间被个别用户耗尽。最佳实践为所有用户设置合理的软限制和硬限制定期检查配额使用情况可以设置 cron 任务当用户接近软限制时发送警告邮件合理设置宽限期默认7天通常合适常用组合repquota -a查看所有文件系统的配额repquota -s /home以人类可读格式查看edquota -u user编辑用户配额quotaon /home启用配额quotaoff /home关闭配额⚠️ 注意配额是基于文件系统的如果需要为用户家目录设置配额需要确保家目录所在的分区启用了配额支持。