文件系统管理---磁盘配额

1.1磁盘配额介绍

磁盘配额就是linux系统中,用来限制特定的普通用户或用户组在指定的分区上占用磁盘空间或文件个数的。

注意:

  1.限制的用户和用户组只能是普通用户和用户组,即超级用户root是不能做磁盘配额的。

  2.磁盘配额的限制只针对分区,而不能针对某个目录。

  3.可以限制用户占用磁盘容量的大小,当然也能限制用户允许占用的文件个数。

使用磁盘配额的条件

  1.内核必须支持磁盘配额。Centos7.3版本的linux默认支持磁盘配额。查看内核配置文件可以看是否支持磁盘配额。命令如下:

[root@andy ~]# grep CONFIG_QUOTA /boot/config-3.10.0-514.el7.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
[root@andy ~]#

  2.系统中必须安装quota工具,安装查看命令如下:

安装

[root@andy ~]# yum install quota -y

查看

[root@andy ~]# rpm -qa | grep quota
quota-nls-4.01-19.el7.noarch
quota-4.01-19.el7.x86_64
[root@andy ~]#

  3.要支持磁盘配额的分区,必须开启磁盘配额功能,手动开启,下面讲

1.2磁盘配额常见概念

  1.用户配额和组配额

用户配额是指针对用户个人的配额,而组配额是指针对整个用户组的配额。如果我们限制的用户数量不多,则可以单独给每个用户指定配额。

如果用户较多,则可以把用户加入某个用户组,然后给组指定配额。

注意:

组中的用户,是共享空间,或文件数的,先到先得。

  2.磁盘容量限制和文件个数限制

我们除了可以通过限制用户可用的block数量来限制用户可用的磁盘容量,也可以通过限制用户的inode数量来限制用户可以上传或新建文件的个数。

  3.软限制和硬限制

软限制大家可以理解为警告限制,硬限制就是真正的限制了。比如,规定软限制为100M,硬限制为200M,那么,当用户使用的磁盘空间为100M~200M时,用户还可以继续上传和新建文件,

但每次登陆时都会收到一条警告信息,告诉用户磁盘将满。

  4.宽限时间

如果用户的空间占用数处于软限制和硬限制之间,那么系统会在用户登陆时警告用户磁盘将满,但是这一条告警不会一直进行,而是有时间限制的这个时间就是宽限时间,默认为7天。

如果达到这个时间,用户磁盘占用量还超过软限制,那么软限制就会升级为硬限制。也就是说,如果软限制为100M,硬限制为200M,宽限时间为7天,此时用户占用了120M那么今后7天

用户每次登陆时都会出现磁盘将满的警告,如果用户置之不理,那么7天之后这个用户的硬限制就会变成100M而不是200M。

1.3磁盘配额的实现过程

  实验规划

1.磁盘配额是限制普通用户在分区上所使用的磁盘空间和文件个数,所以需要指定一个分区,那么,我们手工建立一个5GB的/dev/sdb1分区,把它挂载到/disk目录当中

2.我们需要建立被限制的用户和用户组。假设需要限制lamp1、lamp2、和lamp3用户,这三个用户均属于brother用户组

3.brother组的磁盘容量硬限制为500MB,软限制为450MB,文件个数没有限制。lamp1设定磁盘容量硬限制为50M,软限制为40M,文件个数限制为10个,软限制为8个,lamp2和

lamp3用户的磁盘容量硬限制为250M,软限制为200M文件个数没有限制。

4.lamp1、lamp2和lamp3用户的磁盘容量硬限制为550M,超过了brother组的磁盘容量硬限制500M.这样一来,某个用户可能达不到自己的用户限制,而达到组限制时就不能再写入

数据了,也就是说,如果用户限制和组限制同时存在,那么哪个限制小,哪个优先生效。

5.系统宽限时间为8天

  实验部署

1.建立要指定配额的分区

