磁盘配额(quota)

磁盘配额(quota)

理论知识    

1. quota在生产环境中的应用

1)www   web服务器(虚拟主机,一个服务跑多个网站可以用到)

2)mail    邮件服务器(对用户空间限制)

3)file     文件服务器

2.quota实现的限制

1)组限制

2)用户限制

3.quota使用限制

1)仅能针对于文件系统进行限制(也就是所谓的分区,)

2)内核必须制止次功能(现在基本不用考虑这个问题,一般都是2.6以上的内核)

3)quota的记录文件(用来统一用户或群组使用量的文件,不需要管理,但需要手动生成)

4.quota可限制项目

1)限制inode用量(限制建立文件的数量,使用起来意义不大)

2)限制block用量(这个就是限制磁盘空间,最常用)

3)soft/hart 软限制/硬限制(一般硬限制的值要比软限制的高)

   例如:建立一个磁盘配额,软限制500M,硬限制600M.

 宽限时间会在使用量处于500M与600M之间生效,默认宽限时间为7day

quota讲解案例

  5个用户 xiaobai1 xiaobai2 xiaobai3 xiaobai4 xiaobai5

  1个组 vfast

 要求 所有用户均属于vfast组,限制每个用户的hard为300M,soft为250M,宽限时间grace为14Days;限制组的hard为1G,soft为900M.


建立用户

  首先写一个建立用户的脚本  如下:

#vim useradd.sh

#!/bin/bash

gourpadd vfast

for i in xiaobai1 xiaobai2 xiaobai3 xiaobai4 xiaobai5

do

     useradd �Cg vfast $i

     echo “123456”|passwd --stdin $i

done

     :wq

保存退出后,执行以下这个脚本

    #sh useradd.sh

分区、挂载开启磁盘配额功能

  分区 fdisk /dev/sdb


挂载, 挂载有两种方法

1.对于已经挂载过的分区 /mnt/sdb

#mount -o remount,usrquota,grpquota /mnt/sdb

2.对于没有挂载过的分区

#mount -o usrquota,grpquota /dev/sdb1 /mnt/sdb

挂载完之后使用mount命令查看以下挂载后的状态

     #mount

     …

     /dev/sdb1 on /mnt/sdb type ext3 (rw,usrquota,grpquota)

其中:usrquota,grpquota表示已经开启了用户和组的配额功能


由于是用mount手动挂载的,系统重启这些操作都会失效。如果要想长期使用,就需要更改/etc/fstab文件,写上类似下面的一个字段即可以实现永久生效:

  #vim /etc/fstab

  设备名      挂载点   文件系统类型    权限以及quota功能开启

 /dev/sdb1     /mnt/sdb     ext3         defaults,usrquota,grpquota    0  0


建立记录文件quotacheck

  使用命令 quotacheck

  命令参数           -a 扫描所有在/etc/mtab内含有支持配额功能的分区

                     -u 建立用户的记录文件aquota.user

                     -g 建立组的记录文件aquota.group

                     -v 显示详细信息

                     -f 强制扫描,写入新的记录文件

                     -M 强制以读的形式扫描文件系统(一般与-f一起使用)

接下来回到实验

#quotacheck -auvg   扫描文件系统

#cd /mnt/sdb

#ls

aquota.group   aquota.user  lost+found

启动磁盘配额 quotaon

使用命令 quotaon

命令参数        -u 启用用户的配额功能

                -g 启用租的配额功能

                -v 显示详细信息

                -a 启用所有配额

两种方式

针对整个文件系统 quotaon -auvg

  只针对一个分区 quotaon -uvg /mnt/sdb


回到实验

#quotaon �Cauvg


关闭磁盘配额功能 quotaoff

      使用命令quotaoff

命令参数        -a关闭所有配额功能

                     -u关闭用户的配额功能

                     -g 关闭组的配额功能


配置磁盘配额限制 edquota

  使用命令 edquota

  命令参数        -u 配置用户的quota

                  -g 配置组的quota

                  -t 修改宽限时间

                  -p 复制


回到实验

 #edquota -u xiaobai1

Disk quota for user xiaobai1 (uid 500) :

Filesystem    block     soft      hard       inodes       soft       hart

/dev/sdb1    0     250000    300000        0          0         0

编辑完以后 这个用户的配额功能就已经生效了

  #edquota -p xiaobai1 xiaobai2

  #edquota -p xiaobai1 xiaobai3

  #edquota -p xiaobai1 xiaobai4

  #edquota -p xiaobai1 xiaobai5

  #edquota -g vfast

Disk quota for group vfast (gid 500) :

Filesystem    block     soft      hard       inodes       soft       hart

/dev/sdb1    0     900000    1000000        0          0        

 #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/sdb1            14days                  7days

:wq

修改普通用户对/mnt/sdb权限

#chmod 777 /mnt/sdb

磁盘配额报告 quota

 1.使用命令 quota

 命令参数      -u [username] 显示用户的磁盘配额报告 (不加username,显示的为当前用户的)

               -g [groupname]  显示组的磁盘配额报告

               -v 显示详细信息(显示每一个用户磁盘配额的值)

               -s 以1024为进制来显示(M、G)

#quota -uvs xiaobai1 xiaobai2

#quota -gvs vfast

3.使用命令 repquota

命令参数               -a 显示所有配额信息

                -v 显示详细信息(显示每一个用户磁盘配额的值)

                -u [username] 显示用户的磁盘配额报告

                -g [groupname]  显示组的磁盘配额报告

                -s以1024为进制来显示(M、G)

#repquota -auv


测试

切换用户,使用vfast组中的成员进行写数据进行测试。


#su - xiaobai1

$cd /mnt/sdb

$ls

aquota.group   aquota.user  lost+found

$dd id=/dev/zero of=/dev/sdb/xiaobai1 bs=1M count=270

sdb1:waring,user block quota exceeded.

实验成功


另外磁盘配额还有一个警告信的功能

#warnquota

#mail 查看邮件

  输入序号,选择性查看邮件

/etc/warnquota.conf 警告信的配置文件

  SUBJECT   = 标题

  CC_TD     = 给root抄送邮件


  MESSAGE  = 信息的内容



另外一种磁盘配额的方法

#setquota -u xiaobao1 100000 200000 0 0 /mnt/sdb

# quota �Cuv xioabai1 查看设置结果



你可能感兴趣的:(quota,磁盘配额)