当前位置: 首页 > news >正文

Linux命令-quotacheck(检查磁盘配额数据库)

Linux命令-quotacheck(检查磁盘配额数据库)

    • 快速参考
    • 命令语法
    • 常用选项
    • 工作原理
    • 实战示例
      • 1. 首次启用配额
      • 2. 定期维护检查
      • 3. 大型文件系统的检查策略
      • 4. 故障恢复
      • 5. XFS 配额检查(特殊)
      • 6. 自动化配额检查
    • 发行版差异
    • 相关命令
    • 总结

快速参考

quotacheck是 Linux 磁盘配额管理的关键工具,用于扫描文件系统并构建/修复配额数据库文件(aquota.useraquota.group)。它在首次启用配额之前运行以初始化数据库,也在系统崩溃后运行以修复不一致的配额数据。简单来说,quotacheck回答的是"文件系统上每个用户当前实际用了多少空间"这个问题。

配额数据库就像一本"账本",quotacheck就是"对账"的过程。系统崩了?配额数据乱了?运行quotacheck重新盘点一遍,确保配额限制是基于真实的存储使用情况。

命令语法

quotacheck [选项] 文件系统...

常用选项

选项功能
-c创建新的配额文件(覆盖旧的)
-v详细输出(显示扫描过程)
-u检查用户配额
-g检查组配额
-a检查所有挂载的文件系统(需有配额选项)
-m不重新挂载为只读(在已挂载时强制检查)
-f强制检查(即使配额已经启用)
-R排除根文件系统
-M不创建新的配额文件(只报告情况)
-n不扫描文件系统(使用缓存/内核数据)
-i交互模式(询问确认)
-d调试模式
-F指定配额格式(vfsold/vfsv0/vfsv1/rpc/xfs)

工作原理

quotacheck 的扫描过程: 1. 遍历文件系统的每个 inode 2. 记录每个文件/目录的所有者(UID)和所属组(GID) 3. 汇总每个用户的:"总块数" 和 "总文件数" 4. 写入配额文件(aquota.user / aquota.group) 5. 更新内核配额子系统 ⚠️ 对于大型文件系统(TB 级),这个过程可能需要很长时间!

实战示例

1. 首次启用配额

# 步骤1:准备 /etc/fstab(添加 usrquota,grpquota)$cat/etc/fstab|grepsda1UUID=abc123 / ext4 defaults,usrquota,grpquota01# 步骤2:重新挂载文件系统$sudomount-oremount /# 步骤3:验证挂载选项$mount|grep' / '/dev/sda1 on /typeext4(rw,relatime,usrquota,grpquota)# 步骤4:创建配额数据库文件(-c 创建,-u 用户,-g 组,-v 详细)$sudoquotacheck-cugv/ quotacheck: Scanning /dev/sda1[/]donequotacheck: Cannotstatold userquotafile/aquota.user: No suchfileor directory quotacheck: Cannotstatold groupquotafile/aquota.group: No suchfileor directory quotacheck: Checked15342directories and128567files quotacheck: Oldfilenot found. quotacheck: Oldfilenot found.# 步骤5:验证创建的配额文件$ls-l/aquota.* -rw-------1root root16384Jun1410:00 /aquota.group -rw-------1root root16384Jun1410:00 /aquota.user# 文件权限必须为 600(仅 root 可读写)$sudochmod600/aquota.user /aquota.group

2. 定期维护检查

# 日常检查(不创建新文件,只更新)$sudoquotacheck-vug/ quotacheck: Scanning /dev/sda1[/]donequotacheck: Checked15350directories and128600files# 强制检查(即使配额已启用)$sudoquotacheck-f-vug/# 检查所有启用配额的文件系统$sudoquotacheck-avug# 调试模式(看更详细的输出)$sudoquotacheck-d-vug/# 检查时强制卸载文件系统(更安全但需停机)$sudoquotacheck-cugv/home# 仅报告不修改(-M)$sudoquotacheck-Mvug/# 会显示每个用户的用量,但不更新配额文件

