📄 0420quota.htm
字号:
你可以将你的主机上的使用者分门别类,有点像是目前很流行的付费与免付费会员制的情况,
你比较喜好的那一群的使用配额就可以给高一些!呵呵! ^_^...</li><br>
<li><span class=text_import2>限制某一使用者的最大磁碟配额 (使用使用者限制)</span> ∶<br>
在限制了群组之后,您也可以再继续针对个人来进行限制,使得同一群组之下还可以有更公平的分配!</li><br>
<li><span class=text_import2>以 Link 的方式,来使邮件可以作为限制的配额 (更改 /var/spool/mail
这个路径)</span>∶<br>如果是分为付费与免付费会员的『邮件主机系统』,是否需要重新再规划一个硬碟呢?
也不需要啦!直接使用 Link 的方式指向 /home (或者其他已经做好的 quota 磁碟)就可以啦!
这通常是用在原本规划不好,但是却又不想要更动原有主机架构的情况中啊!</li> </ul>
那么 Quota 从开始准备 filesystem 的支援到整个设定结束的主要的步骤大概是∶<ol>
<li><span class=text_import1>设定 partition 的 filesystem 支援 quota 参数∶</span><br>
由于 quota 必须要让 partition 上面的 filesystem 支援才行,一般来说,
支援度最好的是 ext2/ext3 ,其他的 filesystem 类型鸟哥我是没有试过啦!
启动 filesystem 支援 quota 最简单就是编辑 <span class=text_import2>/etc/fstab</span> ,使得准备要开放的
quota 磁碟可以支援 quota 棉;</li><br>
<li><span class=text_import1>建立 quota 记录档∶</span><br>
刚刚前面讲过,整个 quota 进行磁碟限制值记录的档案是 aquota.user/aquota.group,
要建立这两个档案就必须要先利用 quotacheck 扫瞄才行喔!所以棉,接下来的步骤就是∶
使用 quotacheck 来扫瞄一下我们要使用的磁碟棉;</li><br>
<li><span class=text_import1>编辑 quota 限制值资料∶</span><br>
再来就是使用 edquota 来编辑每个使用者或群组的可使用空间棉;</li><br>
<li><span class=text_import1>重新扫瞄与启动 quota ∶</span><br>
设定好 quota 之后,建议可以再进行一次 quotacheck ,然后再以 quotaon 来启动吧!</li></ol>
整个 quota 设定的步骤就只是这样而已,简单吧!我们底下就直接来用一个范例介绍一下整个流程,
好让您更清楚的了解到整个步骤喔!我范例是这样的∶<ol><span class=text_import2>
<li>鸟哥的这部 Linux 主机里面主要针对 quser1 及 quser2 两个使用者来进行磁碟配额,
且这两个使用者都是挂在 qgroup 群组里面的喔。</li>
<li>每个使用者总共有 50MB 的磁碟空间 (不考虑 inode) 限制!并且 soft limit 为 45 MB;</li>
<li>而宽限时间设定为 1 天,也就是说,这两个人可以突破 45MB 的限制,
但是在一天之内必须要将多馀的档案砍掉,否则将无法使用剩下的空间
(也就是说,这个帐号大概就不能进行档案新增的工作了);</li>
<li>gquota 这个群组考虑最大限额,所以设定为 90 MB 好了!</li></ol>
多说无用,我们就实际来进行棉!<ol>
<hr><li><span class=text_import1>准备好测试的环境,使用者与群组的建立∶</span><br><br>
这两个帐号应该是不存在我们的系统的,所以,赶紧将他设定上去吧!<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>groupadd qgroup</span>
[root@linux ~]# <span class=term_command>useradd -m -g qgroup quser1</span>
[root@linux ~]# <span class=term_command>useradd -m -g qgroup quser2</span>
[root@linux ~]# <span class=term_command>passwd quser1</span>
[root@linux ~]# <span class=term_command>passwd quser2</span>
</pre></td></tr></table><br>
<hr><li><span class=text_import1>建立好 filesystem 的 quota 支援∶</span><br><br>
由于 quota 较完整的支援是需要在 ext2/ext3 的 Linux 延伸格式档案才可以启动,
所以建议你就必须要将准备开启 quota 的磁碟启动参数,写进入 quota 的磁碟设定才行
( /etc/fstab )!以鸟哥的例子而言,我想要在 /disk2 底下进行 quota 的限制 quser1, quser2
这两个人!这是因为我的 /disk2 是一个独立的磁区,这可以使用 df 来查询。
此外,必需要特别留意的是,最好不要以根目录亦即是 / 进行 quota 啦!否则容易有些问题呢!
另外,<span class=text_import2>不要针对 root 做 quota 喔!反正做了也没用!</span><br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>df</span>
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
</pre></td></tr></table>
嗯!我的 /disk2 是独立的 partition ,并且他的装置名为 /dev/hdb1 ,好了!那么我就必须要启动
/disk2 这个 /dev/hdb1 的 quota 档案格式,好了!那么由于档案格式的设定是写在
/etc/fstab 里头,所以我们以 vi 来编辑他吧!只要在 /etc/fstab 里头增加了
<span class=text_import2>usrquota, grpquota</span> 就可以啦!
(<span class=text_vbird>注∶请特别留意,这两个项目请『务必』不要写错了!请在写入 /etc/fstab
之前好好的再次检查,因为写错之后,很有可能造成系统无法开机,虽然机率不高,但是有可能!</span>)<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/fstab</span>
LABEL=/ / ext3 defaults 1 1
LABEL=/disk1 /disk1 ext3 defaults 1 2
LABEL=/disk2 /disk2 ext3 defaults<span class=term_write>,usrquota,grpquota</span> 1 2
/dev/hda3 swap swap defaults 0 0
</pre></td></tr></table>
注意到我们所需要设定的那个 /disk2 的那一行,在第四栏位多了
<span class=text_import2>usrquota,grpquota</span> 注意,在『 defaults,usrquota,grpquota
』之间都没有空格!<br><br>
这样就算加入了 quota 的磁碟格式了!不过,由于真正的 quota 在读取的时候是读取
<span class=text_import2>/etc/mtab</span> 这个档案的,偏偏这一个档案需要重新开机之后才能够以
/etc/fstab 的新资料进行改写!所以这个时候你可以选择∶<ol><span class=text_import2><br>
<li>重新开机 (reboot) ;
<li>重新 remount filesystem 来驱动设定值!</ol></span><br>
我是不太喜欢重新开机的人啦!所以我就这么做∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>umount /dev/hdb1</span>
[root@linux ~]# <span class=term_command>mount -a</span>
[root@linux ~]# <span class=term_command>grep '/disk2' /etc/mtab</span>
/dev/hdb1 /disk2 ext3 rw,usrquota,grpquota 0 0
<span class=term_say># 事实上,也可以利用 mount 的 remount 功能!</span>
[root@linux ~]# <span class=term_command>mount -o remount /disk2</span>
</pre></td></tr></table>
嘿嘿嘿嘿!这样我们就已经成功的将 filesystem 的 quota 功能加入棉!另外,鸟哥这里是以
ext3 这个磁碟格式来测试 quota 的呦!<br><br>
<hr><li><span class=text_import1>扫瞄磁碟的使用者使用状况,并产生重要的 aquota.group 与
aquota.user∶</span><br><br>
接著下来就是要来扫瞄一下我们所需要的磁碟到底有没有多馀的空间可以让我们来设定 quota
呢?并且将扫瞄的结果输出到这个磁碟的最顶层去(也就是 /disk2 底下)这个时候就需要
quotacheck 这个指令的帮忙了!使用 quotacheck 就可以轻易的将所需要的资料给他输出了!
并且在 /disk2 底下会产生 aquota.group 与 aquota.user 这两个档案! <br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>quotacheck -avug</span>
quotacheck: Scanning /dev/hdb1 [/disk2] done
quotacheck: Checked 3 directories and 4 files
[root@linux ~]# <span class=term_command>ll /disk2</span>
-rw------- 1 root root 6144 Sep 6 11:44 aquota.group
-rw------- 1 root root 6144 Sep 6 11:44 aquota.user
</pre></td></tr></table>
使用 quotacheck 就可以轻易的将所需要的资料给他输出了!但是很奇怪的是,在某些 Linux
版本中,我不能够以 aquota.user(group) 来启动我的 quota ,这有可能是因为旧版 quota 的关系,
所以我就另外做了一个 link 档案来欺骗 quota 棉∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cd /disk2</span>
[root@linux ~]# <span class=term_command>ln -s aquota.user quota.user</span>
[root@linux ~]# <span class=term_command>ln -s aquota.group quota.group</span>
<span class=term_say># 除非您的 Linux distributions 是比较旧的版本,否则不会有这个问题,
# 所以,这个动作你不必进行的!</span>
</pre></td></tr></table><br>
<hr><li><span class=text_import1>启动 quota 的限额∶</span><br><br>
再来就是要启动 quota 啦!启动的方式也是很简单的!就是使用 quotaon -av 即可∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>quotaon -avug</span>
/dev/hdb1 [/disk2]: group quotas turned on
/dev/hdb1 [/disk2]: user quotas turned on
</pre></td></tr></table>
注意∶要看到上面有个 turned on 的出现,才是真的成功了!<br><br>
<hr><li><span class=text_import1>编辑使用者的可使用空间∶</span><br><br>
由于我们有两个使用者要设定,先来设定 quser1 好了,使用 edquota 就对了∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>edquota -u quser1</span>
Disk quotas for user quser1 (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 <span class=term_write>45000 50000</span> 0 0 0
</pre></td></tr></table>
再次强调的是,因为我的 /disk2 里面并没有任何资料存在,所以,在上面这个表格当中,
blocks 与 inodes 才会都是 0 ,如果您是使用 /home 来进行 quota 设定的,
那么 blocks/inodes 肯定不会是 0 ,这里要特别留意的。好了,上面特殊字体的部分就是我们的设定了,
分别是 45000 及 50000 ,那个单位是 KBytes 啦,转成 MBytes 应该是要除以 1024 才对,
不过,简单算一下就好了,不要太介意喔!^_^。然后将 quser1 的设定直接复制给 quser2 吧!<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>edquota -p quser1 quser2</span>
</pre></td></tr></table>
接下来要来设定宽限时间,还是使用 edquota !<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>edquota -t</span>
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 <span class=term_write>1days</span> 7days
</pre></td></tr></table>
将时间改为 1 天(原本是 7days 改成 1days ),好了!查询一下是否真的有设定进去呢?使用
quota -v 来查询∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>quota -vu quser1 quser2</span>
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
</pre></td></tr></table>
特别注意到,由于我们的使用者尚未超过 45 MB,所以 grace ( 宽限时间 )
就不会出现啦!这样很够清楚了吧?!<br><br>
<hr><li><span class=text_import1>编辑群组可使用的空间∶</span><br><br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>edquota -g qgroup</span>
Disk quotas for group qgroup (gid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 <span class=term_write>80000 90000</span> 0 0 0
[root@linux ~]# <span class=term_command>quota -vg qgroup</span>
Disk quotas for group qgroup (gid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 80000 90000 0 0 0
</pre></td></tr></table>
这样就设定好了 group 的 quota 棉!同样的,因为整个群组的总使用量还没有到达 80000 KBytes,
当然那个 grace 就不会有任何资讯显示了!但这个地方倒是有很多朋友来信问到一个小问题,
那就是『<span class=text_import2>为什么我两个使用者 quser1, quser2 的设定值在 soft 与 hard
分别是 45/50MB ,但为何你的 group 总量 (hard) 设定仅有 90MB 呢?</span>』,也就是说,
当我的某个使用者用了 50MB 的量,那另一个不就最多可以使用到 40MB 而已?原因何在啊?<br><br>
这么说好了,如果是小型的系统,由于使用者并不是很多,我们可以针对每个人来进行 quota
的设定值,所以,当然针对 users 来进行设定即可,不需要额外的设定 group 的 quota 设定啦。<br><br>
但如果换个角度来思考,假设您所处的公司人员比较多且分工较细,因此,
我们可能无法真正了解每个使用者的需求,此时,针对每个使用者来设定可能就比较麻烦一点。
那么我们反过来说,可以针对每个部门 (group) 来进行 quota 的设定,
因为部门的需求直接跟部门的负责人询问就好了,比较容易,而该部门的使用者 quota 设定当然可以高一点,
因为,可能某些使用者有较为独特的需求啊!反正只要符合 group 的限制即可,
该部门如果超过整个 group quota 限制值,呵呵!让他们自己去处理即可! ^_^<br><br>
<hr><li><span class=text_import1>设定开机时启动 quota∶</span><br><br>
这个部分就不需要担心了,因为 FC4 与 Red Hat 系列的开机 script (/etc/rc.d/rc.sysinit)
已经将 quota 的侦测写入在里头,因此,在预设的情况下, quota 是会主动的被启动的。
不过,如果你想要手动的强制 quota 在开机启动一遍,那么可以使用 vi 去编辑
/etc/rc.d/rc.local ,在里面加入一行 (直接加在最后一行即可)∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/rc.d/rc.local</span>
<span class=term_write>/sbin/quotaon -avug</span>
</pre></td></tr></table>
如果要关闭 quota 就是用 quotaoff 吧!没错!这样就将 quota 设定完毕了!很简单吧!!
( 如果是 SuSE Server 9 的话,可能就要去修改 /etc/init.d/boot.local 这个档案棉! )<br><br>
<hr><li><span class=text_import1>利用 repquota 显示更完整的 quota 结果报告∶</span><br><br>
事实上,除了 quota 可以用来观察使用者与群组使用的 quota 限制值之外,其实,
我们还可以使用更详细的 quota 报告指令,就是 repquota 这个指令呢!他的基本用法是这样的∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>repquota -a [-vug]</span>
<span class=term_say>参数∶
-a ∶直接到 /etc/mtab 搜寻具有 quota 标
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -