【BASH】回顾与知识点梳理(二十七)

news2024/12/30 1:26:34

【BASH】回顾与知识点梳理 二十七

    • 二十七. 磁盘配额(Quota)
      • 27.1 磁盘配额 (Quota) 的应用与实作
        • 什么是 Quota
        • Quota 的一般用途
        • Quota 的使用限制
        • Quota 的规范设定项目
      • 27.2 一个 XFS 文件系统的 Quota 实作范例
        • 实作 Quota 流程:设定账号
        • 实作 Quota 流程-1:文件系统的支持与观察
        • 实作 Quota 流程-2:观察 Quota 报告资料
        • 实作 Quota 流程-3:限制值设定方式
        • 实作 Quota 流程-4:project 的限制 (针对目录限制) (Optional)
      • 27.3 XFS quota 的管理与额外指令对照表
      • 27.4 不更动既有系统的 quota 实例

该系列目录 --> 【BASH】回顾与知识点梳理(目录)

二十七. 磁盘配额(Quota)

如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有用户在硬盘容量的公平使用,磁盘配额 (Quota) 就是
一项非常有用的工具!另外,如果你的用户常常抱怨磁盘容量不够用,那么更进阶的文件系统就得要学习学习。

27.1 磁盘配额 (Quota) 的应用与实作

Quota 这个玩意儿就字面上的意思来看,就是有多少『限额』的意思啦!如果是用在零用钱上面, 就是类似『有多少零用钱一个月』的意思之类的。如果是在计算机主机的磁盘使用量上呢?以 Linux 来说,就是有多少容量限制的意思啰。我们可以使用 quota 来让磁盘的容量使用较为公平, 底下我们会介绍什么是 quota ,然后以一个完整的范例来介绍 quota 的实作喔!

什么是 Quota

在 Linux 系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生, 如果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其他使用者的使用权力! 因此管理员应该适当的限制硬盘的容量给用户,以妥善的分配系统资源!避免有人抗议呀!

举例来说,我们用户的默认家目录都是在 /home 底下,如果 /home 是个独立的 partition , 假设这个分区槽有 10G 好了,而 /home 底下共有 30 个账号,也就是说,每个用户平均应该会有 333MB 的空间才对。 偏偏有个用户在他的家目录底下塞了好多只影片,占掉了 8GB 的空间,想想看,是否造成其他正常使用者的不便呢? 如果想要让磁盘的容量公平的分配,这个时候就得要靠 quota 的帮忙啰

Quota 的一般用途

quota 比较常使用的几个情况是:

  • 针对 WWW server ,例如:每个人的网页空间的容量限制!
  • 针对 mail server,例如:每个人的邮件空间限制。
  • 针对 file server,例如:每个人最大的可用网络硬盘空间 (教学环境中最常见!)

上头讲的是针对网络服务的设计,如果是针对 Linux 系统主机上面的设定那么使用的方向有底下这一些:

  • 限制某一群组所能使用的最大磁盘配额 (使用群组限制):
    你可以将你的主机上的用户分门别类,有点像是目前很流行的付费与免付费会员制的情况, 你比较喜好的那一群的使用配额就可以给高一些!呵呵! ^_^
  • 限制某一用户的最大磁盘配额 (使用用户限制):
    在限制了群组之后,你也可以再继续针对个人来进行限制,使得同一群组之下还可以有更公平的分配!
  • 限制某一目录 (directory, project) 的最大磁盘配额针对目录限制):
    在旧版的 CentOS 当中,使用的预设文件系统为 EXT 家族,这种文件系统的磁盘配额主要是针对整个文件系统来处理,所以大多针对『挂载点』进行设计。 新的 xfs 可以使用 project 这种模式,就能够针对个别的目录 (非文件系统喔) 来设计磁盘配额耶!超棒的!

大概有这些实际的用途啦!基本上,quota 就是在回报管理员磁盘使用率以及让管理员管理磁盘使用情况的一个工具就是了! 比较特别的是,XFS 的 quota 是整合到文件系统内,并不是其他外挂的程序来管理的,因此,透过 quota 来直接回报磁盘使用率,要比 unix 工具来的快速! 举例来说, du 这东西会重新计算目录下的磁盘使用率,但 xfs 可以透过 xfs_quota 来直接回报各目录使用率,速度上是快非常多!

查看预设文件系统,笔者有两台服务器,一台是centos,另一台是ubuntu,可以看到预设的文件系统是不同的

[root@node-135 ~]# df -T
Filesystem              Type     1K-blocks     Used Available Use% Mounted on
..
/dev/mapper/centos-root xfs       28289540 12538576  15750964  45% /
/dev/sda1               xfs        1038336   185460    852876  18% /boot
...
test@linux-qianxc:~$ df -T
文件系统       类型         1K-块      已用      可用 已用% 挂载点
...
/dev/sdb1      ext4     480588496 349458784 106694104   77% /
...

