Unix中文宝库's Archiver

hiye 发表于 2007-3-5 22:45

Quato的学习

UNIX
磁盘配额管理
磁盘配额管理
由于硬盘的资源是有限的,需要为多用户的服务器设定用户的磁盘配额,限定每个用户占有磁盘资源的空间。
系统将根据管理员设定的磁盘空间管理配额策略,自动对用户使用资源的状况,进行实时有效地管理和控制。
环境: Linux 2.4.X
目的: 在/dev/hd**/的文件系统中实现基于组和用户级的磁盘配额管理。
工具:        Quota软件包--linux实现磁盘配额管理。
设置用户和组配额的分配量
磁盘配额管理是从一个用户占用资源的两个方面来限制 :
1.磁盘大小
2.所有文件的数量
        磁盘配额涉及到两种限制策略:
1.        软限制:一个用户在文件系统可拥有的最大磁盘空间和最多文件数量,在某个宽限期内可以暂时超过这个限制。           当用户空间超过该值时,系统将警告用户。
2.硬限制:一个用户可拥有的磁盘空间或文件的绝对数量,系统绝对不允许用户超过这个限制。                                                      
当用户的空间超过该值时,所有操作都无效,并会接到系统的提示。
实现磁盘配额的步骤
1.安装Quota磁盘配额软件包
2.修改 /etc/fstab文件,系统启动时,对指定的文件系统进行配额管理
3.重新挂载文件系统
4.创建配额文件,重新生成磁盘用量表
5.分配配额
Quota的安装
第一步       
        缺省情况下,在安装系统过程中系统会自动安装quota。
        查看系统中是否安装quota:
  # rpm –qa quota
          在Linux的1号光盘的/RedHat/RPMS目录下,有相应版本的quota软件包。
        使用命令安装:
  # rpm -ivh quota-3.06-9.i386.rpm



指定文件系统的磁盘配额管理
第二步
#  more  /etc/fstab   
  /dev/sda5   /home         ext2  defaults          1 2
  /dev/sda7   /www          ext2  defaults          1 2  
  /dev/fd0    /mnt/floppy   auto noauto,owner 0 0  
//为了设置用户在目录/home/下所占用的磁盘空间,需要在/home里实现用户级的磁盘配额,所以对sda5行的挂装选项域做如下修改:
#  vi  /etc/fstab   
//规定磁盘配额管理区域/home,修改为:
/dev/sda5  /home   ext2   defaults, usrquota, grpquota   1  2   
#
/etc/fstab文件
字段1     字段2   字段3  字段4                      字段5   字段6
/dev/sda5    /home     ext2    defaults,usrquota, grpquota     1           2   
说明:
/etc/fstab文件的每一行由六个字段组成:
第一字段:文件系统(分区)的注释(类似卷标);
第二字段:文件系统的装载点;
第三字段:文件系统类型(磁盘配额只能在ext2文件系统上实现);
第四字段:装载文件系统的选项。
(1)        defaults,默认无配额管理;
(2)        加入usrquota关键字,实现基于用户的磁盘配额;                                 
(3)   加入grpqouta关键字,实现基于组的磁盘配额;       
        (4)   如果两者都需要,全添写之,中间可以用逗号分隔。  
第五字段:文件系统(分区)读写权限,0表示只读,1表示可读写。  
第六字段:表示系统启动执行fsck时检查的顺序。
配置系统的磁盘配额支持
第三步
修改/etc/rc.d/rc.local脚本,添加如下脚本:
#############################                                                                     
#check quota and turn quota on
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 “Enabling disk quota …”
/sbin/quotaon –avug
echo “Done.”
fi
#############################                                                            
这一段脚本在装载完文件系统后运行,将对磁盘配额的情况进行检查并激活磁盘配额功能。
配置系统的磁盘配额支持
第四步(1)
为实行配额控制的分区创建配额文件。
如下创建磁盘配额配置文件:
#touch  /home/quota.user
#touch  /home/quota.group
  修改文件的权限属性,使它只对root用户有读和写的许可。