添加一块硬盘使用fdisk分出一个5G大小的sdb1的主分区,并使用mkfs格式化成xfs系统挂载到/disk下

[root@andy ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root xfs 17G 2.0G 16G 12% /
devtmpfs devtmpfs 902M 0 902M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 8.6M 904M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 139M 876M 14% /boot
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /disk
/dev/sr0 iso9660 4.1G 4.1G 0 100% /mnt
[root@andy ~]#

2.建立需要进行限制的用户和用户组

命令如下:

[root@andy ~]# groupadd brother
[root@andy ~]# useradd -G brother lamp1
[root@andy ~]# useradd -G brother lamp2
[root@andy ~]# useradd -G brother lamp3
[root@andy ~]# echo "123" | passwd --stdin lamp1
更改用户 lamp1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@andy ~]# echo "123" | passwd --stdin lamp2
更改用户 lamp2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@andy ~]# echo "123" | passwd --stdin lamp3
更改用户 lamp3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@andy ~]#

3.在分区开启磁盘配额功能

如果是临时开启,可以直接使用命令来开启/disk 分区的的磁盘配额功能。命令如下:

[root@andy ~]# mount -o remount,usrquota,grpquota /disk
[root@andy ~]#

#重新挂载/disk,并加入用户和用户组的磁盘配额功能

注意:

  1.如果采用命令的方式开启磁盘配额功能,那么只在本次开机中生效,一旦系统重新启动,这个功能就会失效

  2.开启磁盘配额功能的参数是usrquota和grpquota

使用命令临时挂载分区,系统会同步更新/etc/mtab文件

/etc/mtab和/etc/fstab这两个文件区别

/etc/mtab文件中记录的是操作系统已经挂载的文件系统(分区),包括操作系统建立的虚拟文件系统,所以使用命令修改的就是这个文件

/etc//fstab文件中记录的是操作系统准备挂载的文件系统,也就是下次启动后系统会挂载的 文件系统。

  所以要让磁盘配额功能永久生效,则需要修改/etc/fstab文件命令如下:

[root@andy ~]# vim /etc/fstab

/dev/sdb1               /disk                   xfs     defaults,usrquota,grpquota   0  0

[root@andy ~]# mount -o remount /disk
[root@andy ~]#

#修改的配置文件如果想要生效,则必须重启系统,否则也需要把分区重新挂载一遍

修改etc/fstab文件时一定要仔细,一旦改错就有可能造成系统无法正常启动。

4.建立磁盘配额配置文件

这个配置文件不是手工建立的,而是通过quotacheck命令来扫描建立的。quotacheck命令会扫描分区,查看分区中每个用户和用户组已经占用

的磁盘空间和文件总数,并把扫描结果记录在该分区的最高一级目录下,保存成aquota.user和aquota.group文件,也就是说,我们会利用quotacheck

命令生成aquota.user(用户配额文件)和aquota.group(组配额文件)这两个磁盘配额配置文件,这两个文件会保存在/disk目录下,因为/disk是一个独立的分区,quotacheck

命令格式如下:

quotacheck -avug

5.设置用户和组的配额限制

edquota

-u 用户名: 设定用户配额

-g 组名: 设定组配额

-t 设定宽限时间

-p 复制配额限制

6.配额复制

edquota -p lamp2 -u lamp3     -p 源用户  -u 目标用户

7.修改宽限时间

edquota -t

8.启动和关闭配额

启动命令:

quotaon -avug

关闭配额命令:

quotaoff -a

9.磁盘配额的查询

查询磁盘配额有两种方法:一种是使用quota命令查询用户或用户组的配额,另一种方法是使用repquota命令查询整个分区的配额情况。

quota

-u用户名: 查询用户配额

-g组名:查询组配额

-s以习惯单位显示容量大小,如M,G

-v显示详细信息

eg:quota -uvs lamp1

另一种查询方法

repquota -augvs

posted @ 2019-12-24 15:16  Y_Andy  阅读(1483)  评论(0编辑  收藏  举报