Quota 的使用限制

虽然 quota 很好用,但是使用上还是有些限制要先了解的:

  • 在 EXT 文件系统家族仅能针对整个 filesystem
  • 核心必须支持 quota
  • 只对一般身份使用者有效
  • 若启用 SELinux,非所有目录均可设定 quota,quota 似乎仅能针对 /home 进行设定而已

不同的文件系统在 quota 的处理情况上不太相同,因此这里要特别强调,进行 quota 前,先确认你的文件系统吧!

Quota 的规范设定项目

quota 这玩意儿针对 XFS filesystem 的限制项目主要分为底下几个部分:

  • 分别针对用户、群组或个别目录 (user, group & project)
    XFS 文件系统的 quota 限制中,主要是针对群组、个人或单独的目录进行磁盘使用率的限制!

  • 容量限制或文件数量限制 (block 或 inode):
    文件系统主要规划为存放属性的 inode 与实际文件数据的block 区块,Quota 既然是管理文件系统,所以当然也可以管理 inode 或 block 啰! 这两个管理的功能为:

    • 限制 inode 用量:可以管理使用者可以建立的『文件数量』
    • 限制 block 用量:管理用户磁盘容量的限制,较常见为这种方式
  • 柔性劝导与硬性规定 (soft/hard):
    这个设定和ulimit很相似
    既然是规范,当然就有限制值。不管是 inode/block ,限制值都有两个,分别是 soft 与 hard。 通常 hard 限制值要比 soft 还要高。举例来说,若限制项目为 block ,可以限制 hard 为 500MBytes 而 soft 为 400MBytes。这两个限值的意义为:

    • hard:表示使用者的用量绝对不会超过这个限制值,以上面的设定为例, 用户所能使用的磁盘容量绝对不会超过 500Mbytes ,若超过这个值则系统会锁住该用户的磁盘使用权;
    • soft:表示使用者在低于 soft 限值时 (此例中为 400Mbytes),可以正常使用磁盘,但若超过 soft 且低于 hard 的限值 (介于 400~500Mbytes 之间时),每次用户登入系统时,系统会主动发出磁盘即将爆满的警告讯息,且会给予一个宽限时间 (grace time)。不过,若使用者在宽限时间倒数期间就将容量再次降低于 soft 限值之下,则宽限时间会停止。
  • 会倒数计时的宽限时间 (grace time):
    这个宽限时间只有在用户的磁盘用量介于 soft 到 hard 之间时,才会出现且会倒数的一个咚咚! 由于达到 hard 限值时,用户的磁盘使用权可能会被锁住。为了担心用户没有注意到这个磁盘配额的问题, 因此设计了 soft 。当你的磁盘用量即将到达 hard 且超过 soft 时,系统会给予警告,但也会给一段时间让用户自行管理磁盘。 一般预设的宽限时间为七天,如果七天内你都不进行任何磁盘管理,那么 soft 限制值会即刻取代 hard 限值来作为 quota 的限制。
    在这里插入图片描述

27.2 一个 XFS 文件系统的 Quota 实作范例

坐而言不如起而行啊,所以这里我们使用一个范例来设计一下如何处理 Quota 的设定流程。

  • 目的与账号:现在我想要让我的专题生五个为一组,这五个人的账号分别是 myquota1, myquota2, myquota3, myquota4, myquota5,这五个用户的密码都是 password ,且这五个用户所属的初始群组都是 myquotagrp 。其他的账号属性则使用默认值。
  • 账号的磁盘容量限制值:我想让这五个用户都能够取得 300MBytes 的磁盘使用量(hard),文件数量则不予限制。 此外,只要容量使用率超过 250MBytes ,就予以警告 (soft)。
  • 群组的限额 (option 1):由于我的系统里面还有其他用户存在,因此我仅承认 myquotagrp 这个群组最多仅能使用 1GBytes 的容量。这也就是说,如果 myquota1, myquota2, myquota3 都用了 280MBytes 的容量了,那么其他两人最多只能使用 (1000MB - 280x3 = 160MB) 的磁盘容量啰!这就是使用者与群组同时设定时会产生的后果。
  • 共享目录限额 (option 2):另一种设定方式,每个用户还是具有自己独立的容量限止,但是这五个人的专题共享目录在 /home/myquota 这里,该目录请设定为其他人没有任何权限的共享目录空间,仅有 myquotagrp群组拥有全部的权限。 且无论如何,该目录最多仅能够接受500MBytes 的容量。请注意,群组 (group) 的限制与目录 (directory/project) 无法同时并存喔! 所以底下的流程中,我们会先以群组来设计,然后再以目录限制来进一步说明!
  • 宽限时间的限制:最后,我希望每个使用者在超过 soft 限制值之后,都还能够有 14 天的宽限时间。

