Linux 磁盘配额 quota

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 磁盘配额 quota相关的知识,希望对你有一定的参考价值。

    Linux 磁盘配额 quota



        Quota一直就是个很有用的东西。如果您曾经申请过网络的mail服务时,那么肯定就会明白什么是20MB的邮件空间、 30MB的免费网页空间,这个20MB,30MB就是quota这个东西搞出来的。如果我们要限制用户使用硬盘的容量使用大小,就需要quota来处理。


一、什么是quota

    简单的说就是限制用户对磁盘空间的使用量。

    在Linux系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生,如果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其它使用者的使用权力,因此管理员应该适当的开放硬盘的权限给使用者,以妥善的分配系统资源。为了合理的分配磁盘空间,于是就有了quota的出现。



二、quota的用途

    quota命令用于显示用户或者工作组的磁盘配额信息。输出信息包括磁盘使用和配额限制。

    作用对象:

        针对Web服务器,例如:每个人的网页空间的容量限制。

        针对Mail服务器,例如:每个人的邮件空间限制。

        针对File服务器,例如:每个人最大的可用网络硬盘空间。



三、quota的使用限制     

    仅针对整个partition:quota实际在运作的时候,是针对『整个partition』进行限制的,例如:如果你的/dev/hda5是挂载在/home底下,那么在/home底下的所有目录都会受到限制!

    核心必须支持quota:Linux系统核心必须有支持quota这个模块才行。如果您是使用FC4的预设核心,系统已经预设有开放quota这个模块。如果您是自行编译核心的,那么请特别留意您是否已经开启了quota这个模块。

    只对一般身份使用者有效:并不是所有在Linux上面的账号都可以设定quota,例如root就不能设定quota,因为整个系统所有的数据几乎都是他的。



四、quota的使用

    quota 选项 参数

    选项:                

        -g:列出群组的磁盘空间限制;

        -q:简明列表,只列出超过限制的部分;

        -u:列出用户的磁盘空间限制;

        -v:显示该用户或群组,在所有挂入系统的存储设备的空间限制;

        -V:显示版本信息。

        参数:

        用户或者工作组:指定要显示的用户或者工作组

[[email protected](yuaning) ~]# quota -vs -u liubei     #查看指定用户quota
quota: Cannot open quotafile /mydata/aquota.user: No such file or directory
quota: Cannot open quotafile /root/ccc/aquota.user: No such file or directory
Disk quotas for user liubei (uid 1001): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
       /dev/md6      0K      0K      0K               0       0       0        
[[email protected](yuaning) ~]# quota -guvs    # 查看当前用户的quota限制
quota: Cannot open quotafile /mydata/aquota.user: No such file or directory
quota: Cannot open quotafile /root/ccc/aquota.user: No such file or directory
Disk quotas for user root (uid 0): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
       /dev/md6      0K      0K      0K               3       0       0        
quota: Cannot open quotafile /mydata/aquota.group: No such file or directory
quota: Cannot open quotafile /root/ccc/aquota.group: No such file or directory
Disk quotas for group root (gid 0): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
       /dev/md6      0K      0K      0K               3       0       0



五、quota的相关命令

    1. 扫描指令,quotacheck 参数    

    参数:

        -a :扫瞄所有在/etc/mtab内,含有quota支持的filesystem

        -u :针对使用者扫描文件与目录的使用情况,会建立aquota.user

        -g :针对群组扫描文件与目录的使用情况,会建立aquota.group

        -v :显示扫描过程的信息;

        -M :强制进行quotacheck的扫描。

[[email protected](yuaning) ~]# quotacheck -avug
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/md4 [/mydata] done
quotacheck: Checked 3 directories and 2 files
quotacheck: Skipping /dev/md6 [/backup]
quotacheck: Scanning /dev/mapper/vgcyn-lvcyn [/root/ccc] done
quotacheck: Checked 3 directories and 2 files

     2. 配置指令,edquota 参数

    参数:

        -u :后面接账号名称。可以进入quota的编辑画面(vi)去设定username的限制值;

        -g :后面接群组名称。可以进入 quota 的编辑画面(vi)去设定groupname的限制值;

        -t :可以修改宽限时间(就是超过quota的soft limit值后,还能使用硬盘的宽限期限)

        -p :复制范本。那个username_demo为已经存在并且已设定好quota的使用者

[[email protected](yuaning) ~]# edquota -u liubei     #给用户配置quota

Disk quotas for user liubei (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard   #blocks是文件大小限制,inodes是文件个数限制
  /dev/md4                          0          0          0          0        0        0   #soft是警戒线,当使用的值不小于这个值的时候会警告用户
  /dev/md6                          0          0          0          0        0        0   #hard是底线,一旦达到这个值,停止使用
  /dev/mapper/vgcyn-lvcyn           0          0          0          0        0        0
  
[[email protected](yuaning) ~]# 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/md4                      7days                  7days
  /dev/md6                     14days                  7days
  /dev/mapper/vgcyn-lvcyn                  7days                  7days

    3. 开启指令,quotaon 参数

    参数:

          -u :针对用户启动quota(aquota.user)

        -g :针对群组启动 quota(aquota.group)

        -v :显示启动过程的相关讯息;

        -a :根据/etc/mtab内的filesystem设定启动有关的quota,若不加-a的话,则后面就需要加上特定的那个filesystem!

[[email protected](yuaning) ~]# quotaon -auvg   #启动所有的有quota限制的文件系统
/dev/md4 [/mydata]: group quotas turned on
/dev/md4 [/mydata]: user quotas turned on
/dev/mapper/vgcyn-lvcyn [/root/ccc]: group quotas turned on
/dev/mapper/vgcyn-lvcyn [/root/ccc]: user quotas turned on

    4. 关闭指令,quotaoff 参数

    参数:

        -a :全部的filesystem的quota都关闭(根据/etc/mtab)

        -u :仅针对后面接的那个/mount_point关闭user quota

        -g :仅针对后面接的那个/mount_point关闭group quota


     

六、quota举例

    那么quota从开始准备filesystem的支持到整个设定结束的主要的步骤大概是:

    1. 设定partition的filesystem支持quota参数

        由于quota必须要让partition filesystem支持才行,一般来说,支持度最好的是ext2/ext3,启动filesystem支持quota最简单就是编辑/etc/fstab,使得准备要开放的quota磁盘可以支持quota

    2. 建立quota记录文件

        整个quota进行磁盘限制值记录的档案是aquota.user/aquota.group,要建立这两个档案就必须要先利用quotacheck扫描才行。接下来的步骤就是:使用quotacheck来扫描一下我们要使用的磁盘

    3. 编辑quota限制值数据   

        使用edquota来编辑每个使用者或群组的可使用空间

    4. 重新扫描与启动quota

        设定好quota之后,建议可以再进行一次quotacheck,然后再以quotaon来启动

    注意:当开启quota的时候,配置好参数,扫描磁盘的时候,有时候会quotacheck失败,是因为在生成quota数据库的时候,没有关闭selinux,操作如下:

[[email protected](yuaning) ~]# setenforce 0
setenforce: SELinux is disabled
[[email protected](yuaning) ~]# vim /etc/selinux/config 


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled                                            #将enforcing 改为disabled 即可
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted




以上是关于Linux 磁盘配额 quota的主要内容,如果未能解决你的问题,请参考以下文章

Linux CentOS 8(磁盘容量配额(Quota))

Linux CentOS 8(磁盘容量配额(Quota))

quota - linux磁盘配额管理

linux 磁盘配额(quota)

Linux系统管理14——磁盘配额(Quota)

Linux 磁盘配额 quota