16-文件系统配额(quota)

文章目录

  • 1 磁盘配额
  • 2 设置步骤
    • 2.1 启用配额功能
    • 2.2 创建配额数据库
    • 2.3 启用/关闭数据库
    • 2.4 指定用户的空间限制
    • 2.5 测试
  • 3 其他quota命令
    • 3.1 quota
    • 3.2 repquota
    • 3.3 setquota
    • 3.4 quotasync

1 磁盘配额

  磁盘配额管理员普通用户设置的使用磁盘的限制,每个用户只能使用有限的磁盘空间。通过磁盘配额的设置,管理员可以很清楚的了解到每个用户的磁盘使用情况。同时,也避免了某些用户因为存储垃圾文件浪费磁盘空间导致其他其他用户无法正常工作。1

注:无法对单独的目录设置磁盘配额, 如果需要对/home设置磁盘配额,/home 必须在单独的文件系统中。

2 设置步骤

2.1 启用配额功能

  这一步中需要在磁盘中设置相应分区, 分区类型设置为默认即可,之后直接将对应的分区挂载在对应目录中即可。

注:默认情况下,系统安装时没有磁盘配额功能, 需要yum install quota ,这样才能保证系统具有磁盘配额功能。

  之后直接将下面所示的挂载信息写在/etc/fstab文件中

UUID="6fd15241-b805-499e-9b2b-591e03a20695" /mnt ext4  usrquota,grpquota 0 0

  其中usrquota 表示用户拥有磁盘配额功能 , grpquota表示组拥有磁盘配额功能。
  通过以上步骤,即开启了linux磁盘配额功能

2.2 创建配额数据库

创建配额数据库,一般使用quotacheck命令

  • 用法:quotacheck [OPTIONS] filesystem
  • [OPTIONS]
    • -a 扫描在/etc/mstab文件里,有加入quota设置的分区。
    • -d 详细显示指令执行过程,便于排错或了解程序执行的情形。
    • -g 扫描磁盘空间时,计算每个群组识别码所占用的目录和文件数目。
    • -R 排除根目录所在的分区。
    • -u 扫描磁盘空间时,计算每个用户识别码所占用的目录和文件数目。
    • -v 显示指令执行过程。
quotacheck -cug /home

这个命令会直接在对应挂载目录下面创建两个数据库文件:quota.user,quota.group.分别是用户, 组的配额数据库文件,运行这个命令需要关闭selinux

2.3 启用/关闭数据库

这一步会直接开启对应的用户,组的配额功能,一般使用quotaon命令,同时关闭磁盘分区的命令为,quotaoff

  • 语法: quotaon [options] filesystem
  • OPTIONS
    • -a 开启在/ect/mstab文件里,有加入quota设置的分区的空间限制。
    • -g 开启群组的磁盘空间限制。
    • -u 开启用户的磁盘空间限制。
    • -v 显示指令指令执行过程。
    • -f 执行swapoff 功能,关闭对应配额功能。(这个选项只适用于quotaon)
    • -p 打印对应文件系统的配额状态。
      示例:
[root@localhost mnt]# quotaon -a
[root@localhost mnt]# quotaon -p  /mnt
group quota on /mnt (/dev/sdb1) is on
user quota on /mnt (/dev/sdb1) is on
[root@localhost mnt]# quotaon -f /mnt 
[root@localhost mnt]# quotaon -p  /mnt
group quota on /mnt (/dev/sdb1) is off
user quota on /mnt (/dev/sdb1) is off
[root@localhost mnt]# quotaon -u /mnt
[root@localhost mnt]# quotaon -p  /mnt
group quota on /mnt (/dev/sdb1) is off
user quota on /mnt (/dev/sdb1) is on
[root@localhost mnt]# quotaon -fv   /mnt
/dev/sdb1 [/mnt]: group quotas turned off
/dev/sdb1 [/mnt]: user quotas turned off

2.4 指定用户的空间限制

  指定用户空间时,可以限定用户使用空间的大小, 以及inode的数量(inode表示文件数量)

  • 语法: edquota [OPTIONS]
  • options:
    • -u : 设置用户的quota,这是默认参数。
    • -g : 设置群组的quota。
    • -p<源用户名称> : 将源用户的quota设置套用至其他用户或群组。
    • -t : 设置宽限期限。
    • -f, --filesystem filesystem :显示指定目录的配额

使用这个命令之后,系统会直接跳转至vim 界面,如下图所示:

edquota

  • soft :超过这个值之后,会提出报警,用户此时无法再添加对应目录中添加数据。
  • hard : 禁止超过这个值

