肥肥胖胖 發表於 2008-9-8 18:49:08

用Quota来配置OpenBSD下磁盘限额

<p>Quota:OpenBSD下配置磁盘限额<br />Author: MichaelBibby<br />Date: 2005/11/26</p>
<p>本文可以任意转载,但请保留以上作者信息,谢谢。</p>
<p>Quota是用来配置磁盘限额的一个工具。可以配置用户的磁盘限额,也可以配置用户组的磁盘限额。<br />这两个可以单独配置,也可以同时结合着一起使用。既对某个用户做限制也对某个组做限制。</p>
<p>第一次接触Quota,是为了用Samba实现PDC(主域)并对用户设置磁盘限额而开始学习的。<br />(关于如何用Samba实现PDC,以及如何对从客户端登录上来的用户做Quota,可以参考我的这篇文章:Samba服务,写的不对之处,<br />还请大家斧正,多谢。)没有接触之前,觉得好象挺难的,但是当自己真正捣鼓那么一两次,有了比较清晰的概念之后就会轻车熟路了,<br />觉得配置Quota其实很简单。</p>
<p>本文简略说明在OpenBSD(3.8)上如何对用户和用户组设置Quota。</p>
<p>配置Quota,基本上就这么4个步骤:</p>
<p>1: 要使系统支持Quota,请确认编译内核的时候在内核配置文件中加上了&quot;option Quota&quot;选项。默认的GENERIC<br />&nbsp;内核配置文件中已经包含这个选项;</p>
<p>2:在&quot;/etc/fstab&quot;文件中,对要设置Quota的分区做个标记(加上&quot;userquota/groupquota&quot;);</p>
<p>3:使用Quota提供的几个工具正确配置对用户和对用户组的Quota;</p>
<p>4:打开Quota,使系统启动时就启用Quota功能;</p>
<p>下面详细地说说每一个步骤。</p>
<p>1:确认内核支持;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你使用的是系统默认的GENERIC内核配置文件编译出来的内核,那么系统就已经支持Quota功能了,不需要<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外编译。如果没有,请在你的配置文件中加上&quot;options QUOTA&quot;,然后重新编译安装内核。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于编译内核,请参考:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenBSD FAQ5:Building the System from Source</p>
<p>2:标记需要Quota的分区;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 假如需要对&quot;/home&quot;目录做Quota,那么就在&quot;/etc/fstab&quot;中添加Quota标记。下面是一个例子:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /dev/wd0a / ffs rw 1 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /dev/wd0d /home ffs rw,nodev,nosuid,userquota,groupquota 1 2<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 做了标记并且修改了&quot;/etc/rc.conf&quot;文件中&quot;check_quotas&quot;变量的值(关于&quot;check_quotas&quot;变量,稍后会提到),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 会在&quot;/home&quot;目录下生成两个文件:&quot;user.quota&quot;和&quot;group.quota&quot;。这两个文件保存了对用户和用户组所做的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 磁盘限额的信息。当然你也可以指定这两个文件的位置,比如:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userquota=/var/quotas/user.quota,groupquota=/var/quotas/group.quota</p>
<p>3:配置Quota;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Quota提供了几个工具让你可以方便地配置Quota,稍后会向大家介绍几个常用的。<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ⑴:设置用户Quota;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 假如你要配置用户bibby的磁盘限额,那么直接输入&quot;edquota bibby&quot;就可以了(配置Quota必须具有<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root权限),会在你预设的编辑器$EDITOR中打开用户bibby的Quota配置:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # edquota bibby<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Quotas for user bibby:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home: KBytes in use: 16, limits (soft = 0, hard = 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inodes in use: 7, limits (soft = 0, hard = 0)<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是还没有设置Quota时的配置。<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里有几个词汇大家需要明白:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ①:KByte:磁盘容量。以&quot;KB&quot;为单位。<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ②:soft:软限制。即如果用户的磁盘容量达到或者超过该值时,系统会向该系统发出警告,但是用户仍然<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以继续增加磁盘容量;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ③:hard:硬限制。硬限制的值一般都比软限制(soft)的值要大。当系统达到硬限制时,用户将无法再增加<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 磁盘容量。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 到这里你应该清楚地知道,&quot;soft limit&quot;只是警告,而&quot;hard limit&quot;才是真正的限制。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ④:inode:文件和文件夹的数目。一个文件或一个文件夹分别占用一个inode。设置inode限制可以控制用户的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件数目。假如设置&quot;inode hard limit&quot;为10,则用户拥有的文件数目达到10个后就无法再创建新文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或文件夹了(即使磁盘容量未超过&quot;KByte hard limit&quot;也一样)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实际使用中较少对inode做限制,而一般都是对磁盘容量做限制。<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里的&quot;KByte in use&quot;和&quot;inodes in use&quot;是Quota计算得出的用户目前已经使用的磁盘容量和文件数。<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面我们就来演示一下如何设置Quota。这个例子是为用户&quot;bibby&quot;设置2M的&quot;KByte soft limit&quot;和3M的&quot;KByte hard&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; limit&quot;,对inode则不做限制(这里只是演示,为了便于测试结果,所以这里配置的容量限额比较小):<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Quotas for user bibby:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home: KBytes in use: 16, limits (soft = 2048, hard = 3072)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inodes in use: 7, limits (soft = 0, hard = 0)<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ⑵:设置组Quota;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要为组设置Quota,只要使用如下命令就可以进行配置:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # edquota -g GROUP</p>
<p>&nbsp;4:打开Quota功能;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要使系统启动后即开启Quota功能,需要在&quot;/etc/rc.conf&quot;文件中将&quot;check_quotas&quot;变量的值设置为&quot;YES&quot;(系统<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 默认即为&quot;check_quotas=YES&quot;):</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; check_quotas=YES<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也可以通过命令来启用Quota:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # quotaon -a</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个命令会根据&quot;/etc/fstab&quot;文件中做的Quota标记来对分区做磁盘限额。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以使用&quot;quota&quot;命令来查看自己的磁盘限额,&quot;quota -u USER&quot;查看某个用户的磁盘限额:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ quota<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disk quotas for user bibby (uid 1000):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filesystem KBytes quota limit grace files quota limit grace<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home&nbsp; 16&nbsp; 2048 3072&nbsp;&nbsp; 7&nbsp; 0&nbsp; 0&nbsp;&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里出现了一个新东西:&quot;grace&quot;。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grace是&quot;Grace Period&quot;的意思,表示用户的磁盘容量被允许超过&quot;soft limit&quot;的时间。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 假设Grace Period设定为3天,超过soft limit的user在三天内未处理超过limit的档案的话,user将无法<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 再使用任何磁盘空间(这会造成该user无法登录系统)。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置Grace Period可以使用命令&quot;edquota &ndash;t&quot;:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # edquota -t<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time units may be: days, hours, minutes, or seconds<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Grace period before enforcing soft limits for users:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home: block grace period: 0 days, file grace period: 0 days<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本例对grace不做限制。<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 默认情况下,如果在&quot;/etc/fstab&quot;中设置了Quota标记,系统启动后就会启用Quota功能,可以使用这个命令<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来关闭Quota:<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # quotaoff -a</p>
<p>附:Quota提供的几个常用的小工具;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1:edquota;刚才已经使用过了,但是它还有一个常用的用法:<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ①:设置用户Quota:<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # edquota -u USER<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ②:设置组Quota:<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # edquota -g GROUP<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ③:将对用户&quot;bibby&quot;所做的Quota配置,同样使用在用户&quot;michael&quot;和&quot;lee&quot;上:<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # edquota -p bibby michael lee<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2:repquota:报告分区的Quota情况;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用方法:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # repquota /quota/path</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如:<br />&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # repquota /home<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3:quotaon/quotaoff:开启和关闭Quota功能。<br />&nbsp;</p>
頁: [1]
查看完整版本: 用Quota来配置OpenBSD下磁盘限额