zoukankan      html  css  js  c++  java
  • 磁盘配额管理

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

    一、为磁盘配额提供支持

    在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
  • 相关阅读:
    Linux Hung Task分析
    Linux内存都去哪了:(1)分析memblock在启动过程中对内存的影响
    《Linux/UNIX系统编程手册》第63章 IO多路复用、信号驱动IO以及epoll
    Linux内核和用户空间通信之netlink
    Linux soft lockup分析
    一款DMA性能优化记录:异步传输和指定实时信号做async IO
    Linux下时钟框架实践---一款芯片的时钟树配置
    使用Kernel NetEm和tc模拟复杂网络环境
    使用Flame Graph进行系统性能分析
    sigsuspend()阻塞:异步信号SIGIO为什么会被截胡?
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3469505.html
Copyright © 2011-2022 走看看