在linux服务器上配置磁盘限额

在核心中安装 quotas
在这个套件中的 diffs 是相对於本来的 1.1.16 版程式码。
执行下面的步骤。
首先为旧的组件建立备份,就像这样。
1) cd /usr/src
2) tar czvhf oldlinux.tar.gz linux
然后解开组件
3) cd /usr/src/linux
4) patch -p1 < <你放置它的地方>/kdiffs_1.1.16
检查看看有没有一些被拒绝执行的地方或者是不是有做一些这样的尝试。
5) find . -name *.rej
当你完成这个步骤以後我们可以把一些原先的档案丢掉。
6) find . -name *.orig | xargs rm
下面配置你的核心
7) cd ..
8) make config
在 Disk QUOTA support 选项上回答 yes 。
做一下验证,然後重新制作核心。
9) make depend
10) make
现在你应该已经拥有一个新的核心映像,像平常一样地安装它。
好,现在制作工具程式并且安装它们。
把这个目录下的 mntent.h 档案复制到 /usr/include 以便取代原先那
个小的、并且会锁住各种运作选项的那一个。
要使用这个套件里的 PROCESSACCOUNTING DIFFS 你需要有 GNU 的ACCOUNTING 工具
程式,这些工具程式可以在 PREP.AI.MIT.EDU 里找到 )
在档案系统上启动 quotas
要在一个档案系统上启动 quotas 的人应该要编辑 /etc/fstab 这
个档案并且为了 usrquota 以及 grpquota 增加一些项目。我的看起来像这样:
# device directory type options
/dev/hda1 / ext2 defaults
/dev/hda2 none swap sw
/dev/hda3 /usr ext2 defaults
/dev/hdb1 /usr/users ext2 defaults,usrquota,grpquota
/dev/hdb2 /usr/src ext2 defaults,usrquota
none /proc proc defaults
在每个 fstab 项目的选项栏位中,关键字 “usrquota” 为这个设备打开使用
者的限额功能。在选项栏位里的关键字 “grpquota” 则为这个设备打开使用群
的限额功能。当你使用了 usrquota 以及 grpquota 选项而没有加上 “” 选项
时,你的 quotafiles 会是在每个档案系统的根目录里。一个叫做”quota.user”
的档案是给使用者的限额功能所使用;而一个叫做 “quota.group” 的档案则是
给使用群的限额功能所使用。
从 1.1 版开始你也能够在里面定义你自己的 quotafile 。就像是”usrquota/usr/
adm/quotasrc.user” 这样的东西。
请注意你的 fstab 里每一行的最大长度限制,参看mntent.h 里面的定义。
在你真的想要使用这个选项时,你应该用这个套件所提供的mnt ent.c 链结这
些程式,因为程式库在处理一个 fastab 档案的剖析上有些问题。
打开 quotas 的功能
在你第一次安装 quota 时执行 “quotacheck -avug” 来将所有的 quotafiles 安装

到你档案系统的根目录。或者是当你以 [usr|grp]quota”” 在定义你的 fstab 时所叙述
的地方。当用来检查一个设备时不要用 quotacheck 程式的 -d 旗标。因为这个只有用
在除错上而且会使得扫描非常的慢。
quotacheck 这个程式在大型的档案系统上得花些时间,但是新的版本在我的机器上
已经很可以接受了。然而当你是在 hacking 核心时,我建议不要去使用它。因为这在你
每次必须得重新开机时都会花些时间。你也可以把它放在你的 rc 指令稿里然後就像你
在你的档案系统上执行 fsck 一般,只有在 fastreboot 旗标没有被设定的时候才会执
行它。
他并没有支援档案系统的 parallel checking ,但是下个版本可能会有。请不要介
意自己去实作它。如果没有人要做那我就得自己来,但这样子的话将得多花点时间,因
为它现在在我的 wish list 中并不是很重要。而且它在 IDE 磁碟上做 simultaniousl
y大概不会多快。
现在应该已经具备所有必须的 quotafiles 。现在你可以增加像这样一行:
/usr/etc/quotaon -avug(或是不要加上 -v 旗标,如果你并不想看到什麽 quota
被打开了的话)。
到你的 /etc/rc 里面去。这是用来在你启动机器时打开 quotas 的功能。这是一个
让你不必在每次启动你的机器时都得要自己打开它的办法。
为 quotas 检查档案系统
只要执行 “quotacheck -avug” 那麽 quotafiles 就会自动被更新而且核心正在使
用的参考表也一样。
注意 quotacheck 程式的 “updating in core quotas” 讯息,如果它更新核心的 quot
as 就会出现。
quotafile 是以 (uid || gid * sizeof(struct dquot))这种方式建立的,所以当
你没有 uid以及用户nobody拥有一个档案时会得到很大的 quota files ,估计大概有
2 Mb 左右填满零的空间给没有 quota 的使用者。
指定一个使用者或使用群的 quota
现在用 “edquota -u ” 来编辑使用者的限额以及 “edquota -g ” 来编辑使用群的
限额。

