6.3 任务3 磁盘配额配置企业案例
6.3.1 子任务1 环境需求
(1)目的与账号:5个员工的账号分别是myquotal、myquota2、myquota3、myquota4和myquota5,5个用户的密码都是password,且这5个用户所属的初始群组都是myquotagrp。其他的账号属性则使用默认值。
(2)账号的磁盘容量限制值:5个用户都能够取得300MB的磁盘使用量(hard),文件数量则不予限制。此外,只要容量使用超过250MB,就予以警告(soft)。
(3)群组的限额:如果系统里面还有其他用户存在,应限制myquotagrp这个群组最多仅能使用1GB的容量。也就是说,如果myquotal、myquota2和myquota3都用了280MB的容量,那么其他两人最多只能使用(1000MB-280MB×3=160MB)的磁盘容量。这就是使用者与群组同时设定时会产生的效果。
(4)宽限时间的限制:最后,希望每个使用者在超过soft限制值之后,都能够再有14天的宽限时间。
6.3.2 子任务2 解决方案
1.使用script建立quota实训所需的环境
制作账号环境时,由于有5个账号,因此使用脚本创建环境。(详细内容查看后面的编程内容。)
[root@RHEL6~]# vim addaccountsh #! /bin/bash #使用脚本来建立进行quota测试所需的环境 groupadd myquotagrp for username in myquotal myquota2 myquota3 myquota4 myquota5 do useradd -g myquotagrp $username echo "password"|passwd --stdin $username done [root@RHEL6~]# sh addaccount.sh
2.启动系统的磁盘配额
(1)文件系统的支持。要使用Quota,必须要有文件系统的支持。假设你已经使用了预设支持Quota的核心,那么接下来就要启动文件系统的支持。不过,由于Quota仅针对整个文件系统来进行规划,所以我们要先检查一下/home是否是个独立的文件系统,这需要使用df命令。
[root@RHEL6~]# df -h /home Filesystem Size Used Avail Use% Mounted on /dev/hda3 4.8G 740M 3.8G 17%/home <==主机的/home目录确定是独立的 [root@RHEL6~]# mount|grep home /dev/hda3 on/home type ext3(rw)
从上面的数据来看,这台主机的/home确实是独立的文件系统,因此可以直接限制/dev/hda3。如果系统的/home目录并非独立的文件系统,那么可能就要针对根目录(/)来规范。不过,不建议在根目录下设定Quota。此外,由于VFAT文件系统并不支持Linux Quota功能,所以要使用mount查询一下/home的文件系统是什么,如果文件系统是ext2/ext3,则支持Quota。
(2)如果只是想在开机中测试Quota,那么可以使用如下的方式来手动加入quota的支持。
[root@RHEL6~]#mount -o remount, usrquota, grpquota /home [root@RHEL6~]#mount|grep home /dev/hda3 on/home type ext3(rw, usrquota, grpquota) #重点就在于usrquota和grpquota,注意写法
(3)自动挂载。手动挂载的数据在下次重新挂载时会消失,因此最好写入配置文件中。
[root@RHEL6~]# vim /etc/fstab LABEL=/home /home ext3 defaults, usrquota, grpquota 12 #其他项目并没有列出来,重点在于第4字段,在default后面加上两个参数 [root@RHEL6~]# umount /home [root@RHEL6~]# mount -a [root@RHEL6~]# mount|grep home /dev/hda3 on/home type ext3(rw, usrquota, grpquota)
要再次强调一下,修改完/etc/fstab后,务必要测试一下。若有错误务必赶紧处理。因为这个文件如果修改错误,会造成无法完全开机的情况。因此最好使用vim命令来修改/etc/fstab。因为vim会有语法检验。接下来建立quota记录文件。
3.建立quota记录文件
其实quota是透过分析整个文件系统中每个使用者(群组)拥有的文件总数与总容量,将这些数据记录在该文件系统的最顶层目录,然后在该记录文件中再使用每个账号(或群组)的限制值去规范磁盘的使用量。所以,创建quota记录文件非常重要。可以使用quotacheck命令扫描文件系统并建立quota记录文件。
当运行quotacheck时,系统会担心破坏原有的记录文件,所以会产生一些错误信息警告。如果你确认没有任何人在使用quota时,可以强制重新进行quotacheck的动作(-mf)。强制执行的情况可以使用如下的选项功能:
#如果因为特殊需求需要强制扫描已挂载的文件系统时 [root@RHEL6~]# quotacheck -avup -mf quotacheck:Scanning /dev/hda3 [/home] done quotacheck:Checked 130 directories and 109 files
这样记录文件就建立起来了。不要手动去编辑那两个文件。因为那两个文件是quota自己的数据文件,并不是纯文本文件,并且该文件会一直变动,这是因为当你对/home这个文件系统进行操作时,操作的结果会影响磁盘,所以会同步记载到那两个文件中。因此要建立aquota.user、aquota.group,记得使用quotacheck指令,不要手动编辑。
4.quota的启动、关闭与限制值的设定
制作好quota配置文件之后,接下来就要启动quota了。启动的方式很简单,使用quotaon命令即可,至于关闭,则是使用quotaoff命令。
(1)quotaon:启动quota的服务。
格式一: quotaon [-avug] 格式二: quotaon [-vug] [/mount_point]
选项与参数如下。
•-u:针对使用者启动quota(aquota.usaer)。
•-g:针对群组启动quota(aquota.group)。
•-v:显示启动过程的相关信息。
•-a:根据/etc/mtab内的filesystem设定启动有关的quota,若不加-a,则后面就需要加上特定的那个filesystem。
#由于要启动user/group的quota,所以使用下面的语法即可 [root@RHEL6~]# quotaon -auvg /dev/hda3[/home]: group quotas turned on /dev/hda3[/home]: user quotas turned on #如果要启动对/var的quota支持,那么仅启动user quota即可 [root@RHEL6~]# quotaon -uv /var
quotaon-auvg指令几乎只在第一次启动quota时才需要。因为下次重新启动系统时,系统的/etc/rc.d/rc.sysinit这个初始化脚本就会自动下达这个指令。因此你只要在这次实例中进行一次即可,未来都不需要自行启动quota。
(2)quotaoff:关闭quota的服务。
在进行完本次实训前不要关闭该服务。
(3)edquota:编辑账号/群组的限值与宽限时间。
① 我们先来看看当进入myquotal的限额设定时会出现什么画面。
[root@RHEL6~]# edquota -u myquotal Disk quotas for user myquota1 (uid 710): Filesystem blocks soft hard inodes soft hard /dev/hda3 80 0 0 10 0 0
② 当soft/hard为0时,表示没有限制的意思。依据我们的需求,需要设定的是blocks的soft/hard,至于inode则不要去更改。
Disk quotas for user myquotal(uid 710): Filesystem blocks soft hard inodes soft hard /dev/hda3 80 250000 300000 10 0 0
提示:在edquota的画面中,每一行只要保持7个字段就可以了,并不需要排列整齐。
③ 其他5个用户的设定可以使用quota命令复制。
#将myquotal的限制值复制给其他四个账号 [root@RHEL6~]# edquota -p myquotal -u myquota2 [root@RHEL6~]# edquota -p myquotal -u myquota3 [root@RHEL6~]# edquota -p myquotal -u myquota4 [root@RHEL6~]# edquota -p myquotal -u myquota5
④ 更改群组的quota限额。
[root @www~]#edquota -g myquotagrp Disk quotas for group myquotagrp(gid 713) Filesystem blocks soft hard inodes soft hard /dev/hed3 400 900000 1000000 50 0 0
⑤ 最后,将宽限时间改成14天。
#宽限时间原本为7天,将其改成14天 [root@RHEL6~]#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
5.repquota:针对文件系统的限额做报表
请参考5.2.3小节的内容。
6.测试与管理
直接修改/etc/fstab。Linux是一个多用户的操作系统,为了防止某个用户或组群占用过多的磁盘空间,可以通过磁盘配额(Disk Quota)功能限制用户和组群对磁盘空间的使用。在Linux系统中可以通过索引节点数和磁盘块区数来限制用户和组群对磁盘空间的使用。