quota磁盘配额

75 篇文章 1 订阅
69 篇文章 2 订阅

知识点:

1、quota配额用来限制用户能够使用的磁盘空间的大小

2、设置配额的条件:需要内核支持quota的功能

      可以用下面这条命令查看内核是否支持quota功能:

      grep -i quota /boot/config-2.6.32-431.el6.x86_64

      如果看到CONFIG_QUOTA=y这行,表示内核支持quota功能。

3、应用场景:1).网络存储空间有限 网盘

                     2).邮件服务器

                     3).公司的文件共享服务器

4、限制对象:1).限制普通用户

                     2).限制用户组

注意:不能限制root用户。是root用户对其他人的限制

5、能够限制的对象:inode、block

 inode:限制用户创建文件的个数

 block:限制用户能够使用的磁盘空间的大小

6、如何进行磁盘配额?

     需要先关闭firewalld、selinux

     实施思路:

        1)、对新硬盘分区、格式化、挂载时启用quota功能

        2)、用quotacheck生成quota主配置文件

        3)、用edquota给用户设置quota配额方案

        4)、激活用户的配额方案

        5)、用账号登录,创建文件进行配额测试

-------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------

ext4设置quota配额:

案例一:给sdb硬盘创建一个1G的主分区,格式化成ext4文件系统,手动挂载sdb1分区到/quota目录(要启用quota功能)。创建用户u1、u2,指定家目录为/db1/用户名。限制u1用户最大只能用10M的空间,当使用量超过6M时发出警告。限制u2用户最多只能创建8个文件,当超过了5个文件时发出警告。分别切换到u1、u2用户,测试配额功能,查看配额状态。

1.首先需要分区开启用户配额和组配额,文件系统必须支持磁盘配额      usrquota,grpquota (挂载时启用的quota选项)

     #创建一个分区并格式化

       lsblk 

       fdisk -cu /dev/sdb     #要求创建一个1G的主分区

       fdisk分区操作参考:p—>n—>p—>回车—>回车—>+1G—>p—>w

       partx -a /dev/sdb   或  partprobe    #通知内核更新分区表信息

       mkfs.ext4  /dev/sdb1

       #将文件系统挂载到系统中的/quota目录

       mkdir /quota

       mount /dev/sdb1 /quota

       #查看文件系统是否支持磁盘配额

       mount | grep /quota

       #让文件系统支持磁盘配额(用remount选项)

       mount -o remount,usrquota,grpquota /dev/sdb1 /quota

       #将分区设置为开机挂载(可选)

       vim /etc/fstab

           /dev/sdb1 /quota ext4 defaults,usrquota,grpquota 0 0   

2.创建磁盘配额的记录文件(即quota主配置文件)

       quotacheck -cugv /quota

          注:-c 创建磁盘配额的配置文件

                -u 针对用户配额的配置文件aquota.user

                -g 针对用户组配额的配置文件aquota.group

                -v 显示扫描过程信息

                -a 检测系统中所有已经挂载支持quota功能的分区

       ls  /quota

3.针对用户进行配额

       useradd quota1  -d  /quota/quota1

       useradd quota2  -d  /quota/quota2

       ls -ld /quota

       #保证普通用户可以对/quota目录可写

       chmod 777 /quota

 

案例二:限制quota1用户最多只能创建10个文件  创建文件数达到7个警告 用户使用的空间最多使用10M 使用空间达到8M警告

       edquota -u quota1      #编辑方式同vim

            Disk quotas for user quota1 (uid 501):

            Filesystem          blocks       soft       hard          inodes     soft     hard

            /dev/sdb1                   0        8M       10M             0         7         10

       注:inodes:单位是个

             blocks:单位是KB

             soft软限制:超过软限制只警告,不影响使用,只警告一次

             hard硬限制:是不可逾越的限制

4.启动配额(重要)

       quotaon /quota

       注:关闭配额quotaoff /quota

5.测试配额

       1)文件个数的测试

       su - quota1

       pwd      #显示工作路径

       quota    #显示当前用户自己的配额状态

       cd /quota/quota1    #一定要切换到做了配额的目录下操作

       touch a.txt

       touch {b..d}.txt     #超过软限制警告,有警告,但是还可以创建

       touch e.txt

       touch f.txt       #超过硬限制不能创建文件

       ls   -a

       rm  -fv   {a..f}.txt     #清理文件

       2)使用空间测试

       su - quota1

       cd /quota/quota1     #一定要切换到做了配额的目录下操作

       dd if=/dev/zero of=1.txt bs=1M count=5

       quota       #显示当前用户自己的配额状态

       ls -lh

       dd if=/dev/zero of=2.txt bs=1M count=3

       dd if=/dev/zero of=3.txt bs=1M count=3

 

       #查看配额的使用情况(用root来查)

       exit    #退出当前用户的登录

       repquota -a     #文件系统配额的汇总

       软限制的限期:默认7天,即grace值

       注:grace(优雅时间),当超过软限制,优雅时间倒计时为0时,软限制自动提升为硬限制(即不能超过软限制)。用'edquota  -T  用户名'修改用户的grace时间。

 