只需编辑位于soft 以及 hard关键字後面的数字。
有两行给每个打开quotas 的档案系统使用。 Soft 的意思是指软性限制,如果使用者或
使用群超越了这个限制,他们会有些优待期限用来确定他们回到软性限制的范围内。
这是可以使用 “edquota -t” 然後输入以日数来加以改变的。如果他们不在优待期
限内删除这些部份的话,那麽将会被当作硬性限制处理。硬性限制是他们所能分配到的
绝对最大限额,如果他们想要分配更多则这些档案会被拦腰斩断。
说明 blocks 的那一行是一个人所能分配的区块数目,说明 inode 的那一行是一个
人所能分配的索引节点 (files/named piple/devices/etc.) 数目。
全部都以相同的限额增加使用者
到 homedir 所在的地方去。对其中一个使用者执行 edquota 并且将限额改换成适
当的数值。这个使用者变成所有其他使用者或使用群的原形。然後这样做:
# edquota -p <你以正确的限额编辑过的使用者> *
这样应该可以执行这个技术,所有的使用者现在都有他们所需要的限额,现在你可
以对还有其它需要的人进行编辑。
检验使用者的限额
执行 quota 程式。这个程式的语法是:
用法:
quota [-guqv]
quota [-qv] -u 使用者名称…
quota [-qv] -g 使用群名称…
用 -v 来查看 quotas 在
1) 你没有设限额的档案系统
2) 你已经设了限额但是目前还没有分配任何区块的档案系统
用 -q 只查看那些你分配了超过你的软性限制或已经达到你的硬性限制的档案系统

这 -g 旗标给你你所属的使用群的所有限额(也包括附加的使用群)。
关掉对某个使用者的限额
当你想要关掉对某个使用者的限额时用限额编辑器 edquota 。键入 “edquota 〈使
用者名称 | uid〉” 或者 “edquota -g 〈使用群名称 | gid〉” 并且将区块的软性限制

与硬性限制以及索引节点的软性限制与硬性限制设成零。这样应该可以关掉对这个使用
者的限额而只要这个使用者想要,分配多少区块或索引节点都可以。
在一个档案性统上所有使用者所使用的限额列表
你可以使用 repquota 程式来取得一份目前的档案系统或任何档案系统中所有被使
用的限额列表。这个程式需要读取 quotafiles 所以我需要以超级使用者来执行它或者
如果你的 quotafiles 是任何人都可以读取则任何使用者都可以执行。不建议这样做。

在 NFS-mounted 磁碟上使用 quotas
要在 NFS 档案系统上使用 quota 你需要把 quota 安装到档案伺服器上而不是 cl
ient上。客户机器可以藉由 quota 指令取得有关限额的资讯,它会对你挂上 NFS 磁碟
的档案伺服器的 rquotad 提出查询。所以不要对挂上的 NFS 磁碟设置任何 usrquota或
者是 grpquota 旗标。而以在你的档案伺服器安装 quotas 来取代。并且从你的网路rc
档案中启动 rpc.rquotad 。

发表评论

电子邮件地址不会被公开。