好了,那你怎么规范账号以及相关的 Quota 设定呢?首先,在这个小节我们先来将账号相关的属性、参数及其他环境搞定再说吧!

实作 Quota 流程:设定账号

# 制作账号环境时,由于有五个账号,因此鸟哥使用 script 来建立环境!
[root@study ~]# vim addaccount.sh
#!/bin/bash
# 使用 script 来建立实验 quota 所需的环境
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@study ~]# sh addaccount.sh

接下来,就让我们来实作 Quota 的练习吧!

实作 Quota 流程-1:文件系统的支持与观察

不要在根目录底下进行 quota 设计喔!因为文件系统会变得太复杂!因此,底下我们是以 /home 这个 xfs 文件系统为例的! 当然啦,首先就是要来检查看看!

[root@study ~]# df -hT /home
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-home xfs 5.0G 67M 5.0G 2% /home 

从上面的数据来看,鸟哥这部主机的 /home 确实是独立的 filesystem,而且确实是使用了 xfs 文件系统!所以可以使用底下的流程啰! 此外,由于 VFAT 文件系统并不支持 Linux Quota 功能,所以我们得要使用 mount 查询一下 /home 的文件系统为何才行啊!

在过去的版本中,管理员似乎可以透过mount -o remount的机制来重新挂载启动 quota 的功能,不过 XFS 文件系统的 quota 似乎是在挂载之初就宣告了, 因此无法使用 remount 来重新启动 quota 功能,一定得要写入 /etc/fstab 当中,或者是在初始挂载过程中加入这个项目, 否则不会生效喔!那就来瞧瞧鸟哥改了 fstab 成为怎样吧!

[root@study ~]# vim /etc/fstab
/dev/mapper/centos-home /home xfs defaults,usrquota,grpquota 0 0
# 其他项目鸟哥并没有列出来!重点在于第四字段!于 default 后面加上两个参数!
[root@study ~]# umount /home
[root@study ~]# mount -a
[root@study ~]# mount | grep home
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

基本上,针对 quota 限制的项目主要有三项,如下所示:

  • uquota/usrquota/quota:针对使用者账号的设定
  • gquota/grpquota:针对群组的设定
  • pquota/prjquota:针对单一目录的设定,但是不可与 grpquota 同时存在!

还是要再次的强调,修改完 /etc/fstab 后,务必要测试一下!若有发生错误得要赶紧处理! 因为这个文件如果修改错误,是会造成无法开机完全的情况啊!切记切记!最好使用 vim 来修改啦! 因为会有语法的检验,就不会让你写错字了!此外,由于一般用户的家目录在 /home 里面,因此针对这个项目的卸除时, 一定要将所有一般账号的身份注销,否则肯定无法卸除喔!留意留意!

实作 Quota 流程-2:观察 Quota 报告资料

制作文件系统支持之后,当然得要来瞧一瞧到底有没有正确的将 quota 的管理数据列出来才好!这时我们得要使用 xfs_quota 这个指令才行!这个指令真的是挺复杂的,因为全部的 quota 实作都是这个指令耶!所以里面的参数有够多! 不过稍微观察一下即可!先让我们来谈谈观察目前 quota 的报告内容吧!

[root@study ~]# xfs_quota -x -c "指令" [挂载点]
选项与参数:
-x :专家模式,后续才能够加入 -c 的指令参数喔!
-c :后面加的就是指令,这个小节我们先来谈谈数据回报的指令

指令:
 print :单纯的列出目前主机内的文件系统参数等资料
 df :与原本的 df 一样的功能,可以加上 -b (block) -i (inode) -h (加上单位) 等
 report:列出目前的 quota 项目,有 -ugr (user/group/project)-bi 等资料
 state :说明目前支持 quota 的文件系统的信息,有没有起动相关项目等
# 范例一:列出目前系统的各的文件系统,以及文件系统的 quota 挂载参数支持
[root@study ~]# xfs_quota -x -c "print"
Filesystem Pathname
/ /dev/mapper/centos-root
/srv/myproject /dev/vda4
/boot /dev/vda2
/home /dev/mapper/centos-home (uquota, gquota) # 所以这里就有显示支持啰

# 范例二:列出目前 /home 这个支持 quota 的载点文件系统使用情况
[root@study ~]# xfs_quota -x -c "df -h" /home
Filesystem Size Used Avail Use% Pathname
/dev/mapper/centos-home
 5.0G 67.0M 4.9G 1% /home
# 如上所示,其实跟原本的 df 差不多啦!只是会更正确就是了。

# 范例三:列出目前 /home 的所有用户的 quota 限制值
[root@study ~]# xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/mapper/centos-home)
 Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 	4K 		0 	0 	00 [------] 4 	0 	0 	00 [------]
