1. xfs_quota简介
xfs_quota
是一个管理XFS文件系统配额的工具,它提供了一套丰富的命令行操作来配置项目、用户和组的磁盘配额。
比如某些情况下,我们需要限制Linux系统中一些目录的大小,此时就可以使用 xfs_quota 来实现。
参考文档:
2. 格式化磁盘和分区
参考《好好学Linux:Linux挂载文件系统》,磁盘分区并格式化为xfs格式。
3. 挂载 xfs 分区
因为想要使用 xfs_quota 限制目录大小,所以挂载命令和普通的挂载会有不同。
单次挂载命令为:
1 | mkdir -p /limitdata |
挂载命令中,加入了 pquota,uquota,gquota
,意思是启用项目配额限制、用户配额限制和组配额限制。
自动挂载命令为:
1 | mkdir -p /limitdata |
4. xfs_quota常用命令
4.1. 查看配额使用情况
要查看用户或组的配额使用情况,可以使用 report
命令:
1 | xfs_quota -x -c 'report -h' /limitdata |
report -h
参数会显示用户和组的磁盘使用情况,-h
为人类可读格式(如KB、MB、GB)。
初始配额使用情况为:
1 | User quota on /limitdata (/dev/sdb1) |
4.2. 进入交互shell
xfs_quota 可以通过一个交互式的shell界面来操作,或者通过命令行参数执行单个命令。
如果想要使用交互式shell界面,可以运行:
1 | xfs_quota -x /limitdata |
这里 /limitdata 是XFS文件系统挂载点。
4.3. 设置用户配额
1 | xfs_quota -x -c 'limit bsoft=10G bhard=20G username' /limitdata |
在这个例子中,bsoft
是软限制(当用户达到这个限制时,系统会发出警告但仍允许一定时间内超额使用),bhard
是硬限制(用户不能超过这个限制),username
是要设置配额的用户名,10G
和 20G
分别是对应的大小限制。
4.4. 设置组配额
1 | sudo xfs_quota -x -c 'limit bsoft=10G bhard=20G -g groupname' /limitdata |
-g
参数指明接下来的限制是针对组的。groupname
是要设置配额的组名。
4.5. 删除用户和组配额
1 | xfs_quota -x -c 'limit -u bsoft=0 bhard=0 username' /limitdata |
同理,删除组配额,用 -g
参数替换 -u
并提供组名。
4.6. 设置项目配额
4.6.1. 定义项目
1、编辑项目定义文件
1 | vim /etc/projid |
添加:
1 | project100:100 |
其中,冒号前的项目名,冒号后的是项目ID。
2、编辑项目和路径映射文件
1 | vim /etc/projects |
添加:
1 | 100:/limitdata/dir100 |
其中,冒号前的是项目ID,冒号后的是项目路径。意思是 /limitdata/dir100 归属 100 这个项目。
4.6.2. 初始化项目配额
在配置配额之前,需要初始化目录的项目配额记录。
1 | mkdir -p /limitdata/dir100 |
-s
选项会扫描目录树,查找所有属于该项目的文件,并初始化项目的配额记录。
1 | Setting up project project100 (path /limitdata/dir100)... |
4.6.3. 设置项目配额
1 | xfs_quota -x -c 'limit -p bhard=2g project100' /limitdata |
这个命令设置 project100
这个项目的硬磁盘空间限制为2GB。
4.6.4. 调整项目配额
1 | xfs_quota -x -c 'limit -p bhard=1g project100' /limitdata |
4.6.5. 检查项目配额
1 | xfs_quota -x -c 'report -p' /limitdata |
这个命令会显示所有项目的配额和使用情况。
4.6.6. 测试写入内容
1 | dd if=/dev/zero of=/limitdata/dir100/testfile bs=1G count=2 |
正常应该会报错:
1 | dd: 写入"/limitdata/dir100/testfile" 出错: 设备上没有空间 |
5. 限制目录的大小
限制目录的大小,对应 xfs_quota 就是设置项目配额。
1 | name=p101 |
6. xfs_quota + nfs
注意: xfs_quota 管理的目录,开启了nfs共享目录,依然可以被限制。
比如 /limitdata 目录作为nfs共享目录对外开放,从其他主机上往 /limitdata/dir100 目录中写入数据,依然会受到 xfs_quota 的限制。