磁盘配额(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 查看设置结果