我们知道,我们在某个网站申请邮箱的时候,常常分为免费用户和会员用户。而且两者可以使用的邮箱空间也是不同的,这是靠怎样的一种机制来实现的呢?其实,这就是靠我们常说的quota(磁盘配额)来实现的。

     在Linux系统中,我们可以依靠磁盘配额来对用户可以使用的磁盘空间进行限定。如果不对磁盘进行配额的话,可能致使其他的用户无法使用磁盘空间。例如在我们的系统中有10个用户,总共的磁盘空间有10G。如果其中的一个在磁盘上保存了9G的文件,那么剩下的所有的用户能使用的空间就只剩下1G了,显然这并不是我们所希望的。所以进行磁盘配额是非常有必要的,当然,在我们的用户之中确实有些用户确实需要大一些的空间,这就得根据实际情况,总和各种因素来有计划的分配磁盘空间了。

磁盘配额是管理员为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。我觉的其实就是对用户对磁盘空间的使用能力的限定。在Linux中,我们可以对用户可以使用的空间大小和文件个数进行限制,可以单独限制也可以同时限制。不过常用的是对磁盘空间大小的限定。

在这两中限制中,还有软限制和硬限制之分。

软限制就是给你分配了一定的磁盘空间,但是你可以超过这个限制,可以使用更多一点的空间,不过当使用的空间超出限定时会给用户一些警告。并且超出给你分配的磁盘空间的文件,并不可以长时间的保存。一般就几天而已,这需要根据管理员的设定来确定了。一旦超出这个限定时间(我们常称这个时间为宽限期(grace time)),超出的那些文件就将被删除。软限制常常与硬限制一起使用。

硬限制就是给你分配了多大的磁盘空间,你就只可以使用这些分配的空间,一点都不可超过。很强硬的,没有一丝的回旋余地。

磁盘配额是在文件系统上进行的,可以独立对用户进行配额,也可以对组进行配额。那么系统是怎样知道是对用户配额还是对组配额的呢?其实在我们对用户或组进行配额前,首先在对应的文件系统上创建两个数据库文件,分别是:对用户:aquota.user、对组:aquota.group

下面来看看在Linux中怎样实现磁盘配额吧!

1、  启用磁盘配额功能

要想使用磁盘配额,在文件系统挂载的时候就启用了磁盘配额功能。用户和组的挂载项分别是:usrquotagrpquota

例如在/home目录中挂载了一个独立的文件系统,但是没有指定磁盘配额的挂载选项。那么就行该重现挂载。 

 
  
  1. #mount –o remount,usrquota,grpquota /home 

不过这是临时有效的,要想永久有效还需编辑/etc/fstab这个文件。在其默认挂载选项后面加上usrquota,grpquota

 
  
  1. 修改前:/dev/vol1/home   /home    ext3   defaults   1   2 
  2.  
  3. 修改后:/dev/vol1/home   /home    ext3   defaults,usrquota,grpquota  1  2  

2、  创建磁盘配额所用的数据库 

 
  
  1. #quotacheck –cmug /home 

quotacheck:检测指定的文件系统是否设定好磁盘配额的数据库;

      c:不读取原有数据库,而是直接创建数据库,并且覆盖原有数据库;

      m:表示一定不要将文件系统挂载为只读;

      u:表示检测用户数据库;

      g:表示检测组数据库。

3、  启用对用文件系统上磁盘配额的功能(未必自动启动)

#quotaon /home  :启用此文件系统的磁盘配额功能;

   -a :启用所有的文件系统的磁盘配额功能;

#quotaoff /home  :禁用此文件系统的磁盘配额功能;

   -a :禁用所有的文件系统的磁盘配额功能;

4、设定用户配额或组配额

 1)、交互式设置方法:

  #edquota  :打开交互式配置的命令;

     -u :指定用户,进行配额;

     -g :指定组,进行配额;

#edquota –u redhat :对redhat用户可用磁盘空间进行配额,软限制为1G,硬限制为2G

 修改前:

 

 
  
  1. Disk quotas for user redhat (uid 3310): 
  2.  
  3.   Filesystem              blocks   soft    hard   inodes    soft   hard 
  4.  
  5.   /dev/mapper/vol0-home    16     0       0       8      0      0  

修改后: 

 
  
  1. Disk quotas for user redhat (uid 3310): 
  2.  
  3.   Filesystem              blocks   soft    hard   inodes    soft   hard 
  4.  
  5.   /dev/mapper/vol0-home    16   10240   20480       8      0      0

Filesystem:文件系统的名称列;

     blocks:使用的块大小;

     soft:软限制,设定可以使用的磁盘大小,单位是k;

     hard:硬限制,设置最多可使用的磁盘大小,单位也是k;

     inodes:已有的文件个数;

     soft:软限制,设定可以保存的文件个数;

     hard:硬限制,设定最多个保存文件个数;

另外,当我们已经为一个用户设置好磁盘配额信息时,又想对其他用户设置同样的磁盘配额信息时,该怎么做呢?你很可能说按照上面的步骤再配置就ok了,当然,这种做法是正确的,但是我们这个命令有个-p选项,可以直接将已经配置好的磁盘配额信息直接copy给另外一个用户。如:

 

 
  
  1. #edquota -p redhat centos  

注:redhat和centos都是系统中存在的用户。

除此之外,我们还可以对用户超出软限制配额的那部分文件可以保存的时间进行配置。

 

 
  
  1. #edquota -t  

然后直接进行编辑就可以了,默认是7天。

2)非交互式设置方法:

 

 
  
  1. #setquota –u redhat 10240 20240 0 0 /home :同样是对redhat用户可用磁盘空间进行
  2. 配额,软限制为1G,硬限制为2G;最后面的两个0表示不对文件个数进行配额。 

以上就是如何进行磁盘配额了,再然后就是需要多加练习了。

那么如何查看文件系统上磁盘配额的概要信息呢?

#repquota :这个命令就是显示某个文件系统上的磁盘配额的摘要信息的;

另外,当我们发现某些用户使用的磁盘空间超出了软限制的磁盘空间大小,那么我们就有必要提醒这些用户,提醒其尽快保存超出限制的那部分文件了,不然等事后用户保存的超出限制的那部分文件被系统自动清理以后,用户来找麻烦,我们就麻烦了。所以我们有必要对其进行提醒,我们可以向所有超出文件系统配额的用户发一封邮件进行警告:

#warnquota用来向超出配额的所有用户发mail进行警告;

并且,用户可以使用quota命令来查看自己的磁盘配额信息。

以上就是有关磁盘配额的简单设置方法了,如果想了解更多的有关上面的命令的使用方法可以man一下。

最后,说下关闭磁盘配额的简单步骤:

 

 
  
  1. 1、修改挂载选项 
  2.  
  3. 2、删除两个文件 
  4.  
  5. 3、关闭磁盘配额 

 

一起努力吧!