磁盘配额:quota

quota作用: 限制用户或组对磁盘空间的使用,例如文件服务器,邮件服务器...

•创建硬链接不受限制,无论是block还是inode
•对root用户不起作用,但可以修改对root的配额设置
•针对文件系统,不针对目录
•针对容量或者文件数量限制,block和inode

一、启用磁盘限额

1. 让文件系统支持配额 [ext3/4]

[root@node1 sdb]# vim /etc/fstab
/dev/sdb1 /mnt/sdb ext4 defaults,usrquota,grpquota 0 0
[root@node1 sdb]# mount
/dev/sdb1 on /mnt/sdb type ext4 (rw,usrquota,grpquota)

2. 创建磁盘配额的数据库文件

注意: 建议停用SELinux
 
[root@nfs ~]# setenforce 0
setenforce: SELinux is disabled
[root@nfs ~]# vim /etc/selinux/config
SELINUX=disabled

如果不关闭会有类似下面的提示
 
[root@node1 sdb]# quotacheck -acug
quotacheck: Cannot create new quotafile /mnt/sdb/aquota.user.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
quotacheck: Cannot create new quotafile /mnt/sdb/aquota.group.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied

 
[root@node1 sdb]# yum -y install quota //如果没有这个功能的话安装quota这个包
[root@node1 sdb]# quotacheck -acgu //生成quota文件数据库
[root@node1 sdb]# ls //配额相关的数据库文件
aquota.group aquota.user lost+found
 
选项:

-a 所有分区(已支持配额)

-c 创建

-u 用户

-g 组

3.启动磁盘配额

[root@node1 sdb]# quotaon -a //启动所有分区的磁盘配额

二、日常管理

TIPS:数值0为不限制

方法一:edquota

[root@node1 sdb]# edquota -u alice //-u参数可以忽略
Disk quotas for user alice (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 16 8192 10240 4 0 8

blocks: 从磁盘的使用量限制,比如限制用户使用10M,单位是k

inodes: 从创建文件数限制,比如只能建立100个文件

soft: 软限制 block 8M

hard: 硬限制 block 10M

grace time: 宽限期,默认7天 # edquota -t

[root@node1 sdb]# su - alice
[alice@node1 sdb]$ pwd
/mnt/sdb
[alice@node1 sdb]$ dd if=/dev/zero of=file1 bs=1M count=9
sdb1: warning, user block quota exceeded.
9+0 records in
9+0 records out
9437184 bytes (9.4 MB) copied, 0.0221389 s, 426 MB/s
 
[alice@node1 sdb]$ dd if=/dev/zero of=file1 bs=1M count=20
sdb1: warning, user block quota exceeded.
sdb1: write failed, user block limit reached.
dd: writing `file1': Disk quota exceeded
11+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0347449 s, 302 MB/s
[alice@node1 sdb]$ ll -h
-rw-rw-r--. 1 alice alice 10M Aug 11 12:10 file1
 
[alice@node1 sdb]$ quota //查看自己的配额情况
Disk quotas for user alice (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 10240* 8192 10240 6days 1 0 8

方法二: setquota

# setquota -u username block软限制 block硬限制 inode软限制 inode硬限制 分区
# setquota -u jack 80000 100000 15 20 /dev/sda2

方法三:复制

# edquota -p alice tom robin user1 user2 user3
# setquota -p alice jack /mnt/raid5/ //必需指定设备

将alice的配额方案复制给后面所有用户
 
[root@nfs ~]# for i in {1..10}
do
useradd zhang$i
edquota -p alice zhang$i
done
 
+++查看配额+++

查看单个用户的配额: # quota jack

查看所有用户的配额: # repquota -a

# repquota -ag

普通用户查看自己配额: $ quota

扩展知识:针对组设置配额

例1:限制hr组的成员能在/home/hr目录中:100M 50文件

[root@node1 sdb]# groupadd hr
[root@node1 sdb]# useradd hr01 -G hr
[root@node1 sdb]# useradd hr02 -G hr
[root@node1 sdb]# mkdir /mnt/sdb/hrhome
[root@node1 sdb]# chgrp hr !$
chgrp hr /mnt/sdb/hrhome
[root@node1 sdb]# ll -d !$
ll -d /mnt/sdb/hrhome
drwxr-xr-x. 2 root hr 4096 Aug 11 12:18 /mnt/sdb/hrhome
[root@node1 sdb]# repquota -ag
*** 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 -- 20 0 0 2 0 0
hr -- 4 0 102400 1 0 50

 
倒2.不改动既有系统的Quota实例

假如你忽然想将邮件信箱所在目录 /var/spool/mail/ 给一个quota,但是已经没有独立的文件系统让你规划了,并且你想让用户的邮箱与主文件夹的总体使用固定,那该怎么办?

假设/home是个独立的分区,那么:

1.将/var/spool/mail这个目录完整的移动到/home下面;

2.利用 ln -s /home/mail /var/spool/mail来新建连接数据;

3.将 /home 进行quota限额设置。

猜你喜欢

转载自www.linuxidc.com/Linux/2016-09/135485.htm