全部博文(1144)
分类: LINUX
2006-03-06 20:41:48
什么是 Quota?建立quota:
Quota 让你可以从两方面指定磁盘的储存限制: 使用者所能够支配的索引
节点(inodes)数量;以及使用者可以取用的磁盘区块数量。
Quota 背後的含意是强制使用者在大部分的时间中保持在他们的磁盘使用
限制之下,取消他们在系统上无限制地使用磁盘空间的能力。
Quota 是以每一使用者,每一文件系统为基础的.如果使用者可能在超过
一个以上的文件系统上建立文件,那么必须在每一文件系统上分别设定
quota.
一:内核中支持QUOTA:
检查当前内核是否支持quota,当前内核配置文件在/boot下
[root@LFS ~]#grep CONFIG_QUOTA /boot/config-[version]
CONFIG_QUOTA=y
CONFIG_QUOTACTL=y
[root@LFS ~]#
如果有上列输出,则表示当前内核已经支持quota。
如果当前内核不支持quota,需要重新编译内核将quota support编译进核心:
File systems --->
[*] Quota support
二:安装QUOTA工具:
下载quota-3.12.tar.bz2 解压后使用如下命令编译安装:
[root@LFS quota-tools]#./configure --prefix=/usr
[root@LFS quota-tools]#make
[root@LFS quota-tools]#make install
三:修改/etc/fstab加入QUOTA支持:
/dev/hda7 /mnt/lfs ext3 defaults,usrquota,grpquota 1 2
四:使用quotacheck初始化QUOTA数据库:
因为quotacheck依据/etc/mtab搜索文件系统,所以要将刚刚修改的hda7重新挂载
[root@LFS quota-tools]#mount /mnt/lfs/ -o remount
[root@LFS quota-tools]#mount
......略
/dev/hda7 on /mnt/lfs type ext3 (rw,usrquota,grpquota)
[root@LFS quota-tools]#quotacheck -avug
quotacheck: Scanning /dev/hda7 [/mnt/lfs] quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
done
quotacheck: Checked 6316 directories and 85861 files
quotacheck: Old file not found.
quotacheck: Old file not found.
[root@LFS quota-tools]#
这里因为搜索不到旧版本的quota文件,所以有错误信息,但不影响。
-a : 扫描所有在/etc/mtab中开启quota的文件系统
-v : 显示扫描过程
-u : 扫描所有user quotas (usrquota)
-g : 扫描所有group quotas (grpquota)
检查完毕后生成quota的信息文件:
[root@LFS lfs]#ls -l /mnt/lfs/aquota.*
-rw------- 1 root root 11264 Mar 18 20:56 aquota.group
-rw------- 1 root root 12288 Mar 18 20:56 aquota.user
[root@LFS lfs]#
五:启动QUOTA:
[root@LFS lfs]#quotaon -av
/dev/hda7 [/mnt/lfs]: group quotas turned on
/dev/hda7 [/mnt/lfs]: user quotas turned on
[root@LFS lfs]#
-a : 开启所有quota设定,根据/etc/mtab设定
-v : 当开启quota时显示信息
六:编辑用户磁盘限额:
这里设定用户quota最大使用容量为20M,当使用到10M时会得到警告要求降低到10M
最多可以创建10个文件,当创建5个文件时会得到警告要求降低到5个文件 :-)
[root@LFS lfs]#edquota -u quota
Disk quotas for user quota (uid 5011):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 0 10240 20480 0 5 10
-u : 编辑user的quota
-g : 编辑group的quota
-t : 编辑宽限时间
-p : 复制quota资料到另一用户上
blocks :目前使用者(quota:uid=5011)在/dev/hda7所使用的空间,单位:KB (不要修改)
soft :soft limit 磁盘空间限定值 单位:KB (需要设定)
hard :hard limit 磁盘空间限定值 单位: KB (需要设定)
inodes :目前使用者使用掉的inodes,由于不容易使用inode控制,所以不要修改它。
soft :soft limit 文件限制数量 (根据需要修改)
hard :hard limit 文件限制数量 (根据需要修改)
soft limit :最低限制容量,在宽限期(grace period)之内,使用容量可以超过soft limit,但必须在宽限期之内将使用容量降低到soft limit以下。
hard limit :最终限制容量,如果使用者在宽限期内继续写入数据,到达hard limit将无法再写入。
宽限时间:使用容量超过soft limit,宽限时间自动启动,使用者将容量降低到soft limit以下,宽限时间自动关闭,如果使用者没有在宽限时间内将容量降低到soft limit,那么他将无法再写入数据,即使使用容量没有到达hard limit
设定宽限时间:
[root@LFS lfs]#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/hda7 1days 7days
OK,完成啦,检查一下吧:
[root@LFS lfs]#quota -uv quota
Disk quotas for user quota (uid 5011):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 0 1024 2048 0 5 10
[root@LFS lfs]#
-u : 显示user
-v : 显示quota值
使用-p参数复制quota资料到另一个用户:
[root@LFS lfs]#edquota -p quota test
[root@LFS lfs]#quota -uv test
Disk quotas for user test (uid 5012):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 0 1024 2048 0 5 10
[root@LFS lfs]#
同时复制给多个用户:
[root@LFS lfs]#edquota -p quota `awk -F: '$3 >499 {print $1}' /etc/passwd`
这样就将quota的磁盘配额资料复制给所有uid >499的用户(uid为500以上的用户通常为真实用户)
OK,最后加在启动脚本里,系统启动时自动激活quota吧!
可以加入到/etc/rc.d/rc.sysinit或/etc/rc.d/rc.local中,在结尾加上一行:
/usr/sbin/quotaon -aug
还要记得在系统关机/重启脚本(/etc/rc.d/rc[0,6]/)中加入关闭quota的语句:
/usr/sbin/quotaoff -aug
通常发行版在系统启动/关闭时都会处理quota,在系统启动信息看到相关信息。
例如RedHat RHEL4,Mandrake 10.1系统启动/关闭时有这样两行:
Turning on user and group quotas for local filesystems: (/etc/rc.d/rc.sysinit)
Turning off quotas: (/etc/rc.d/rc0.d/S01halt /etc/rc.d/rc6.d/S01reboot)
查询磁盘配额:
root查询所有用户使用情况:
[root@LFS ~]#repquota -a
*** Report for user quotas on device /dev/hda7
Block grace time: 24:00; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
......略
quota +- 1032 1024 2048 23:59 2 5 10
[root@LFS ~]#
如果有多个分区为quota,可用repquota -u 挂载点 查询单个分区的使用情况
普通用户查询自己使用情况:
[quota@MyLFS ~]$quota
Disk quotas for user quota (uid 5011):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 1032* 1024 2048 23:58 2 5 10
[quota@MyLFS ~]$
quotcheck :
quotcheck用来扫描文件系统的磁盘用量,更新aquota.user,aquota.group
保持quota记录档到最新的状态。
因此最好在系统启动时执行或通过cron定期执行:
每周六早七点执行一次:
0 7 * * 6 /sbin/quotacheck -avug
- 作者: BlueSilence 2005年03月19日, 星期六 00:23 回复(0) | 引用(0) 加入博采