Quota一直就是个很有用的东西!怎么说呢?举个例子来说明,如果您曾经申请过网络的mail服务时,那么肯定就会明白什么是20MB的邮件空间、 30MB的免费网页空间,好了,这个20MB,30MB是怎样定义出来的呢?哈哈!没错,就是quota这个东西搞出来的!如果我们要限制用户使用硬盘的 容量使用大小,嗯!来这里看看就对了!
什么是quota
『quota』就字面上的意思来看,呵呵!就是有多少『限额』的意思啦!如果是用在零用钱上面,就是类似『有多少零用钱一个月』的意思之类的。如果是在容量空间上面呢?以Linux来说,呵呵!就是有多少容量限制的意思。
在Linux系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生,如果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必 压缩其它使用者的使用权力!因此管理员应该适当的开放硬盘的权限给使用者,以妥善的分配系统资源!避免有人抗议呀!举例来说,我们使用者的预设家目录都是 在/home底下,如果/home是个独立的partition,他大概有10G好了,而/home底下共有30个人,也就是说,每个使用者平均应该会有 333MB的空间才对。偏偏有个使用者在他的家目录底下塞了好多只影片,占掉了8GB的空间,想想看,是否造成其它正常使用者的不便呢?这个时候就得要靠 『quota』的帮忙了!
Quota的一般用途
quota比较常使用的几个情况是:
针对Web服务器,例如:每个人的网页空间的容量限制!
针对Mail服务器,例如:每个人的邮件空间限制。
针对File服务器,例如:每个人最大的可用网络硬盘空间。
在Linux当中,使用来作为硬盘空间管理的就是所谓的quota这个东东啦!
Quota的使用限制
使用这个模块要有几个步骤,底下就分别说说吧!另外要特别注意的是,使用quota时有几个基本的限制需要谈一谈:
仅针对整个partition:
quota实际在运作的时候,是针对『整个partition』进行限制的,例如:如果你的/dev/hda5是挂载在/home底下,那么在/home底下的所有目录都会受到限制!
核心必须支持quota:
Linux系统核心必须有支持quota这个模块才行:如果您是使用FC4的预设核心,嘿嘿!那恭喜你了,你的系统已经预设有开放quota这个模块啰! 如果您是自行编译核心的,那么请特别留意您是否已经『真的』开启了quota这个模块?至于核心编译的过程我们会在未来进行说明!
Quota的记录文件:
目前新版的Linux distributions如:Fedora Core 4与SUSE Server9等使用的是Kernel2.6.xx的核心版本,这个核心版本支持新的quota模块,使用的预设档案 (aquota.user,aquota.group)将不同于旧版本的quota.user,quota.group!(多了一个a!)而由旧版本的 quota可以藉由convertquota这个程序来转换呢!
只对一般身份使用者有效:
这就有趣了!并不是所有在Linux上面的账号都可以设定quota呢,例如root就不能设定quota,因为整个系统所有的数据几乎都是他的!^_^
quota这支程序对硬盘配额的限制项目:
quota这个程序针对整个partition的限制项目主要分为底下几个部分:
soft:
这是最低限制容量的意思,使用者在宽限期间之内,他的容量可以超过soft,但必需要宽限时间之内将磁盘容量降低到soft的容量限制之下!
hard:
这是『绝对不能超过』的容量!跟soft相比的意思为何呢?通常hardlimit会比softlimit为高,例如网络磁盘空间为30MB,那么 hardlimit就设定为30MB,但是为了让使用者有一定的警戒心,所以当使用空间超过25MB时,例如使用者使用了27MB的空间时,那么系统就会 警告使用者,让使用者可以在『宽限时间内』将他的档案量降低至25MB(亦即是softlimit)之内!也就是说,soft到hard之间的容量其实就 是宽限的容量啦!可以达到针对使用者的『警示』作用!
宽限时间:
那么宽限时间就可以很清楚的知道含意是什么了!也就是当您的使用者使用的空间超过了softlimit,却还没有到达hardlimit时,那么在这个 『宽限时间』之内,就必需要请使用者将使用的磁盘容量降低到softlimit之下!而当使用者将磁盘容量使用情况超过softlimit时,『宽限时 间』就会自动被启动,而在使用者将容量降低到softlimit之下,那么宽限时间就会自动的取消!
基本的quota命令介绍
在开始进行quota的实践之前,我们得来了解一下quota要使用的指令!基本上分为两种,一种是查询功能(quota、quotacheck、 quotastats、warnquota、repquota),另一种则是编辑quota的内容(edquota、setquota)。下面我们来谈一 谈这些基本的指令吧!
/etc/mtab
怪了!不是说好要说明quota相关指令的吗?干嘛提这个档案系统(Filesystem)实际挂载的记录文件?呵呵!要注意了~当我们使用quota的 时候,基本上,系统会去搜寻:『系统上具有quota参数的partition』所以啰,当我们要使用quota的功能时,我们的Filesystem必 须已经支持quota才行。一般来说,我们是以编辑/etc/fstab后,再重新挂载Filesystem的方法来让系统的Filesystem支持 quota的!这个概念可是很重要的喔!^_^
quota
[root@linux~]# quota [-uvsl] [username]
[root@linux~]# quota [-gvsl] [groupname]
参数:
-u :后面可以接username,表示显示出该使用者的quota限制值。若不接username,表示显示出执行者的quota限制值。
-g :后面可接groupname,表示显示出该群组的quota限制值。
-v :显示每个filesystem的quota值;
-s :可选择以inode或磁盘容量的限制值来显示;
-l :仅显示出目前本机上面的filesystem的quota值。
范例:
范例一:秀出目前root自己的quota限制值:
[root@linux~]# quota -guvs
范例二:秀出dmtsai这个使用者的磁盘配额
[root@linux~]# quota -vs -udmtsai
注意一下这两个范例,如果您的系统上面尚未有任何的quota支持的filesystem时,
使用这两个范例时,『不会有任何信息列出来』!不要以为发生错误了!
这个命令仅是使用来『显示(display)』目前某个群组或者某个使用者的 quota 限值!您可以使用来观察一下!
quotacheck
[root@linux ~]# quotacheck [-avug] [/mount_point]
参数:
-a :扫瞄所有在/etc/mtab内,含有quota支持的filesystem,加上此参数后,/mount_point可不必写,因为扫描所有的filesystem了嘛!
-u :针对使用者扫描文件与目录的使用情况,会建立aquota.user
-g :针对群组扫描文件与目录的使用情况,会建立aquota.group
-v :显示扫描过程的信息;
-M :『强制』进行quotacheck的扫描。
范例:
范例一:将所有的在/etc/mtab内,含有quota支持的partition进行扫描
[root@linux ~]# quotacheck -avug
quotacheck: Can’t find filesystem to check or filesystem not mounted with quota option.
不要紧张,这是正常的现象~因为您尚未启用quota的参数!
关于quota参数的下达方法,我们会在稍后说明。如果正常的进行扫描,会像下面这样:
[root@linux ~]# quotacheck -avug
quotacheck: Scanning /dev/hdb1 [/disk2] done
quotacheck: Checked 3 directories and 4 files
[root@linux ~]# ll /disk2
total 32
-rw——- 1 root root 6144 Sep 5 14:56 aquota.group
-rw——- 1 root root 6144 Sep 5 14:56 aquota.user
drwx—— 2 root root 16384 Jun 25 16:22 lost+found
第一次操作quotacheck可能会有一些错误讯息发生,那应该是正常的!
如果使用ls -l去查阅一下有quota支持的那个mount point,若有出现aquota.group及aquota.user,那应该就是已经建立好了quota记录文件了!
范例二:强制扫描已挂载的filesystem
[root@linux ~]# quotacheck -avug -m
有些时候,在某些Linux distributions上面,进行quotacheck时,可能会出现如下的错误讯息:
quotacheck: Cannot get quotafile name for /dev/hda3
quotacheck: Cannot get quotafile name for /dev/hda3
果真如此的话,那么你可以如同上面一般,加上-m的参数来『强制』扫描。
也可以手动先建立记录文件,然后再扫描,如下所示:
[root@linux ~]# touch /disk2/aquota.user; touch /disk2/aquota.group
[root@linux ~]# quotacheck -avug
必须要注意的是,我这里是以/disk2作为一个测试的mount point,您的挂载点不一定会和范例一样!
这个命令主要的目的在扫描某一个磁盘的quota空间,他会针对该partitions进行扫描,并且,由于该磁盘若持续运作时,可能扫描的过程中,文件 可能会增减,造成quota扫描的错误发生,因此,当使用quotacheck时,该磁盘将『自动被设定成为只读扇区(read-only)』;至于扫描 完毕之后,扫瞄所得的磁盘空间结果会写入该扇区最顶端。(例如:在例子中,扫描/disk2这个/dev/hdb1的扇区,如果是初次扫描,那么扫描完毕 之后会产生aquota.user与aquota.group,会放置在/disk2/aquota.user与/disk2/aquota.group 底下!而如果是建立quota后的扫描,那么就会更新这两个文件!)另外,Linux也特别强调quota在使用的时候,需要特别注意在reboot时, 得先将quota关闭才好!
此外,由于新版的Linux distribution在quota的设计上似乎有点小问题,有时候无法完整的进行quotacheck,发生如同上表的情况,解决的方法就是主动手动的建立quotafile即可!例如上面的范例二所显示的。
edquota
[root@linux ~]# edquota [-u username] [-g groupname]
[root@linux ~]# edquota -t <==修改宽限时间
[root@linux ~]# edquota -p username_demo -u username
参数:
-u :后面接账号名称。可以进入quota的编辑画面(vi)去设定username的限制值;
-g :后面接群组名称。可以进入 quota 的编辑画面(vi)去设定groupname的限制值;
-t :可以修改宽限时间(就是超过quota的soft limit值后,还能使用硬盘的宽限期限)
-p :复制范本。那个username_demo为已经存在并且已设定好quota的使用者,
意义为『将username_demo这个人的quota限制值复制给username』!
范例:
范例一:设定dmtsai这个用户的quota限制值
[root@linux ~]# edquota -u dmtsai
Disk quotas for user dmtsai (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 0 0 0 0 0
进入编辑画面后,以vi的相关行为进行编辑喔!
我们可以看到被编辑的用户是dmtsai,
而下面共有七个字段,每个字段的意义我们将在底下的说明继续介绍。而假设我们对于dmtsai的限制是30MB的话,那么:
Disk quotas for user dmtsai (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 25000 30000 0 0 0
然后就可以储存后离开!
范例二:将dmtsai的quota限制值(30MB)复制给vbird1这个用户
[root@linux ~]# edquota -p dmtsai -u vbird1
范例三:修订宽限时间
[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 7days 7days
预设的恕限时间是7天!你当然可以修订时间!
这个命令就是在编辑每一个『个人』或者是『群组』的quota数值!通常我们以edquota –u username或者是edquota -g groupname来编辑个人与群组的quota设定值。不过,或许您会觉得一个一个分配似乎很慢的样子!那么您也可以直接copy一个人的设定值给其它 人,就如同上面第二个例子,利用已经建立好的dmtsai来建立vbird1这个人的quota限额!这个指令可是很重要的呦!另外,范例一当中出现的那 七个字段代表的意义我们得要谈一谈啊:
filesystem:
代表这个quota是针对哪一个partition的意思。以范例一的情况来说,指的是/dev/hdb1啰!也就是/disk2那个目录底下的quota限制值啦!
blocks:
这个是目前使用者dmtsai(uid501)在/dev/hdb1这个filesystem(参考上面一个信息),所消耗的磁盘容量,也就是目前的使用掉的空间啦!单位是Kbytes喔!这个信息是quota程序自己计算出来的,所以请不要修改他!
soft与hard:
这个是目前的dmtsai使用者在这个filesystem之内的quota限制值!至于soft与hard的意思就如同前一节最后面提的那个意思 啦!soft代表的是一个『警告』限值,hard则是一个『不可超过的限值』,soft与hard中间的差值则为宽限的数值。而当soft与hard数值 为0的时候,表示『没有限制』的意思!而数值的单位仍是Kbytes喔!
inodes:
是目前使用掉inode的状态,也是quota自己计算出来而得到的,所以不要去变更他。一般而言,inode不容易控制,所以您可以不必去限制inode呢!
quotaon
[root@linux ~]# quotaon [-avug]
[root@linux ~]# quotaon [-vug] [/mount_point]
参数:
-u :针对用户启动quota(aquota.user)
-g :针对群组启动 quota(aquota.group)
-v :显示启动过程的相关讯息;
-a :根据/etc/mtab内的filesystem设定启动有关的quota,若不加-a的话,
则后面就需要加上特定的那个filesystem!
范例:
范例一:启动所有的具有quota的filesystem
[root@linux ~]# quotaon -auvg
/dev/hdb1 [/disk2]: group quotas turned on
/dev/hdb1 [/disk2]: user quotas turned on
范例二:仅启动/disk2里面的user quota设定值:
[root@linux ~]# quotaon -uv /disk2
这个命令是在启动quota的!不过,由于这个指令是启动aquota.group与aquota.user的,所以您就必须要先完成quotacheck的工作了!然后简单的下达quotaon -a即可启动!
quotaoff
[root@linux ~]# quotaoff [-a]
[root@linux ~]# quotaoff [-ug] [/mount_point]
参数:
-a :全部的filesystem的quota都关闭(根据/etc/mtab)
-u :仅针对后面接的那个/mount_point关闭user quota
-g :仅针对后面接的那个/mount_point关闭group quota
范例:
范例一:
[root@linux ~]# quotaoff -a
这个命令就是关闭了quota的限制啦!
实践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
再次强调的是,因为我的/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,所以grace(宽限时间)就不会出现啦!这样很够清楚了吧?! 6. 编辑群组可使用的空间:
[root@linux ~]# edquota -g qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 80000 90000 0 0 0
[root@linux ~]# quota -vg qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 80000 90000 0 0 0
这样就设定好了group的quota!同样的,因为整个群组的总使用量还没有到达80000KBytes,当然那个grace就不会有任何信息显示了! 但这个地方倒是有很多朋友问到一个小问题,那就是『为什么我两个用户quser1、quser2的设定值在soft与hard分别是45/50MB,但为 何你的group总量(hard)设定仅有90MB呢?』,也就是说,当某个用户用了50MB的量,那另一个不就最多可以使用到40MB而已?原因何在 啊?
这么说好了,如果是小型的系统,由于用户并不是很多,我们可以针对每个人来进行quota的设定值,所以,当然针对users来进行设置即可,不需要额外的设定group的quota设置啦。
但如果换个角度来思考,假设您所处的公司人员比较多且分工较细,因此,我们可能无法真正了解每个用户的需求,此时,针对每个用户来设定可能就比较麻烦一 点。那么我们反过来说,可以针对每个部门(group)来进行quota的设定,因为部门的需求直接跟部门的负责人询问就好了,比较容易,而该部门的用户 quota设定当然可以高一点,因为,可能某些用户有较为独特的需求啊!反正只要符合group的限制即可,该部门如果超过整个group quota限制值,呵呵!让他们自己去处理即可!^_^
7. 设定开机时启动quota:
这个部分就不需要担心了,因为Fedora Core 4与Red Hat系列的开机script(/etc/rc.d/rc.sysinit)已经将quota的侦测写入在里头,因此,在预设的情况下,quota是会主 动的被启动的。不过,如果你想要手动的强制quota在开机启动一遍,那么可以使用vi去编辑/etc/rc.d/rc.local,在里面加入一行(直 接加在最后一行即可):
[root@linux ~]# vi /etc/rc.d/rc.local
/sbin/quotaon -avug
如果要关闭quota就是用quotaoff吧!没错!这样就将quota设定完毕了!很简单吧!!(如果是SUSE Server 9的话,可能就要去修改/etc/init.d/boot.local这个档案了!)
8. 利用repquota显示更完整的quota结果报告:
事实上,除了quota可以用来观察用户与群组使用的quota限制值之外,其实,我们还可以使用更详细的quota报告指令,就是repquota这个命令呢!他的基本用法是这样的:
[root@linux ~]# repquota -a [-vug]
参数:
-a:直接到/etc/mtab搜寻具有quota标志的filesystem,并报告quota的结果;
-v:输出所有的quota结果,而非仅下达指令者自己的quota限值;
-u:显示出使用者的quota限值(这是默认值);
-g:显示出个别群组的quota限值。
范例:
范例一:查阅系统内所有的具有quota的filesystem的限值状态:
[root@linux ~]# repquota -av
*** Report for user quotas on device /dev/hdb1
Block grace time: 24:00; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 77888 0 0 4 0 0
quser1 — 0 45000 50000 0 0 0
quser2 — 0 45000 50000 0 0 0
Statistics: <==这是所谓的系统相关信息,用-v才会显示
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000
范例二:仅列出user与group的quota限值:
[root@linux ~]# repquota -aug
*** Report for user quotas on device /dev/hdb1
Block grace time: 24:00; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 77888 0 0 4 0 0
*** Report for group quotas on device /dev/hdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
———————————————————————-
root — 77888 0 0 4 0 0
根据这些信息,您就可以知道目前的限制情况了!^_^
不改动原有系统的quota实例
好了,我们前面账号管理的部分曾经提到e-mail这个东西嘛!如果我们要设定一个对外开启的邮件主机的时候,那么最好对于邮件空间有点限制比较好,免得如同上面提到的一些问题一样,造成用户的使用权不一!所以说,使用quota确实是一个好建议!这个时候该怎么办呢?
什么怎么办?嗯!是这样的,由于quota『只能针对整个partition进行整体的磁盘配额,无法针对某个目录进行磁盘配额!』针对这个观念,我们不难发现:
将邮件存在个人的家目录与
将邮件统一放在/home下的一个共享目录是一样的!
为什么呢?这是因为quota针对的是整个磁盘呀!呵呵!所以,您必须先确定『您的/home是一个独立的partition』才行!
不过,很可惜的是,当初我们进行Linux主机安装时,如果忘记将/home独立成一个partition时,那该怎么办?是否需要将/home进行重新 分割与挂载?还有,如果也忘记将/var/spool/mail这个mailbox放置的目录独立出来,又该如何是好啊?举个简单的例子来说,在上面的那 个实作当中,你会发现,我的partition仅有/、/disk1、/disk2,那我的所有使用者都在/home里面,邮件在/var/spool /mail下,真要命!怎么办呢?
其实没有怎么难!既然quota是针对整个partition来进行限制,那我又已经将/disk2做好quota了,那么我只要:
将/home这整个目录搬移到/disk2底下;
利用ln –s /disk2/home/home来建立连结数据;
将/var/spool/mail整个搬移到/disk2底下;
利用ln –s /disk2/mail/var/spool/mail来建立连结数据。
只要这样的一个小步骤,嘿嘿!您家主机的邮件就有一定的限额了!当然!您也可以依据不同的使用者与群组来设定quota然后同样的以上面的方式来进行link的动作!就有不同的限额针对不同的用户提出!很方便吧!!^_^
本章习题练习
如果我有一个Linux主机,未来想要对外提供Mail与Web的服务,同时预计提供个人网页空间的服务,然而我希望mail提供30MB而Web则提供20MB的空间,那么我应该如何规划我的系统?
在quota的限制中,由于他限制的是整个partition呢!所以既然要分为两个服务来限制,就需要设定成两个partition了!这个案例当中是以Linux为新架设的角度来看,所以我们的规划就较为简单!假设我的硬盘为30GB的硬盘,那么我可以这样设定:
/ 256MB
Swap 2*RAM
/usr 3~5GB
/backup 5GB
其它的空间平均分给:
/home
/var/spool/mail
这样就可以啦!然后安装完成之后,套用quota的设定,即可做好限制!很是方便的!