Linux 磁盘配额

Linux 磁盘配额:

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

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)

下面针对ext4xfs两种文件系统进行配置。

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


posted @ 2020-06-05 18:32  Beavan  阅读(274)  评论(0编辑  收藏  举报