3. 大型文件系统的检查策略

# 对于大型文件系统(>1TB),quotacheck 可能运行数小时# 优化策略:# 1. 在系统启动时自动运行(在 /etc/rc.local 或 systemd 服务中)$cat>/etc/systemd/system/quotacheck.service<<'EOF' [Unit] Description=Filesystem Quota Check Before=quotaon.service ConditionPathExists=/aquota.user [Service] Type=oneshot ExecStart=/sbin/quotacheck -avug RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF# 2. 挂载为只读后检查(避免数据变化)$sudomount-oremount,ro /data $sudoquotacheck-cugv/data $sudomount-oremount,rw /data# 3. 后台执行(nohup)$sudonohupquotacheck-avug>/tmp/quotacheck.log2>&1&# 4. 监控进度(通过查看日志)$tail-f/tmp/quotacheck.log# 5. 多个文件系统并行检查$sudoquotacheck-vug/home&$sudoquotacheck-vug/data&wait

4. 故障恢复

# 场景1:系统崩溃后配额数据不一致# 修复流程:$sudoquotaoff-a# 先关闭配额$sudoquotacheck-cugv/# 重建配额数据库$sudoquotaon-a# 重新启用配额# 场景2:配额文件损坏$ls-l/aquota.user -rw-------1root root0Jun1410:00 /aquota.user# 文件大小 0!说明已损坏$sudoquotaoff /# 关闭配额$sudorm/aquota.user /aquota.group $sudoquotacheck-cugv/# 重新创建$sudoquotaon /# 场景3:显示 "Cannot get exact used space"# quotacheck 扫描时文件系统正在被写入# 解决方案:用 -m 选项(不重新挂载,但结果可能略有误差)$sudoquotacheck-m-vug/# 场景4:quota 命令报 "No quota format detected"# 重新创建配额文件$sudoquotaoff-a$sudoquotacheck-cugv/ $sudoquotaon-a

5. XFS 配额检查(特殊)

# XFS 文件系统使用不同的配额机制# 配额数据存储在文件系统元数据中,不需要独立的 quota 文件# XFS 挂载选项$cat/etc/fstab|grepxfsUUID=xyz789 /data xfs defaults,uquota,gquota00# ^^^^^^ XFS 专属选项(不是 usrquota)# XFS 的 quotacheck 不需要 "-c" 创建文件# 只需挂载时指定配额选项$sudomount-ouquota,gquota /dev/sdb1 /data $sudoxfs_quota-x-c'report -u'/data# XFS 配额检查(检查自动进行,无需手动 quotacheck)$sudoxfs_quota-x-c'check'/data# XFS 会在挂载时自动检查配额一致性# 对比:# ext4: quotacheck -cugv 创建 aquota.user/aquota.group# XFS: 配额是文件系统的一部分,挂载时 uquota/gquota 自动激活

6. 自动化配额检查

# 创建配额维护脚本$cat>/usr/local/sbin/quota_maintenance.sh<<'SCRIPT' #!/bin/bash set -e FS_LIST="/ /home /data" LOG="/var/log/quota_check.log" echo "=== $(date) ===" >> "$LOG" for fs in $FS_LIST; do if mount | grep -q "on $fs "; then has_quota=$(mount | grep "on $fs " | grep -oE '(usrquota|uquota|grpquota|gquota)') if [ -n "$has_quota" ]; then echo "Checking: $fs" >> "$LOG" quotacheck -avug "$fs" >> "$LOG" 2>&1 || { echo "ERROR: quotacheck failed on $fs" >> "$LOG" } else echo "Skip: $fs (no quota enabled)" >> "$LOG" fi else echo "Skip: $fs (not mounted)" >> "$LOG" fi done echo "Done." >> "$LOG" SCRIPT$sudochmod+x /usr/local/sbin/quota_maintenance.sh# 添加 cron 任务(每月 1 号 凌晨 2 点)$echo"0 2 1 * * root /usr/local/sbin/quota_maintenance.sh"|sudotee/etc/cron.d/quota-check

