最近工作中又遇到了用户磁盘配额的问题,之前写了一个简单的操作步骤,这么长时间没碰了,印象也就模糊了,现在做一个详细点的操作实例,记录下每步的操作,以备后用。
至于quota的原理,在这里就不做过多的解释了,如有不太清楚的,可以Baidu或者google下。

===================================================================

测试环境: Asianux 3.0 sp2 x86
核心版本: 2.6.18-128.7AXS3
quota : quota-3.13-1.2.5AXS3
实践目标: 新建2个用户,并为这两个用户进行磁盘配额。
操作步骤:

1、划分新的分区
因为 quota 是针对整个分区进行限制的,所以,需要使用 fdisk 命令划分一个新的分区,至于划分分区的步骤,在之前的《LVM创建篇》中已有描述,如有不清之处,可以前去观看;

2、格式化和挂载
将新建立的分区进行格式化,如新的 /dev/sda1 分区,则执行
mkfs.ext3 /dev/sda1
挂载到某一目录上,如
mount /dev/sda1 /data

3、建立文件系统的磁盘配额支持
执行 vi /etc/fstab
按照自身实际情况,加入类似信息
/dev/sda1 /data ext3 defaults,usrquota,grpquota 0 0

修改完成后,就加入了磁盘配额的磁盘格式了,但真正的磁盘配额在读取时,是读取/etc/mtab 文件,而 /etc/mtab 则是系统启动时,由 /etc/fstab 的新数据改写的。所以此时,我们需要重启系统。
当然,如果不重启也不是不行,执行 mount -o remount /data 也可以。

4、新建用户和组
由于 /home 目录没有单独划分出来,所以新建立的用户,可以指定家目录到刚划出来的 /data 目录下。
[php]
groupadd quo
useradd -m -g quo – d /data/q3 q3
useradd -m -g quo -d /data/q4 q4
[/php]

这样,就建立了用户q3和用户q4,并都属于 quo 用户组,家目录分别在 /data/q3 和 /data/q4 。

5、扫描磁盘用户状况,产生aquota.group 和 aquota.user 文件
[php]
[root@ax3sp2 q3]# quotacheck -avug
quotacheck: Scanning /dev/sda1 [/data]
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: Old file not found.
quotacheck: Old file not found.
[/php]

6、启动磁盘配额
[php]
[root@ax3sp2 data]# quotaon -avug
/dev/sda1 [/data]: group quotas turned on
/dev/sda1 [/data]: user quotas turned on
[/php]

7、编辑用户的可使用空间
[php]
[root@ax3sp2 data]# edquota -u q3

可以看到如下信息,可以对 soft和 hard 下面的数值进行编辑

Disk quotas for user q3 (uid 512):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 124 0 0 31 0 0

例如,修改成
Disk quotas for user q3 (uid 512):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 124 102400 108888 31 0 0
[/php]
其中 soft 是用户限额, hard 是用户最大限额。 单位是KB,换算时请使用1024。
也就是说,用户可以突破 soft 的限额,但不能超过 hard 的限额,并且,超出 soft 限额的部分,会有警告提示,在宽限时间内,必须降到 soft 的限额以下。

然后使用同样的方法来设置 用户q4 的磁盘限额,如果和 q3 的配置一样,可以执行

edquota -p q3 q4

将q3的配置直接复制给q4。

8、设置宽限时间
[php]
[root@ax3sp2 data]# 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/sda1 7days 7days
[/php]

设置好后,可以执行下面命令来查看用户的设置情况
[php]
[root@ax3sp2 data]# quota -vu q3 q4
Disk quotas for user q3 (uid 512):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda1 124 102400 108888 31 0 0
Disk quotas for user q4 (uid 513):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda1 124 102400 108888 31 0 0
[/php]
由于用户们都未超过限额,所以不显示grace宽限时间。

此时,用户的磁盘限额已经完成,下面是一些补充资料,如果有需要的,可以继续观看。
===================================================================

1、设置组的可使用空间
[php]
[root@ax3sp2 data]# edquota -g quo

Disk quotas for group quo (gid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 248 0 0 62 0 0

修改后

[root@ax3sp2 data]# quota -vg quo
Disk quotas for group quo (gid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda1 248 902400 999999 62 0 0
[/php]

2、系统启动时,启动磁盘配额
[php]
[root@ax3sp2 ~]# vi /etc/rc.d/rc.local
在最后一行加入
/sbin/quotaon -avug
[/php]

3、repquota显示完整结果报告
[php]

[root@ax3sp2 ~]# repquota -av
*** Report for user quotas on device /dev/sda1
Block grace time: 6days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 154236 0 0 4 0 0
q3 — 128 102400 108888 32 0 0
q4 — 124 102400 108888 31 0 0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000

[root@ax3sp2 ~]# repquota -aug
*** Report for user quotas on device /dev/sda1
Block grace time: 6days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 154236 0 0 4 0 0
q3 — 128 102400 108888 32 0 0
q4 — 124 102400 108888 31 0 0

*** Report for group quotas on device /dev/sda1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
———————————————————————-
root — 154236 0 0 4 0 0
quo — 252 902400 999999 63 0 0
[/php]