Linux 磁盘配额

 

 

磁盘配额是一种磁盘空间的管理机制,使用磁盘配额可限制用户或组在某个特定文件系统中所能使用的最大空间。

磁盘配额quota用来限制用户能够使用的磁盘空间的大小。

注:

磁盘配额的记录文件保存在开启磁盘配额分区的根目录下面,它们是aquota.user和aquota.group;
磁盘配额只对一般身份用户有效,对root权限用户无效

最低限制(软限制,soft):最低限制容量(可以被超过,但会出现警告,超过的部分会保存到宽限时间到期);
最高限制(硬限制,hard): 不能被超越的限制;
宽限时间:当用户使用的空间超过了最低限制但还没到达最高限制时,在这个宽限时间到期前必须将超额的数据降低到最低限制以下(默认为7天),当宽限时间到期,系统将自动清除超出的数据;

 

1.配额相关基础知识:

 

配置配额前提条件

 

1).检查内核支持:grep -i quota /boot/config-2.6.32-431.el6.x86_64    #如看到CONFIG_QUOTA=y,表示内核支持quota功能;

2).检查挂载支持:挂载必须使用了quota相关选项,主要有:usrquota/grpquota/prjquota  
    
3).关闭SElinux:SElinx会影响quota配置、配置前进行关闭;

 

可限制对象:

 

1).限制普通用户:对应选项{usrquota}      #配额无法对root用户限制!!

2).限制用户组:对应选项{grpquota}        #此选项不能和prjquota同时存在

3).限制指定目录:对应选项{prjquota}      #此功能支持xfs文件系统,而ext文件系统不支持

 

限制的内容:

1).inode:限制创建文件的个数

2).block:限制能够使用的磁盘空间的大小

※soft/hard表示限制数值大小,当达到soft时系统发出警告要求将至soft以下,并给出grace宽限时间,用户应在宽限之内将至soft以下;

 

 

2.如何进行磁盘配额(Centos7)

 

下面针对ext4和xfs两种文件系统进行配置。

 

2.1 ext文件系统quota配置

 

0).检查内核支持,挂载支持,关闭SElinx;      

临时挂载:mount -o [remount,]usrquota,grpquota /dev/sdb1_ext /ext
永久挂载:增加挂载条目到 /ext/fstab 文件 && mount -a

1).初始化 quota

yum install -y quota      #安装针对ext文件系统quota工具包;
quotacheck -avug      #初始化quota,根据etc/mtab文件检测系统quota分区,并创建aquota.user/aquota.group文件;如文件无法创建可使用-m强制检查;
quotacheck -vug /ext    #对指定分区进行初始化quota,并创建aquota.user/aquota.group文件,如文件无法创建可使用-m强制检查; 

repquota -avug      #查看本机的全部quota配置,根据etc/mtab文件检测系统quota分区;
repquota -vug /ext      #查看指定分区的quota配置;

2).配置 quota

edquota [-u user] [-g group] [-t]      #编辑user/group的quota值,-t配置宽限时间; 
edquota -p user1 -u user2      #赋值user1的quota值给user2,替换为group同样支持;

3).启动/关闭 quota

quotaon -avug      #启动全部quota{会自动去寻找 /etc/mtab 的设定}
quotaon -ugv /ext      #启动指定分区quota
echo "quotaon -aug" >> /etc/rc.d/rc.local      #添加开机自动启动quota

quotaoff -avug      #关闭全部quota{会自动去寻找 /etc/mtab 的设定}
quotaoff -ugv /ext      #关闭指定分区quota

4).权限确认

确保配置配额的用户或用户组对配额分区的权限配置正确。

 

2.2 xfs文件系统quota配置

 

0).检查内核支持,挂载支持,关闭SElinx;      

临时挂载:mount -o usrquota,grpquota /dev/sdb2_xfs /xfs      #xfs文件系统无法使用remount进行quota挂载,可使用umount先卸载,再mount重新挂载;
永久挂载:增加挂载条目到 /ext/fstab 文件 && mount -a

1).初始化 quota

※xfs文件系统使用 xfs_quota 命令管理磁盘配额,并在Centos7默认已安装;
※xfs文件系统配置quota不会在分区生成aquota.user/aquota.group文件;

