盛开的牡丹花 發表於 2008-9-8 18:48:51

FreeBSD中使用QUOTA(磁盘配额)来限制用户空间

<p><span style="font-size: xx-small">虚拟主机中经常要限制用户空间的大小和文件的数量。这些限制在linux和FreeBSD中都是用QUOTA来实现的。这里我说下在FreeBSD下实现的<a target="_blank" href="#" class="UBBWordLink">方法</a>;<br />
<br />
开启QUOTA支持<br />
首先需要修改内核加入对quota的支持 <br />
machine i386<br />
cpu I686_CPU<br />
#ident GENERIC<br />
ident CNOSvhost<br />
maxusers 0<br />
options QUOTA #就是这行了。<br />
修改好后重新编译内核。 <br />
然后在/etc/rc.conf里加入: <br />
enable_quotas=&quot;YES&quot;<br />
check_quotas=&quot;YES&quot; <br />
这样你的<a target="_blank" href="#" class="UBBWordLink">系统</a>就起用QUOTA了,你应当通过编辑/etc/fstab的某个文件<a target="_blank" href="#" class="UBBWordLink">系统</a>的属性,加入QUOTA的支持。<br />
下面的fstab文件就<a target="_blank" href="#" class="UBBWordLink">设置</a>了在/pub文件<a target="_blank" href="#" class="UBBWordLink">系统</a>上起用用户配额和组配额<br />
# See the fstab(5) manual page for important information on automatic mounts<br />
# of network filesystems before modifying this file.<br />
# Device&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Mountpoint&nbsp; &nbsp;&nbsp; &nbsp;FStype&nbsp;&nbsp;Options&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Dump&nbsp; &nbsp; Pass#<br />
/dev/ad0s1b&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; none&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;swap&nbsp; &nbsp; sw&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp; 0<br />
/dev/ad0s1a&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; /&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ufs&nbsp; &nbsp;&nbsp;&nbsp;rw&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;1&nbsp; &nbsp;&nbsp; &nbsp; 1<br />
/dev/ad0s1h&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; /pub&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ufs&nbsp; &nbsp;&nbsp;&nbsp;rw,userquota,groupquota&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;2<br />
/dev/ad0s1e&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; /tmp&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ufs&nbsp; &nbsp;&nbsp;&nbsp;rw&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2&nbsp; &nbsp;&nbsp; &nbsp; 2<br />
/dev/ad0s1g&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; /usr&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ufs&nbsp; &nbsp;&nbsp;&nbsp;rw&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2&nbsp; &nbsp;&nbsp; &nbsp; 2<br />
/dev/ad0s1f&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; /var&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ufs&nbsp; &nbsp;&nbsp;&nbsp;rw&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2&nbsp; &nbsp;&nbsp; &nbsp; 2<br />
/dev/acd0c&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;/cdrom&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; cd9660&nbsp;&nbsp;ro,noauto&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0<br />
proc&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;/proc&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;procfs&nbsp;&nbsp;rw&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp; 0<br />
<br />
<br />
<a target="_blank" href="#" class="UBBWordLink">设置</a>完fstab文件后,执行下面的命令打开quota <br />
# quotacheck -av<br />
# repquota -a <br />
基本上前期的工作都已经做完了,剩下的就是编辑用户的配额了。<br />
<br />
编辑用户配额<br />
# edquota c4st将编辑用户c4st的配额设定,出现的是一个文本编辑器界面: <br />
Quotas for user c4st:<br />
/pub: kbytes in use: 3438, limits (soft = 100000, hard = 100020)<br />
inodes in use: 25, limits (soft = 25, hard = 26)<br />
我们看到设定共分为两行。<br />
kbyters in use:3438表示已经使用了3438kb limits限制(soft=100000软限制100M,hard=100020硬限制)<br />
soft表示达到此值时警告,hard表示的用户实际可以使用的大小。<br />
inodes in use: 25, limits (soft = 25, hard = 26)这行为可以拥有的&ldquo;文件数量&rdquo;限定,当然例子给出的数值不太实际,上面的设定,<br />
用户只能创建26个文件。实际应用中,可以根据需要调整inodes的值,比如,你要装一个基于文本库的程序,如lb5000(一种webbbs),<br />
一些cgi文章管理等<a target="_blank" href="#" class="UBBWordLink">系统</a>,你就要适当的调大inode的hard设定 ?<br />
<br />
常见的quota命令<br />
# edquota -t对quota用户使用软限制之前的时间设定,days,hours,minutes或seconds都可以是此设定的单位,值只要是合理就可以。 <br />
Time units may be: days, hours, minutes, or seconds<br />
Grace period before enforcing soft limits for users:<br />
/pub: block grace period: 1 day, file grace period: 1 day<br />
# repquota -a报告文件<a target="_blank" href="#" class="UBBWordLink">系统</a>关于quota的信息。 <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Block&nbsp;&nbsp;limits&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;File&nbsp;&nbsp;limits<br />
User&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; used&nbsp; &nbsp;&nbsp;&nbsp;soft&nbsp; &nbsp;&nbsp;&nbsp;hard&nbsp;&nbsp;grace&nbsp; &nbsp;&nbsp;&nbsp;used&nbsp; &nbsp; soft&nbsp; &nbsp; hard&nbsp;&nbsp;grace<br />
wheel&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;--&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;1&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;-<br />
operator&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;--&nbsp; &nbsp;&nbsp; &nbsp;128&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;-<br />
mysql&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;--&nbsp; &nbsp;&nbsp; &nbsp; 18&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;9&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;-<br />
vhostuser&nbsp; &nbsp;&nbsp; &nbsp; --&nbsp; &nbsp; 36164&nbsp; &nbsp;100000&nbsp; &nbsp;100050&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;342&nbsp; &nbsp; 1000&nbsp; &nbsp; 1005&nbsp; &nbsp;&nbsp; &nbsp;-<br />
<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Block&nbsp;&nbsp;limits&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;File&nbsp;&nbsp;limits<br />
User&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; used&nbsp; &nbsp;&nbsp;&nbsp;soft&nbsp; &nbsp;&nbsp;&nbsp;hard&nbsp;&nbsp;grace&nbsp; &nbsp;&nbsp;&nbsp;used&nbsp; &nbsp; soft&nbsp; &nbsp; hard&nbsp;&nbsp;grace<br />
root&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;--&nbsp; &nbsp;&nbsp;&nbsp;9136&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp; 12&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;-<br />
mysql&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;--&nbsp; &nbsp;&nbsp; &nbsp; 18&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;9&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;-<br />
testmin&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;--&nbsp; &nbsp;&nbsp; &nbsp; 18&nbsp; &nbsp;&nbsp;&nbsp;1000&nbsp; &nbsp;&nbsp;&nbsp;1050&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;9&nbsp; &nbsp; 1000&nbsp; &nbsp; 1005&nbsp; &nbsp;&nbsp; &nbsp;-<br />
web&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; --&nbsp; &nbsp; 22152&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;122&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;-<br />
coms_cn&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;--&nbsp; &nbsp;&nbsp;&nbsp;1550&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp;177&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;-<br />
c4st&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-+&nbsp; &nbsp;&nbsp;&nbsp;3438&nbsp; &nbsp;100000&nbsp; &nbsp;100020&nbsp; &nbsp;&nbsp; &nbsp;-&nbsp; &nbsp;&nbsp; &nbsp; 25&nbsp; &nbsp;&nbsp; &nbsp;25&nbsp; &nbsp;&nbsp; &nbsp;26&nbsp;&nbsp;22:56<br />
<br />
<br />
# Quota :显示用户的磁盘使用情况和上限。 <br />
-g 显示用户所在组的组配额 <br />
-l 不显示NFS系统上的配额<br />
-u 显示用户配额 <br />
-q 显示使用情况超过配额的简要信息 <br />
-v 检查用户的quota设置<br />
<br />
# edquota -p test c4st c4st1 c4st2.....<br />
将把用户test的配额设定复制给用户c4st c4st1 c4st2.....<br />
<br />
# quotacheck -a这个命令可以定期执行,用来检查全部设定是否正常(可以放到crontab里执行)。<br />
<br />
<br />
注:任何转载或摘抄请注明文章出处(中文FreeBSD用户组 http://www.cnfug.org)<br />
</span></p>
頁: [1]
查看完整版本: FreeBSD中使用QUOTA(磁盘配额)来限制用户空间