LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 539|回复: 2

请教:分区的磁盘限额

[复制链接]
发表于 2005-3-25 10:38:42 | 显示全部楼层 |阅读模式
在red hat 9.0下,我想知道怎样实现分区限额,针对用户

    能给出具体的步骤吗??


谢谢!!
发表于 2005-3-25 10:50:09 | 显示全部楼层
编辑fstab
在你要做quota的分区的defaults后面加上usrquota
然后mount -o remount /分区label(重新挂栽改分区让配置生效)
建立quota文件
quotacheck -auvg /分区label(创建aquota.usr文件)
然后
edquota usrname
来配置quota限制,是根据inode和block的~~有硬限制和软限制
软限制在到达限制以后系统警告~但仍然可以占用空间~硬限制在到达限制以后就不能写了。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 12:04:25 | 显示全部楼层
建立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工具:
    http://distro.ibiblio.org/pub/li ... sources/quota/3.12/
    下载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
  • 回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表