Quota-磁盘配额能够为系统一般用户制定相应级别的磁盘使用空间,在实际工作中的操作运用比较广泛

对其进行详细介绍!

实验目的和准备:
目       的:为/home下的一般用户和固定的群组(quotagrp)设定quota配额
准备工作:新建用户五个:user1,user2,user3,user4,user5
可以编写shell脚本来实现!

localhost:root /root 4732 $groupadd quotagrp

localhost:root /root 4733 $for username in user1 user2 user3 user4 user5
> do
> useradd -g quotagrp  $username                                               #指定用户创建时所在的群组
> echo "password" | passwd --stdin $username                           #设定用户密码
> done
Enter

准备工作完成!开始正式工作



配置步骤:

1.首先确定文件系统 Kernel必须支持quota属性,Kernel 2.4.xx 以上都没问题!

查看/home是不是挂载在独立的分区,若没有,最好改一下!

localhost:root /root 4734 $ df -h /home
Filesystem     Size  Used Avail Use% Mounted on
/dev/sda10      4.8G  740M  3.8G  17% /home                      

localhost:root /root 4735 $mount | grep home
/dev/sda10 on /home type ext3 (rw)

因为/home是独立的文件系统,所以可以直接进行quota限制!

vim修改/etc/fstab,重启后生效
localhost:root /root 4736 $ vim /etc/fstab           
LABEL=/home   /home  ext3   defaults,usrquota,grpquota  1 2                     #修改

localhost:root /root 4736 $umount  /home
localhost:root /root 4737 $mount -a                         #重新挂载
localhost:root /root 4738 $mount | grep home
/dev/sda10 on /home type ext3 (rw,usrquota,grpquota)

2.建立quota配置文件
原理:quota其实通过分析整个文件系统中没各用户(群组)拥有的文件数和总容量,再将这些资料记录在该文件系统的最顶层目录,然后再使用在quota记录文件中限定的用户和群组限额来管理磁盘使用,所以这个quota配置文件是必须建立的!

localhost:root /root 4739 $quotacheck [-avugfM] [/mount_point]  # quotacheck命令用来扫描文件系统并自动创建quota的配置文件

-a  :扫描所有在 /etc/mtab 內,含有 quota 支持的 filesystem,加上这个参数后,
/mount_point 可不用写了,因为已经扫描了所有的文件系统了嘛!
-u  :针对使用者扫描文件以及目录的使用情況,并自动建立 aquota.user
-g  :针对群組扫描文件以及目录的使用情況,并自动建立 aquota.group
-v  :显示扫描过程的详细信息;
-f  :强制扫描文件系统,并写入新的 quota 配置文件
-M  :強制以读写的方式扫描文件系统,只有在特殊情況下才会使用。


localhost:root /root 4740 $quotacheck  -avug  -mf    #自动建立quota配置文件成功 :aquota.user, aquota.group

3.开启quota并设定限制值
制作好aquota.user, aquota.group之后就可以开启quota了,

localhost:root /root 4741 $quotaon -avug  mount_point               

-u  :针对用户启动 quota (aquota.user)
-g  :针对群组启动 quota (aquota.group)
-v  :显示启动过程信息;
-a  :根据/etc/mtab 內的 filesystem 设定相关的 quota ,若不加 -a 的话,
后面就需要加上特定的那个 filesystem 的!                    # 由於我们是要启动 user/group 的

localhost:root /root 4742 $quotaoff -[a u g]

-a  :全部的 filesystem 的 quota 都关闭 (根据 /etc/mtab)
-u  :仅针对后面接着的那个 /mount_point 关闭 user quota
-g  :仅针对后面接着的那个 /mount_point 关闭 group quota


edquota :编辑用户/群组的限额和宽限时间!
localhost:root /root 4743 $edquota [-u username] [-g groupname]
localhost:root /root 4744 $ edquota -t                 #修改宽限时间
localhost:root /root 4745 $edquota -p 参考用户 -u 目标用户:
-u  :后面接username,设定 username 的限制值,里面七列:
1.文件系統 (filesystem):说明该限制值是针对哪个文件系统 (或 partition);
2.磁盘容量 (blocks): quota 自己算出來的,单位是 Kbytes,不要更改;
3.soft:磁盘容量 (block) 的 soft 限制值,单位也是 KB
4.hard:block 的 hard 限制值,单位 KB;
5.文件数量 (inodes): quota 自己算出來的,单位是正整数,不要更改他;
6.soft:inode 的 soft 限制值;
7.hard:inode 的 hard 限制值;