对于占用空间的基础单位为K

edquota -t:修改的是宽容时间。超过hard值之后,会保持数据的时间, 在这段时间之类,无法增加数据, 只能减少数据,如果超过这个时间,用户就无法对这个目录再进行任何读写操作

edquota_t

edquota -p xiong wang : 将xiong的磁盘配额配置复制给 wang用户

2.5 测试

可以通过dd命令进行测试

[xiong@localhost mnt]$ dd if=/dev/zero of=f3 bs=1M count=350
sdb1: warning, user block quota exceeded.
350+0 records in
350+0 records out
367001600 bytes (367 MB) copied, 1.71657 s, 214 MB/s

3 其他quota命令

3.1 quota

quota :显示磁盘使用和限制

  • 语法: quota [OPTIONS] [-u user | -g group]
    • -g 列出群组的磁盘空间限制。
    • -q 简明列表,只列出超过限制的部分。
    • -u 列出用户的磁盘空间限制。
    • -v 显示该用户或群组,在所有挂入系统的存储设备的空间限制。
    • -V 显示版本信息。

如果后面不加用户,则默认显示的是当前运行该命令的用户。

[root@localhost mnt]# quota -usv  xiong
Disk quotas for user xiong (uid 500): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0    293M    391M               0       8      10        
[root@localhost mnt]# quota -us  xiong
Disk quotas for user xiong (uid 500): none
[root@localhost mnt]# quota -uvsq  xiong
Disk quotas for user xiong (uid 500): 
	Block limit reached on /dev/sdb1

3.2 repquota

repoquota : 用于检查磁盘空间限制的状态。

  • 语法:
    • repquota [options] filesystem
    • repquota -a [opions]

filesystem 与-a选项不能同时存在

  • OPTIONS
    • -a : 报告所有可以在/etc/mtab文件中可以读到的设置里配额的选项
    • -g : 列出所有群组的磁盘空间限制。
    • -u : 列出所有用户的磁盘空间限制。
    • -v : 显示该用户或群组的所有空间限制。
    • -s : 显示的数值以可读单位显示
      示例:
[root@localhost mnt]#  repquota -vusp  /mnt
*** Report for user quotas on device /dev/sdb1
Block grace time: 00:01; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0      0       3     0     0      0
xiong     +-    391M    293M    391M 1538636758       1     8    10      0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000

3.3 setquota

使用非交互的方式设置磁盘配额

  • 语法:

    • setquota [OPTIONS] -a | filesystem
    • setquota [ -rm ] [ -u | -g ] [ -F quotaformat ] name block-softlimit block-hardlimit inode-softlimit inode-hardlimit -a | filesystem…
  • OPTIONS :

    • -u : 设置用户的quota,这是默认参数。
    • -g : 设置群组的quota。
    • -p<源用户名称> : 将源用户的quota设置套用至其他用户或群组。
    • -t : 设置用户,组的宽限期限。
    • -T :超过限制之后,设置特定用户,组的宽限期限。
    • -f, --filesystem filesystem
[root@localhost mnt]# setquota -u wang   300000 400000 3 10 /dev/sdb1
[root@localhost mnt]# quota -vu  wang
Disk quotas for user wang (uid 501): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0  300000  400000               0       3      10        
[root@localhost mnt]# setquota -u wang  -p xiong /dev/sdb1
[root@localhost mnt]# quota -vu  wang
Disk quotas for user wang (uid 501): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0  300000  400000               0       8      10    
      
[root@localhost mnt]# setquota  -u -t  700 700 /mnt 
[root@localhost mnt]# repquota -ausv
*** Report for user quotas on device /dev/sdb1
Block grace time: 00:12; Inode grace time: 00:12
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              3     0     0       
xiong     +-    391M    293M    391M   none       1     8    10       
wang      --       0    293M    391M              0     8    10       

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000


[root@localhost mnt]# setquota -T xiong 800  0  /mnt 
setquota: Not setting inode grace time on /dev/sdb1 because softlimit is not exceeded.
[root@localhost mnt]# repquota -auvs
*** Report for user quotas on device /dev/sdb1
Block grace time: 00:12; Inode grace time: 00:12
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              3     0     0       
xiong     +-    391M    293M    391M  00:13       1     8    10       
wang      --       0    293M    391M              0     8    10       

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000

3.4 quotasync

主要是为了同步配额数据

  • 语法:quotasync [-ug] -a | mntpoint...

  1. 51CTO:Linux中磁盘配额的设置 ↩︎

你可能感兴趣的:(基础linux学习)