使用脚本新建实验quota环境
#!/bin/bash
#创建实验quota所需环境
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
useradd -g myquotagrp $username
echo "password" | passwd --stdin $username
done
[root@CentOS ~]# chmod +x addacount.sh
[root@CentOS ~]# ./addacount.sh
Changing password for user myquota1.
passwd: all authentication tokens updated successfully.
Changing password for user myquota2.
passwd: all authentication tokens updated successfully.
Changing password for user myquota3.
passwd: all authentication tokens updated successfully.
Changing password for user myquota4.
passwd: all authentication tokens updated successfully.
Changing password for user myquota5.
passwd: all authentication tokens updated successfully.
实践Quota流程1:文件系统支持
[root@CentOS ~]# df -h /home/
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 9.9G 1.5G 7.9G 16% /home
[root@CentOS ~]# mount | grep home
/dev/sda3 on /home type ext4 (rw)
# 在这次开机中实验,以手动方式加入quota支持
[root@CentOS ~]# mount -o remount,usrquota,grpquota /home/
[root@CentOS ~]# mount | grep home
/dev/sda3 on /home type ext4 (rw,usrquota,grpquota)
用户和用户组的quota文件系统参数分别是usrquota和grpquota
# 写入配置文件,永久有效
# 此处注意,登录bash环境不可以从普通用户切换到root,否则会提示/home正在使用,因为此时的root环境是普通用户的子shell。
[root@CentOS ~]# vim /etc/fstab
UUID=ea0e1001-64b8-4911-b3bf-59b63c0a5213 /home ext3 defaults,usrquota,grpquota 1 2
[root@CentOS ~]# umount /home
[root@CentOS ~]# mount -a
[root@CentOS ~]# mount | grep home
# 重启后发现:
[root@CentOS ~]# mount | grep home
/dev/sda3 on /home type ext4 (rw,usrquota,grpquota)
# 存在quota支持
# 如果这个文件修改错误,会造成无法开机完全的情况
实践Quota流程2:新建Quota配置文件
其实Quota是通过分析整个文件系统中每个用户拥有的文件总数与总容量,再将这些数据记录在该文件系统的最顶层目录,然后在该配置文件中再使用每个账号的限制值去规定磁盘使用量的。
quotacheck:扫描文件系统并新建Quota的配置文件
参数:
-a:扫描所有在/etc/mtab内,含有quota支持的文件系统,加上此参数后,/mount_point可不写,因为扫描所有文件系统
-u:针对用户扫描文件与目录的使用情况,会新建aquota.user
-g:针对用户组扫描文件与目录的使用情况,会新建aquota.user
-v:显示扫描过程的详细信息
-f:强制扫描文件系统,并写入新的quota配置文件
-M:强制以读写方式扫描文件系统,只有在特殊情况下才会使用
quotacheck只要记得“-avug”一起执行即可
# 针对整个系统含有usrquota,grpquota参数逇文件系统进行扫描
[root@CentOS ~]# quotacheck -avug
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sda3 [/home] done
quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be substracted.
quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be substracted.
quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be substracted.
quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be substracted.
quotacheck: Checked 959 directories and 3268 files #实际查询结果
quotacheck: Old file not found.
quotacheck: Old file not found.
# 以上信息说明查找成功,系统支持quota
# 此处/home为独立的文件系统,所以查询结果会将配置文件放在/home下面
[root@CentOS ~]# ll -d /home/a*
-rw-------. 1 root root 7168 Mar 19 08:34 /home/aquota.group
-rw-------. 1 root root 7168 Mar 19 08:34 /home/aquota.user
# 如果特殊情况需求要求强制扫描已挂载的文件系统时:
[root@CentOS ~]# quotacheck -avug -mf
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sda3 [/home] done
quotacheck: Checked 959 directories and 3270 files
# 因为有配置文件存在,所以不会出现错误信息
新建两个文件aquota.user和aquota.group,是使用quotacheck命令,而不是手动编辑
实践Quota流程3:Quota启动、关闭、限制值设置
(1)quotaon:启动quota服务
参数:
-u:针对用户启动aquota(aquota.user)
-g:针对用户组启动aquota(aquota.group)
-v:显示启动过程的相关信息
-a:根据/etc/fstab内的文件系统设置启动有关的quota,若不加-a的话,则后面就需要加上特定的文件系统
# 启动user/group的quota
[root@CentOS ~]# quotaon -avug
/dev/sda3 [/home]: group quotas turned on
/dev/sda3 [/home]: user quotas turned on
# 特殊用法没加入启动的是/var的quota支持,那么仅启动user quota时
[root@CentOS ~]# quotaon -uv /var
# 这个quotaon -avug的命令几乎只在第一次启动quota时才需要进行
(2)quotaoff:关闭quota服务
参数:
-a:全部的文件系统的quota都关闭
-u:仅针对后面接的那个/mount_point关闭user quota
-g:仅针对后面接的那个/mount_point关闭group quota
(3)edquota:编辑账号/用户组的限值与宽限时间
参数:
-u:后面接账号名称,可以进入quota的编辑界面去设置username的限制值
-g:后面接组名,可以进入quota的编辑界面去设置groupquota的限制值
-t:可以修改宽限时间
-p:复制范本,那个模范账号为一曾经存在并且设置好quota的用户,意义为将模范账号这个人的quota限制值复制给新账号
# 设置myquota1这个用户的quota的限制值
[root@CentOS ~]# edquota -u myquota1
Disk quotas for user myquota1 (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 36 0 0 9 0 0
# 第一行说明针对哪个账号进行quota的限额设置
# 第二行是标题行,七个字段
七个字段的意义
文件系统:说明该限制值是针对哪个文件系统
磁盘容量:这个数值是quota自己算出来的,单位KB,请不要修改它
soft:磁盘容量(block)的soft限制值,单位KB
hard:block的hard限制值,单位KB
文件数量:inode,这是quota自己算出来的,单位为个数,请不要修改它
soft:inode的soft的限制值
hard:inode的hard限制值
# 将上述结果修改为如下:
Disk quotas for user myquota1 (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 36 250000 300000 9 0 0
# 将myquota1的限制值复制给其他四个账号
[root@CentOS ~]# edquota -p myquota1 -u myquota2
[root@CentOS ~]# edquota -p myquota1 -u myquota3
[root@CentOS ~]# edquota -p myquota1 -u myquota4
[root@CentOS ~]# edquota -p myquota1 -u myquota5
# 更改用户组的限额
[root@CentOS ~]# edquota -g myquotagrp
Disk quotas for group myquotagrp (gid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 180 0 0 45 0 0
# 结果:
Disk quotas for group myquotagrp (gid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 180 900000 1000000 45 0 0
# 最后更改宽限时间,默认7天,改为14天
[root@CentOS ~]# 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/sda3 7days 7days
# 结果为:
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/sda3 14days 7days
实践Quota流程4:Quota限制值的报表
quota的报表主要有两种模式,一种是针对每个个人或用户的quota命令,一个是针对整个文件系统的repquota命令
(1)quota
参数:
-u:后面接username,表示显示该用户的quota限制值。若不接username,表示显示执行者的quota限制值
-g:后面接groupquota,显示该用户组的限制值
-v:显示每个用户在文件系统中的quota值
-s:使用1024位倍数来指定单位,会显示如M之类的单位
# 直接使用quota去显示myquota1与myquota2的限额
[root@CentOS ~]# quota -uvs myquota1 myquota2
Disk quotas for user myquota1 (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 36 245M 293M 9 0 0
Disk quotas for user myquota2 (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 36 245M 293M 9 0 0
# 显示结果几乎跟edquota一样
# 显示出myquotagrp的用户组限额
[root@CentOS ~]# quota -gvs myquotagrp
Disk quotas for group myquotagrp (gid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 180 879M 977M 45 0 0
由于我们使用edquota设置限额时,使用的是近似值(1000)而不是实际的1024倍数,所以看起来会有点不一样。由于quota仅能针对某些用户显示报表,如果要针对整个文件系统列出报表,那repquota就排上用场了。
(2)repquota:针对文件系统的限额做报表
参数:
-a:直接到/etc/mtab查询具有quota标志的文件系统,并报告quota的结果
-v:输出的数据将含有文件系统相关的详细信息
-u:显示出用户的quota限制值
-g:显示出个别用户组的quota限制值
-s:使用M,G为单位显示结果
# 查询本案例中所有用户的quota限制情况
[root@CentOS ~]# repquota -auvs
*** Report for user quotas on device /dev/sda3
Block grace time: 14days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 513M 0 0 6 0 0
kevin -- 852M 0 0 4221 0 0
myquota1 -- 36 245M 293M 9 0 0
myquota2 -- 36 245M 293M 9 0 0
myquota3 -- 36 245M 293M 9 0 0
myquota4 -- 36 245M 293M 9 0 0
myquota5 -- 36 245M 293M 9 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 7
Used average: 7.000000
实践Quota流程5:测试与管理
# 测试1:利用myquota的身份,创建一个270MB的大文件,并查看quota结果
[myquota1@CentOS ~]$ dd if=/dev/zero of=bigfile bs=1M count=270
sda3: warning, user block quota exceeded.
270+0 records in
270+0 records out
283115520 bytes (283 MB) copied, 6.54255 s, 43.3 MB/s
# 出现警告信息
# root身份查看quota报表
[root@CentOS ~]# repquota -auv
*** Report for user quotas on device /dev/sda3
Block grace time: 14days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 524380 0 0 6 0 0
kevin -- 871440 0 0 4221 0 0
myquota1 +- 276516 250000 300000 13days 10 0 0
myquota2 -- 36 250000 300000 9 0 0
myquota3 -- 36 250000 300000 9 0 0
myquota4 -- 36 250000 300000 9 0 0
myquota5 -- 36 250000 300000 9 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 7
Used average: 7.000000
# grace出现,并开始倒数
测试2:在创建一个大文件,让总容量超过300M
[myquota1@CentOS ~]$ dd if=/dev/zero of=bigfile2 bs=1M count=300
sda3: write failed, user block limit reached.
dd: writing `bigfile2': Disk quota exceeded
23+0 records in
22+0 records out
24047616 bytes (24 MB) copied, 0.133032 s, 181 MB/s
[myquota1@CentOS ~]$ du -sk
300000 .
# 达到极限
当倒数归零,那么soft的值会变成严格控制,此时你就没有多余的空间可以使用了。解决方法:登录到系统去删除文件即可。
(3)warnquota:对超过限制额者发出警告信息
依据/etc/warnquota.conf的设置,然后找出目前系统上面quota用量超过soft(就是gracetime出现的那些)的账号,通过Email的功能将警告信发送到用户的电子邮件信箱。warnquota并不会自动执行,所以我们需要手动去执行。单纯执行“warnquota”之后,她会发出两封信,一封给muquota1,一封给root
# 查看警告信息
[root@CentOS ~]# warnquota
[root@CentOS ~]# mail
执行warmquota可能也不会产生任何信息以及信件,因为只有当用户的quota有超过soft时,warnquota才会发送警告信。那么以上,包括标题、信息内容说明、签名文件等数据放在哪里呢?就是/etc/warnquota。
[root@CentOS ~]# vim /etc/warnquota.conf
# 如果英文不好理解,可以转成中文:
SUBJECT = NOTE: You are exceeding your allocated disk space limits
CC_TO = "root@example.com"
SUPPORT = "root@example.com"
PHONE = "(123) 456-1111 or (222) 333-4444"
GROUP_MESSAGE = Hello,|\
your group %i is using too much disk space at %h.|\
I suggest you to clean up group files on the following
# 改成:
# SUBJEST = 注意:你在本系统上拥有的文件容量已超过最大容许选择
# .........
# .........
# .........
# 如果重复执行warnquota,namemyquota1就会收到类似的信件内容:
[root@CentOS ~]# warnquota
# 不过这个方法并不适用/var/spool/mail也爆满的quota控管中,因为如果用户在这个文件系统的容量已经达到限额了,那么新的信件当然就收不下来
# 让系统自动执行warnquota:
[root@CentOS ~]# vim /etc/cron.daily/warnquota
/usr/sbin/warnquota #添加这一行
[root@CentOS ~]# chmod 755 /etc/cron.daily/warnquota
(4)setquota:直接于命令中设置quotaxiane
# 如果想要适用script的方法来新建大量的账号,并且所有的账号都在新建时就给予quota,两个方法:
# 新建一个原始账号,再以“edquota -pold -unew”写入script中
# 直接以edquota新建用户的quota设置值
[root@CentOS ~]# serquota [-u|-g] 名称 block(soft) block(hard) inode(soft) inode(hard) 文件系统
[root@CentOS ~]# quota -uv myquota5
Disk quotas for user myquota5 (uid 505):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 36 250000 300000 9 0 0
[root@CentOS ~]# set -u myquota5 100000 200000 0 0 /home
[root@CentOS ~]# quota -uv myquota5
Disk quotas for user myquota5 (uid 505):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda3 36 250000 300000
# 此时真的有改变过来