linux针对用户的磁盘配额(quota)

一、理论部分

1.什么是磁盘配额?

由于linux是多人多任务的空间,那么肯定会有多个人同时使用同一块磁盘空间的情况发生。如果其中有几个用户使用磁盘空间占比较大的化,势必会压缩其他用户的使用权力,因为管理员应该分配用户以合适的磁盘空间,致使妥善分配系统资源。

2.用途

网站服务器上,对每个人的网页空间容量限制。
邮件服务器上,对每个人的邮件空间限制。
文件服务器上,每个人最大可用网络硬盘空间限制(smaba、ftp等…)

用户组限制——限制某一用户组所能使用的最大磁盘配额
用户限制——限制某一用户所能使用的最大磁盘配额
目录限制——限制某一用户的最大磁盘配额

3.使用限制

ext文件系统无法针对某个单一目录来设计它的磁盘配额。而xfs可以针对单一的目录来设计它的磁盘配额。
不可以对root(大管理员用户)进行磁盘限制,因为整个系统都是这个大管理员的

4.磁盘配额的规范设置选项

针对对象:
用户(user) 用户组(group) 目录(directory)

针对对象的单位:
**容量限制(block):**对磁盘的容量进行限制,不限数量
**数量限制(inode):**对存入的文件数量进行限制,不限大小

限制的方式:
**软限制(soft):**表示低于soft限制时,可以使用磁盘,但是如果高于soft但低于hard则每次用户登录时会给予用户一个警告,并带有宽限时间,如果用户在宽限之间内还没有调整使用容量并且超于宽限时间(grace tiome)则系统会自动将soft容量替换为hard容量来作为磁盘限额的配置。
**硬限制(hard):**如果高于hard则系统会锁定该用户的使用权。

二、实验部分

1.实验要求

  1. 创建五个账号:xiaohong,xiaocheng,xiaohuang,xiaolv,xiaoqing,且初始用户组都为caihong,且密码都为123
  2. 磁盘容量限制值:五个用户都能获取300MB的磁盘使用量(hard),文件数量不限制,但是用量使用量超过250MB则报警(soft)
  3. 宽限时间的限制:用户超过soft限制值后,都还有14天的宽限时间
    - 实验(用户组配额):系统内有其他用户在使用,而我只想限制caihong这个组的容量为1G,其他用户则不限制
    收500MB的容量(注:用户组和目录的限制无法同时进行并存)**

2.实验准备

#首先添加一块2G的虚拟磁盘
#lsblk:查看当前主机上的存储设备
[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    2G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 16.1G  0 part /
sdb      8:16   0    2G  0 disk 
#创建用户,并指定组为caihong组
[root@localhost ~]# groupadd caihong
[root@localhost ~]# useradd -g caihong xiaohong
[root@localhost ~]# passwd xiaohong 

[root@localhost ~]# useradd -g caihong xiaocheng
[root@localhost ~]# passwd xiaocheng

[root@localhost ~]# useradd -g caihong xiaohuang
[root@localhost ~]# passwd xiaohuang

[root@localhost ~]# useradd -g caihong xiaolv
[root@localhost ~]# passwd xiaolv

[root@localhost ~]# useradd -g caihong xiaoqing
[root@localhost ~]# passwd xiaoqing
#将2G硬盘格式化为xfs文件系统,并挂载到/home下
1.使用gdisk工具将磁盘进行分区
[root@localhost ~]# gdisk /dev/sdb
Command (? for help): n
#n为创建分区
Partition number (1-128, default 1): 
#默认表示为1分区
First sector (34-4194270, default = 2048) or {+-}size{KMGTP}: 
#分配sector块
Last sector (2048-4194270, default = 4194270) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
#分配存储空间,直接回车表示将所有存储空间都分配给分区1
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'
默认将分区模式定义为Linux filesystem
Command (? for help): w
#w保存退出

[root@localhost ~]# mkfs.xfs /dev/sdb1
#将sdb1设备格式化为xfs文件系统

3.针对用户组的配额

**流程1**
#写入/etc/fstab文件,使其分区可以自动挂载,并添加参数选项
[root@localhost ~]# vim /etc/fstab 
/dev/sdb1                                 /home1                   xfs     defaults,usrquota,grpquota        0 0

[root@localhost ~]# umount /home/
[root@localhost ~]# mount -a
#mount -a参数的作用为重新挂载fstab文件内的设备

[root@localhost ~]# mount | grep "home"
/dev/sdb1 on /home type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
#usrquota/uquota/quota:针对用户账号的设置
#gquota/grpquota:针对用户组的设置
**流程2**
#介绍xfs_quota命令
xfs_quota -x -c "命令" [挂载点]
-x:专家模式,后续才能加上-c的命令参数
-c:后面加的就是命令
命令:
		print:列出目前主机内的文件系统等参数
		df:与df一样的功能
		report:列出目前的磁盘配额选项,-ugr  -bi
		state:说明目前支持磁盘配额的文件系统信息
**流程3**
#用户的限制值设置
[root@localhost ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M xiaohong" /home1
[root@localhost ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M xiaocheng" /home1
[root@localhost ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M xiaohuang" /home1
[root@localhost ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M xiaolv" /home1
[root@localhost ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M xiaoqing" /home1
#查看用户限制设置
[root@localhost ~]# xfs_quota -x -c "report -ubih" /home1

```bash
User quota on /home1 (/dev/sdb1)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
xiaohong        0   250M   300M  00 [------]      0      0      0  00 [------]
xiaocheng       0   250M   300M  00 [------]      0      0      0  00 [------]
xiaohuang       0   250M   300M  00 [------]      0      0      0  00 [------]
xiaolv          0   250M   300M  00 [------]      0      0      0  00 [------]
xiaoqing        0   250M   300M  00 [------]      0      0      0  00 [------]
**流程4**
#用户组的限制值设置
[root@localhost ~]# xfs_quota -x -c "limit -g bsoft=950 bhard=1G caihong" /home1
#查看用户组的限制值设置
[root@localhost ~]# xfs_quota -x -c "report -gbih" /home1

```bash
Group quota on /home1 (/dev/sdb1)
                        Blocks                            Inodes              
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
caihong         0     4K     1G  00 [------]      0      0      0  00 [------]
**流程5**
#由上得知磁盘配额已经设置完成,那我们来测试一下配置是否生效
[root@localhost /]# su xiaohong
[xiaohong@localhost /]$ dd if=/dev/zero of=/home1/1.zip bs=1M count=301
dd: 写入"/home1/1.zip" 出错: 超出磁盘限额
#使用dd命令创建出一个301M的文件,系统会自动提醒超出磁盘配额并停止写入

#查看
[root@localhost /]# xfs_quota -x -c "report -ubih" /home1
#可以看到Used已经与Hard限制容量相同了,所以被限制,故不能写入
```bash
User quota on /home1 (/dev/sdb1)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
xiaohong     300M   250M   300M  00 [6 days]      1      0      0  00 [------]
xiaocheng       0   250M   300M  00 [------]      0      0      0  00 [------]
原创文章 20 获赞 7 访问量 716

猜你喜欢

转载自blog.csdn.net/adsedfewf/article/details/105367068