发行版差异

文件系统配额工具配额文件位置
ext2/3/4quota-tools/aquota.user,/aquota.group
XFSxfs_quota内部(元数据)
Btrfsbtrfs qgroup内部(元数据)
ZFSzfs userspace内部(数据集属性)
# 查看文件系统类型$df-T/ Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda1 ext450858880305149122034396860% /

相关命令

命令功能
quotacheck创建/检查配额数据库
quotaon启用配额
quotaoff禁用配额
repquota报告配额使用
edquota编辑配额限制
setquota设置配额限制
xfs_quotaXFS 配额管理

总结

quotacheck是配额系统的"对账员":

  • -cugv:创建新的配额数据库(首次使用)
  • -avug:检查所有文件系统
  • -f:强制检查(配额已启用时)
  • -m:不重新挂载(在线检查,结果可能不精确)

记住这个黄金流程:

sudoquotaoff-a# 关闭所有配额sudoquotacheck-cugv/# 重建配额数据库sudoquotaon-a# 重新启用配额

XFS 用户注意:XFS 不需要aquota.user文件,配额是文件系统的原生功能。用xfs_quota而不是quotacheck

http://www.cnnetsun.cn/news/3067962.html

相关文章:

  • 【选型指南】TTL与CMOS芯片型号速查与应用场景解析
  • 主机故障排查,首选在线Ping检测
  • 从原理到实战:GJK算法在游戏物理引擎中的高效实现
  • HTTP安全观测站部署指南:Docker与本地安装方案详解
  • STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)实战:从配置到波形分析的完整指南
  • 《另一个伊甸》火队新核心‘花咲’保姆级攻略:从技能解析到实战配队(附红白珠机制详解)
  • Laya Shader核心语法与渲染管线实战解析
  • 解锁微信小程序NFC能力:从零实现标签读取与数据写入
  • 2026巴音黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • 【onnx】——ScatterND算子:从PyTorch切片赋值到ONNX模型部署的桥梁
  • 机器学习工程化:可复现实验流程的系统性设计方法
  • 联邦学习与拆分学习的融合新范式:SplitFed如何实现效率与隐私的兼得
  • STM32G4的FDCAN滤波器到底怎么配?手把手教你用HAL库搞定数据帧和广播帧过滤
  • Steam游戏自动破解终极指南:3步搞定SteamStub解包与Goldberg模拟器应用
  • 百考通AI 5分钟生成高质量文献综述
  • SVG-Edit:三分钟在浏览器中创建专业矢量图形的秘诀
  • 基于OpenCVE构建企业级漏洞监控体系:从原理到实战部署
  • 从原理到选型:5大主流LED调光技术深度解析
  • 健康饮食小程序-springboot + vue +微信小程序
  • WarcraftHelper完整教程:让魔兽争霸3在现代电脑上焕发新生的终极解决方案
  • 记录redis学习
  • 小米手机投屏到电脑:小米互联+Phone Link+远程软件
  • VL822 USB3.1 Gen2 HUB芯片选型与Type-C扩展坞设计实战
  • 大模型MoE架构原理:稀疏激活与专家路由技术解析
  • XZ6215输入电压6.5V,输出电压1.2-5.0V,输出电流300mA,CMOS降压型电压稳压器
  • 智科毕设新颖的开题大全
  • Web身份验证漏洞攻防实战:从暴力破解到MFA绕过的全面防御指南
  • 【ANSYS Sherlock实战指南】第一步:ODB++文件导入与属性映射详解
  • AntiDupl.NET架构深度解析:现代图像去重技术的工程实现
  • 在openEuler 22.03 LTS上实战部署Docker:从源配置到避坑指南