Linux平台及应用
潘小玲 郑国华 丁敏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

磁盘限额

发布时间:2020-05-17 18:59   发布人:潘小玲   浏览次数:603

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[------]