dmtsai 34.0M 0 		0 	00 [------] 432 0 	0 	00 [------]
.....(中间省略).....
myquota1 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota2 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota3 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota4 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota5 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
# 所以列出了所有用户的目前的文件使用情况,并且列出设定值。注意,最上面的 Block
# 代表这个是 block 容量限制,而 inode 则是文件数量限制喔。另外,soft/hard 若为 0,代表没限制

# 范例四:列出目前支持的 quota 文件系统是否有起动了 quota 功能?
[root@study ~]# xfs_quota -x -c "state"
User quota state on /home (/dev/mapper/centos-home)
 Accounting: ON # 有启用计算功能
 Enforcement: ON # 有实际 quota 管制的功能
 Inode: #1568 (4 blocks, 4 extents) # 上面四行说明的是有激活 user 的限制能力
Group quota state on /home (/dev/mapper/centos-home)
 Accounting: ON
 Enforcement: ON
 Inode: #1569 (5 blocks, 5 extents) # 上面四行说明的是有激活 group 的限制能力
Project quota state on /home (/dev/mapper/centos-home)
 Accounting: OFF
 Enforcement: OFF
 Inode: #1569 (5 blocks, 5 extents) # 上面四行说明的是 project 并未支持
Blocks grace time: [7 days 00:00:30] # 底下则是 grace time 的项目
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]

在默认的情况下, xfs_quota 的 report 指令会将支持的 user/group/prject 相关数据列出来,如果只是想要某个特定的项目, 例如我们上面要求仅列出用户的数据时,就在 report 后面加上-u(-g,-p)即可喔!这样就能够观察目前的相关设定信息了。 要注意,限制的项目有 block/inode 同时可以针对每个项目来设定 soft/hard 喔!接下来实际的设定看看吧!

实作 Quota 流程-3:限制值设定方式

确认文件系统的 quota 支持顺利启用后,也能够观察到相关的 quota 限制,接下来就是要实际的给予用户/群组限制啰! 回去瞧瞧,我们需要每个用户 250M/300M 的容量限制,群组共 950M/1G 的容量限制,同时 grace time 设定为 14 天喔! 实际的语法与设定流程来瞧瞧:

[root@study ~]# xfs_quota -x -c "limit [-ug] b[soft|hard]=N i[soft|hard]=N name"
[root@study ~]# xfs_quota -x -c "timer [-ug] [-bir] Ndays"
选项与参数:
limit :实际限制的项目,可以针对 user/group 来限制,限制的项目有
 	bsoft/bhard : block 的 soft/hard 限制值,可以加单位
 	isoft/ihard : inode 的 soft/hard 限制值
 	name : 就是用户/群组的名称啊!
timer :用来设定 grace time 的项目喔,也是可以针对 user/group 以及 block/inode 设定
# 范例一:设定好用户们的 block 限制值 (题目中没有要限制 inode 啦!)
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota1" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota2" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota3" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota4" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota5" /home
[root@study ~]# xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/mapper/centos-home)
 Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquota1 12K 250M 300M 00 [------] 7 0 0 00 [------]

# 范例二:设定好 myquotagrp 的 block 限制值
[root@study ~]# xfs_quota -x -c "limit -g bsoft=950M bhard=1G myquotagrp" /home
[root@study ~]# xfs_quota -x -c "report -gbih" /home
Group quota on /home (/dev/mapper/centos-home)
 Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquotagrp 60K 950M 1G 00 [------] 36 0 0 00 [------]

# 范例三:设定一下 grace time 变成 14 天吧!
[root@study ~]# xfs_quota -x -c "timer -ug -b 14days" /home
[root@study ~]# xfs_quota -x -c "state" /home
User quota state on /home (/dev/mapper/centos-home)
.....(中间省略).....
Blocks grace time: [14 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]

# 范例四:以 myquota1 用户测试 quota 是否真的实际运作呢?
[root@study ~]# su - myquota1
[myquota1@study ~]$ dd if=/dev/zero of=123.img bs=1M count=310
dd: error writing ‘123.img’: Disk quota exceeded
300+0 records in
299+0 records out
314552320 bytes (315 MB) copied, 0.181088 s, 1.7 GB/s
[myquota1@study ~]$ ll -h
-rw-r--r--. 1 myquota1 myquotagrp 300M Jul 24 21:38 123.img
[myquota1@study ~]$ exit
[root@study ~]# xfs_quota -x -c "report -ubh" /home
User quota on /home (/dev/mapper/centos-home)
 Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
myquota1 300M 250M 300M 00 [13 days]
myquota2 12K 250M 300M 00 [------]
# 因为 myquota1 的磁盘用量已经破表,所以当然就会出现那个可怕的 grace time 啰!

