一、介绍
磁盘配额(quota)就字面意义来看,就是限额的意思。即对Linux的容量空间而言,就是有多少容量限制的意思。
磁盘配额在使用上也有一些限制:
l 仅针对整个分区:磁盘配额实际运行时,是针对“整个分区”进行限制的,例如,如果/dev/hda5载入在/home下,那么,在/home下面的所有目录都会受到限制。
l 只针对一般身份用户有效,root用户就不能设置磁盘配额,应为他拥有整个系统所有的数据。
磁盘配额程序针对整个分区的限制主要分为下面几个部分:
l 最低限制(soft): 这是最低限制容量的意思,用户在宽限期间之内,其容量可以超过soft,但需要宽限时间之内将磁盘容量降低到soft的容量限制之下
l 最高限制(hard):最高限制就是“绝对不能超过”的容量。通常最高限制会比最低限制高
例如网络磁盘空间为30MB ,那么hard就设置为30MB,但为了让用户注意,所以当使用空间超过25MB时,如用户使用了27MB的空间时,那么系统就会警告用户,让用户可在“宽限时间内”将他的文件容量降低至25MB(亦即是soft)之内。也就是说,soft到hard之间的容量其实就是宽限的容量 |
二、 实例讲解
整个范例的说明如下:
我们假设主机里头有quser1与quser2这两个用户,且他们两个都挂在qgroup这个用户组下;
每个用户总共有50MB的磁盘空间(不考虑inode)限制。并且soft为45MB;
而宽限时间设定为1天,也就是说,这两人可以突破45MB的限制,但是在一天之内必须要将多余的文件删除,否则将无法使用剩下的空间;
gquota这个用户组考虑最大限额,所以设定为90MB
1. 准备好测试环境,建立用户与用户组
[root@redflag ~]# groupadd qgroup |
2. 建立文件系统的磁盘配额支持
由于需要在ext2/ext3的Linux扩展格式文件系统,才可以启动磁盘配额完整的支持,所以,建议将准备启用磁盘配额的磁盘启动参数写入磁盘配额的磁盘设置(/etc/fstab)。必须注意,最好不要以根目录进行磁盘配额,另外,不要针对root做磁盘配额。
这里需要补充一个知识点,一般来说我们是通过编辑/etc/fstab后,再重新载入文件系统的方法。通过编辑/etc/fstab来,改变/etc/mtab。
[root@redflag ~]df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda3 7516200 4181780 2946452 59% / /dev/sda1 101086 16915 78952 18% /boot tmpfs 127820 0 127820 0% /dev/shm /dev/sdb1 972404 17648 905360 2% /mnt/disk2 |
我的/mnt/disk2是独立的分区,并且它的设备名为/dev/sdb1。那么,我必须启动/mnt/disk2这个/dev/sdb1的磁盘配额文件格式。通过vi编辑/etc/fstab文件来实现。
[root@redflag ~]# vi /etc/fstab LABEL=/ / 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 LABEL=SWAP-sda2 swap swap defaults 0 0 /dev/sdb1 /mnt/disk2 ext3 defaults,usrquota,grpquota 1 2 |
这样就加入了磁盘配额的磁盘格式了。不过,由于真正的磁盘配额在读取时是读取/etc/mtab文件,这个文件需要重新启动之后才能使用/etc/fstab的新数据改写,所以这个时候可以选择:
l 重新启动 (reboot)
l 重新载入文件系统来驱动设置值,操作如下:
[root@redflag ~]# umount /dev/sdb1 [root@redflag ~]# mount -a [root@redflag ~]# grep '/mnt/disk2' /etc/mtab /dev/sdb1 /mnt/disk2 ext3 rw,usrquota,grpquota 0 0 |
命令介绍:
[root@redflag ~]# quotacheck [-avug] [/mount_point]
参数:
-a:扫描所有在/etc/mtab内含有磁盘配额支持的文件系统,加上此参数后,/mount_point可不必写,因为扫描所有的文件系统了
-u:针对用户扫描文件与目录的使用情况,会建立aquota.user
-g:针对用户组扫描文件与目录的使用情况,会建立aquota.group
-v:显示扫描过程的信息。
[root@redflag ~]# quotacheck –avug quotacheck: Scanning /dev/sdb1 [/mnt/disk2] done quotacheck: Checked 3 directories and 4 files [root@redflag ~]# ll /mnt/disk2/ 总计 32 -rw------- 1 root root 7168 04-04 20:28 aquota.group -rw------- 1 root root 7168 04-04 20:28 aquota.user drwx------ 2 root root 16384 03-25 11:48 lost+found |
4. 启动磁盘配额的限额
下面就要启动磁盘配额。
[root@redflag ~]# quotaon –avug
/dev/sdb1 [/mnt/disk2]: group quotas turned on
/dev/sdb1 [/mnt/disk2]: user quotas turned on
参数说明:
-u:针对用户启动磁盘配额
-g: 针对用户组启动磁盘配额
-v:显示启动过程的相关信息
-a:根据/etc/mtab内的文件系统设置启动有关的磁盘配额
|
5. 编辑用户与用户组的可使用空间
命令介绍:
[root@redflag ~]# edquota [-u user] [-g group] [-t]
[root@redflag ~]# edquota -p user_demo -u user
参数说明:
-u:编辑 user 的 quota -g:编辑 group 的 quota
-t:编辑宽限时间(就是超过 quota 值后,还能使用硬盘的宽限期限)
-p:copy 模板(以建立好的用户或用户组)到另一个用户(或用户组)
[root@redflag ~]# edquota -u quser1
Disk quotas for user quser1 (uid 514):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 45000 50000 0 0 0
[root@redflag ~]# edquota -p quser1 quser2
[root@redflag ~]# edquota -g qgroup
Disk quotas for group qgroup (gid 514):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 80000 90000 0 0 0
[root@redflag ~]# 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/sdb1 1days 7days
|
[root@redflag ~]# vi /etc/rc.d/rc.local
/sbin/quotaon –avug