Linux-磁盘配额-Quota
介绍
Quota, 字面意思就是 “限额”, 也就是用来限制容量的使用.
使用背景
Linux 中是多用户多任务的环境, 会出现多人共同使用一个硬盘空间的情况. 而当少数使用者占用了大量空间时, 则会压缩其他使用者的使用权力.
常见用途
- 针对 WWW server (每个人的网页内容有限)
- 针对 mail server (每个人的邮件空间有限)
- 针对 file server (每个人的网络硬盘空间有限)
针对主机, 常有:
- 限制某一 group 能使用的最大磁盘配额
- 限制某一 user 能使用的最大磁盘配额
- 限制某一 directory (也即 project) 的最大磁盘配额
Quota 的限制
- 对于 EXT 文件系统, 只能针对整个 filesystem 而不能是特定目录 (xfs 文件系统的 project 模式下可以)
- Linux 内核需要支持 quota
- 只能应用于 Linux 普通用户 (root 就不行)
- SELinux 会限制 Quota 的使用位置
(需要注意, 不同文件系统在 quota 的处理上不太相同, 使用之前需要先查明文件系统)
Quota 在 XFS 中可用的限制项目
- 使用者, 组群或某个目录 (user, group 和 project)
- 容量或文件数量限制 (block 或 inode, 也就是文件系统的两个不问, inode 存放文件属性, block 存放实际文件数据)
- soft 和 hard 设置 (hard 为使用者不能超过的限制值, 而 soft 为当磁盘使用超过 soft 而低于 hard 时, 会发出警告, 并给出宽限时间 grace time, 若在宽限时间倒数期间将容量降到 soft 之下, 则宽限时间会停止, 但如果超过宽限时间, 则会由 soft 取代 hard 作为 quota 的限制)
- 设置会倒计时的宽限时间
基本使用
查看文件系统类型并开启 quota 支持
在对某一个目录启用 quota 之前, 先其查明文件系统类型:
1 |
|
需要将启用 quota 写入 /etc/fstab
中然后重新挂载文件系统, 如:
1 |
|
之后:
1 |
|
针对 quota 限制的 mount 选项主要有三个:
uquota/usrquota/quota
, 针对 usergquota/grpquota
, 针对 grouppquota/prjquota
, 针对单一目录, 但不能与grpquota
同时存在
观察 quota 报告数据
所有的 quota 管理都使用 xfs_quota
命令.
常用选项:
1 |
|
-x
, 专家模式, 后续才能够加入-c
的指令参数-c "cmd"
, 指定指令
和数据汇报相关的指令有:
print
, 单纯列出目前主机内的文件系统参数等数据df
, 和df
命令一样, 显示文件系统的磁盘空间使用情况, 常用-h
选项report
, 列出当前的 quota project, 有-ugr
(user/group/project),-bi
(block/inode) 等显示选项state
, 列出挂载的文件系统中支持 quota 的文件系统的信息
列出不前系统的各文件系统, 以及文件系统对 quota 挂载参数的开启情况
1 |
|
列出 /homee
目录的磁盘使用情况
前提是 /homee
目录是开启了 quota 的挂载参数.
1 |
|
列出所有用户在 /homee
下的 quota 限制值
1 |
|
列出挂载的文件系统中支持 quota 的文件系统的信息
1 |
|
设置限制值
设置限制容量语法为:
1 |
|
[-ug]
, 指可以针对 user/group 来限制bsoft/bhard
, 指 block 的 soft/hard 限制, 可以加单位isoft/ihard
, 指 inode 的 soft/hard 限制name
, 指 user/group 的名称
设置用户的 quota
1 |
|
设置用户组的 quota
1 |
|
设置 grace time
设置 grace time 的语法为:
1 |
|
-ug
指, user/group-bir
指, block/inode
如:1
2
3[root@localhost]# xfs_quota -x -c "timer -u -b 14days"/homee
[root@localhost]# xfs_quota -x -c "timer -g -b 14days"/homee
[root@localhost]# xfs_quota -x -c "state" /homee
设置 project 的限制
注意此时应关闭 grpquota
选项而启用 prjquota
, 在 /etc/fstab
文件中写入:
1 |
|
然后:
1 |
|
此时需要用两个配置文件来设置:
/etc/projects
, 设置 project id 与 quota 目录的对应/etc/projid
, 设置 project name 与 project id 的对应
1 |
|
(注意 id 和 name 都是自己随便取)
初始化一个 project (指定 project name):
1 |
|
设置容量限制:
1 |
|
Quota 的管理指令
disable
, 暂时取消 quota 的限制, 系统本身还在计算 quota, 只是没有进行管制enable
, 恢复 quota 到正常的管制中 (与disable
相互取消)off
, 完全关闭 quota 限制, 若还想启用则得重新挂载remove
, 在off
状态下启用, 用于移除某个 quota 设置
暂时取消 quota 的限制
1 |
|
恢复 quota 到正常的管制中
1 |
|
完全关闭 quota 限制
1 |
|
移除某个 quota 设置
1 |
|
Linux-磁盘配额-Quota
http://example.com/2024/03/22/Linux-磁盘配额-Quota/