磁盘配额(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
保存退出即可。以后系统开机的时候即会启动磁盘配额了。