2、磁盘限额
2.1什么是磁盘限额
在一个有很多用户的系统上,必须限制每个用户的磁盘使用空间,以免个别用户占用过多的磁盘空间影响系统运行和其他用户的使用。限制用户的磁盘使用空间就是给用户分配磁盘限额(quota),用户只能使用额定的磁盘使用空间,超过之后就不能再存储文件。
磁盘限额是系统管理员用来监控和限制用户或组对做盘使用的工具。磁盘限额可以从两方面限制:其一,限制用户或组可以拥有的inode数(文件数); 其二,限制分配给用户或组的磁盘块的数目(以千字节为单位的磁盘空间)。
另外,设置磁盘限额还涉及如下与限制策略相关的3个概念。
Ø 硬限制:超过此设定值后不能继续存储新的文件。
Ø 软限制:超过此设定值后仍旧可以继续存储新的文件,同时系统发出警告信息,建议用户清理自己的文件,释放出更多的空间。
Ø 宽限期:超过软限制多长时间之内(默认为7天)可以继续存储新的文件。
注意:
磁盘限额是以每个使用者、每个文件系统为基础的。如果使用者可以在超过一个以上的文件系统上建立文件,那么必须在每个文件系统上分别设定。
2.2 CentOS 下的磁盘限额支持
磁盘限额由Linux的内核支持,CentOS 提供vfsold (v1)、vfsv0 (v2)和xfs共3种不同的配额支持。对于ex3/4文件系统,磁盘限额的配置和查看工具由quota软件包提供。quota 软件包提供了如下表中所示的常用磁盘限额管理工具。对于xfs文件系统,磁盘限额的配置和查看工具由xfsprogs软件包的xfs _quota提供。
quota 提供的常用磁盘配额管理工具 | |
工 具 | 说 明 |
quota | 查看磁盘的使用和限额 |
repquota | 显示文件系统的磁盘限额汇总信息 |
quotacheck | 从/etc/mtab中扫描支持配额的文件系统,生成、检查、修复限额文件 |
edquota | 使用编辑器编辑用户成组的限额 |
setquota | 使用命令行设置用户或组的限额 |
quotaon | 启用文件系统的磁盘限额 |
quotaofr | 停用文件系统的磁盘限额 |
converquota | 转换旧版的磁盘限额文件为新版格式 |
quotastats | 显示内核的限额统计信息 |
2.3配置磁盘限额
在CentOS下配置磁盘限额需要经过如下表所示的步骤。
磁盘限额的配置步骤 | ||
配置步骤 | ext3/4文件系统 | xfs文件系统 |
编辑/et/fstab文件 启用文件系统的quota挂装选项 | usrquota ppquota | uquota gquota |
创建quota数据库文件并 启用quota | quotacheck -cmvug<文件系统> quotaon-avug | xfs文件系统的quota结构信息包含在元数据和日志中。无需此步骤 |
设置quota | 使用selquota或edquota配置 | 使用xfs_quota配咒 |
下表中列出了setquota命令设置磁盘限额的方法。
使用setquota命令设置磁盘限额 | |
功能 | 命 令 |
为指定用户的设置配额 | setquota[-u<用户名><块软限制 块硬限制inode软限制inode硬限制><-a|文件系统> |
为指定组的设置配额 | setquota -g<组名><块软限制块硬限制inode软限制inode硬限制><-a|文件系统> |
将参考用户的限额设置 复制给待设置的新用户 | setquota[-u]-p<参考用户><新用户><-a|文件系统> |
将参考组的限额设置复 制给待设置的新组 | setquota -g -p<参考组><新组><-a|文件系统> |
为指定用户的设置配额 宽限期 | setquota -t[-u]<块宽限期inode宽限期><-a|文件系统> |
为指定组的设置配额时 宽限期 | setquota -t -g<块宽限期inode宽限期><-a|文件系统> |
下表中列出了xfs _quota 命令设置磁盘限额的方法。
使用xfs_quota命令设置磁盘限额 | |
功 能 | 命 令 |
为指定用户的设置配额 | xfs_ quota -x -c 'limit -u bsoft=N bhard=N isoft=N ihard=N <用户名>' <文件系统> |
为指定组的设置配额 | xfs_ quota -x -c 'limit -u bsoft=N bhard=N isoft=N ihard=N <组名>' <文件系统> |
为指定用户的设置配额宽限期 | xfs_ quota -x -c 'timer -u -b<块宽限期>'<文件系统> xfs_ quota -x -c 'timer -u -i<inode宽限期>'<文件系统> |
为指定组的设置配额时宽限期 | xfs_ quota -x -c 'timer -g -b<块宽限期>'<文件系统> xfs_ quota -x -c 'timer -g -i<inode宽限期>'<文件系统> |
下表中列出了查看磁盘限额信息的命令使用方法。
查看磁盘限额和限额汇总信息 | ||
功能 | Ext 3/4文件系统 | xfs文件系统 |
查看指定用户的配额 | quota -uv<用户名> | xfs_quota -c 'quota -bi -uv<用户名>'<文件系统> |
查看指定组的配额 | quota -gv<组名> | xfs_quota -c 'quota -bi -gv<组名>'<文件系统> |
显示所有文件系统的磁盘限额汇总信息 | repquota -a | xfs_quota -x -c 'report -a' |
repquota -au | xfs_quota -x -c 'report -u -a' | |
repquota -ag | xfs_quota -x -c 'report -g -a' | |
显示指定文件系统的磁盘限额汇总信息 | repquota<文件系统> | xfs_quota -x -c report<文件系统> |
repquota -u<文件系统> | xfs_quota -x -c 'report -u'<文件系统> | |
repquota -g<文件系统> | xfs_quota -x -c 'report -g'<文件系统> |
2.4 ext4文件系统磁盘限额配置举例
操作步骤4.3在ext4文件系统上配置磁盘限额
//1.编辑/etc/fstab 文件启用文件系统的quota挂装选项
# vi /etc/fstab
//将如下行
/dev/data/home /home ext4 defaults 0 1
//改为如下行
/dev/data/home /home ext4 defaults,usrquota,grpquota 0 1
//修改后保存退出
//执行如下命令重新挂装文件系统
# mount -0 remount /home
//2.创建quota数据库文件并启用quota
# quotacheck -cmvug /home
# quotaon -avug
/dev/mapper/data-home [/home]: group quotas turned on
/dev/mapper/data-home [/home]: user quotas turned on
# ll /home/aquota*
-rw------ 1 root root 7168 12月18 11:47 /home/aquota.group
-rw------ 1 root root 7168 12月18 11:47 /home/aquota.user
//3.设置用户的磁盘限额
//为用户osmond设置容量软限制50MB、容量硬限制60MB、文件数软限制2000、文件数硬限制2500
# setquota -u osmond 50M 60M 2000 2500 /home
# quota -u osmond
Disk quotas for user osmond (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/data-home
20 51200 61440 5 2000 2500
//提示:若仅设置容量限额,可以使用如下命令(0表示无限制)
# setquota -u osmond 50M 60M 0 0 /home
//创建新用户jason, 并以osmond用户为参考用户设置jason用户的磁盘配额
# useradd jason
# setquota -u -p osmond jason /home
# quota -u jason
Disk quotas for user jason (uid 1001):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/data-home
16 51200 61440 4 2000 2500
//4.设置组的磁盘限额
# groupadd staff
# groupadd developer
//为组staff设置容量软限制1GB、容量硬限制2GB、文件数软限制2000、文件数硬限制25000
# setquota -g staff 1G 2G 20k 25k /home
# quota -gv staff
Disk quotas for group staff (gid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/data-home
0 1048576 2097152 0 20000 25000
//提示:若仅设置容量限额,可以使用如下命令(O表示无限制)
# setquota -g staff 1G 2G 0 0 /home
”以staff组为参考用户设置developer组的磁盘配额
# setquota -g -P staff developer /home
# quota -gv developer
Disk quotas for group developer (gid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/data-home
0 1048576 2097152 0 20000 25000
//5.查看磁盘限额报告
# repquota -augv
*** Report for user quotas on device /dev/mapper/data-home
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
--------------------------------------------------------------
root -- 20 0 0 2 0 0
osmond -- 20 51200 61440 5 2000 2500
jason -- 16 51200 61440 4 2000 2500
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000
*** Report for group quotas on device /dev/mapper/data-home
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
------------------------------------------------------------------
root -- 20 0 0 2 0 0
osmond -- 20 0 0 5 0 0
jason -- 16 0 0 4 0 0
staff -- 0 1048576 2097152 0 20000 25000
developer --- 0 5242880 691456 0 20000 25000
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 5
Used average: 5.000000
2.5xfs文件系统磁盘限额配置举例
操作步骤4.4在xfs文件系统上配置磁盘限额
//1.编辑/etc/fstab文件启用文件系统的quota挂装选项
# vi /etc/fstab
//将如下行
UUID= 5b62d725-08e1-47d9-8389-d87842e0a916 /srv/www xfs defaults 0 0
//改为如下行
UUID -5b62d725-08e1-47d9-8389 d87842e0a916 /srv/www xfs defaults,uquota,gquota 0 0
//修改后保存退出
//执行如下命令重新挂装文件系统(注意不能使用-0 remount挂装选项,xfs 文//件系统只在首次挂载时才启用quota)
# umount /srv/www
# mount /srv/www
//2.设置用户的磁盘限额
//为用户osmond设置容量软限制50MB、容量硬限制60MB、文件数软限制2000、文件数硬限制2500
# xfs_quota -x -c 'limit -u bsoft= 50M bhard=60M isoft=2000 ihard=2500 osmond' /srv/www
# xfs_quota -c 'quota -uv osmond' /srv/www
Disk quotas for User osmond (1000)
Filesystem Blocks Quota Limit Warn/Time Mounted on
/dev/mapper/data-www 0 51200 61440 00 [------] /srv/www
# xfs_quota -c 'quota -i -uv osmond' /srv/www
Disk quotas for User osmond (1000)
Filesystem Files Quota Limit Warn/Time Mounted on
/dev/mapper/data-www 0 2000 2500 00 [------] /srv/www
//提示:若仅设置容量限额,可以使用如下命令(0 表示无限制)
# xfs_ quota -x -c 'limit -u bsoft=50M bhard=60M osmond' /srv/www
//3.设置组的磁盘限额
//为组staff设置容量软限制1GB、容量硬限制2GB、文件数软限制2000、文件数硬限制25000
# xfs_ quota -x -c 'limit -g bsoft=1G bhard=2G isoft=20000 ihard= -25000 staff /srv/www
# xfs_ quota -c 'quota -gv staff' /srv/www
Disk quotas for Group staff (1002)
Filesystem Blocks Quota Limit Warn/Time Mounted on
/dev/mapper/data-www 0 1048576 2097152 00[----] /srv/www
# xfs_ quota -c 'quota -i -gv staff' /srv/www
Disk quotas for Group staff (1002)
Filesystem Files Quota Limit Warn/Time Mounted on
/dev/mapper/data-www 0 20000 25000 00 [--- ---] /srv/www
提示:若仅设置容量限额, 可以使用如下命令(0表示无限制)
# xfs_quota -x -c 'limit -g bsoft=1G bhard=2G staff ' /srv/www
//4.查看磁盘限额报告
II查看用户和组的容量限额报告
# xfs _quota -x -c 'report -ug ' /sr/www
User quota on /sr/www (/dev/mapper/data-www)
Blocks
User ID Used Soft Hard Warm/Grace
----------------------------------------------------------
root 0 0 0 00 [------]
osmond 0 51200 61440 00[------]
Group quota on /srv/www (dev/mapper/data-www)
Blocks
Group ID Used Soft Hard Warm/Grace
---------------------------------------------------------
root 0 0 0 00 [------]
staff 0 1048576 2097152 00[------]
//查看用户和组的inode限额报告
# xfs_ quota -x -c 'report -i -ug' /srv/www
User quota on /srv/www (/dev/mapper/data-www)
Inodes
User ID Used Soft Hard Warm/Grace
----------------------------------------------------------
root 3 0 0 00 [------]
osmond 0 2000 2500 00[------]
Group quota on /srv/www (dev/mapper/data-www)
Inodes
Group ID Used Soft Hard Warm/Grace
---------------------------------------------------------
root 3 0 0 00 [------]
staff 0 20000 25000 00[------]