美文网首页
服务器磁盘配额quota

服务器磁盘配额quota

作者: 蜗牛Michael | 来源:发表于2019-12-17 18:53 被阅读0次

    有些时候为了避免服务器磁盘被写爆,引起系统崩溃,因此有必要对磁盘的使用配额进行限制,尤其是对用户使用磁盘的容量进行限制。这就需要用到quota磁盘配额。

    磁盘配额除了监视系统上使用的磁盘空间,你还可以通过实现磁盘配额来限制磁盘空间,因此当用户使用了过多的磁盘空间或分区将要充满时,系统管理员就会接到警告。磁盘配额可以为个体用户配置也可以为用户组配置。这种灵活性既能够给每个用户分配一个较小的配额来处理“个人”文件(如电子邮件和报告),又允许了他们正从事的项目能够拥有较大的配额(假定项目有自己的组群)。

    分区挂载

    挂载分区:sudo mount /dev/sdd1 /home/mars (故意没有启用quota😁)

    注意:分区挂载的时候,必须对分区启用quota,否则是无法对此分区进行quota配额的。例如通过mount命令可以查看各分区的情况,是否启用了quota:

    /dev/sdb1 on /home/mercury type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdc1 on /home/venus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sde1 on /home/earth type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdf1 on /home/jupiter type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdg1 on /home/saturn type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdh1 on /home/uranus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
    /dev/sdd1 on /home/mars type ext4 (rw)
    

    下面的/home/mars挂载在/dev/sdd1分区,但是并没有启用quota,因此进行quotacheck时就会失败:

    ironman@IRONMAN:/home/mars$ sudo quotacheck /home/mars
    quotacheck: Mountpoint (or device) /home/mars not found or has no quota enabled.
    quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option.
    

    启用quota

    1. 方法一:通过/etc/fatab文件:好处是开启启动会自动挂载与启用
    UUID=4af70913-6f47-4b8a-b96d-d0cb3b36b7cb /home/mercury   ext4    defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0   1
    

    或者不用UUID,而使用设备名称:

    /dev/sdc1               /home/mercury                  ext4    defaults,usrquota,grpquot        0 0
    
    1. 方法二:直接remount命令启用,必须加上usrquota,grpquota
    sudo mount -o remount,usrquota,grpquota /home/mars/
    

    再通过mount查看状态:

    ironman@IRONMAN:/home/mars$ mount
    /dev/sda1 on / type ext4 (rw,errors=remount-ro)
    proc on /proc type proc (rw,noexec,nosuid,nodev)
    sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
    none on /sys/fs/cgroup type tmpfs (rw)
    none on /sys/fs/fuse/connections type fusectl (rw)
    none on /sys/kernel/debug type debugfs (rw)
    none on /sys/kernel/security type securityfs (rw)
    udev on /dev type devtmpfs (rw,mode=0755)
    devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
    tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
    none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
    none on /run/shm type tmpfs (rw,nosuid,nodev)
    none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
    none on /sys/fs/pstore type pstore (rw)
    /dev/sda5 on /home type ext4 (rw)
    /dev/sda2 on /boot type ext4 (rw)
    /dev/sdb1 on /home/mercury type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdc1 on /home/venus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sde1 on /home/earth type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdf1 on /home/jupiter type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdg1 on /home/saturn type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    /dev/sdh1 on /home/uranus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
    systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
    /dev/sdd1 on /home/mars type ext4 (rw,usrquota,grpquota)
    

    可以看到/home/mars分区已经启用quota。

    检查分区,生成配置文件

    启用quota之后,就可以进行quotacheck检查,否则检查会失败。

    sudo quotacheck /home/mercury/

    配置文件:

    aquota.group
    aquota.user
    

    启动quota服务

    quotaon -vug /home/mercury

    quota配额

    文件内有七个栏目:

    Filesystem => 进行配额管制的文件系统。
    blocks => 已经使用的区块数量(单位1KB)
    soft => block 使用数量的"软性"限制
    hard => block 使用数量的"硬性"限制
    inode => 已经使用的 inode 数量
    soft => inode 使用数量的"软性"限制
    hard => inode 使用数量的"硬性"限制
    
    1. 通过图形设置容量:sudo edquota -u $username

      quota配额vim编辑.png
    2. 通过命令参数直接设置:setquota -u username 30960 30960 0 0 /home/mercury

    为组群分配配额

    配额还可以根据组群来分配。例如,要为 devel 组群设置组群配额,使用以下命令(在设置组群配额前,该组群必须存在):

    edquota -g devel 以上命令在文本编辑器中显示现存的组群配额:修改限度,保存文件,然后配置配额。要校验组群配额是否被设置,使用以下命令:

    quota -g devel

    读quota配额情况

    repquota /home/mercury 读取指定分区的配额情况。
    repquota -auvs 所有启用了配额的文件系统的磁盘用量。

    :/home/mercury$ sudo repquota /home/mercury/
    *** 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      --  261904       0       0           4865     0     0
    Auser     -- 1496813872       0       0        14802450     0     0
    Buser     -- 1107116       0       0           3576     0     0
    Cuser    -- 562369132       0       0        1580837     0     0
    #1007     -- 133321512       0       0        1106929     0     0
    

    可选,更改时限方法,默认为七天

    截屏2019-12-1718.43.48.png

    edquota -T username

    更改组的时限
    edquota -Tg grp02

    也可以使用 setquota 命令设置:

    setquota -u someone 0 0 3 5 /dev/loop0
    setquota -t 864000  864000  /dev/loop0
    //ps. 864000 为 10 天的秒数. 一小时=3600秒, 一天=86400秒
    

    PS: 磁盘配额完毕后,必须以 quotaon -av 的命令启用配额管理。

    磁盘配额的启用和禁用

    要关闭用户和组群配额,使用以下命令:quotaoff –vaug 如果 -u 或 -g 选项没有被指定,只有用户配额被禁用。如果只指定了 -g 选项,只有组群配额会被禁用。

    要重新启用配额,使用带有同样选项的 quotaon 命令。要为所有文件系统启用用户和组群配额:quotaon –vaug

    要为指定文件系统(如 /home)启用配额:quotaon -vug /home 如果 -u 或 -g 选项没有指定,那么仅用户配额会被启用。如果只指定了 -g 选项,仅组群配额会被启用。

    测试方法

    切换响应用户su username,进行测试:dd if=/dev/zero of=file1 bs=1k count=50。

    关闭quota服务

    quotaoff -vug /home

    相关文章

      网友评论

          本文标题:服务器磁盘配额quota

          本文链接:https://www.haomeiwen.com/subject/pwkenctx.html