大纲
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
进入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设定如下
如果我要对其它两个用户进行相同的设定,怎么办呢?
[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基本应用就讲到这里,其他更高级的应用,请查看《鸟哥私房菜》。