大纲

0、为什么需要quota?

1、quota是什么?

2、quota一般用途

3、quota使用限制?

4、quota设置实例

本文主要参考《鸟哥私房菜》,其实就是学习笔记啦。


0、为什么需要quota?

    如果您曾经申请过网络的mail服务时或者是现在很流行的网络云盘,那么肯定遇到过mail空间限制为2G或者限制为5T的免费网盘空间,好了,这些限制是怎么做到的呢?哈哈!没错,最简单的方式就是通过quota这个东西来完成的!如果我们要限制用户使用硬盘的容量使用大小,嗯!来这里看看就了!

 

1、quota是什么?

    由于Linux是多用户多任务的操作系统,同时可能有多人在线,共享计算机资源,所以会出现多人共同使用同一个磁盘空间的情况。如果其中有人占用大量的磁盘空间的话,那么将会影响其他人的工作。因此管理员应该适当地限制磁盘的容量给用户,那么此时就需要quota的帮助咯。


2、quota一般用途

quota比较常用的情况:

  • 针对 Web Server

  • 针对 Mail Server

  • 针对 File Server


更具体的设定:

  • 限制某一群组的最大磁盘配额(group限制)

  • 限制某一用户的最大磁盘配额(user限制)

  • 以Link的方式,进行限制


3、quota使用限制

  • 仅能针对整个filesystem

  • Linux内核必须支持quota,也就是文件系统能否支持

  • 只对普通用户有效


所以,不能针对【某个目录】进行quota设计,但是可以针对【某个文件系统(filesystem)】来设定。


4、quota设置实例

quota针对整个filesystem(或者说是分区)的限制项目主要分为以下部分:

  • 容量限制(block)或者文件数量(inode)限制,前者比较常见

  • 硬限制(hard limits)和软限制(soft limits)

  • 倒计时的宽限时间(grace time)


    假设我限制某用户的磁盘容量soft limits为300M,hard limits为400M,如果该用户的磁盘使用量在300-400M之间,grace time开始倒计时,那么此用户每次登录系统时,系统会主动发出警告信息。

  • 如果使用量降低到soft limits以下,那么grace time则停止,一切正常如往

  • 如果超过grace time,那么锁住此用户的磁盘使用权

  • 如果使用量超过hard limits,那么系统将会锁住该用户的磁盘使用权


实验目的与要求:

  • 假设针对user1,user2,user3三个用户进行限制

  • 以上3个用户都属于mygrp组,然后对mygrp组进行限制

  • 用户的容量soft limits限制为250M,hard limits限制为300M

  • mygrp组限制容量为1G

  • 宽限时间限制为14天


1、由于quota仅针对某个文件系统进行规划,所以必须满足此条件

