磁盘配额以及准备
磁盘配额作用
对用户使用磁盘空间以及存放文件个数的限制。
磁盘配额条件
- 内核必须支持磁盘配额
[root@ddkk.com ~]# grep CONFIG_QUOTA /boot/config-4.18.0-338.el8.x86_64
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y
- 系统中必须安装了quota工具,查看命令如下:
[root@ddkk.com ~]# rpm -qa | grep quota
quota-nls-4.04-14.el8.noarch
quota-4.04-14.el8.x86_64
概念
- 用户配额和组配额,组配额不是平均分配,一般不会使用。
- 磁盘容量限制和文件个数限制,有文件个数限制是因为i节点是有限的。
- 软限制和硬限制,软限制是提醒限制,硬限制是实际限制。到了软限制不会禁止存储,但会提醒,到了硬限制就不能再存放文件了。
- 宽限时间,到达软限制之后,是有时间限制的,这个时间就是宽限时间,若这个时间内使用容量一直在软限制之上,就会将软限制变成硬限制,降低使用容量。宽限时间默认是7天。
磁盘配额实验
规划
- 首先需要准备一个分区,因为磁盘配额是针对分区使用的,不要拿重要分区做实验,在这里我重新创建了一个分区/dev/sdb2。
- 建立用户u1、u2、u3。
磁盘配额
1、 开启分区上的磁盘配额功能;
[root@ddkk.com ~]# mount -o remount,usrquota,grpquota /mnt/sdb2
使用命令修改只是暂时生效,若要永久生效,则要修改/etc/fstab文件,改为:
/dev/sdb2 /mnt/sdb2 ext4 defaults,usrquota,grpquota 0 0
1、 关闭selinux;
暂时关闭:
[root@ddkk.com ~]# getenforce 查询selinux当前状态
Enforcing
[root@ddkk.com ~]# setenforce 0 暂时关闭selinux
[root@ddkk.com ~]# getenforce
Permissive
长久关闭:
长久关闭需要修改/etc/selinux/config文件
[root@ddkk.com ~]# vim /etc/selinux/config
......
SELINUX=permissive
......
1、 生成磁盘配置文件;
命令格式:
[root@ddkk.com ~]# quotacheck 选项 分区名
常用选项:
选项 | 含义 |
---|---|
-a | 扫描/etc/mtab文件中的所有启用磁盘配额功能的分区,如果加入此参数,后面就不用再加分区名了。 |
-c | 不管原有的配置文件,重新扫描并建立新的配置文件。 |
-u | 建立用户配额的配置文件,也就是生成aquota.user文件。 |
-g | 建立组配额的配置文件,也就是生成aquota.group文件。 |
-v | 显示扫描过程。 |
-m | 强制以读写的方式扫描文件系统,和-M类似,一般在扫描根分区时使用。 |
-f | 强制扫描文件系统,并写入新的配置文件,一般扫描新添加的硬盘分区时使用。 |
例:
[root@ddkk.com ~]# quotacheck -uv /mnt/sdb2
[root@ddkk.com ~]# ls /mnt/sdb2
aquota.user lost+found
1、 设置用户和组的配额限制;
[root@ddkk.com ~]# edquota 选项 用户名或组名
常用选项:
选项 | 作用 |
---|---|
-u | 磁盘用户配置 |
-g | 磁盘组配置 |
-t | 设定宽限时间 |
-p | 复制配额限制 |
进入后是按vi的操作进行的,soft是软限制,hard是硬限制,blocks是当前占用的空间,不能修改。
Disk quotas for user u1 (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdb2 0 0 0 0 0 0
修改后:
Filesystem blocks soft hard inodes soft hard
/dev/sdb2 0 4000 5000 0 8 10
1、 启动和关闭配额;
- 启动配额
[root@ddkk.com ~]# quotaon 选项 分区名
常用选项:
选项 | 作用 |
---|---|
-a | 依照etc/mtab文件启动所有的配额分区,如果不加-a,后面就一定要指定分区名。 |
-u | 启动用户配额 |
-g | 启动组配额 |
-v | 显示启动过程的信息 |
例:
[root@ddkk.com ~]# quotaon -uv /dev/sdb2
/dev/sdb2 [/mnt/sdb2]: user quotas turned on
- 关闭配额
[root@ddkk.com ~]# quotaoff 选项 分区名
常用选项:
- -a:按照/etc/mtab文件关闭所有的配额分区,若不加-a,就一定要指定分区名。
- -u:关闭用户配额。
- -g:关闭组配额。
1、 磁盘配额查询;
[root@ddkk.com ~]# quota 选项 用户名或组名
- -u:查询用户配额
- -g:查询组配额
- -v:显示详细信息
- -s:以习惯单位显示容量大小,人性化显示
查询整块分区:
[root@ddkk.com ~]# repquota -avus
1、 测试;
[u1@localhost sdb2]$ dd if=/dev/zero of=/mnt/sdb2/test bs=1M count=60
其他命令
复制配额
命令格式:
#将用户1的配额复制到用户2
[root@ddkk.com ~]# edquota -p 用户1 -u 用户2
例:
#将u1的配额复制到u2
[root@ddkk.com ~]# edquota -p u1 -u u2
[root@ddkk.com ~]# quota -vus u2
Disk quotas for user u2 (uid 1001):
Filesystem space quota limit grace files quota limit grace
/dev/sdb2 0K 4000K 5000K 0 8 10
setquota命令设置配额(非交互设置)
命令格式:
[root@ddkk.com ~]# setquota 选项 用户名或组名 空间大小软限制 空间大小硬限制 文件个数软限制 文件个数硬限制 分区名
例:
[root@ddkk.com ~]# setquota -u u3 4000 5000 8 12 /dev/sdb2
[root@ddkk.com ~]# quota -uvs u3
Disk quotas for user u3 (uid 1002):
Filesystem space quota limit grace files quota limit grace
/dev/sdb2 0K 4000K 5000K 0 8 12
修改宽限时间
[root@ddkk.com ~]# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sdb2 7days 7days
第一个是空间大小限额宽限时间,第二个是文件个数限额宽限时间。