由于linux是多人多任务的空间,那么肯定会有多个人同时使用同一块磁盘空间的情况发生。如果其中有几个用户使用磁盘空间占比较大的化,势必会压缩其他用户的使用权力,因为管理员应该分配用户以合适的磁盘空间,致使妥善分配系统资源。
网站服务器上,对每个人的网页空间容量限制。
邮件服务器上,对每个人的邮件空间限制。
文件服务器上,每个人最大可用网络硬盘空间限制(smaba、ftp等…)
用户组限制——限制某一用户组所能使用的最大磁盘配额
用户限制——限制某一用户所能使用的最大磁盘配额
目录限制——限制某一用户的最大磁盘配额
ext文件系统无法针对某个单一目录来设计它的磁盘配额。而xfs可以针对单一的目录来设计它的磁盘配额。
不可以对root(大管理员用户)进行磁盘限制,因为整个系统都是这个大管理员的
针对对象:
用户(user) 用户组(group) 目录(directory)
针对对象的单位:
**容量限制(block):**对磁盘的容量进行限制,不限数量
**数量限制(inode):**对存入的文件数量进行限制,不限大小
限制的方式:
**软限制(soft):**表示低于soft限制时,可以使用磁盘,但是如果高于soft但低于hard则每次用户登录时会给予用户一个警告,并带有宽限时间,如果用户在宽限之间内还没有调整使用容量并且超于宽限时间(grace tiome)则系统会自动将soft容量替换为hard容量来作为磁盘限额的配置。
**硬限制(hard):**如果高于hard则系统会锁定该用户的使用权。
#首先添加一块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文件系统
**流程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 [------]