quota 这支程序的限制内容主要分为底下几个部分:
- soft :这是最低限制容量的意思,使用者在宽限期间之内,他的容量可以超过soft ,但必需要宽限时间之内将磁盘容量降低到 soft 的容量限制之下!
- hard :这是『绝对不能超过』的容量!跟 soft相比的意思为何呢?通常 hard limit 会比 soft limit 为高,例如网络磁盘空间为30 MB ,那么 hard limit 就设定为 30MB ,但是为了让使用者有一定的警戒心,所以当使用空间超过25 MB 时,例如使用者使用了 27 MB 的空间时,那么系统就会警告使用者,让使用者可以在『宽限时间内』将他的档案量降低至25 MB ( 亦即是 soft limit )之内!也就是说, soft 到 hard 之间的容量其实就是宽限的容量啦!可以达到针对使用者的『警示』作用!
- 宽限时间:那么宽限时间就可以很清楚的知道含意是什么了!也就是当您的使用者使用的空间超过了soft limit ,却还没有到达 hard limit 时,那么在这个『宽限时间』之内,就必需要请使用者将使用的磁盘容量降低到soft limit 之下!而当使用者将磁盘容量使用情况超过 soft limit 时,『宽限时间』就会自动被启动,而在使用者将容量降低到soft limit 之下,那么宽限时间就会自动的取消啰!
- 开启磁盘的 quota 功能:编辑 /etc/fstab ,使得准备要开放的quota 磁盘可以支持 quota 啰;
必需要特别留意的是,最好不要以根目录亦即是 / 进行 quota啦!否则容易有些问题呢!另外,不要针对 root 做 quota 喔!
由于档案格式的设定是写在/etc/fstab里头,所以我们以 vi 来编辑他吧!只要在 /etc/fstab 里头增加了usrquota, grpquota 就可以啦!『注:请特别留意,这两个项目请『务必』不要写错了!请再写入/etc/fstab 之前好好的再次检查,因为写错之后,很有可能造成系统无法开机(虽然机率不高,但是有可能!?)』
[root @testroot]#vi /etc/fstab # device MountPoint filesystem parameters dump fsck /dev/hda1 / ext3 defaults 1 1 /dev/hda2 swap swap defaults 0 0 /dev/hdb1 /backup ext3 defaults 1 1 /dev/hdb2 /home ext3 defaults 1 1 none /dev/pts devpts mode=0620 0 0 none /proc proc defaults 0 0 上面的黄色字体改成底下的样子! |
多了 usrquota,grpquota 注意,由 defaults,usrquota,grpquota 之间都没有空格!
这样就算加入了 quota 的磁盘格式了!不过,由于真正的 quota 在读取的时候是读取/etc/mtab 这个档案的,偏偏这一个档案需要重新开机之后才能够以 /etc/fstab的新数据进行改写!所以这个时候你可以选择:
- (1)重新开机==>reboot;也可以选择
(2)重新 remount filesystem 来驱动设定值!
我是不太喜欢重新开机的人啦!所以我就这么做:
[root@test/]#umount /dev/hdb2 [root@test/]# mount -a [root@test/]#more /etc/mtab /dev/hda1 /ext3 rw 0 0 none /procproc rw 0 0 none /proc/bus/usbusbdevfs rw 0 0 none /dev devfsrw 0 0 none /dev/ptsdevpts rw,mode=0620 0 0 /dev/hdb1 /backupext3 rw 0 0 /dev/hdb2 /homeext3 rw,usrquota,grpquota 0 0 或者以下列的方式重新mount 所有的磁盘: |
2. 预扫瞄磁盘的使用情况:使用 quotacheck 来扫瞄一下我们要使用的磁盘啰;
如果没有相应的quota文件可以通过 quotacheck -ac 创建
3. 建立使用者的 quota :使用 edquota 来编辑每个使用者或群组的可使用空间啰;
[root @test/]#edquota –u test Disk quotasfor user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 32 0 0 8 0 0 将上面的原本设定改为底下的模样: |
要特别留意的是,上面的黑体数值代表的是 KB 呦!转成 MB 是需要乘上 1024倍,这里简单的计算一下就好了!这样就算编辑完毕了!接下来我们就需要将这个设定同时复制给test2 这个家伙!
[root@test/]# edquota -p test test2 |
接下来要来设定宽限时间,还是使用 edquota !
[root@test/]#edquota -t Grace periodbefore enforcing soft limits for users: Time unitsmay be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hdb2 1days 1days |
将时间改为 1 天(原本是 7days 改成 1days ),好了!查询一下是否真的有设定进去呢?使用quota -v 来查询
[root@test/]#quota –vu test test2 Disk quotasfor user test (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/hdb2 32 40000 50000 8 0 0 Disk quotasfor user test2 (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/hdb2 28 40000 50000 7 0 0 |
特别注意到,由于我们的使用者尚未超过 40 MB,所以 grace ( 宽限时间 )就不会出现啦!这样很够清楚了吧?!
编辑群组使用空间, 其实也差不多,还是使用 edquota:
-
[root@test/]#edquota -g test
Disk quotasfor group test (gid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb2 60 0 0 15 0 0修改成底下这样:
Disk quotasfor group test (gid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb2 60 80000 90000 15 0 0[root@test /]#quota-vg test
Disk quotasfor group test (gid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb2 60 80000 90000 15 0 0
4. 启动 quota :使用 quotaon 吧!
[root@test/]# quotaon -av /dev/hdb2 [/home]:group quotas turned on /dev/hdb2 [/home]:user quotas turned on |
注意:要看到上面有个 turned on 的出现,才是真的成功了!
设定开机时启动:
开机的时候自动启动的设定在哪里还记得吗?没错!就是在 /etc/rc.d/rc.local底下:所以你可以使用 vi 在这个档案的最后面加上一行:
-
[root @test/root ]# vi /etc/rc.d/rc.local
/sbin/quotaon-aug