案例三:给sdb硬盘再分一个2G的分区,将sdb2分区格式化成ext4文件系统,手动挂载到/db2目录,启用配额功能。创建用户dota,指定家目录为/db2/dota。设置配额方案为容量硬限制12M,当超过6M时发出警告。文件数量硬限制为15,当超过8时发出警告。要用         #dota用户做配额测试。

       lsblk

       fdisk   /dev/sdb

       partprobe

       mkfs.ext4   /dev/sdb2

       mkdir  -pv  /db2

       mount   -o   usrquota,grpquota   /dev/sdb2    /db2

       mount

       quotacheck   -cugv   /db2

       ls   /db2

       useradd   dota   -d  /db2/dota

       edquota  -u  dota    #配额方案如下

            Disk quotas for user dota (uid 1003):

            Filesystem                   blocks       soft       hard     inodes     soft     hard

            /dev/sdb1                         0          0          0          0        0        0

            /dev/sdb2                         0          6M        12M         0        8        15

       激活配额方案:quotaon    /db2

       查看所有的配额使用状态:repquota   -a

       用dota用户测试配额:

       su  -  dota

       pwd

       quota

       touch  {1..4}.txt

       touch  {5..20}.txt

       quota

       rm  -fv  {1..20}.txt

       dd  if=/dev/zero   of=7m.txt    bs=1M   count=7

       dd  if=/dev/zero   of=6m.txt    bs=1M   count=6

       quota

       rm  -fv   *.txt

       exit

-------------------------------------------------------------------------------------------------------------------

组的quota配额:

       edquota -g IT        

       quotaoff  /quota  停止配额

 

案例一:为用户组IT配置额度,IT组只能在/sdb目录创建100个文件并使用空间不能超100M。

       #创建文件个数到达80个警告,空间使用80M警告。

       groupadd IT

       useradd -g IT it1

       useradd -g IT it2

 

       edquota -g IT

            Disk quotas for group IT (gid 583        ):

            Filesystem               blocks       soft       hard     inodes     soft     hard

            /dev/sdb1                     0          80000  100000         0        80      100

 

案例二:创建目录/perm/public,该目录可以被dev组和adm1组的用户任意操作,其他用户只能访问这个目录内的文件,新建文件public,只能往文件里追加内容,不能覆盖,root用户也不能随意删除。

       mkdir -p /perm/public 

       groupadd dev

       groupadd adm1

       setfacl -m g:dev:rwx /perm/public

       setfacl -m g:adm1:rwx /perm/public

       getfacl /perm/public/

       touch public

       chattr +a public 

 

案例三:统计自己电脑也以登陆到系统的用户有多少个

       grep -c /bin/bash /etc/passwd

       grep /bin/bash /etc/passwd |wc -l

 

案例四:开机挂载/dev/sdb1分区到/sdb1目录

       vim /etc/fstab

            /dev/sdb1 /sdb1  ext4  defaults 0  0 

 

案例五:使用文件创建交换分区,交换分区大小为80M

       dd if=/dev/zer0 of=/tmp/a.txt  bs=1M count=80

       mkswap /tmp/a.txt

       swapon /tmp/a.txt

       vim /etc/fstab

            /tmp/a.txt  swap swap defaults 0 0    

-------------------------------------------------------------------------------------------------------------------

xfs的quota配额:

查看xfs配额帮助:man xfs_quota   可以用/EXAMPLES查找实例。

 

案例一:用parted命令给sdc硬盘创建一个1G的分区,格式化成xfs文件系统,挂载到/xfsquota目录,设置磁盘配额方案。

       lsblk

       parted -s /dev/sdc mklabel msdos

       parted /dev/sdc mkpart primary 1 1G

       lsblk

       mkfs.xfs /dev/sdc1

       mkdir -pv /xfsquota

       mount -o usrquota,grpquota /dev/sdc1 /xfsquota

       mount

 

xfs配额参考:

案例一:列出目前系统的各的文件系统,以及文件系统的 quota 挂载参数支持

       xfs_quota   -x   -c  "print"     显示状态信息

案例二:列出目前 /xfsquota 这个支持 quota 的载点文件系统使用情况

       xfs_quota  -x  -c  "df -h"  /xfsquota

案例三:列出目前 /xfsquota 的所有用户的 quota 限制值

       xfs_quota -x -c "report -ubih"  /xfsquota