实作 Quota 流程-4:project 的限制 (针对目录限制) (Optional)

这个项目不可以跟group 同时设定喔! 因此我们得要取消 group 设定并且加入 project 设定才行。

  • 修改 /etc/fstab 内的文件系统支持参数
    首先,要将 grpquota 的参数取消,然后加入 prjquota ,并且卸除 /home 再重新挂载才行!那就来测试看看!
# 1. 先修改 /etc/fstab 的参数,并启动文件系统的支持
[root@study ~]# vim /etc/fstab
/dev/mapper/centos-home /home xfs defaults,usrquota,<grpquota删除>, prjquota 0 0
# 记得, grpquota 与 prjquota 不可同时设定喔!所以上面删除 grpquota 加入 prjquota
[root@study ~]# umount /home
[root@study ~]# mount -a
[root@study ~]# xfs_quota -x -c "state"
User quota state on /home (/dev/mapper/centos-home)
 Accounting: ON
 Enforcement: ON
 Inode: #1568 (4 blocks, 4 extents)
Group quota state on /home (/dev/mapper/centos-home)
 Accounting: OFF <==已经取消啰!
 Enforcement: OFF
 Inode: N/A
Project quota state on /home (/dev/mapper/centos-home)
 Accounting: ON <==确实启动啰!
 Enforcement: ON
 Inode: N/A
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
  • 规范目录、项目名称(project)与项目 ID
    目录的设定比较奇怪,他必须要指定一个所谓的『项目名称、项目标识符』来规范才行!而且还需要用到两个配置文件! 这个让鸟哥觉得比较怪一些就是了。现在,我们要规范的目录是/home/myquota 目录,这个目录我们给个 myquotaproject 的项目名称, 这个专案名称给个 11 的标识符,这个都是自己指定的,若不喜欢就自己指定另一个吧!鸟哥的指定方式如下:
# 2.1 指定项目标识符与目录的对应在 /etc/projects
[root@study ~]# echo "11:/home/myquota" >> /etc/projects
# 2.2 规范专案名称与标识符的对应在 /etc/projid
[root@study ~]# echo "myquotaproject:11" >> /etc/projid
# 2.3 初始化专案名称
[root@study ~]# xfs_quota -x -c "project -s myquotaproject"
Setting up project myquotaproject (path /home/myquota)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion
depth infinite (-1). # 会闪过这些讯息!是 OK 的!别担心!
[root@study ~]# xfs_quota -x -c "print " /home
Filesystem Pathname
/home /dev/mapper/centos-home (uquota, pquota)
/home/myquota /dev/mapper/centos-home (project 11, myquotaproject)
# 这个 print 功能很不错!可以完整的查看到相对应的各项文件系统与 project 目录对应!
[root@study ~]# xfs_quota -x -c "report -pbih " /home
Project quota on /home (/dev/mapper/centos-home)
 Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquotaproject 0 0 0 00 [------] 1 0 0 00 [------]
# 喔耶!确定有抓到这个项目名称啰!接下来准备设定吧!
  • 实际设定规范与测试
    依据本章的说明,我们要将 /home/myquota 指定为 500M 的容量限制,那假设到 450M 为 soft 的限制好了! 那么设定就会变成这样啰:
# 3.1 先来设定好这个 project 吧!设定的方式同样使用 limit 的 bsoft/bhard 喔!:
[root@study ~]# xfs_quota -x -c "limit -p bsoft=450M bhard=500M myquotaproject" /home
[root@study ~]# xfs_quota -x -c "report -pbih " /home
Project quota on /home (/dev/mapper/centos-home)
 Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquotaproject 0 450M 500M 00 [------] 1 0 0 00 [------]
[root@study ~]# dd if=/dev/zero of=/home/myquota/123.img bs=1M count=510
dd: error writing '/home/myquota/123.img': No space left on device
501+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.96296 s, 544 MB/s
# 你看!连 root 在该目录底下建立文件时,也会被挡掉耶!这才是完整的针对目录的规范嘛!赞!

这样就设定好了啰!未来如果你还想要针对某些个目录进行限制,那么就修改 /etc/projects, /etc/projid 设定一下规范, 然后直接处理目录的初始化与设定,就完成设定了!好简单!

27.3 XFS quota 的管理与额外指令对照表

不管多完美的系统,总是需要可能的突发状况应付手段啊!所以,接下来我们就来谈谈,那么万一如果你需要暂停 quota 的限制,或者是重新启动 quota 的限制时,该如何处理呢?还是使用 xfs_quota 啦!增加几个内部指令即可:

  • disable:暂时取消 quota 的限制,但其实系统还是在计算 quota 中,只是没有管制而已!应该算最有用的功能啰!
  • enable:就是回复到正常管制的状态中,与 disable 可以互相取消、启用!
  • off:完全关闭 quota 的限制,使用了这个状态后,你只有卸除再重新挂载才能够再次的启动 quota 喔!也就是说, 用了 off 状态后,你无法使用 enable 再次复原 quota 的管制喔!注意不要乱用这个状态!一般建议用 disable 即可,除非你需要执行 remove 的动作!
  • remove:必须要在 off 的状态下才能够执行的指令~这个 remove 可以『移除』quota 的限制设定,例如要取消 project 的设定, 无须重新设定为 0 喔!只要 remove -p 就可以了!