xfs_quota -x -c "command" [挂载点]
-x    专家模式,后续才可以跟-c选项
-c    后边跟命令
command:
  print    列出文件系统信息
  df       和系统df命令类似,数值更精确
  state     列出文件系统quota状态{开启/关闭/宽限时间}
  report    列出quota项目设置{可使用参数-u/g/p/b/i/h筛选输出},后面必须跟支持quota的挂载点
contrl command:
  disable:暂时取消quota的限制,但其实系统还是在计算quota中,只是没有管制而已。
  enable:恢复到正常管制的状态,与disable相互取消、启用。
  off:完全关闭quota的限制,使用了这个状态后,只有卸载再重新挂载才能再次启动quota。
  remove:必须要在off的状态下才能执行的指令,这个remove可以可以“移除”quota的限制设置。
  以上每个命令后可使用 -u/g/p 来指定操作对象为用户/用户组/project。

2).配置 quota

xfs_quota -x -c "limit -u bsoft=80M bhard=100M isoft=80 ihard=100 user1" /xfs      #配置用户user1的block和inode配额
xfs_quota -x -c "limit -g bsoft=80M bhard=100M isoft=80 ihard=100 group1" /xfs      #配置用户组group1的block和inode配额

#配置project指定目录的配额(/xfs/dir1目录为例)
A.项目初始化:
echo "111:/xfs/dir1" > /etc/projects  #设置项目ID和目录的对应关系
echo "myqtproject1:111" > /etc/projid  #设置项目名称和项目ID的对应关系
xfs_quota -x -c "project -s myqtproject1"  #初始化项目名称
B.配置project配额:
xfs_quota -x -c "limit -p bsoft=80M bhard=100M isoft=80 ihard=100 myqtproject1" /xfs

#配置宽限时间:
xfs_quota -x -c "timer -b 7days"      #配置block宽限时间;
xfs_quota -x -c "timer -i 7days"      #配置inode宽限时间;

#复制模版给用户/用户组:
edquota -p user1 -u user2      #赋值user1的quota值给user2,替换为group同样支持;

3).启动/关闭 quota

※xfs文件系统中quota配置完就生效无需手动启动和配置开机启动;

4).权限确认

确保配置配额的用户或用户组对配额分区的权限配置正确。

 

3.配置Samba支持用户配额限制:

 

注意事项:

1.Samba在匿名模式下由于所有访问用户都映射为nobody,故而做quota意义不大;
2.Samba在用户模式(包括域环境下Samba)可以通过quota实现访问共享用户的配额管理;{修改域用户的磁盘配额使用带域名的完整用户名,如:test@xyz.local};
配置步骤:

1.建立支持域认证的Samba共享服务;
2.配置Samba数据分区启用quota功能;
3.配置用户模版quota:

 

xfs_quota -x -c "limit -u bsoft=950M bhard=1024M quotauser" /home

 

4.复制模版配置给新用户

 

#自动建立家目录和quota脚本
vi /root/mkhome.sh
 
#!/bin/bash
user=$1
group=$2
home=/home/$1
 
if [ ! -d $home ]; then
mkdir -p $home
chown $user $home
chgrp $gropu $home
chmod 744 $home
edquota -p quotauser -u $user
fi

#设置mkhome.sh为700权限
chmod 700 /root/mkhome.sh

#通过samba的root preexec参数来执行samba登录脚本,用来实现登录samba共享时自动创建用户家目录;
vi /etc/samba/smb.conf
 
;在homes里面加入
path = /home/$U
root preexec = /root/mkhome.sh %U %G

 

四,磁盘配额的步骤:

1,首先创建要磁盘配额的用户(add)

2,首先编辑/etc/fstab文件

使用vi编辑器对/home所在行进行修改,增加命令选项usrquota和grpquota,分别对应用户级和组级配管理设置。

ps:设置完成后需要重启系统,不重启系统则不生效

2,执行quotacheck命令,创建aquota.user文件

输入命令quotacheck -avgu

3,执行edquota命令,设置用户的配额

参数-u表示设置用户的磁盘配额(缺省时默认设置用户磁盘配额)

 4,启动配额管理

输入quotaon -avgu:启动磁盘配额

输入quotaoff -avgu:关闭磁盘配额

5,查看用户的磁盘配额

 

 

参考:https://www.cnblogs.com/Beavan/p/13051341.html

https://www.cnblogs.com/zy07zj18/p/7865401.html

 

posted @ 2020-11-09 14:42  钟桂耀  阅读(1399)  评论(0编辑  收藏  举报