磁盘配额quota

磁盘配额

磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制的一个功能。他可以通过用户和组进行配额管理的,对用户管理是基于属主来判断的,针对组是基于文件属组来判断的。

实现步骤

  1. 加载磁盘配额功能:
    磁盘配额功能在有的系统上不是默认开启的,需要到/etc/fstab下增加挂载选项去加载,内容如下:
UUID=96b500b7-133d-4a57-8f4a-1149bcd6f302  /app  ext4  defaults,usrquota,grpquota 0 0  #增加defaults后的两个选项,usrquota表示启用用户配额,grpquota表示启用组配额

然后mount -o remount /app重新挂载,并查看,如下:

[root@feng ~]# mount -o remount /app
[root@feng ~]# mount | grep "/app"
/dev/sdb1 on /app type ext4 (rw,usrquota,grpquota)
  1. 生成磁盘配额数据库
    用quotacheck -cug命令来生成数据库,选项c为创建,u为用户配额,g为组配额:
[root@feng app]# quotacheck -cug /app #生成数据库
[root@feng app]# ls
aquota.group  aquota.user  lost+found  #aquota.user为用户配额数据库,aquotagroup为组配额数据库

注意:如果这一步提示权限拒绝了,问题可能为selinux拒绝,尝试修改selinux策略。

  1. 开启配额功能
    用quotaon命令来开启
[root@feng app]# quotaon -p /app  #查看quota状态
group quota on /app (/dev/sdb1) is off
user quota on /app (/dev/sdb1) is off
[root@feng app]# quotaon /app  #开启
[root@feng app]# quotaon -p /app
group quota on /app (/dev/sdb1) is on  #成功
user quota on /app (/dev/sdb1) is on
  1. 设置磁盘配额
    方法有两种:交互式界面的edquota命令和非交互式命令seetquota.
    edquota:用edquota feng进入feng用户的配额交互界面
Disk quotas for user feng (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0       102400     204800        0          0        0        0

blocks显示的是已经使用了多少大小了,按照块表示,一个块1024,和分区创建时候的块无关
soft表示软上限,可以超过,不过达到时间期限就不能超过了,这里给feng用户的软上限为100M
hard表示硬上限,这里给的为200M
inodes表示已经使用的节点号
后边的soft和hard表示文件个数的软和硬上限

保存退出,就成功了,用repquota命令可以查看:

[root@feng app]# repquota -vs /app
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    101M       0       0              3     0     0       
feng      --       0    100M    200M              0     0     0   

用setquota命令:

[root@feng app]# setquota -u test1 102400 204800 0 0 /app #设置test1用户配额
[root@feng app]# repquota -vs /app
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    101M       0       0              3     0     0       
feng      --       0    100M    200M              0     0     0       
test1     --       0    100M    200M              0     0     0       #成功

验证

切换到feng用户环境,并创建文件验证,如下:

[root@feng app]# su - feng  #切换到feng用户下
[feng@feng ~]$ cd /app #到设置配额的/app下
[feng@feng app]$ dd if=/dev/zero of=file1 bs=1M count=201  #创建大小为201M的文件
sdb1: warning, user block quota exceeded.  #提示使用超过配额
sdb1: write failed, user block limit reached.
dd: 正在写入"file1": 超出磁盘限额
...
[feng@feng app]$ ll -h file1  #创建出来文件为正好200M
-rw-rw-r--. 1 feng feng 200M 6月  18 10:57 file1

配额成功。

    原文作者:fengkaipeng
    原文地址: https://www.jianshu.com/p/c9f920508e3c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