Linux之磁盘配额

一,磁盘管理的概念:

Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况,如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限。因此,系统管理员应该适当的开放磁盘的权限给用户,以妥善分配系统资源。

二,什么是磁盘配额:

磁盘配额是一种磁盘空间的管理机制,使用磁盘配额可限制用户或组在某个特定文件系统中所能使用的最大空间。

三,磁盘配额的步骤:

1,首先创建要磁盘配额的用户(add)

[root@localhost ~]# groupadd myquota
[root@localhost ~]# useradd -g myquota quota1
[root@localhost ~]# useradd -g myquota quota2


2,首先编辑/etc/fstab文件

使用vi编辑器对/home所在行进行修改,增加命令选项usrquota和grpquota,分别对应用户级和组级配管理设置。

  • [root@localhost /]# vim /etc/fstab
    /dev/sdb1 /dvd xfs defaults,usrquota,grpquota 1 2
    在这里插入图片描述
ps:设置完成后需要重启系统,不重启系统则不生效

3,执行quotacheck命令,创建aquota.user文件

  • [root@localhost /]# quotacheck -avug
    quotacheck: Quota for users is enabled on mountpoint /dvd so quotacheck might damage the file.
    Please turn quotas off or use -f to force checking.

-a : 扫描所有在/etc/mtab中开启quota的文件系统
-v : 显示扫描过程
-u : 扫描所有user quotas (usrquota)
-g : 扫描所有group quotas (grpquota)


4,执行edquota命令,设置用户的配额

参数-u表示设置用户的磁盘配额(缺省时默认设置用户磁盘配额)在这里插入图片描述
在这里插入图片描述


5,启动配额管理QUOTA:(quotaon 为启动 quotaoff 为关闭)

输入quotaon -avgu:启动磁盘配额

  • [root@localhost /]# quotaon -avug
    /dev/sdb1 [/dvd]: group quotas turned on
    /dev/sdb1 [/dvd]: user quotas turned on
    -a : 开启所有quota设定,根据/etc/mtab设定
    -v : 当开启quota时显示信息
    在这里插入图片描述
    输入quotaoff -avgu:关闭磁盘配额

6,查看用户的磁盘配额

这里设定用户quota最大使用容量为20M,当使用到10M时会得到警告要求降低到10M最多可以创建10个文件,当创建5个文件时会得到警告要求降低到5个文件

  • [root@localhost test]# edquota -u quota1 -->修改针对quota1用户的配置        
        Disk quotas for user quota1 (uid 500):
         Filesystem blocks soft hard inodes soft hard
        /dev/sdb1 0 100000 200000 0 0 0

  • [root@localhost test]# edquota -u quota2 -->修改针对quota2用户的配置
        Disk quotas for user quota2 (uid 501):
         Filesystem blocks soft hard inodes soft hard
         /dev/sdb1 0 100000 200000 0 0 0

  • [root@localhost test]# edquota -g myquota -->修改针对myquota组的配置
        Disk quotas for group myquota (gid 500):
        Filesystem blocks soft hard inodes soft hard
         /dev/sdb1 251200 100000 300000 3 0 0

这样配置表示quota1,quota2用户最多使用200M的磁盘空间,超过100M就发出警告并进入倒计时,而myquota组最多使用300M的磁盘空间。

也就是说,虽然quota1,quota2都有200M的最大磁盘空间能使用权限,但他们都属于myquota组,他们的总量不得超过300M

-u : 编辑user的quota
-g : 编辑group的quota
-t : 编辑宽限时间
-p : 复制quota资料到另一用户上


blocks :目前使用者(quota:uid=5011)在/dev/hda7所使用的空间,单位:KB (不要修改)
soft :soft limit 磁盘空间限定值 单位:KB (需要设定)
hard :hard limit 磁盘空间限定值 单位: KB (需要设定)
inodes :目前使用者使用掉的inodes,由于不容易使用inode控制,所以不要修改它。
soft :soft limit 文件限制数量 (根据需要修改)
hard :hard limit 文件限制数量 (根据需要修改)
soft limit :最低限制容量,在宽限期(grace period)之内,使用容量可以超过soft limit,但必须在宽限期之内将使用容量降低到soft limit以下。
hard limit :最终限制容量,如果使用者在宽限期内继续写入数据,到达hard limit将无法再写入。
宽限时间:使用容量超过soft limit,宽限时间自动启动,使用者将容量降低到soft limit以下,宽限时间自动关闭,如果使用者没有在宽限时间内将容量降低到soft limit,那么他将无法再写入数据,即使使用容量没有到达hard limit


7,修改权限,进行磁盘测试

[root@localhost test]# chmod 777 .
    [root@localhost test]# ll -d
    drwxrwxrwx. 3 root root 4096 8月 23 09:36 .
    切换quota1用户,进行测试

[root@localhost test]# su quota1
    [quota1@localhost test]$ dd if=/dev/zero of=bigfile1 bs=1M count=150
    sdb1: warning, user block quota exceeded. -->警告
    记录了150+0 的读入
    记录了150+0 的写出
    157286400字节(157 MB)已复制,1.02545 秒,153 MB/秒

再写入一个大文件

[quota1@localhost test]$ dd if=/dev/zero of=bigfile2 bs=1M count=150
    sdb1: write failed, user block limit reached.
    dd: 正在写入"bigfile2": 超出磁盘限额 -->超过200M的部分就无法写入了
    记录了46+0 的读入
    记录了45+0 的写出
    47513600字节(48 MB)已复制,0.381467 秒,125 MB/秒

切换quota2用户

[root@localhost test]# su quota2
    [quota2@localhost test]$ ls
    aquota.group aquota.user bigfile1 bigfile2 lost+found
    [quota2@localhost test]$ dd if=/dev/zero of=bigfile3 bs=1M count 50

记录了50+0 的读入
    记录了50+0 的写出
    52428800字节(52 MB)已复制,0.410838 秒,128 MB/秒

修改警告时间

[root@localhost test]$ edquota -t

Grace period before enforcing soft limits for users:
    Time units may be: days, hours, minutes, or seconds
    Filesystem Block grace period Inode grace period
    /dev/sdb1 7days 7days

查看quota1的quota信息

[quota1@localhost test]$ quota -u quota1
    Disk quotas for user quota1 (uid 500):
   Filesystem blocks quota limit grace files quota limit grace
   /dev/sdb1 200000* 100000 200000 6days 2 0 0 -->已经进入警告的倒计时了

查询quota2的quota信息

[root@localhost test]# quota -u quota2
    Disk quotas for user quota2 (uid 501):
   Filesystem blocks quota limit grace files quota limit grace
  /dev/sdb1 51200 100000 200000 1 0 0

查询myquota组的quota信息
    [root@localhost test]# quota -g myquota
    Disk quotas for group myquota (gid 500):
     Filesystem blocks quota limit grace files quota limit grace
     /dev/sdb1 251200* 100000 300000 6days 3 0 0

总结:

  • quotacheck [ -gubcfinvdMmR ] [ -F quota-format ] -a | filesystem

    -a   检查所有/etc/mtab中挂在的文件系统

    -u  只检查用户的quota

    -g  只检查用户组的quota

  • quota

    不使用任何参数,查询当前用户的quota信息

    -u username  查询某用户的quota信息

    -g groupname  查询某用户组的quota信息

  • edquota

    -u username   编辑某用户的quota配置

    -g groupname  编辑某用户组的quota配置

    -t        编辑警告时间的配置

猜你喜欢

转载自blog.csdn.net/Number_oneEngineer/article/details/84204257