磁盘配额管理

在多用户系统中,如果没有对用户使用的磁盘空间做出限制,用户无限制地存放数据和文件,可能会导致系统磁盘空间告警。如果存放的是无用数据,就会导致磁盘空间白白浪费。磁盘配额可以限制用户或组在磁盘上存放文件的空间,这样既可以让用户拥有一定的存储空间,又可以避免用户无限制地存放数据导致系统磁盘空间不足。

一、为磁盘配额提供支持

在Linux系统中,为磁盘配额提供支持的是quota软件包,如果系统中没有安装这个软件包,用户可以自行安装。

在设置磁盘配额之前,必须要获文件系统的支持。为此需要系统中的自动挂载文件/etc/fstab,为相应的文件系统添加挂载参数:usrquota(启用用户限额)和grpquota(启用用户组限额)。

以磁盘分区/dev/sda3为例,讲解如何建立磁盘配额。

(1)修改自动挂载文件/etc/fstab,启用文件系统sda3的配额支持,将其修改为以下内容:

/dev/sda3    /home    ext3    defaults,usrquota,grpquota    1 2

(2)修改完之后,需要重新挂载文件系统,以启动磁盘配额支持:

# umount /home
# mount /dev/sda3 /home

也可以使用以下命令重新挂载/etc/fstab中记录的所有分区:

#使用mount的选项a重新挂载所有分区
# mount -a

实在不行就重新启动系统即可。

(3)修改完成之后,可以使用mount命令验证设置:

#使用mount命令查看挂载的分区及参数
# mount
...
/dev/sda3 on /home type ext3 (rw,usrquota,grpquota)

如果在命令输出中看到usrquota和grpquota,表明已经成功启用磁盘配额支持。

二、检查磁盘配额命令quotacheck

启用了文件系统的配额支持后,还不能立即使用配额,还必须检查相应的文件系统,并建立磁盘配额文件。检测文件系统并建立磁盘配额文件,需要使用命令quotacheck。

【命令格式】

quotacheck [option] filesystem

【常用选项】

c:跳过原有配额文件,只执行新的扫描并保存到磁盘。

v:显示命令详细信息。

u:检查用户使用文件系统的情况。

g:检查用户组使用文件系统的情况。

【用法示例】

(1)检查磁盘分区/dev/sdd1,并将相关信息写入到配额文件中:

# quotacheck -cug /home

(2)如果要验证上述命令的执行结果,可以使用ls命令查看建立的配额配置文件:

# ls -l /home/aquota*
-rw------- 1 root root 7168 Dec 11 14:32 /home/aquota.group
-rw------- 1 root root 7168 Dec 11 14:32 /home/aquota.user

从上面的命令输出可以看出,命令在文件系统的根目录中建立了两个文件:aquota.group和aquota.user。这两个文件分别用于存放用户和用户组的磁盘配额信息,包括文件系统的使用情况及配置信息等。

三、查看磁盘使用情况命令repquota

在所有用户都可以使用的文件系统上,并不需要为每个用户都设置磁盘配额,通常只需要为那些经常存放大文件、严重占用磁盘空间的用户设置即可。

查看文件系统的使用情况,可以使用repquota命令(使用该命令的前提是已经创建了磁盘配额文件):

# repquota /home
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  156232       0       0            166     0     0       
zhu       --      40       0       0              5     0     0       
user1     --      32       0       0              4     0     0       
li        --      52       0       0              7     0     0       
ljx       --      32       0       0              4     0     0       
wlh       --      32       0       0              4     0     0       
mysql     --      32       0       0              4     0     0       
user2     --      32       0       0              4     0     0

查看上述命令的输出并选择要限制的用户,之后就可以建立配额限制了。

四、建立磁盘配额命令edquota

完成前面的准备工作就可以开始设置磁盘配额了。

【命令格式】

edquota [option] [username] [groupname]

使用edquota命令建立磁盘配额时,需要指定创建配额的用户和用户组名。

【常用选项】

u:指定限制的用户名。

g:指定要限制的用户组名。

p:复制用户或用户组的配额信息。

t:修改过渡期,即用户的磁盘配额超过软限制的宽限时间。

(1)为用户zhu建立配额:

# edquota -u zhu

此时,命令会启动用户配额配置界面,配置界面文本如下(其实这个界面就是vi编辑器,可以像使用vi那样编辑这些设置):

