磁盘配额(quota),顾名思义就是限额,它只能针对整个分区进行设置,不能只针对单个文件夹或者单个目录进行配置。一般都是用来限制某个用户或者某个用户组所能使用的最大磁盘配额。它较常使用的情况是:
                              1.针对WWW服务器,如每个人的网页空间的限制
                              2.针对邮件服务器,如每个人的邮件空间限制
                              3.针对文件服务器,如每个人最大的可用磁盘空间
 等等的。
 
接下来就配置一个磁盘配额的实例
 
系统环境
   物理主机:windows xp sp2  ip:10.10.9.49
   虚拟机:Vmware 6.0.2       
   虚拟主机:CentOS 5.3           ip:10.10.9.40
   远程登录虚拟终端:putty
   网络方式:桥接
-------------------------------------------------------------------------------------------------
首先为了实验我在系统中新增加一块磁盘并使用fdisk分区格式化后显示如下
[root@localhost ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1305    10377990   8e  Linux LVM
Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         125     1004031   83  Linux
/dev/sdb2             126         391     2136645    5  Extended
/dev/sdb5             126         391     2136613+  83  Linux
两块磁盘,一块10.7G 、 一块3G 实验我就使用新增加的那块磁盘。
实验需求:
1.我主要针对主机中的两个用户vuser1和vuser2进行磁盘配额的设置,却两个用户都是vgroup组。
2.每个用户有500MB的磁盘空间,并且最低限制为450MB
3.宽限时间为2天,也就是说,如果用户使用的容量超过了450MB,那么他就必须在2天之内删除多余的文件以降低磁盘使用量,否则将无法使用剩余容量。
4.组vgroup限制为2G。
-----------------------------------------------------------------------------------------------
第一步:建立好实验所需的用户和用户组,如下所示
[root@localhost ~]# groupadd vgroup
[root@localhost ~]# useradd -g vgroup vuser1
[root@localhost ~]# useradd -g vgroup vuser2
[root@localhost ~]# passwd vuser1

Changing password for user vuser1.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd vuser2
Changing password for user vuser2.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
注意输入密码的时候是不回显的,只要输入的时候确保正确即可,输两次。
 
第二步:建立文件系统的磁盘配额支持,如下:
首先我先挂载
[root@localhost ~]# mount /dev/sdb5 /mnt/quota/
[root@localhost ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      8.5G  2.8G  5.3G  35% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 302M     0  302M   0% /dev/shm
/dev/sdb5             2.1G   68M  1.9G   4% /mnt/quota
看到了吧。我把第二块磁盘的sdb5挂载到/mnt/quota下,总大小2.1G
接着设置我将准备启动磁盘配额的启动参数写入磁盘设置文件如下:
[root@localhost ~]# vi /etc/fstab
 
       #Device                 Mount Point             Filesystems     parameters dump fsck
/dev/VolGroup00/LogVol00 /                      ext3            defaults        1 1
LABEL=/boot             /boot                          ext3            defaults        1 2
tmpfs                           /dev/shm                    tmpfs           defaults        0 0
devpts                        /dev/pts                      devpts          gid=5,mode=620  0 0
sysfs                          /sys                              sysfs           defaults        0 0
proc                           /proc                               proc            defaults        0 0
/dev/VolGroup00/LogVol01 swap                   swap            defaults        0 0
/dev/sdb5               /mnt/quota              ext3            defaults,usrquota,grpquota        0  0
~
~
~
~
~
~
保存退出即可。
[root@localhost ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb5 on /mnt/quota type ext3 (rw,usrquota,grpquota)
好了。已经设置完毕
 
第三步:扫描磁盘的用户使用情况并产生aquota.user和aquota.group两个记录文件
[root@localhost ~]# quotacheck -avug
quotacheck: Scanning /dev/sdb5 [/mnt/quota] done
quotacheck: Checked 3 directories and 4 files
[root@localhost ~]# ll /mnt/quota/
total 32
-rw------- 1 root root  7168 Aug  6 20:53 aquota.group
-rw------- 1 root root  7168 Aug  6 20:53 aquota.user

drwx------ 2 root root 16384 Jul 24 14:36 lost+found
[root@localhost ~]#
 
第四步:启动磁盘配额
[root@localhost ~]# quotaon -avug
/dev/sdb5 [/mnt/quota]: group quotas turned on
/dev/sdb5 [/mnt/quota]: user quotas turned on
第五步:编辑用户的可用空间
root@localhost ~]#edquota -u vuser1
Disk quotas for user vuser1 (uid 504):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb5                         0       45000     50000          0        0        0
接着把vuser的设置复制给vuser2即可
[root@localhost ~]# edquota -p vuser1 -u vuser2
第六步:设置宽限时间:
[root@localhost ~]# 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/sdb5                     2days                  7days
~
~
~
查看用户的磁盘配额设置值:
[root@localhost ~]# quota -vu vuser1 vuser2
Disk quotas for user vuser1 (uid 504):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5       0   45000   50000               0       0       0
Disk quotas for user vuser2 (uid 505):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5       0   45000   50000    
 
第七步:编辑用户组可用的磁盘空间
[root@localhost ~]#edquota -g vgroup
Disk quotas for group vgroup (gid 504):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb5                         0       180000     200000          0        0        0
 
差不多经过这几步磁盘配额的设置就完成了。如果你想关闭磁盘配额的设置那当然就是quotaoff -avug 了。
如果你想设置启动时就启动磁盘配额的话那就如下。编辑一个文件即可
[root@localhost ~]# vi /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/sbin/quotaon -avug
~
~
:x
保存退出即可。以后系统开机的时候即会启动磁盘配额了。