-g  :後面接groupname,可以 groupname 的限制值;
-t  :可以修改宽限時間。
-p  :复制参考用户的quota配置文件。使得新用户的目标用户的quota派之和它一样!


设定一个用户的quota配置
localhost:root /root 4746 $ edquota -u user1                                    #用VIM修改下面
Disk quotas for user myquota1 (uid 710):
Filesystem    blocks    soft       hard      inodes  soft  hard
/dev/hda3         80    250000   300000      10      0      0

其他四个用户复制就可以了:
localhost:root /root 4747 $ edquota -p user1 -u user2
localhost:root /root 4748 $ edquota -p user1 -u user3
localhost:root /root 4749 $ edquota -p user1 -u user4
localhost:root /root 4750 $ edquota -p user1 -u user5

修改五个用户共同所在群组quotagrp的限额!
localhost:root /root 4751 $edquota -g quotagrp
Disk quotas for group myquotagrp (gid 713):
Filesystem    blocks    soft     hard  inodes  soft  hard
/dev/sda10        400  900000  1000000      50     0     0

修改宽限时间!
localhost:root /root 4752 $edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem         Block grace period     Inode grace period
/dev/hda3                14days                  7days
# 原本是 7days ,我们将它们改成14days !

到现在,我們已经将用户/群組/宽限时间都设定完毕!接下來就是观察到底设定有没有生效啦!


4.Quota限制值报表!

分两种:一种是针对没各用户/群组的 quota 指令,一种是针对整个文件系统的 repquota 指令。

单用户报表:
localhost:root /root 4753 $ quota -uvs user1 user2 user3 user4 user5

.............................................................................................................

群组报表:

localhost:root /root 4754 $ quota -gvs quotagrp
................................................................................................................


针对整个文件系统报表:
localhost:root /root 4755 $ repoquota -a [-vugs]
-a  :直接到 /etc/mtab 搜寻具有 quota 标志的 filesystem ,并报告 quota 的结果;
-v  :输出的资料将含有 filesystem 相关的详细信息;
-u  :显示出使用者的 quota 限值 (这是预设值);
-g  :显示出个別群组的 quota 限值。
-s  :使用 M, G 为单位显示结果                                       # 查詢本案例中所有使用者的 quota 限制情況:


5.Quota测试与管理
测试一:
用user1身份来建立一个270M的大文件并观察quota的结果!

user1@localhost: /root 4753 $dd if=/dev/zero of=bigfile bs=1M count=270
hda3: warning, user block quota exceeded.
270+0 records in
270+0 records out
283115520 bytes (283 MB) copied, 3.20282 seconds, 88.4 MB/s

查看报表:

root@localhost: /root 4754 $repquota -auv
*** Report for user quotas on device /dev/sda10
Block grace time: 14days; Inode grace time: 7days
Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
myquota1  +-  276840  250000  300000 13days      11     0     0

测试二:
用user1创建一个大于300M的文件

user1@localhost: /root 4755 $dd if=/dev/zero of=bigfile bs=1M count=300
sda10: write failed, user block limit reached.
dd: writing `bigfile2': Disk quota exceeded
23+0 records in 
22+0 records out
23683072 bytes (24 MB) copied, 0.260081 seconds, 91.1 MB/s

user1@localhost: /root 4756 $du -sk
300000  .                               #到达quota配额极限

此时,user1可以开始处理他的文件系统了,若不处理的话,最后宽限时间会归0,出现以下提示

root@localhost: /root 4756 $repquota -au
*** Report for user quotas on device /dev/hda3
Block grace time: 00:01; Inode grace time: 7days
Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
myquota1  +-  300000  250000  300000   none      11     0     0
# 倒数整个归零,,所以 grace 的部分就会变成 none ,不继续倒数
#其实倒数归零也不会有什么特殊的意外,如果你的磁盘使用量介于soft/hard之间的话,当倒数归零soft的值会变成严格限制,此时你就没有多余的空间使用了!如何解决?登陆系统将文件删除既可以!这种机制也一般通过邮件服务来提醒!

warnquota :对超过限额者发出警告信!                      #/etc/warnquota.conf配置文件来决定!
命令若没有返回行!说明使用正常,可以将warnquota添加到cron.daily中实现提醒!