分类: LINUX
2009-07-13 15:44:23
Linux中的磁盘配额按限制的项目不同,可分为空间限制(blocks 大小)和文件数限制(inodes 个数)。
1、检查系统是否支持磁盘配额(2.4及以后的内核默认是支持磁盘配额的):
root@rhel ~]# grep CONFIG_QUOTA /boot/config- [TAB键补全]
CONFIG_QUOTA=y
CONFIG_QUOTACTL=y #这样就说明是支持磁盘配额的;
2. 编辑/etc/fstab
[root@linux ~]# df 》》自己找一个合适的分区来做实验,这里用/disk2
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 5952252 3193292 2451720 57% /
/dev/hdb1 28267608 77904 26730604 1% /disk2
/dev/hda5 9492644 227252 8775412 3% /disk1
[root@linux ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/disk1 /disk1 ext3 defaults 1 2
LABEL=/disk2 /disk2 ext3 defaults,usrquota,grpquota 1 2
/dev/hda3 swap swap defaults 0 0
注意,多了usrquota,grpquota,在『 defaults,usrquota,grpquota 』之间都没有空格,务必正确书写。这样就算加入了 quota 的磁盘格式了!不过,由于真正的 quota 在读取的时候是读取 /etc/mtab 这个文件的,而该文件需要重新开机之后才能够以/etc/fstab 的新数据进行改写!所以这个时候可以选择:
重新开机 (reboot) 或者重新挂载mount -o remount /disk2
3. 扫瞄磁盘的使用者使用状况,并产生重要的 aquota.group 与 aquota.user:
quotacheck –avug
quotacheck 命令检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用的表。该表会被用来更新操作系统的磁盘用量文件。此外,文件系统的磁盘配额文件也被更新。
-a 意味着在 /etc/mtab 中所有挂载了的非 NFS 文件系统都会被检查来决定是否启用了配额;
-u 针对使用者扫描文件与目录的使用情况,会建立aquota.user;
-g 针对群组扫描文件与目录的使用情况,会建立aquota.group;
-v 显示扫描过程的信息;
-M "强制"进行quotacheck的扫描。
4.进入/disk2查看是否生成aquota.group 与 aquota.user
cd /disk2
ll
-rw------- 1 root root 6144 Sep 6 11:44 aquota.group
-rw------- 1 root root 6144 Sep 6 11:44 aquota.user
5.为用户或者组做磁盘配额限制
针对用户我们可以使用:edquota -u user,针对组我们可以使用edquota –g group
这里我们也可以使用复制的方式来制作用户或者组的磁盘配额,用户:edquota -p user1
-u user2(将user1的磁盘配额复制给user2);组:edquota -p group1 -g group2(原理同上)
[root@linux ~]# edquota -g qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 80000 90000 0 0 0
文件内有七个栏目:
Filesystem => 进行配额管制的文件系统。
blocks => 已经使用的区块数量(单位1KB) 【不需要修改】
soft => block 使用数量的"软性"限制;
hard => block 使用数量的"硬性"限制;
inode => 已经使用的 inode 数量 【不需要修改】
soft => inode 使用数量的"软性"限制;
hard => inode 使用数量的"硬性"限制。
Block limits是对磁盘空间使用的限制,以KB为单位,soft是指软限制,hard是指硬限制,例,soft限制为5MB,hard限制为8MB,当使用者user01使用空间超过5MB时,系统会进行提示,但可以继续使用空间,而当使用者user01使用空间达到8MB时,就会限制组qgroup继续使用/disk2空间。
File limits是对使用者创建文件的限制,soft和hard同上是软限制和硬限制,分别是50、80,当使用者user02创建文件超过50个时,系统会进行提示,但仍可以继续创建文件,而当使用者user02创建文件超过80个文件时,就会限制组qgroup继续创建文件,但要注意,因为使用者user02是在/tmp目录下进行了磁盘配额限制,所以/tmp目录会算做一个文件,所以user02最多只能创建79个文件。
6. 设置超过软限额的宽恕时间
edquota -t
使用root身份执行edquota -t后,出现如下信息:
Time units may be:days,hours,minutes,or seconds
Grace period before enforcing soft limkts for users:
/dev/hdb5:blck grace period:7 days,file grace period:7 days
系统缺省是7天,可以改成任意的天数、小时、分、秒,格式如7 days、7 hours、7minutes、7 secomnds等。
7.启用磁盘配额
启用所有分区的磁盘配额:quotaon -avug,
启用指定分区的磁盘限额:quotaon -vug /disk2
8. 关闭磁盘配额
quotaoff -a(关掉所有的磁盘配额)
quotaoff -ug /disk2 (关闭特定分区的磁盘配额)
9. 查看特定用户或者组的配额分别是:quota -u user和quota -g group
查看所有的磁盘配额:repquota -a
查看指定分区的配额情况:repquota /disk2
查看被警告超过配额的用户或者组:warnquota
查看配额的状态:quotastats
10.叫配额随系统自动加载
vi /etc/rc.d/rc.loacl
/sbin/quotaon -avug
不更动既有系统的 quota 实例
如果要设定一个对外开启的邮件主机的时候,所以使用 quota 进行对用户限制确实是一个好建议!由于 quota 只能针对整个 partition 进行整体的磁盘配额,无法针对某个目录进行磁盘配额!
很多时候当初进行 Linux 安装时,如果忘记将 /home 独立成一个 partition 时,也忘记将 /var/spool/mail 这个 mailbox 放置的目录独立出来!在上面的那个实作当中,partition仅有/, /disk1, /disk2,那我的所有使用者都在 /home 里面, 邮件在 /var/spool/mail 底下,怎么办?只要:
1, 将 /home 这整个目录搬移到 /disk2 底下;
2, 利用 ln -s /disk2/home /home 来建立连结数据;
3, 将 /var/spool/mail 整个搬移到 /disk2 底下;
4,利用 ln -s /disk2/mail /var/spool/mail 来建立连结数据。
这样做的好处就是不论使用者的邮件目录还是家目录,加起来的容量就不能超过限制容量!当然也可以依据不同的使用者与群组来设定 quota 然后同样的以上面的方式来进行 link 的动作!