Linux磁盘配额Quota配置详解(2)
- 2023-03-14 06:09:29
- 来源:网络
- 在手机上看
扫一扫立即进入手机端
实践quota
Quota使用的方面很广,不过,一般的用途有以下这些:
限制某一群组所能使用的最大磁盘配额(使用群组限制):
你可以将你的系统上的用户分门别类,有点像是目前很流行的付费与免付费会员制的情况,你比较喜好的那一群的使用配额就可以给高一些!呵呵!^_^
限制某一用户的最大磁盘配额(使用用户限制):
在限制了群组之后,您也可以再继续针对个人来进行限制,使得同一群组之下还可以有更公平的分配!
以Link的方式,来使邮件可以作为限制的配额(更改/var/spool/mail这个路径):
如果是分为付费与免付费会员的『邮件主机系统』,是否需要重新再规划一个硬盘呢?也不需要啦!直接使用Link的方式指向/home(或者其它已经做好的quota磁盘)就可以啦!这通常是用在原本规划不好,但是却又不想要更动原有主机架构的情况中啊!
那么quota从开始准备filesystem的支持到整个设定结束的主要的步骤大概是:
1. 设定partition的filesystem支持quota参数:
由于quota必须要让partition上面的filesystem支持才行,一般来说,支持度最好的是ext2/ext3,启动filesystem支持quota最简单就是编辑/etc/fstab,使得准备要开放的quota磁盘可以支持quota;
2. 建立quota记录文件:
刚刚前面讲过,整个quota进行磁盘限制值记录的档案是aquota.user/aquota.group,要建立这两个档案就必须要先利用quotacheck扫描才行喔!所以,接下来的步骤就是:使用quotacheck来扫描一下我们要使用的磁盘;
3. 编辑quota限制值数据:
再来就是使用edquota来编辑每个使用者或群组的可使用空间;
4. 重新扫描与启动quota:
设定好quota之后,建议可以再进行一次quotacheck,然后再以quotaon来启动吧!
整个quota设定的步骤就只是这样而已,简单吧!我们下面就直接来用一个范例介绍一下整个流程,好让您更清楚的了解到整个步骤!范例是这样的:
1. Linux主机里面主要针对quser1及quser2这两个用户来进行磁盘配额,且这两个用户都是挂在qgroup群组里面的。
2. 每个使用者总共有50MB的磁盘空间(不考虑inode)限制!并且soft limit为45MB;
3. 而宽限时间设定为1天,也就是说,这两个人可以突破45MB的限制,但是在一天之内必须要将多余的文件删除,否则将无法使用剩下的空间(也就是说,这个账号大概就不能进行新建文件的工作了);
4. gquota这个群组考虑最大限额,所以设定为90MB好了!
多说无用,我们就实际来进行!
1. 准备好测试的环境,用户与群组的建立:
这两个账号应该是不存在我们的系统的,所以,赶紧将他设置上去吧!
[root@linux ~]# groupadd qgroup
[root@linux ~]# useradd -m -g qgroup quser1
[root@linux ~]# useradd -m -g qgroup quser2
[root@linux ~]# passwd quser1
[root@linux ~]# passwd quser2
2. 建立好filesystem的quota支持:
由于quota较完整的支持是需要在ext2/ext3的Linux文件系统下才可以启动,所以建议你就必须要将准备开启quota的磁盘启动参数,写入 quota的磁盘设定才行(/etc/fstab)!以例子而言,想要在/disk2下进行quota的限制quser1,quser2这两个用户!这是 因为这个/disk2是一个独立的扇区,这可以使用df来查询。此外,必需特别留意的是,最好不要以根目录亦即是/进行quota!否则容易有些问题!另 外,不要针对root做quota!反正做了也没用!
[root@linux ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 5952252 3193292 2451720 57% /
/dev/hdb1 28267608 77904 26730604 1% /disk2
/dev/hda5 9492644 227252 8775412 3% /disk1
嗯!/disk2是独立的partition,并且他的设备名为/dev/hdb1,好了!那么我就必须要启动/disk2这个/dev/hdb1的 quota档案格式,好了!那么由于文件格式的设定是写在/etc/fstab里头,所以我们以vi来编辑他吧!只要在/etc/fstab里头增加了 usrquota、grpquota就可以啦!(注:请特别留意,这两个项目请『务必』不要写错了!请在写入/etc/fstab之前好好的再次检查,因 为写错之后,很有可能造成系统无法开机,虽然写错的机率不高,但是很有可能!)
[root@linux ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/disk1 /disk1 ext3 defaults 1 2
LABEL=/disk2 /disk2 ext3 defaults,usrquota,grpquota 1 2
/dev/hda3 swap swap defaults 0 0
注意到我们所需要设定的那个/disk2的那一行,在第四字段多了usrquota,grpquota注意,在『defaults,usrquota,grpquota』之间都没有空格!
这样就算加入了quota的磁盘格式了!不过,由于真正的quota在读取的时候是读取/etc/mtab 这个档案的,偏偏这一个档案需要重新开机之后才能够以/etc/fstab的新数据进行改写!所以这个时候你可以选择:
重新开机(reboot);
重新remount filesystem来启动设置!
对不太喜欢重新开机的人,可以这样做:
[root@linux ~]# umount /dev/hdb1
[root@linux ~]# mount -a
[root@linux ~]# grep '/disk2' /etc/mtab
/dev/hdb1 /disk2 ext3 rw,usrquota,grpquota 0 0
事实上,也可以利用mount的remount功能!
[root@linux ~]# mount -o remount /disk2
这样我们就已经成功的将filesystem的quota功能加入了!另外,在这里是以ext3这个磁盘格式来测试quota的!
3. 扫描磁盘的用户使用状况,并产生重要的aquota.group与aquota.user:
接下来就是要来扫描一下我们所需要的磁盘到底有没有多余的空间可以让我们来设定quota呢?并且将扫描的结果输出到这个磁盘的最顶层去(也就是 /disk2下)这个时候就需要quotacheck这个命令的帮忙了!使用quotacheck就可以轻易的输出了将所需要的数据!并在/disk2下 会产生aquota.group与aquota.user这两个文件!
[root@linux ~]# quotacheck -avug
quotacheck: Scanning /dev/hdb1 [/disk2] done
quotacheck: Checked 3 directories and 4 files
[root@linux ~]# ll /disk2
-rw------- 1 root root 6144 Sep 6 11:44 aquota.group
-rw------- 1 root root 6144 Sep 6 11:44 aquota.user
使用quotacheck就可以轻易的将所需要的数据给他输出了!但是很奇怪的是,在某些Linux 版本中,不能够以aquota.user(group)来启动quota,这有可能是因为旧版quota的关系,所以就另外做了一个link文件来欺骗quota:
[root@linux ~]# cd /disk2
[root@linux ~]# ln -s aquota.user quota.user
[root@linux ~]# ln -s aquota.group quota.group
除非您的Linux distributions是比较旧的版本,否则不会有这个问题,所以,这个动作你不一定要进行!
4. 启动quota的限额:
再来就是要启动quota啦!启动的方式也是很简单的!就是使用quotaon -av即可:
[root@linux ~]# quotaon -avug
/dev/hdb1 [/disk2]: group quotas turned on
/dev/hdb1 [/disk2]: user quotas turned on
注意:要看到上面有个turned on的出现,才是真的成功了!
5. 编辑使用者的可使用空间:
由于我们有两个用户要设置,先来设置quser1好了,使用edquota就对了:
[root@linux ~]# edquota -u quser1
Disk quotas for user quser1 (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 45000 50000 0 0 0
#p#副标题#e#
再次强调的是,因为我的/disk2里面并没有任何数据存在,所以,在上面这个表格当中,blocks与inodes才会都是0,如果您是使用/home 来进行quota设定的,那么blocks/inodes肯定不会是0,这里要特别留意的。好了,上面特殊字体的部分就是我们的设定了,分别是45000 及50000,那个单位是KBytes啦,转成MBytes应该是要除以1024才对,不过,简单算一下就好了,不用太介意!^_^。然后将quser1 的设定直接复制给quser2吧!
[root@linux ~]# edquota -p quser1 quser2
接下来要来设定宽限时间,还是使用edquota!
[root@linux ~]# 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/hdb1 1days 7days
将时间改为1天(原本是7days改成1days),好了!查询一下是否真的有设定进去呢?使用quota -v来查询:
[root@linux ~]# quota -vu quser1 quser2
Disk quotas for user quser1 (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 45000 50000 0 0 0
Disk quotas for user quser2 (uid 503):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 45000 50000 0 0 0
特别注意到,由于我们的使用者尚未超过45MB,所以gra