[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             8.6G  2.9G  5.3G  36% /
/dev/sda1             190M   12M  169M   7% /boot
tmpfs                  62M     0   62M   0% /dev/shm
/dev/sdb1             1.9G   35M  1.8G   2% /mnt

OK, 我们看到/mnt是一个独立的分区,所以我们可以对它进行quota。不建议对/进行quota哦

2、检查文件系统能否支持quota

ext2,ext3,ext4都是支持quota的。

[root@localhost ~]# df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda3     ext3    8.6G  2.9G  5.3G  36% /
/dev/sda1     ext3    190M   12M  169M   7% /boot
tmpfs        tmpfs     62M     0   62M   0% /dev/shm
/dev/sdb1     ext3    1.9G   35M  1.8G   2% /mnt        # ext3 支持quota

3、默认情况下,挂载的文件系统是没有加入quota选项的

  • 临时性的加入quota支持

[root@localhost ~]# mount -o remount,usrquota,grpquota /mnt
[root@localhost ~]# mount | grep 'mnt'
/dev/sdb1 on /mnt type ext3 (rw,usrquota,grpquota)
  • 开机自动挂载并加入quota支持

编辑/etc/fstab配置文件

/dev/sdb1 /mnt ext3 defaults,usrquota,grpquota 1 2    # 注意加入了usrquota,grpquota选项

4、使用quotacheck命令建立quota记录文件

    quota作用机制:通过分析整个文件系统,每个用户(组)拥有的文件数目与总容量,再讲这些数据记录在该文件系统的最顶层目录,然后在该记录文件中再使用每个账号(组)的限制值去规范磁盘使用量的。

[root@localhost ~]# quotacheck -vug /dev/sdb1
quotacheck: Scanning /dev/sdb1 [/mnt] quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
done
quotacheck: Checked 3 directories and 2 files
quotacheck: Old file not found.
quotacheck: Old file not found.

-a选项:扫描所有在/etc/mtab内,含有quota支持的filesystem,加上这个选择,就不能指定filesystem了,因为它会扫描/etc/mtab中所有的。

其实,quotacheck命令我们只要记得: # quotacheck -avug  即可。

quotacheck命令会主动为我们在分区的最顶层目录创建两个记录文件

[root@localhost ~]# ls -l /mnt
total 40
-rw------- 1 root root  6144 Jun 23 23:08 aquota.group
-rw------- 1 root root  6144 Jun 23 23:08 aquota.user
drwx------ 2 root root 16384 Jun 23 22:45 lost+found

5、quota的启动、关闭、限制值的设定

quotaon:启动quota的服务

[root@localhost ~]# quotaon [-avug]
[root@localhost ~]# quotaon [-vug]  device|mount-point

开启/dev/sdb1的quota

[root@localhost ~]# quotaon -vug /dev/sdb1
/dev/sdb1 [/mnt]: group quotas turned on
/dev/sdb1 [/mnt]: user quotas turned on

这个指令只需在第一次启动quota的时候才需要进行,以后都是由/etc/rc.d/rc.sysinit自动帮我们启动。


quotaoff:关闭quota的服务

[root@localhost ~]# quotaoff -a
[root@localhost ~]# quotaoff [-ug] device|mount-point


edquota:编辑账号、群组的限制值与宽限时间

[root@localhost ~]# edquota -u USER    # 编辑用户限制
[root@localhost ~]# edquota -g GROUP   # 编辑组限制
[root@localhost ~]# edquota -p USER-TEMPLATE -u USER    # 根据用户模板进行设定
[root@localhost ~]# edquota -t         # 修改宽限时间

我们对user1进行设定:

[root@localhost ~]# edquota -u user1

wKiom1OqL53i2QCNAACjHKnvVRM881.jpg

进入vi的模式,出现上图的内容,分为3个部分。

1 -》 Filesystem    针对哪个filesystem/partition

2 -》 针对blocks的soft limits和hard limits

3 -》 针对inodes的soft limits和hard limits

当soft/hard都为0时,表示没有任何限制。我们只需根据需要编辑对应blocks/inodes的soft或者hard即可。注意:单位都是 KB。


好,我们就对user1设定如下

wKioL1OqMbnTXctFAACVszxtvBk064.jpg

如果我要对其它两个用户进行相同的设定,怎么办呢?

[root@localhost ~]# edquota -p user1 -u user2
[root@localhost ~]# edquota -p user1 -u user3

如何修改宽限时间呢?

[root@localhost ~]# 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                     14days                  7days
  # 针对的文件系统      针对block设定的宽限时间    针对inode设定的宽限时间

6、quota打印统计报表

quota报表主要有两种模式,一种是针对个人或群组的quota指令,一种是针对整个文件系统的repquota指令。

quota:单一用户的quota报表

[root@localhost ~]# quota [-uvs] USER
[root@localhost ~]# quota [-gvs] GROUP

我们打印user1,user2,user3的限制设定值:

[root@localhost ~]# quota -uv user1 user2 user3
Disk quotas for user user1 (uid 4005): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0  250000  300000               0       0       0        
Disk quotas for user user2 (uid 4006): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0  250000  300000               0       0       0        
Disk quotas for user user3 (uid 4007): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1       0  250000  300000               0       0       0


repquota: 针对整个文件系统的报表

[root@localhost ~]# repquota [-vugs] device|mount-point
[root@localhost ~]# quota [-avugs]

我们打印整个/dev/sdb1的quota报表

[root@localhost ~]# repquota -vug /dev/sdb1
*** Report for user quotas on device /dev/sdb1
Block grace time: 14days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   35688       0       0              4     0     0       
user1     --       0  250000  300000              0     0     0       
user2     --       0  250000  300000              0     0     0       
user3     --       0  250000  300000              0     0     0       

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 4
Used average: 4.000000

*** Report for group quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   35688       0       0              4     0     0       

Statistics:
Total blocks: 6
Data blocks: 1
Entries: 1
Used average: 1.000000


好了,quota基本应用就讲到这里,其他更高级的应用,请查看《鸟哥私房菜》。