我们可通过quota来设置磁盘的配额,限定某个用户只能使用有限的硬盘空间,这在文件服务器和邮件服务器上是很常用的。Linux通过quota程序支持磁盘配额,它以分区(partition)为单位进行设置的。设置步骤如下:
确定内核支持quota功能,然后下载安装quota程序。
debian:~# apt-get install quota
修改/etc/fstab文件,在分区上启用quota功能。我的home目录是放到一个单独的分区中的,我现在要在该分区中启用quota,则需把fstab中的:
LABEL=/home /home ext3 defaults 1 2
改成:
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
usrquota和grpquota是新增的内容,表示在该分区内启用用户配额(usrquota)和组配额(grpquota)。用户配额可限制某个用户可使用的磁盘空间,组配额可限制某个组所有成员总共可使用的磁盘空间。
重新启动系统或重新安装分区,使fstab里的配置生效,我们可查看/etc/mtab文件以确定我们的修改是否生效,下面是一个生效后mtab文件。
debian:~#mount -a -o remount #重新安装分区 debian:~# vi /etc/mtab /dev/sda1 / ext3 rw 0 0 none /proc proc rw 0 0 usbdevfs /proc/bus/usb usbdevfs rw 0 0 none /dev/pts devpts rw,gid=5,mode=620 0 0 /dev/sda2 /home ext3 rw,usrquota,grpquota 0 0 #启用了quota none /dev/shm tmpfs rw 0 0 /dev/sda3 /usr ext3 rw 0 0 /dev/sda6 /data ext3 rw 0 0
运行quotacheck程序收集磁盘资料,并在/home目录下生成aquota.group和aquota.user文件。
debian:~# quotacheck -avug
如果出现# quotacheck: Cannot get quotafile name for /dev/sda1的情况,请先手工在/home目录下创建这两个文件,然后再运行上面这个命令。
debian:/home#touch aquota.group;touch aquota.user
这是quota的一个Bug,但不影响正常使用。
现在我们可以启动quota了,执行以下命令即可。
debian:~# quotaon -av
接下来要针对用户设置配额了,我们可使用edquota命令来做。
debian:~# edquota -u test Disk quotas for user test (uid 513): Filesystem blocks soft hard inodes soft hard /dev/sda2 28 0 0 6 0 0
这是test用户还没设置配额时的情况,soft表示软限制,当我们使用磁盘时可以超过该值,但要在指定的期间内将磁盘的容量降到soft以下;hard表示硬限制,用户使用磁盘是绝对不能超过该值的。所以soft的值是要低于hard值的,相当于给用户一个缓冲的区间。这里有两对soft和hard,前一对以blocks为单位设置,后一对以inodes为单位设置,一般使用blocks为单位。设置完成后的情况如下。
Disk quotas for user test (uid 513): Filesystem blocks soft hard inodes soft hard /dev/sda2 28 20480 30720 6 0 0
设置的容量是以K为单位的,这里的软限制设置了20M,硬限制设置了30M。
设置soft的宽限期间用edquota -t命令,该设置是针对分区设置的,不能细化到用户。
quotaoff命令用来关闭quotaoff,在关机或重启机器时,请先用该命令关闭quota。
quotastats命令可显示quota的状态信息。
repquota命令可用来显示分区中各用户的配额使用情况。