注:report -ubih中的u是指user用户,b是block块,i是inode索引号,h是human人性化显示。

案例四:列出目前支持的 quota 文件系统是否有起动了 quota 功能?

       xfs_quota  -x  -c  "state"

 

限制值设定方式(配额方案)

命令格式:xfs_quota  -x  -c  "指令"  [挂载点]

       xfs_quota -x -c "limit [-ug] b[soft|hard]=N i[soft|hard]=N name"

       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 设定

创建组和用户:

       groupadd   myquotagrp

       useradd   myquota1   -g  myquotagrp   -d   /xfsquota/myquota1

       useradd   myquota2   -g  myquotagrp   -d   /xfsquota/myquota2

       useradd   myquota3   -g  myquotagrp   -d   /xfsquota/myquota3

 

案例一:设定好用户们的 block 限制值 (题目中没有要限制 inode 啦!)

       xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota1" /xfsquota

       xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota2" /xfsquota

       xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota3" /xfsquota

       xfs_quota -x -c "report -ubih" /xfsquota

案例二:设定好 myquotagrp组的 block 限制值

       xfs_quota -x -c "limit -g bsoft=950M bhard=1G myquotagrp" /xfsquota

       xfs_quota -x -c "report -gbih" /xfsquota

案例三:设定一下 grace time 变成 14 天吧!

       xfs_quota  -x  -c  "timer -b  14days" /xfsquota

       xfs_quota  -x -c  "state"  /xfsquota     查状态

案例四:以 myquota1 用户测试 quota 是否真的实际运作呢?

       su  -  myquota1

       pwd

       dd if=/dev/zero of=123.img bs=1M count=310

       dd: error writing ‘123.img’: Disk quota exceeded   提示超出磁盘限额

       ll -h

       exit

       xfs_quota -x -c "report -ubh" /xfsquota

 

目录project 的限制 (针对目录限制) (Optional)

       umount   /xfsquota

       mount  -o   prjquota   /dev/sdc1   /xfsquota

       xfs_quota -x -c "state"

 

规范目录、项目名称(project)与项目 ID

目录的设定比较奇怪,他必须要指定一个所谓的『项目名称、项目标识符』来规范才行!而且还需要用到两个配置文件! 现在,我们要规范的目录是/xfsquota/myquota 目录,这个目录我们给个 myquotaproject 的项目名称, 这个项目名称给个 11 的ID标识符,这个都是自己指定的,若不喜欢就自己指定另一个吧!我们的参考方案如下:

# 2.1 指定项目标识符与目录的对应在 /etc/projects

       mkdir  -pv   /xfsquota/myquota

       echo "11:/xfsquota/myquota" >> /etc/projects

# 2.2 规范专案名称与标识符的对应在 /etc/projid

       echo "myquotaproject:11" >> /etc/projid

# 2.3 初始化专案名称

       xfs_quota -x -c "project -s myquotaproject"

       xfs_quota -x -c "print " /xfsquota

       xfs_quota -x -c "report -pbih " /xfsquota

 

#实际设定规范与测试

依据本章的说明,我们要将 /home/myquota 指定为 500M 的容量限制,那假设到 450M 为 soft的限制好了! 那么设定就会变成这样啰:

# 3.1 先来设定好这个 project 吧!设定的方式同样使用 limit 的 bsoft/bhard 喔!:

       xfs_quota -x -c "limit -p bsoft=450M bhard=500M myquotaproject" /xfsquota

       xfs_quota -x -c "report -pbih " /xfsquota

       dd if=/dev/zero of=/xfsquota/myquota/123.img bs=1M count=510

-------------------------------------------------------------------------------------------------------------------练习:用df   -hT显示已挂载的文件系统,用目录配额功能对/boot/xfsx进行限制,容量软限制为50M,硬限制为80M。并测试和查看配额状态。

       df   -hT

       umount   /boot

       mount   -o   prjquota    /dev/sda1   /boot

       mount

       mkdir  -pv   /boot/xfsx

       echo "12:/boot/xfsx" >> /etc/projects

       echo "myxfsx:12" >> /etc/projid

       xfs_quota -x -c "project -s  myxfsx"

       xfs_quota  -x  -c  "print"   /boot 

       xfs_quota -x -c "limit -p bsoft=50M bhard=80M myxfsx" /boot

       xfs_quota -x -c "report -pbih " /boot

       dd if=/dev/zero  of=/boot/xfsx/40m.img  bs=1M  count=40

       dd if=/dev/zero  of=/boot/xfsx/60m.img  bs=1M  count=60

       xfs_quota -x -c "report -pbih " /boot

 

注:部分内容来源于《鸟哥的Linux基础学习篇 第四版》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值