# 1. 暂时关闭 XFS 文件系统的 quota 限制功能
[root@study ~]# xfs_quota -x -c "disable -up" /home
[root@study ~]# xfs_quota -x -c "state" /home
User quota state on /home (/dev/mapper/centos-home)
 Accounting: ON
 Enforcement: OFF <== 意思就是有在计算,但没有强制管制的意思
 Inode: #1568 (4 blocks, 4 extents)
Group quota state on /home (/dev/mapper/centos-home)
 Accounting: OFF
 Enforcement: OFF
 Inode: N/A
Project quota state on /home (/dev/mapper/centos-home)
 Accounting: ON
 Enforcement: OFF
 Inode: N/A
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
[root@study ~]# dd if=/dev/zero of=/home/myquota/123.img bs=1M count=520
520+0 records in
520+0 records out # 见鬼!竟然没有任何错误发生了!
545259520 bytes (545 MB) copied, 0.308407 s, 180 MB/s
[root@study ~]# xfs_quota -x -c "report -pbh" /home
Project quota on /home (/dev/mapper/centos-home)
 Blocks
Project ID Used Soft Hard Warn/Grace
---------- ---------------------------------
myquotaproject 520M 450M 500M 00 [-none-]
# 其实,还真的有超过耶!只是因为 disable 的关系,所以没有强制限制住就是了!
[root@study ~]# xfs_quota -x -c "enable -up" /home # 重新启动 quota 限制
[root@study ~]# dd if=/dev/zero of=/home/myquota/123.img bs=1M count=520
dd: error writing ‘/home/myquota/123.img’: No space left on device
# 又开始有限制!这就是 enable/disable 的相关对应功能喔!暂时关闭/启动用的!
# 完全关闭 quota 的限制行为吧!同时取消 project 的功能试看看!
[root@study ~]# xfs_quota -x -c "off -up" /home
[root@study ~]# xfs_quota -x -c "enable -up" /home
XFS_QUOTAON: Function not implemented
# 您瞧瞧!没有办法重新启动!因为已经完全的关闭了 quota 的功能!所以得要 umouont/mount 才行!
[root@study ~]# umount /home; mount -a
# 这个时候使用 report 以及 state 时,管制限制的内容又重新回来了!好!来瞧瞧如何移除 project
[root@study ~]# xfs_quota -x -c "off -up" /home
[root@study ~]# xfs_quota -x -c "remove -p" /home
[root@study ~]# umount /home; mount -a
[root@study ~]# xfs_quota -x -c "report -phb" /home
Project quota on /home (/dev/mapper/centos-home)
 Blocks
Project ID Used Soft Hard Warn/Grace
---------- ---------------------------------
myquotaproject 500M 0 0 00 [------]
# 嘿嘿!全部归零!就是『移除』所有限制值的意思!

请注意上表中最后一个练习,那个 remove -p 是『移除所有的 project 控制列表』的意思!也就是说,如果你有在 /home 设定多个 project 的限制, 那么 remove 会删的一个也不留喔!如果想要回复设定值,那…只能一个一个重新设定回去了!没有好办法!

相关的参考指令/配置文件案对照参考

设定流程项目XFS 文件系统EXT 家族
/etc/fstab 参数设定usrquota/grpquota/prjquotausrquota/grpquota
quota 配置文件不需要quotacheck
设定用户/群组限制值xfs_quota -x -c “limit…”edquota 或 setquota
设定 grace timexfs_quota -x -c “timer…”edquota
设定目录限制值xfs_quota -x -c “limit…”
观察报告xfs_quota -x -c “report…”repquota 或 quota
启动与关闭 quota 限制xfs_quota -x -c “[disable|enable]…”quotaoff, quotaon
发送警告信给用户目前版本尚未支持warnquota

27.4 不更动既有系统的 quota 实例

想一想,如果你的主机原先没有想到要设定成为邮件主机,所以并没有规划将邮件信箱所在的/var/spool/mail/ 目录独立成为一个 partition ,然后目前你的主机已经没有办法新增或分区出任何新的分区槽了。那我们知道 quota 的支持与文件系统有关, 所以并无法跨文件系统来设计 quota 的project 功能啊!因此,你是否就无法针对 mail 的使用量给予 quota 的限制呢?

