Linux基础学习笔记之——磁盘配额(Quota)与进阶文件系统管理

磁盘配额(Quota)与进阶文件系统管理

1、磁盘配额(Quota)的应用与实践

1.1、什么是 Quota

quota 比较常见的使用情况:

  • 针对 WWW 服务器,例如:每个人网页空间的容量限制!
  • 针对 mail server 服务器
  • 针对 FTP 服务器

上面是一些网络服务的设计,如果是针对 Linux 主机上面的设定,那么使用情况可以有以下这些:

  • 限制一些群组所能使用的最大磁盘配额(使用群组限制);
  • 限制某一用户的最大磁盘配额(使用用户限制);
  • 限制某一目录的最大磁盘配额。
1.1.1、quota 的使用限制
  • 在 ext 文件系统仅能针对整个文件系统;
  • 核心必须支持 quota:
    • 仅对一般用户有效;
    • 若启用 SELinux,并非所有的目录均可设定 quota。
1.1.2、Quota 的规范设定项目

quota 针对 XFS 文件系统的限制项目主要分为:

  • 分别针对用户、群组或个别目录;
  • 容量限制或文件数量限制(block 或 inode);
    • 限制 inode 数量:可以管理使用者可以建立的 “文件数量”;
    • 限制 block 数量:管理用户磁盘容量的限制,较常见的方式。
  • 柔性劝导与硬性规定(soft/hard);
    • hard:表示使用者绝对不能超过这个限制值;
    • soft:表示低于 soft 值时,可以正常使用;高于 soft 但低于 hard 时,警告,且给予一个宽限时间
  • 会倒数计时的宽限时间(grace time)

整个 soft,hard,grace time 的相关性我们可以用下图表示:

在这里插入图片描述

1.2、一个 XFS 文件系统的 Quota 实践

使用一个范例来设计一下如何处理 Quota 的设定流程:

  • 目的与账号:现在我想要让五个用户为一组,这五个人的账号分别是 myquota1,myquota2,myquota3,myquota4,myquota5,密码都是 password,且这五个账号的初始群组都是 myquotagrp。其他账号的属性均是默认值。
  • 账号的磁盘容量限制值:我想要这五个账号都能够取得 300MBytes 的磁盘使用容量(hard),文件数量则不给予限制。此外,容量使用率超过 250MBytes,就会警告(soft)。
  • 群组的限制(option 1)myquotagrp 这个群组最多仅能使用 1GBytes 的容量。即:如果 myquota1,myquota2,myquota3 都使用了 280MBytes 的容量,那么其他两个人最多只能使用(1000MB - 280*3 = 160MB)的磁盘容量了!
  • 共享目录的限制(option 2):另一种设定方式,每个用户还是具有自己的独立容量限制,但这五个人的专题目录在 /home/myquota 这里,该目录请设定为其他人没有任何权限的共享目录空间,仅有 myquotagrp 群组拥有全部权限。且该目录最多能够接受 500MBytes 的容量。请注意,群组的限制与目录的限制无法同时存在!!!
  • 宽限时间的限制:超过 soft 的值后,还有 14 天的宽限时间。
#1、先搞定账号相关属性
[root@li ~]# vim addaccount.sh
#!/bin/bash

groupadd myquotagrp

for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
        useradd -g myquotagrp $username
        echo "password" | passwd --stdin $username
done

mkdir /home/myquota
chgrp myquotagrp /home/myquota
chmod 2770 /home/myquota
[root@li ~]# sh addaccount.sh
1.2.1、实践 Quota 流程1:文件系统的支持与观察

前面提到,要使用 Quota 必须要核心和文件系统支持才行!

[root@li ~]# df -hT /home
文件系统      类型   容量    已用  可用  已用%  挂载点
/dev/sdb1    xfs   5.0G   33M  5.0G    1%  /home

一定要写入 /etc/fstab 当中:

[root@li ~]# vim /etc/fstab
...
/dev/sdb1       /home   xfs     defaults,usrquota,grpquota      0 0		#注意 default 后面加了两个参数
[root@li ~]# umount /home
[root@li ~]# mount -a
[root@li ~]# mount | grep home
/dev/sdb1 on /home type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
1.2.2、实践 Quota 流程2:观察 Quota 报告资料
[root@li ~]# xfs_quota -x -c "指令" [挂载点]
选项与参数:
-x:专家模式,后续才能加上 -c
-c:就是指令
指令:
	print:单纯地列出目前直接内的文件系统参数资料
	df:与原本的 df 一样
	report:列出目前的 quota 项目,有 -ugr(user/group/project)及 -bi 等资料
	state:说明目前支持 quota 的文件系统信息
