Linux 磁盘配额控制 quota

来源:互联网 发布:淘宝大麻种子 编辑:程序博客网 时间:2024/05/28 15:41

PaaS平台为用户提供各种服务,针对各种服务需要制定多种套餐来满足用户的需求,其中一项就是可用磁盘空间大小的控制,本文介绍如何使用quota限制用户所能使用的空间大小。

quota限制的必须是一个单独文件系统,不能任意指定目录,所以最好新建一块磁盘挂载在指定的存储路径,否则只能从跟目录进行控制,网上搜了一下,结果是不建议直接对根目录进行控制,原因还不清楚。。。

1、给系统增加一块磁盘(以/dev/sdb为例)后,执行mkfs命令格式化该磁盘

     mkfs.ext3 /dev/sdb

2、将该磁盘挂载至存储目录

     mount /dev/sdb /home/nfs   这样可以临时挂载,持久生效的方式是在/etc/fstab文件中配置挂载

3、配置fstab使quota生效

    配置前建议先使用mount命令查看一下是否已经配置了quota,如果显示如下图(包含usrgroup和grpquota),则表示已经配置了quota

    

   如果没有,则编辑/etc/fstab,加入usrquota,grpquota如下:

    

    其中/dev/sdb 问新挂载的磁盘,/home/nfs为要控制的目录

    配置完成后重启生效,重启后执行mount命令看配置是否已经生效

4、执行quotacheck -auvg 在各分区文件系统的根目录下生成quota.user, quota.group文件

5、执行quotaon -uvg /home/nfs/ 开启磁盘配额限制(对应的关闭命令为 quotaoff -uvg /home/nfs/)

以上步骤执行完成后,系统就已经支持对用户进行磁盘配额限制了

6、使用edquota -u username命令编辑对某个用户的配额限制

     

    其中blocks和inodes是系统计算出来的,不需要改动,需要修改的是blocks后面的soft 和hard,默认为0,表示不限制,修改为要限制的磁盘大小,单位为kb。

    soft指的是达到该容量后,还可以继续存储,但是会启动容忍时间(grace time 默认7天)倒计时,时间到达后,目录不能再进行写操作

    hard指的是到达该容量后,即不能再进行写操作

    grace time 使用两到达soft未到hard值时仍可以操作磁盘的时间限制,可以通过quota -t来编辑

7、使用quota -uvs user-name检查用户的使用情况

     

     也可以使用repquota -auvs查看所有用户的使用情况

     或者使用repquota /home/nfs 查看指定目录的使用情况


     很多时候需要在代码中操作quota进行控制,代码中无法使用edquota,但是edquota提供了 edquota -p命令选项,使用方法为

      edquota -p user1 -u user2 将user1用户的配额信息复制给用户user2,这样,可以提前在存储服务器上配置好几种套餐的数据,根据用户选择套餐是传来的数据在代码中进行操作即可。显然这种方法的缺陷是无法制定平滑的配额数据,有什么好的实现方法,欢迎评论。

    


 

0 0
原创粉丝点击