磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单击用户来说意义不大。

  目前在Windows系列中,只有win2000及以后版本并且使用NTFS文件系统才能实现这一功能。

  磁盘配额是针对分区也就是所谓的文件系统来实现的。它不能够针对一个目录实现磁盘配额(Windows 2008可针对文件夹进行磁盘配额)。

  Linux(RHEL5.4)下设置磁盘配额的方法:

  1、准备工作:创建用户user1、user2,对其进行磁盘配额。

  

  

  2、创建一个逻辑分区,进行磁盘配额

  

  3、编辑/etc/fstab文件在要进行磁盘配额的分区上,添加磁盘配额挂载选项

  

  

  编辑fstab文件要重启才能生效。但是,也可以使用mount -a指令,只要用mount -a能挂上,重启就一定能挂上。

  4、进行配额

  由于是要针对一个分区来实现配额的,在这个分区上必须有一个包含了所有用户或组的限制文件。产生这个文件的方法如下:

  

  quotacheck参数说明:-a 表示扫描fstab表格中支持配额的分区,-u 计算每一个用户在该分区上所占用的空间,-g 计算每一个组在该分区上所占用的空间,-v 表示详细信息。由于第一次扫描要基于老的文件来进行比对,第一次执行没有老的文件忽略这个错误使用 -c。 

  编辑每一个用户的配额限制

  edquota -u(限制用户)

       -g(针对组)

       -p(表示模板的意思)

  

  磁盘空间:软限制:10M;硬限制:15M。

  inode数:软限制:3个;硬限制:4个。

  

  edquota -p user1 user2: 表示将user1的配额文件作为一个模板复制给user2。

  blocks:表示当前用户已经使用的空间大小。

  inodes:表示当前用户已经使用的inodes数,可以理解为创建的文件个数。

  soft:软限制。最低限制容量,可以被超过,但会有警告信息,超过的部分会保存到宽限时期到期。

  hard:硬限制。不能被超过限制条件

  宽限时间:当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限制以下,(默认是7天),当宽限时间到期,系统将自动清除超过的数据。

  5、启用配额

  

  quotaon 分区文件:表示启用配额。

  quotaoff 分区文件:表示关闭配额。

  6、至此,磁盘配额就设置并启动了,接下来进行测试:

  切换到user1用户,在/mnt/5下创建大于10M的文件:

   

  出现上面这个问题的原因是:user1在/mnt/5这个目录下,没有写权限。切换到root用户,通过添加写权限和sticky位,让user1具有写权限,并且不能够删除文件,以此来解决这个问题。

  

  由于占用空间超过软限制,所以发出警告,文件大小11M。

  接下来创建一个5M的文件:

  

  由于user1在该分区上使用的大小超过了硬限制15M,因此提示写失败。可以看到文件创建了,但是大小只有4M,超过硬限制的数据没有写入。

  接下来,创建两个文件:

  

  由于使用了4个inode数,超出了inode数的软限制,因此,警告文件数超出限额。不过文件还是创建出来了,只不过大小都是0,因为占用空间已经超过了硬限制。

  

  提示写失败,因为文件数超过了硬限制。

  至此,测试结束。

  用户查看自己的配额的方法如下:

  

  管理员查看配额的方法如下:

  

  宽限期一过,只能使用软限制的大小。修改宽限期的方法如下:

  

  7、关闭磁盘配额:

  

  quotaoff /mnt/5:关闭单个磁盘的配额。

  quotaoff -a :关闭系统所有已经开启的配额。

  rm -rf /mnt/5/aquota.user:如果不再使用可以将配置文件也删除了。

  最后删除/etc/fstab中的自动挂载即可。