#列出目前系统的文件系统,以及文件系统的 quota 挂载参数支持
[root@li ~]# xfs_quota -x -c "print"
Filesystem          Pathname
/                   /dev/mapper/centos_li-root
/boot               /dev/sda2
/home               /dev/sdb1 (uquota, gquota)
#列出目前 /home 这个支持 quota 的挂载点文件系统使用情况
[root@li ~]# xfs_quota -x -c "df -h" /home
Filesystem     Size   Used  Avail Use% Pathname
/dev/sdb1      5.0G  32.2M   5.0G   1% /home
#列出目前 /home 的所有用户的 quota 限制值
[root@li ~]# xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/sdb1)
                        Blocks                            Inodes
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root            0      0      0  00 [------]      4      0      0  00 [------]
myquota1      12K      0      0  00 [------]      4      0      0  00 [------]
myquota2      12K      0      0  00 [------]      4      0      0  00 [------]
myquota3      12K      0      0  00 [------]      4      0      0  00 [------]
myquota4      12K      0      0  00 [------]      4      0      0  00 [------]
myquota5      12K      0      0  00 [------]      4      0      0  00 [------]
#block 代表容量限制,inode 代表文件数量限制
#列出目前支持的 quota 文件系统是否启动了 quota 功能
[root@li ~]# xfs_quota -x -c "state"
User quota state on /home (/dev/sdb1)
  Accounting: ON		#启动计算功能
  Enforcement: ON		#有实际的 quota 管制功能
  Inode: #76 (2 blocks, 2 extents)		#有激活 user 的限制能力
Group quota state on /home (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #77 (2 blocks, 2 extents)		#有激活 group 的限制能力
Project quota state on /home (/dev/sdb1)
  Accounting: OFF
  Enforcement: OFF
  Inode: #77 (2 blocks, 2 extents)		#并没有激活 project 的限制能力
Blocks grace time: [7 days]		#底下是 grace time 的项目
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
1.2.3、实践 Quota 流程3:限制值设定方式
[root@li ~]# xfs_quota -x -c "limit [-ug] b[soft|hard]=N i[soft|hard]=N name"
[root@li ~]# xfs_quota -x -c "timer [-ug] [-bir] Ndays"
选项与参数:
limit:实际限制的项目,可以针对 user/group 类限制,限制的项目有:
		b[soft/hard]:block 的 soft/hard 限制值,可以加单位
		i[soft/hard]:inode 的 soft/hard 限制值
		name:就是用户/群组的意思
timer:用来设定 grace time 的项目的		
#1、设定好用户们的 block 限制值
[root@li ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota1" /home
[root@li ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota2" /home
[root@li ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota3" /home
[root@li ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota4" /home
[root@li ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota5" /home
[root@li ~]# xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/sdb1)
                        Blocks                            Inodes
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root            0      0      0  00 [------]      4      0      0  00 [------]
myquota1      12K   250M   300M  00 [------]      4      0      0  00 [------]
myquota2      12K   250M   300M  00 [------]      4      0      0  00 [------]
myquota3      12K   250M   300M  00 [------]      4      0      0  00 [------]
myquota4      12K   250M   300M  00 [------]      4      0      0  00 [------]
myquota5      12K   250M   300M  00 [------]      4      0      0  00 [------]

#2、设置好 myquotagrp 的 block 限制值
[root@li ~]# xfs_quota -x -c "limit -g bsoft=950M bhard=1G myquotagrp" /home
[root@li ~]# xfs_quota -x -c "report -gbih" /home
Group quota on /home (/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 [------]
myquotagrp    60K   950M     1G  00 [------]     21      0      0  00 [------]

#3、设置一下 grace time 为 14 天
[root@li ~]# xfs_quota -x -c "timer -u -b 14days" /home
[root@li ~]# xfs_quota -x -c "timer -g -b 14days" /home
[root@li ~]# xfs_quota -x -c "state" /home
...
Blocks grace time: [14 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
#以 myquota 用户测试 quota 是否真的可以运行
[root@li ~]# su - myquota1
[myquota1@li ~]$ dd if=/dev/zero of=123.img bs=1M count=310
dd: 写入"123.img" 出错: 超出磁盘限额
记录了300+0 的读入
记录了299+0 的写出
313524224字节(314 MB)已复制,1.26264 秒,248 MB/秒
[myquota1@li ~]$ ll -h
总用量 299M
-rw-r--r--. 1 myquota1 myquotagrp 299M 8月  12 15:21 123.img
[myquota1@li ~]$ exit
登出
[root@li ~]# xfs_quota -x -c "report -ubh" /home
User quota on /home (/dev/sdb1)
                        Blocks
User ID      Used   Soft   Hard Warn/Grace
---------- ---------------------------------
root            0      0      0  00 [0 days]
myquota1   299.0M   250M   300M  00 [13 days]
myquota2      12K   250M   300M  00 [------]
myquota3      12K   250M   300M  00 [------]
myquota4      12K   250M   300M  00 [------]
myquota5      12K   250M   300M  00 [------]
1.2.3、实践 Quota 流程4:project 的限制(针对目录限制)(optional)

1、修改 /etc/fstab 内的文件系统支持参数

首先要把 grpquota 的参数取消,然后加入 prjquota ,并且卸载 /home 再重新挂载才行!

[root@li ~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值