xfs_quota 命令文档

xfs_quota 命令文档

概述

xfs_quota 是一个用于在 XFS 文件系统上管理和报告磁盘空间配额的工具。它支持用户、组和项目配额,允许管理员限制和监控磁盘使用量及 inode 数量。该工具支持交互模式和命令行模式。


语法

xfs_quota [ -x ] [ -c cmd ] ... [ -p prog ] [ path ... ]

基本用法

  • 直接运行 xfs_quota 进入交互模式。
  • 使用 -c 选项指定非交互命令。
  • path 参数指定要管理的文件系统(例如 / 或 /home)。

选项

以下选项控制 xfs_quota 的行为:

选项描述
-c cmd指定非交互执行的命令。可使用多个 -c 选项来链式执行命令。
-p prog设置错误消息的程序名称(默认:xfs_quota)。适用于脚本。
-x启用专家模式,对修改配额设置的命令(例如设置限额、启用/禁用配额)必需。没有 -x,只能执行报告命令。
-D file指定替代的 /etc/projects 文件,用于项目配额映射。
-P file指定替代的 /etc/projid 文件,用于项目 ID 定义。
-d defaults指定配额设置的默认文件(与 restore 或 dump 一起使用)。

解释

  • 专家模式 (-x):对管理任务(如设置或清除配额)至关重要。没有此选项,类似 limit、project -c 或 off 的命令会失败。
  • 自定义文件 (-D, -P):在非标准环境或测试中管理配额时有用。
  • 非交互模式 (-c):适合脚本或自动化任务。

子命令

xfs_quota 支持多种子命令,用于管理和报告配额。以下按功能分类列出所有子命令,并附解释。

配额报告

这些命令显示配额使用情况和限额。