#chmod 600 /home/quota.user
#chmod 600 /home/quota.group
第四步(2)使用convertquota工具生成新格式的quota数据文件:
#convertquota –u /home
#convertquota –g /home  
说明:
  convertquota –u /home 指明将装载点/home的quota旧格式的用户磁盘配额数据文件转换成新格式的数据文件;
  convertquota –g /home指明将装载点/home的quota旧格式的组磁盘配额数据文件转换成新格式的数据文件。
配置系统的磁盘配额支持
第五步
重新启动系统。
quota将开始运行工作,系统运行配额检查。
到此,完成磁盘配额所需要的系统级的支持配置。
接着,可以将磁盘配额进行用户级配置,分配给注册用户。
配额方法一   edquota
第六步(1)
#edquota  -u  user-name
//命令将自动启动系统默认文本编辑器(如vi),其内容如下所示:
        Quotas for user user-name :
        /dev/sda5:
        blocks in use:0, limits(soft = 0,hard = 0)
        inodes in use:0, limits(soft = 0,hard = 0)   
表示user-name用户在/dev/sda5分区中迄今使用了0个数据块(以K为单位),并且没有设限制(包括软限制soft和硬限制hard)。
对用户进行磁盘容量的限制,需要修改blocks行的limits部分,     
对用户进行文件目录的数量限制,需要相应的修改inodes行的limits部分.
      磁盘配额单位使用K。
配额方法一   edquota
第六步(2)例:要为user-name分配100M磁盘的软限制,400M硬限制                使用如下设置:
Quotas for user user-name:
/dev/sda5:
blocks in use:0,limits(soft = 102400,hard = 409600)
inodes in use:0,limits(soft = 0,hard = 0)  
例:要为user-name文件/目录的数量做12800个的软限制和51200个的硬限制。
Quotas for user user-name:
/dev/sda5:
blocks in use:0,limits(soft = 102400,hard = 409600)
inodes in use:0,limits(soft = 12800,hard = 51200)   
如果用户试图超过这个限制,操作将被取消,然后得到一个错误信息。
配额方法二   setquota
第六步(3)
#  setquota  [ -u|-g ]  装载点  软块数  硬块数  软文件数  硬文件数  用户名/组名
例:加入用户liu的磁盘配额,要求:
                软限制:100M
                硬限制:400M
                软文件数:12800
                硬文件数:51200        执行以下命令:
#  setquota –u /home 102400 409600 12800 51200 liu
例:
#  setquota –g /home 102400 409600 12800 51200   033-class
批量设置用户和组配额的分配量
第六步(4)
1、利用已有的用户设置,进行批量用户的相同配额设置。
                使用如下的命令:
#  edquota -p user-name -u user2 user3 user4   
使user2、user3、user4三个用户被赋予与user-name一样的磁盘配额,提高工作效率。
2、对同一组的配额:
#  edquota  -g   group-name
查看磁盘使用
1、查看用户磁盘使用情况
  要查明某一个用户使用了多少磁盘空间,使用命令:
#   quota -u user-name
  显示:
        Disk quotas for user user-name (uid 503):
        Filesystem blocksquotalimit grace file quota limit grace
        /dev/sda5   /home/user-name  102400 4098001 12800 51200  
2、使用quota -g groupname命令来参看某个组的磁盘使用情况。
  注意:   
                1、如果该用户没有配置磁盘限额的话,输出显示如下:
                        Disk quotas for user user-name (uid 503): none   
                2、如果不带任何参数运行quota的话,查看的是你自己的配额使用情况。

限制邮件的大小
# vi  /etc/sendmail.cf
Mlocal, P=/bin/mail, F=lsDFMrmn, S=10, R=20/40,
Maxsize=1000000,
A=mail -d $u
Mprog, P=/usr/local/sendmail/smrsh, F=lsDFMeu, S=10, R=20/40, D=$z:/,
Maxsize=1000000,
A=sh -c $u

bjsss 发表于 2007-3-6 15:53

好,楼主辛苦了,谢谢

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.