此外,如果你想要让使用者的邮件信箱与家目录的总体磁盘使用量为固定,那又该如何是好? 由于/home 及 /var/spool/mail 根本不可能是同一个 filesystem (除非是都不分区,使用根目录,才有可能整合在一起), 所以,该如何进行这样的 quota 限制呢?

其实没有那么难啦!既然 quota 是针对 filesystem 来进行限制,假设你又已经有 /home 这个独立的分区槽了,那么你只要:

  1. 将 /var/spool/mail 这个目录完整的移动到 /home 底下;
  2. 利用ln -s /home/mail /var/spool/mail来建立链接数据;
  3. 将 /home 进行 quota 限额设定

只要这样的一个小步骤,嘿嘿!您家主机的邮件就有一定的限额啰!当然啰!您也可以依据不同的使用者与群组来设定 quota 然后同样的以上面的方式来进行 link 的动作!嘿嘿嘿!就有不同的限额针对不同的使用者提出啰!很方便吧!^_^

朋友们需要注意的是,由于目前新的 distributions 大多有使用 SELinux 的机制, 因此你要进行如同上面的目录搬移时,在许多情况下可能会有使用上的限制喔!或许你得要先暂时关闭 SELinux 才能测试, 也或许你得要自行修改 SELinux 的规则才行喔!

该系列目录 --> 【BASH】回顾与知识点梳理(目录)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 PostgreSQL 创建全文搜索引擎2:Postgres 与 Elasticsearch

使用 PostgreSQL 作为全文搜索引擎很诱人&#xff0c;因为它需要的基础设施较少。但它的搜索相关功能集是否足以与基于 Lucene 的替代方案竞争&#xff1f; 在第 1 部分中&#xff0c;我们深入研究了 PostgreSQL 全文搜索的功能&#xff0c;并探讨了如何实现相关性提升(releva…

如何选择最佳的文件传输协议?(FTP、TFTP、Raysync)

在数字化时代&#xff0c;通过互联网传输文件是一项常见的任务。因此&#xff0c;选择适合您企业需求的文件传输协议非常重要。 文件传输协议是发送方和接收方之间的一套规则和信息。它的作用就像网络两端都能理解的一种语言&#xff0c;使得数据可以正确输出并带有正确的文件…

SRM订单管理:优化供应商关系

一、概述SRM订单管理的概念&#xff1a; SRM订单管理是指在供应商关系管理过程中&#xff0c;有效管理和控制订单的创建、处理和交付。它涉及与供应商之间的沟通、合作和协调&#xff0c;旨在实现订单的准确性、可靠性和及时性。 二、SRM订单管理的流程&#xff1a; 1. 订单创…

问道管理:缩量小幅上涨说明什么?

股市里面&#xff0c;股票价格上涨或跌落都是常见现象。可是关于那些在商场上寻求收益的出资者来说&#xff0c;他们需要对每一个股市中的价格动摇有深化的了解&#xff0c;以便做出更正确的出资决策。最近&#xff0c;出资者们发现商场缩量小幅上涨的现象时有发生&#xff0c;…

SpringBoot复习:(51)默认情况下DataSource是怎么创建出来的,是什么类型的?

DataSource是通过DataSourceAutoConfiguration创建的&#xff0c;这个类代码如下&#xff1a; 可以看到DataSourceAutoConfiguration有个静态内部类PooledDataSourceConfiguration,在这个类上有个Import注解&#xff0c;导入了DataSourceConfiguration.Hikari这个类&#xff0…

8.15号经典模型复习笔记

文章目录 Deep Residual Learning for Image Recognition(CVPR2016)方法 Densely Connected Convolutional Networks&#xff08;CVPR2017&#xff09;方法 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks&#xff08;ICML2019&#xff09;方法 Re…

科创板四周年,6家半导体厂商被评为最具价值上市公司

7月21日&#xff0c;由聚焦科创板的权威媒体《科创板日报》及财联社联合发起的“科创板开市四周年评选”榜单正式发布&#xff0c;其包括“2023最具价值科创板上市公司”、“2023最具创新力科创板上市公司”等子榜单。 其中&#xff0c;“2023最具价值科创板上市公司”子榜单评…

九州未来参与编制的开源领域3项团体标准获批发布

日前&#xff0c;中电标2023年第21号团体标准公告正式发布&#xff0c;其中由九州未来参与编制的3项开源领域团体标准正式获批发布&#xff0c;于2023年8月1日正式实施。 具体内容如下&#xff1a; 《T/CESA 1269-2023 信息技术 开源 术语与综述》&#xff0c;本文件界定了信息…

point line

2 * (2 - 1) / 2 1 3 * (3 - 1) / 2 3 4 * (4 - 1) / 2 6 5 * (5 - 1) / 2 10 ...... n * (n - 1) / 2