子命令描述
report [-bir] [-gpu] [-ahnt] [-f file]报告用户(-u)、组(-g)或项目(-p)的配额信息。
print列出启用了配额的文件系统。
`df [-bir] [-G-P
`state [-g-p

report 和 df 的选项

  • -b:报告块使用量(默认)。
  • -i:报告 inode 使用量。
  • -r:报告实时分区使用量(如果适用)。
  • -g, -p, -u:选择组、项目或用户配额。
  • -a:报告所有启用了配额的文件系统。
  • -h:人类可读输出(例如 1.2G 而非 1234567 块)。
  • -n:显示数字 ID 而非名称。
  • -t:按使用量排序输出。
  • -f file:将输出写入文件而非 stdout。
  • 针对 df:
    • -G, -P, -U:按组、项目或用户配额过滤。
    • -H:省略输出中的头部。

示例

  • 报告用户配额(人类可读格式):

    xfs_quota -x -c 'report -u -h' /

  • 显示项目 ID #22 的配额:

    xfs_quota -x -c 'report -p -h -L 22 -U 22' /

解释

  • report 是检查配额使用情况的主要命令,显示已用块/inode、软/硬限额及宽限期。
  • print 用于识别哪些文件系统启用了配额。
  • state 用于验证配额是否被强制执行或仅统计。

配额管理

这些命令修改配额设置,需启用专家模式(-x)。

子命令描述
`limit [-gpu] b{softhard}= i{soft
timer [-gpu] [-bir] 设置超过软限额的宽限期(例如 7days)。
enable [-gpu] [-v]启用用户、组或项目配额的强制执行。
disable [-gpu] [-v]禁用配额强制执行,但保留统计功能。
off [-gpu] [-v]完全禁用配额,包括统计功能。
remove [-gpu] [-v]删除指定用户、组或项目的配额条目。

选项

  • -g, -p, -u:应用于组、项目或用户配额。
  • -b, -i, -r:影响块、inode 或实时配额。
  • bsoft, bhard:软/硬块限额。
  • isoft, ihard:软/硬 inode 限额。
  • :用户、组或项目名称/ID。
  • -v:详细输出。

示例

  • 为用户 john 设置 10GB 硬块限额:

    xfs_quota -x -c 'limit -u bhard=10g john' /

  • 为项目配额设置 7 天宽限期:

    xfs_quota -x -c 'timer -p block 7days' /

  • 启用项目配额强制执行:

    xfs_quota -x -c 'enable -p' /

解释

  • limit 用于强制限制磁盘使用量。
  • timer 控制用户超过软限额的时间。
  • enable/disable/off 切换配额强制执行级别,off 停止所有配额跟踪。
  • remove 清除配额条目,适用于删除用户或项目。

项目配额管理

这些命令管理 XFS 项目配额,适用于特定目录或子树。

子命令描述
project -c [-r] [-P projid] 清除目录或文件的项目 ID 分配。
project -C [-r] [-P projid] 强制清除项目 ID,即使被使用。
project -s [-r] [-P projid] 为目录或子树设置项目 ID。
project -d [-P projid] 限制设置/清除项目 ID 的递归深度。
project -D 从文件初始化项目配额。

选项

  • -c:清除项目 ID。
  • -C:强制清除项目 ID。
  • -s:设置项目 ID。
  • -r:对目录递归操作。
  • -P projid:指定项目 ID(例如 22)。
  • -d :限制递归深度。
  • -D :从文件加载项目定义。

示例

  • 清除目录的项目 ID #22:

    xfs_quota -x -c 'project -c -P 22 /path/to/dir' /

  • 递归为目录设置项目 ID #10:

    xfs_quota -x -c 'project -s -r -P 10 /path/to/dir' /

解释

  • 项目配额允许对特定目录树进行配额管理,适合共享存储或多租户系统。
  • project -c 或 -C 是删除项目 ID 的关键命令,例如你的 ID #22。
  • /etc/projects 和 /etc/projid 文件将项目 ID 映射到路径和名称。

配额备份与恢复

这些命令处理配额数据的导出和导入。

子命令描述
dump [-gpu] [-f file]将配额信息导出到文件以备份。
restore [-gpu] [-f file]从文件恢复配额信息。
quot [-gpu] [-bir] [-hn] [-f file]汇总所有用户、组或项目的配额使用情况。

选项

  • -g, -p, -u:应用于组、项目或用户配额。
  • -b, -i, -r:报告块、inode 或实时使用量。
  • -h:人类可读输出。
  • -n:数字 ID。
  • -f file:指定输入/输出文件。

示例

  • 导出用户配额到文件:

    xfs_quota -x -c 'dump -u -f /backup/quotas.txt' /

  • 恢复项目配额:

    xfs_quota -x -c 'restore -p -f /backup/quotas.txt' /

解释

  • dump 和 restore 用于迁移配额或恢复设置。
  • quot 提供汇总视图,适合审计。

交互模式

子命令描述
quit退出交互模式。
help显示命令帮助。

示例

  • 进入交互模式:

    xfs_quota

  • 在提示符下运行命令,如 report -u 或 quit。

解释

  • 交互模式适合手动探索或管理配额。

配置文件

  • /etc/projects

    :将项目 ID 映射到目录路径。

    • 格式:projid:path
    • 示例:22:/data/project1
  • /etc/projid

    :定义项目名称和 ID。

    • 格式:name:projid
    • 示例:project1:22

解释

  • 这些文件对项目配额管理至关重要。
  • 添加或删除项目 ID 时需更新这些文件。

注意事项

  • 专家模式要求:修改配额的命令(例如 limit、project -c、enable)需要 -x。
  • 文件系统支持:配额需在挂载时启用(例如 quota、pquota 挂载选项)。
  • 宽限期:软限额允许暂时超限,由 timer 控制。
  • 项目配额:需使用 project -s 为目录标记项目 ID。

常见用例

  1. 检查配额使用情况:

    xfs_quota -x -c 'report -h -u' /

  2. 设置用户配额:

    xfs_quota -x -c 'limit -u bsoft=5g bhard=6g john' /

  3. 删除项目 ID(例如 #22):

    xfs_quota -x -c 'project -c -P 22' /

  4. 启用配额

    xfs_quota -x -c 'enable -p' /


故障排除

  • 缺少 -x 导致命令失败:确保为管理任务启用专家模式。
  • 无法删除项目 ID:检查是否仍有文件标记了项目 ID,使用 find / -xdev -ipath ‘projid=22’。
  • 配额未强制执行:验证文件系统是否挂载了配额选项(mount | grep quota)。
  • 项目命令错误:确保 /etc/projects 和 /etc/projid 配置正确。
广州商学院 现代信息产业学院2025—2026学年第1学期 《Linux操作系统与应用》考查内容 一、项目内容 本课程设计考查内容覆盖本学期讲授的全部章节,采用实机操作方式答题,需在科任教师要求截止时间前完成,将各题设计操作结果按步骤编号、截图、并以文字说明操作方法附至题目下方,按照实验报告形式完成,并将完成后的文档提交到学习通。 文档命名方式:学号+姓名.docx 如: 20221209010_张三.docx 考核任务背景说明: 你作为某企业运维工程师,需为公司新购服务器(基于OpenEuler系统)搭建标准化运维环境,涵盖系统安装、用户权限、磁盘管理、网络安全、服务部署全流程。所有操作需在虚拟机中独立完成,确保环境可复现。 1. 任务一:OpenEuler虚拟机环境搭建(10分) 使用VMware Workstation新建虚拟机,安装OpenEuler 24.03 LTS x86_64系统,要求: (1) 总容量20GB,接口类型为SCSI (2) 分区方案:需保留至少5GB未分配空间 (3) 主机名:studentXX-openeuler(XX为学号后两位) (4) 启用root账户,创建初始用户user 2. 任务二:用户与组权限管理(20分) 创建一个基于“班级协作项目”工作环境,便于未来多用户进行操作 (1) 创建组class(GID=学号后三位,如学号20240001则GID=001) (2) 创建用户xxx_user1、xxx_user2(xxx为姓名缩写) (3) 将用户xxx_user1添加至class组 (4) 创建共享目录/data/class_project,属主root,属组class, (5) 在/data/class_project下创建子目录:docs和reports a) docs(仅class组成员可访问) b) reports(仅xxx_user1可写入) c) 使用setfacl为xxx_user2授予reports目录写入权限 (6) 在docs目录创建project_plan.txt,内容为:(xxxxxxx为学生完整学号) “Project Plan for Class Project Student ID: xxxxxxx” (7) 追加个人姓名缩写到project_plan.txt,并展示文件内容 (8) 修改project_plan.txt权限为属主可读写,组内只读 (9) 至xxx_user2,验证其在docs和reports目录的操作权限 (10) 生成/data目录的完整文件树,并检查ACL配置 3. 任务三:磁盘管理与配额(20分) 模拟服务器扩容场景,添加并配置新磁盘 (1) 在VMware中为虚拟机添加1块虚拟磁盘 (容量=学号后一位+1)× 3GB,如学号后两位“05”则18GB (2) 新硬盘设置分区: 分区类型 分区大小 文件系统类型 挂载目录 主分区1 总容量50% ext4 /mnt/devteam1 逻辑分区 逻辑分区1 总容量30% ext4 /mnt/devteam2 逻辑分区2 总容量20% xfs /mnt/devteam3 注:主分区1与逻辑分1为临时挂载,逻辑分区2为自动挂载 (3) 启用配额,设置xxx_user1对/mnt/devteam3的限额为: 软限制:3,硬限制:5(用dd验证) (4) 给初始硬盘添加扩展分区,要求完成创建PV,创建VG,创建LV,格式化并挂载LV,以及动态扩容的操作。 分区类型 分区大小 分区命名 文件系统 挂载目录 特殊说明 物理卷(PV) 5G pv_data LVM基础 卷组(VG) 5G vg_storage 可扩展 逻辑卷(LV) 3G lv_www ext4 /var/www 初始分配 扩展后LV 5G lv_www ext4 /var/www 动态扩容 4. 任务四:Shell脚本开发(20分) 编写2个独立脚本,综合应用Shell编程核心语法,实现自动化运维场景: 脚本1:批量用户生命周期管理(script1.sh) (1) 参数传递:支持-a 用户名(添加用户并加入class组)、-d 用户名(删除用户及家目录) (2) 测试条件选择:若用户不存在则提示创建,存在则提示是否强制删除 (3) 全局变量:定义USER_PREFIX="stu",生成标准化用户名(如stu_001) (4) 键盘读取:允许手动输入用户UID范围(如1000-2000) 脚本2:日志分析统计(script2.sh) (1) 循环机制:遍历/var/log下所有.log文件 (2) 随机数应用:模拟日志生成器并输出到/tmp/test.log (3) 算术运算:统计日志文件大小总和输出到屏幕 (4) 键盘读取:允许用户指定日志文件名过滤条件 以上脚本开头注释必须包含学号水印: # Author: 学号_姓名缩写 提交测试记录包括: ./script1.sh -a stu_$(id -u)测试用户创建(测试xxx_user2) ./script2.sh生成的日志文件/tmp/test.log内容截图 5. 任务五:网络与安全配置(含Samba,Nginx服务)(20分) 验证服务器网络基础功能,排查潜在问题并确保服务可用性 (1) 运行对应命令,截图显示网卡名称、IP地址、MAC地址信息,并说明哪一个字段是对应信息 (2) 使用命令测试连接主机(当前电脑)与外网(百度),并确认防火墙状态 (3) 对防火墙设置开放SSH(22)、HTTP(80)、Samba(445)端口 (4) 查看已安装软件(前5行即可)和当前的软件源 (5) 安装Samba,并用Windows和smbclient测试 a) 创建共享目录/date/samba/xxx_share(xxx为姓名缩写) b) 创建Samba共享账号xxx_smb,并配置/etc/samba/smb.conf: 共享xxx_share,允许xxx_smb读写,其他用户只读 (6) 安装nginx,并本地验证,需显示Nginx欢迎页 (7) 利用MobaXterm工具远程连接管理linux系统,使用命令修改主机名,并重新连接查看到成功 6. 任务六:进程与服务系统管理(10分) 作为企业运维工程师,你需优化公司Web服务器的性能与稳定性。当前服务器运行Nginx服务,但因突发流量导致CPU过载。请通过进程管理、服务控制和资源监控手段解决以下问题: (1) 使用stress-ng工具模拟CPU负载,设置4个CPU进程,持续5分钟 (2) 另开终端显示进行实时进程监控,并把stress-ng进程的PID、CPU占用率、NI值,并截图 (3) 调整其中一个stress-ng进程的NI值调整为-10,并查看当前用户的资源限制 (4) 杀死所有stress-ng进程,并验证当前的资源恢复 (5) 用bash模拟一个多线程任务(启动4个后台sleep线程) (6) 记录进程组的PGID和父进程PID,输出包含进程ID、线程ID、CPU核心编号、CPU占用率,最后再状图显示线程关系,以上记录用截图保存结果 (7) 对已部署Nginx,执行查看状态,设置开机启动,重启,查看依赖关系 (8) 用journalctl查看Nginx最近10条日志,并截图保存 [root@student43-openeuler ~]# sudo xfs_quota -x -c 'report -h' /mnt/devteam3 User quota on /mnt/devteam3 (/dev/sdb6) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] zrs_user1 0 4K 8K 00 [------] [root@student43-openeuler ~]# sudo xfs_quota -x -c 'quota on -u' /mnt/devteam3 xfs_quota: cannot find user on [root@student43-openeuler ~]# sudo vim /etc/fstab [root@student43-openeuler ~]# sudo systemctl daemon-reload [root@student43-openeuler ~]# sudo umount /mnt/devteam3 [root@student43-openeuler ~]# sudo mount /mnt/devteam3 [root@student43-openeuler ~]# mount | grep /mnt/devteam3 /dev/sdb6 on /mnt/devteam3 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,usrquota) [root@student43-openeuler ~]# sudo touch /mnt/devteam3/lost+found/quota.user touch: 无法 touch '/mnt/devteam3/lost+found/quota.user': No such file or directory [root@student43-openeuler ~]# ls -la /mnt/devteam3/ 总计 4 drwxrwxr-x. 2 zrs_user1 class 6 12月20日 03:11 . drwxr-xr-x. 5 root root 4096 12月20日 02:01 .. [root@student43-openeuler ~]# sudo mkdir -p /mnt/devteam3/lost+found [root@student43-openeuler ~]# sudo chmod 700 /mnt/devteam3/lost+found [root@student43-openeuler ~]# sudo chown root:root /mnt/devteam3/lost+found [root@student43-openeuler ~]# sudo touch /mnt/devteam3/lost+found/quota.user [root@student43-openeuler ~]# sudo chmod 600 /mnt/devteam3/lost+found/quota.user [root@student43-openeuler ~]# ls -l /mnt/devteam3/lost+found/ 总计 0 -rw-------. 1 root root 0 12月20日 03:23 quota.user [root@student43-openeuler ~]# su - zrs_user1 上一次登录: 2025年12月20日 星期六 03:12:08 CST 于 pts/0 Welcome to 6.6.0-28.0.0.34.oe2403.x86_64 System information as of time: 2025年 12月 20日 星期六 03:23:44 CST System load: 0.00 Memory used: 5.2% Swap used: 0% Usage On: 31% IP address: 192.168.136.133 IP address: 192.168.122.1 Users online: 1 To run a command as administrator(user "root"),use "sudo <command>". [zrs_user1@student43-openeuler ~]$ dd if=/dev/zero of=/mnt/devteam3/test_3k bs=1K count=3 dd: 打开 '/mnt/devteam3/test_3k' 失败: Disk quota exceeded [zrs_user1@student43-openeuler ~]$ ^C [zrs_user1@student43-openeuler ~]$ exit 注销 [root@student43-openeuler ~]# sudo xfs_quota -x -c 'quota on -u' /mnt/devteam3 xfs_quota: cannot find user on [root@student43-openeuler ~]# sudo xfs_quota -x -c 'limit -u bsoft=3k bhard=5k zrs_user1' /mnt/devteam3 [root@student43-openeuler ~]# sudo xfs_quota -x -c 'state' /mnt/devteam3 User quota state on /mnt/devteam3 (/dev/sdb6) Accounting: ON Enforcement: ON Inode: #131 (2 blocks, 2 extents) Blocks grace time: [7 days] Blocks max warnings: 0 Inodes grace time: [7 days] Inodes max warnings: 0 Realtime Blocks grace time: [7 days] Group quota state on /mnt/devteam3 (/dev/sdb6) Accounting: OFF Enforcement: OFF Inode: N/A Blocks grace time: [--------] Blocks max warnings: 0 Inodes grace time: [--------] Inodes max warnings: 0 Realtime Blocks grace time: [--------] Project quota state on /mnt/devteam3 (/dev/sdb6) Accounting: OFF Enforcement: OFF Inode: N/A Blocks grace time: [--------] Blocks max warnings: 0 Inodes grace time: [--------] Inodes max warnings: 0 Realtime Blocks grace time: [--------] [root@student43-openeuler ~]# sudo dd if=/dev/zero of=/mnt/devteam3/.warmup bs=1K count=1 输入了 1+0 块记录 输出了 1+0 块记录 1024 字节 (1.0 kB, 1.0 KiB) 已复制,0.000628372 s,1.6 MB/s [root@student43-openeuler ~]# sudo chown zrs_user1:class /mnt/devteam3/.warmup [root@student43-openeuler ~]# sudo rm /mnt/devteam3/.warmup [root@student43-openeuler ~]# sudo xfs_quota -x -c 'report -h' /mnt/devteam3 User quota on /mnt/devteam3 (/dev/sdb6) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] zrs_user1 0 4K 8K 00 [------] [root@student43-openeuler ~]# su - zrs_user1 上一次登录: 2025年12月20日 星期六 03:23:44 CST 于 pts/0 Welcome to 6.6.0-28.0.0.34.oe2403.x86_64 System information as of time: 2025年 12月 20日 星期六 03:27:50 CST System load: 0.00 Memory used: 5.3% Swap used: 0% Usage On: 31% IP address: 192.168.136.133 IP address: 192.168.122.1 Users online: 1 To run a command as administrator(user "root"),use "sudo <command>". [zrs_user1@student43-openeuler ~]$ dd if=/dev/zero of=/mnt/devteam3/test_3k bs=1K count=3 dd: 打开 '/mnt/devteam3/test_3k' 失败: Disk quota exceeded [zrs_user1@student43-openeuler ~]$ exit 注销 [root@student43-openeuler ~]# sudo xfs_quota -x /mnt/devteam3 xfs_quota> quota on -u xfs_quota: cannot find user on xfs_quota> exit command "exit" not found xfs_quota> quit [root@student43-openeuler ~]# sudo xfs_quota -x /mnt/devteam3 xfs_quota> enable -u Quota enforcement already enabled. xfs_quota> state User quota state on /mnt/devteam3 (/dev/sdb6) Accounting: ON Enforcement: ON Inode: #131 (2 blocks, 2 extents) Blocks grace time: [7 days] Blocks max warnings: 0 Inodes grace time: [7 days] Inodes max warnings: 0 Realtime Blocks grace time: [7 days] Group quota state on /mnt/devteam3 (/dev/sdb6) Accounting: OFF Enforcement: OFF Inode: N/A Blocks grace time: [--------] Blocks max warnings: 0 Inodes grace time: [--------] Inodes max warnings: 0 Realtime Blocks grace time: [--------] Project quota state on /mnt/devteam3 (/dev/sdb6) Accounting: OFF Enforcement: OFF Inode: N/A Blocks grace time: [--------] Blocks max warnings: 0 Inodes grace time: [--------] Inodes max warnings: 0 Realtime Blocks grace time: [--------] xfs_quota> limit -u bsoft=3k bhard=5k zrs_user1 xfs_quota> report -h User quota on /mnt/devteam3 (/dev/sdb6) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] zrs_user1 0 4K 8K 00 [------] xfs_quota> quit [root@student43-openeuler ~]# sudo dd if=/dev/zero of=/mnt/devteam3/.warmup bs=1K count=1 输入了 1+0 块记录 输出了 1+0 块记录 1024 字节 (1.0 kB, 1.0 KiB) 已复制,0.00021818 s,4.7 MB/s [root@student43-openeuler ~]# sudo chown zrs_user1:class /mnt/devteam3/.warmup [root@student43-openeuler ~]# sudo rm /mnt/devteam3/.warmup [root@student43-openeuler ~]# su - zrs_user1 上一次登录: 2025年12月20日 星期六 03:27:49 CST 于 pts/0 Welcome to 6.6.0-28.0.0.34.oe2403.x86_64 System information as of time: 2025年 12月 20日 星期六 03:35:36 CST System load: 0.08 Memory used: 5.3% Swap used: 0% Usage On: 31% IP address: 192.168.136.133 IP address: 192.168.122.1 Users online: 1 To run a command as administrator(user "root"),use "sudo <command>". [zrs_user1@student43-openeuler ~]$ dd if=/dev/zero of=/mnt/devteam3/test_3k bs=1K count=3 dd: 打开 '/mnt/devteam3/test_3k' 失败: Disk quota exceeded [zrs_user1@student43-openeuler ~]$ exit 注销 [root@student43-openeuler ~]# sudo xfs_quota -x -c 'sync -u' /mnt/devteam3 command "sync" not found [root@student43-openeuler ~]# sudo xfs_quota -x -c 'state -u zrs_user1' /mnt/devteam3 state [-gpu] [-a] [-v] [-f file] -- get overall quota state information [root@student43-openeuler ~]# sudo xfs_quota -x -c 'timer -b' /mnt/devteam3 timer [-bir] [-g|-p|-u] value [-d|id|name] -- set quota enforcement timeouts [root@student43-openeuler ~]# sudo xfs_quota -x /mnt/devteam3 << EOF > enable -u > limit -u bsoft=3k bhard=5k zrs_user1 > sync -u > quit > EOF Quota enforcement already enabled. command "sync" not found 我在做任务三(3)尝试多次依旧失败,现在我想跳过这道题,请你告诉我应该输入什么命令并截图,如何向老师阐述我做过的什么样尝试仍旧失败
最新发布
12-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值