1. 安装quota软件
若没有xfs_quota命令,则安装quota软件:
dnf install quota
2. 关闭SeLinux安全机制
临时关闭
setenforce 0
永久关闭
perl -p -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
3. 挂载磁盘时添加配额参数
mount -o remount,usrquota,prjquota /dev/sdb1 /home
或修改 /etc/fstab 文件永久生效(需要重新挂载目标分区才能生效):
/dev/sdb1 /home xfs defaults,usrquota,prjquota 0 0 # 注意有3种quota方式,usrquota给用户限额,grpquota给用户组限额,prjquota给文件夹限额。注意后两者是互斥的,只能选一种,当修改磁盘配额方式后,重启服务器服务器才能生效,而重新挂载分区是不行的。
然后使用mount命令查看挂载分区是否支持磁盘配额:
mount | grep home
/dev/sdb1 on /home type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
4. 开机时设置配额参数
虽然添加了挂载参数,使用mount命令检测时,其挂载方式依然是noquota。在使用xfs_quota进行配额时会失败,提示:
xfs_quota: cannot set limits: Function not implemented
此时,需要进行开机的配置设置,修改启动配置文件/etc/default/grub内容如下:
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rhgb quiet rootflags=uquota,pquota" 主要添加了rootflags=uquota,pquota参数。
然后,重新生成启动文件:
对于Legacy启动
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.orig && grub2-mkconfig -o /boot/grub2/grub.cfg
对于UEFI启动
cp /boot/efi/EFI/rocky/grub.cfg /boot/efi/EFI/rocky/grub.cfg.orig && grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
然后重启后,再检测mount参数。
5. 使用xfs_quota命令对分区进行配额
对user01用户的/home分区进行配额。软限制为3G,硬限制为3.5G。
xfs_quota -x -c 'limit bsoft=3000m bhard=3500m user01' /home
xfs_quota -x -c report /home
-x 允许执行管理员指令
-c 输入执行的指令
6. 使用xfs_quota命令对目录进行配额
对user01、user02、user03等多个用户的家目录进行配额。软限制为3G,硬限制为3.5G。按如下步骤进行:
第一步,生成/etc/projects文件
echo "1000:/home/user01
1000:/home/user02
1002:/home/user03" > /etc/projects
以上/etc/projects文件中设置了两个project编号。project编号是一个数字,可以随便给一个。其中1000对应两个文件夹,1002对应一个文件夹。后续设置好后,这1000对应的两个文件夹一起共享一个配额,而1002对应的文件夹独享一个配额。
第二步,生成/etc/projid文件
echo "user01_3G:1000
user03_3G:1002" > /etc/projid
该/etc/projid文件设置一个好记的project名称(随便取名,推荐取得有意义些),对应这project编号。
第三步,让project名称生效
xfs_quota -x -c 'project -s user01_3G' /home
xfs_quota -x -c 'project -s user03_3G' /home
命令行project的参数-s表示读取/etc/projects文件内容,标记目标文件夹进行配额。每当对/etc/projects文件内容进行修改后,则需要重新运行相应的命令,使修改生效。
第四步,设置project名称对应的磁盘配额。
xfs_quota -x -c 'limit -p bsoft=3000m bhard=3500m user01_3G' /home
xfs_quota -x -c 'limit -p bsoft=3000m bhard=3500m user03_3G' /home
命令行limit的参数-p表示使用project方式进行配额。若配额限制为0,则表示不进行配额限制。
7. 查看配额信息
查看磁盘配额及使用量:
xfs_quota -x -c report /home
查看磁盘分区和目录是否有quota设置:
xfs_quota -x -c print
查看磁盘配额的使用量:
xfs_quota -x -c "df -h"