在linux2.4系统中实现磁盘配额

发表于:2007-07-01来源:作者:点击数: 标签:
概述:在 linux 2.4系统中,磁盘配额(Quota)的实现和以前的相比,在配置方面有了明显的不同,本文将以具体的实例来说明如何在linux2.4中实现磁盘配额。 环境: RedHat 7.1 quota-3.00-4 目的: 在/dev/hda1(装载点为/)文件系统中实现基于组和用户的磁盘配额
概述:在linux2.4系统中,磁盘配额(Quota)的实现和以前的相比,在配置方面有了明显的不同,本文将以具体的实例来说明如何在linux2.4中实现磁盘配额。

环境:
RedHat 7.1 quota-3.00-4

目的:
在/dev/hda1(装载点为/)文件系统中实现基于组和用户的磁盘配额。

步骤:
1.安装quota
缺省情况下,在安装系统过程中系统会自动安装quota,可以用以下命令查看您的系统中是否安装了quota:
# rpm –q quota
如果没有安装,请使用rpm –ivh命令从RedHat7.1光盘中安装quota:
# rpm –q quota-3.00-4.rpm
安装完成后可以用以下命令查看quota包含的文件
# rpm -ql quota
/sbin/convertquota
/sbin/quotacheck
/sbin/quotaoff
/sbin/quotaon
/usr/bin/quota
/usr/sbin/edquota
/usr/sbin/quotastats
/usr/sbin/repquota
/usr/sbin/rpc.rquotad
/usr/sbin/setquota
/usr/share/man/man1/quota.1.gz
/usr/share/man/man2/quotactl.2.gz
/usr/share/man/man8/convertquota.8.gz
/usr/share/man/man8/edquota.8.gz
/usr/share/man/man8/quotacheck.8.gz
/usr/share/man/man8/quotaoff.8.gz
/usr/share/man/man8/quotaon.8.gz
/usr/share/man/man8/quotastats.8.gz
/usr/share/man/man8/repquota.8.gz
/usr/share/man/man8/rquotad.8.gz
/usr/share/man/man8/setquota.8.gz

2.建立quota数据文件
在quota-3.00-4版本中,系统使用了新的数据文件。本来根据man quotacheck的说明,假如系统当前没有数据文件存在,quotacheck将为您新建新的数据文件,但是在使用过程中,quotacheck并没有生成相应的数据文件,所以我们必须手工来进行这一工作。我们可以通过convertquota工具来实现这一点。

首先执行以下命令建立旧格式的数据文件:
# cd /
# touch quota.user
# touch quota.group
# chmod 600 quota..user
# chmod 600 quota.group
这样我们就建立了文件权限为600的quota数据文件quota.user和quota.group。

接下来,我们使用convertquota工具生成新格式的quota数据文件:
# convertquota –u /
# convertquota –g /

说明:convertquota –u / 指明将装载点为/ 的quota旧格式的用户磁盘配额数据文件转换成新格式的数据文件;convertquota –g / 指明将装载点为/ 的quota旧格式的组磁盘配额数据文件转换成新格式的数据文件。
这样我们就生成了新格式的quota数据文件。

3.修改/etc/fstab,从而在/dev/hda1文件系统上实现磁盘配额
原来的/etc/fstab文件内容如下所示:
# more /etc/fstab
LABEL=/ / ext2 defaults 1 1
LABEL=/data /data ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0


修改后的/etc/fstab文件内容如下所示:
# more /etc/fstab
LABEL=/ / ext2 defaults,usrquota,grpquota 1 1
LABEL=/data /data ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0


说明:/etc/fstab文件的每一行由六个字段组成:
第一个字段:文件系统(分区)的注释(类似卷标);
第二个字段:文件系统的装载点;
第三个字段:文件系统类型(磁盘配额只能在ext2文件系统上实现);
第四个字段:装载文件系统是使用的选项,如果只想实现基于用户的磁盘配额,就加入usrquota关键字,只想实现基于组的磁盘配额,就加入grpqouta关键字,
如果两者都需要,就全写入,中间可以用逗号分隔。
第五个字段:表明该文件系统(分区)是否为只读,如果是0就表示只读,1表示可以读写。
第六个字段:表示系统启动执行fsck时检查的顺序。

注意:请特别注意这里的拼写,是usrquota和grpquota,不要写成userquota和groupquota。

4.在/etc/rc.d/rc.local中加入quota启动脚本
这段脚本如下所示:
#!/bin/bash
if [ -x /sbin/quotacheck ]
then
echo "Checking quotas. This may take some time..."
/sbin/quotacheck -avug
echo "Done"
fi
if [ -x /sbin/quotaon ]
then
echo "Turning on quota"
/sbin/quotaon -avug
echo "OK"
fi

注意:这里需要注意的是quotacheck和quotaon文件的路径,在RedHat7.1中,这些文件的路径和以前的版本不同。请通过rpm –ql quota来确定其路径。

5.重启动系统,如果一切正常的话,quota将开始正常工作。

6.加入对用户的磁盘配额:
在quota-3.00-4可以通过两种方法实现:

a.通过edquota直接编辑数据文件:
比如加入用户bye2000的磁盘配额,执行以下命令:
# edquota –u bye2000
Edit block and inode quota for user bye2000:
Device /dev/hda1 (/):
Used 500KB, limits: soft=2000 hard=2500
Used 10 inodes, limits: soft=100 hard=110
然后直接修改即可。

b.通过setquota工具加入:
比如加入用户bye2000的磁盘配额,执行以下命令:
setquota –u / 2000 2500 100 110 bye2000
以下是setquota命令用法的简单描述:
setquota [ -u|-g ] 装载点 软块数 硬块数 软文件数 硬文件数 用户名/组名

7.其他问题说明:
a.关于所使用到的命令的详细用法,请参考各个命令的man手册;
b.软限制(soft)表示当用户空间超过该值时,系统将警告用户。硬限制(hard),当用户的空间超过该值时,所有操作都无效,并会接到系统的提示。

原文转自:http://www.ltesting.net