Disk quotas for user zhu (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                        40          0          0          5        0        0

各自段意义:

Filesystem:当前正在设置配额限制的文件系统。

blocks:当前用户已经使用的磁盘分区空间,单位是KB。

soft:对用户使用的磁盘空间或文件数的软限制(磁盘空间单位是KB)。用户使用的磁盘空间或文件数在过渡期内可以超过这个限制。

hard:对用户使用的磁盘空间或文件数的硬限制。用户使用的磁盘空间或文件数绝对不能超过此限制。

inodes:用户在当前磁盘空间中占用的i节点数,由系统自动统计,用户不必修改此项。

在磁盘配额界面中有两组soft、hard字段,其中前一组soft、hard表示对磁盘空间大小的限制,后一组表示对文件数的限制。

由于文件数限制对一般的使用者而言意义不大,因此设置磁盘配额时,一般不在文件数上设置限制。

注意:修改磁盘配额时,无论是磁盘空间限制,还是文件数限制,硬限制的数值都应该比软限制大。

在此示例中,假定需要设置用户zhu的磁盘空间软限制为1.5GB,硬限制为2GB。可以将配额修改为如下:

Disk quotas for user zhu (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                        40     1500000     200000       5         0        0

保存退出后即可完成设置。

设置上述配额限制后,如果zhu在该文件系统上使用的空间超过1.5GB,系统就会警告用户。当用户数据达到2GB时,将不能存入任何信息。

(2)如果需要查看设置的磁盘配额,可以使用quota命令。例如查看用户zhu的磁盘配额限制:

[root@localhost home]# quota -u zhu
Disk quotas for user zhu (uid 500): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda3      40  1500000 2000000               5       0       0

(3)如果要为多个用户设置相同的磁盘配额,可以先设置其中一个用户的磁盘配额,然后使用选项p将配额信息复制给其他用户。

例如将用户zhu的磁盘配额复制给用户li:

[root@localhost home]# edquota -p zhu -u li
[root@localhost home]# quota -u li
Disk quotas for user li (uid 502): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda3      52  1500000 2000000               7       0       0

(4)如果需要对某个用户组设置磁盘配额,可以使用编辑配额命令edquota的选项g。例如要设置用户组teacher的磁盘配额:

# edquota -g teacher

查看用户组磁盘配额:

# quota -g teacher

(5)过渡期也称为配额宽限时间,是指用户在磁盘上存放数据的空间或文件数超过了软限制,但没有达到硬限制时,用户还能使用的最长宽限时间。用户应该在过渡时间内,将磁盘使用空间降低到软限制以下,否则将无法正常使用磁盘。

使用命令edquota的选项t可以修改过渡期:

# edquota –t

此命令将会启动修改过渡期的界面:

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sda3                     7days                  7days

上面的示例已经将过渡期设置为7天,读者可以自行修改磁盘空间限制(Block grace period)和文件数限制(Inode grace period)的过渡期时间。过渡期的单位可以是days、hours、minutes和seconds。

注意:不要对根分区使用配额限制,否则会导致一些意外的情况发生,例如无法登录系统等。也不要对root用户做配额限制,以免发生意外。

五、开启磁盘配额命令quotaon

设置好用户、用户组配额和过渡期之后,还需要使用quotaon命令,在文件系统上手动开启配额限制功能。

【命令格式】

quotaon [option] filesystem

【常用选项】

a:开启所有文件系统的磁盘配额功能。

u:开启用户磁盘配额。

g:开启用户组磁盘配额。

v:如果开启成功,就显示提示信息。

【用法示例】

(1)开启指定文件系统的磁盘配额功能:

[root@localhost home]# quotaon -vug /home
/dev/sda3 [/home]: group quotas turned on
/dev/sda3 [/home]: user quotas turned on

(2)也可以使用选项a开启所有的文件系统的磁盘配额功能:

# quotaon –av

需要注意的是,有些系统可能会自动开启配额,不需要管理员手动开启。

六、关闭磁盘配额命令quotaoff

用法同quotaon。

七、管理磁盘配额

(1)查看磁盘使用情况:

[root@localhost home]# repquota /home
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  156232       0       0            166     0     0       
zhu       --      40 1500000 2000000              5     0     0       
user1     --      32       0       0              4     0     0       
li        --      52 1500000 2000000              7     0     0       
ljx       --      32       0       0              4     0     0       
wlh       --      32       0       0              4     0     0       
mysql     --      32       0       0              4     0     0       
user2     --      32       0       0              4     0     0

用户名后面的“--”,用于标识用户当前是否已经超出了限制。如果超出了软限制但没有超出硬限制,则标识变为“+-”。

如果有多个文件系统设置了磁盘配额限制,要查看系统中所有磁盘的使用情况,可以使用repquota的选项a。

(2)校准磁盘使用情况:

磁盘配额使用一段时间后,系统记录的磁盘使用情况可能会出现偏差,这时可以采用手动校准的方式保持准确性。

手动校准磁盘的使用情况,需要使用quotacheck命令:

# quotacheck -cug /dev/sda3
posted @ 2013-12-11 15:40  ITtecman  阅读(2498)  评论(0编辑  收藏  举报