【实用插件】ArcGIS for AutoCAD插件分享下载

ArcGIS包含一系列功能&#xff0c;其中ArcGIS for AutoCAD一个免费的可下载的AutoCAD插件&#xff0c;它可简化将CAD和GIS数据整合在一起的过程提供互操作性。 ArcGIS for AutoCAD互操作性平台将连接AutoCAD和 ArcGIS&#xff0c;以增强使用地理环境设计CAD工程图时的用户体验…

vue3 + ts defineProps 设置默认值 + 子父之间的通信

首先要引入 import { withDefaults, defineProps, defineEmits } from vue1、接受父组件传递的参数与默认值 // 接受父组件传递参数 withDefaults(defineProps<{name: String;}>(),{name: 小怪兽,} ) 2、暴露子组件数据与方法 (如没有暴露&#xff0c;父组件不能使用子…

【C快学-C语言程序设计(基础篇)】从VSCode中使用C编写我的第一个Hello world

简介&#xff1a;本专栏是一个C语言基础入门知识学习的一个专栏 面向&#xff1a;广大C友 工具&#xff1a;VSCODE 博主&#xff1a;一个友好且宠粉的博主&#xff0c;送书活动小专栏&#xff0c;不定期抽奖送图书给粉丝 社区&#xff1a;&#x1f988;山鱼社区 1.如何配置C语言…

油电同价、标配8155,奇瑞猛攻10-15万中型SUV市场

8月8日&#xff0c;奇瑞瑞虎8冠军家族在北京国家奥林匹克体育中心正式上市&#xff0c;推出了瑞虎8 PRO冠军版、瑞虎8新能源冠军版两款新车&#xff0c;燃油混动双线同步发力。 其中&#xff0c;瑞虎8 PRO冠军版共推7款车型&#xff0c;官方指导价12.69万元-16.39万元&#xf…

cad中数据输入方法【直角坐标法,极坐标法,动态数据】

在 AutoCAD 中&#xff0c;点的坐标可以用直角坐标、极坐标、球面坐标和柱面坐标表示&#xff0c;每一种坐标又分别具有两种坐标输入方式&#xff1a;绝对坐标和相对坐标。其中直角坐标和极坐标最为 常用。 1.直角坐标法&#xff1a; 用点的 X、Y 坐标值表示的坐标。在命令行…

【Windows系统编程】03.远线程注入ShellCode

shellcode&#xff1a;本质上也是一段普通的代码&#xff0c;只不过特殊的编程手法&#xff0c;可以在任意环境下&#xff0c;不依赖于原有的依赖库执行。 远程线程 #include <iostream> #include <windows.h> #include <TlHelp32.h>int main(){HANDLE hPr…

十、避开客户端控件——通过客户端传送数据

文章目录 一、通过客户端传送数据1.1 隐藏表单字段1.2 HTTP cookie1.3 URL参数1.4 Refere消息头1.5 模糊数据1.6 ASP.NET *ViewState* 由于客户端可提交任意输入&#xff0c;Web应用程序的核心安全因此受到威胁。尽管如此&#xff0c;大部分的Web应用程序仍然依靠在客户端执行各…

数组的详述(1)

1、一维数组的创建和初始化&#xff1a; 数组是一组相同类型元素的集合。 &#xff08;1)创建方式&#xff1a; type_t 是指数组的元素类型 arr_name 数组名 [const_n] 一个常量表达式&#xff0c;用来指定数组的大小 //在c99标准之前&#xff0c;数组的大小必须是常…

vscode | linux | c++ intelliense 被弃用解决方案

每日一句&#xff0c;vscode用的爽是爽&#xff0c;主要是可配置太强了。如果也很会研究&#xff0c;可以直接去咸鱼接单了 废话少说&#xff0c;直接整。 用着用着说是c intelliense被弃用&#xff0c;很多辅助功能无法使用&#xff0c;像查看定义、查看引用、函数跳转、智能提…

解决ubantu驱动掉了的问题

这里写自定义目录标题 解决ubuntu驱动掉了的问题 解决ubuntu驱动掉了的问题 首先确定是否有驱动&#xff1a; ls /usr/src | grep nvidia若有&#xff0c;则大概率是驱动版本与内核版本对应不上&#xff0c;则把内核版本切换为初始版本即可。参照&#xff1a;https://blog.cs…

《封神第一部》票房已破21亿,商朝真有大象,苏妲己可能是周文王的恩人

随着《封神第一部&#xff1a;朝歌风云》的持续大火&#xff0c;我周六也去电影院贡献了一票&#xff0c;重温中国神话经典&#xff0c;感受历史史诗的震撼&#xff0c;改编的非常棒&#xff0c;我很喜欢。 针对影片中的一些故事和疑问&#xff0c;做些总结。 1、影片中有几处镜…