磁盘配额(quota)

一、什么是磁盘配额
磁盘配额从字面意思上看就是给一个磁盘配置多少额度,而quota就是有多少限额的意思,所以总的来说就是限制用户对磁盘空间的使用量。
因为Linux是多用户多任务的操作系统,许多人公用磁盘空间,举个例子像/home目录是存放普通用户家目录的地方,我们假如home目录一共有10G空间,而home下一共有三个用户,那么正常划分的话每个人应该是分得大概333M空间,但是其中有个用户在家目录下存放了很多音频文件占了8G的空间,这样的话对其他用户就显得不公平,而如果想要磁盘容量公平的分配,这个时候就要靠quota来实现了。
二、quota的常见类型及注意事项
(1)注意事项
1.针对 www server,例如对个人的网页空间的容量限额。
2.针对mail server,例如对个人的邮件空间进行限额。
3.针对file server,例如对个人最大的可用网络硬盘空间限额。
在这里我们就主要讲解下第三种对硬盘空间进行限额
(2)注意事项
1.核心必须支持quota:Linux核心必须有支持quota这个功能才行,在centos7版本中系统都预设支持quota功能,但如果你是自行编译的核心,那你就要留意是否真的开启了quota功能,否则后面做的可能都会白做。
2.只适用于ext2.ext3.ext4文件系统,对于目录是不起作用的,虽然我们的挂载点是一个目录,但实际上它是个文件系统设备。
3.只针对普通用户和组有效:因为在Linux系统中root身份的特殊所以这些设定对root是不起作用的因为整个系统都归他管啊。
4.针对用户组使用的限额是指某个组中的所有成员一起使用的限额,而不是每个人使用的限额。

关于quota的几个配置
inode:限制用户可以建立的文件数量
block:限制用户磁盘容量(默认以KB为单位)
而不论是inode还是block它们都有一个soft/hard,也就是软限制和硬限制。
soft:这是最低容量的意思,在用户宽限期内他的容量可以超过这个值,但不能超过硬限制,也必须在规定的宽限期内将容量降到soft容量限制之下。(为了在达到hard前进行提醒,因为一旦达到hard就会锁住此用户对磁盘的使用权限)
hard:这是最高的限制,是绝对不能超过的,通常hard值都会比soft值高,如果用户超过了hard值那么系统就会锁定该用户对该磁盘的使用权限。
grace time:这就是上面提到的宽限时间,这个宽限时间只有用户对磁盘的使用量介于soft和hard之间时才会出现,这是为了提醒用户,因为磁盘容量一旦达到hard,使用者的磁盘使用权限将会被锁住,为了担心使用者没有注意到这个问题,因此设计了soft,而当你的磁盘使用量超过soft即将达到hard时,系统会给予警告,但也会给使用者一段时间让使用者自行管理磁盘,一般预设的宽限时间为7天,但如果你7天内都不对磁盘进行管理,那么soft限制将会取代hard限制来作为quota的限制。

三、quota限额的操作演示
1.quota的安装包
quota在centos7里是默认安装的,但如果你对系统里没有可以使用rpm安装,安装如下:

rpm -q quota
quota-4.01-14.el7.x86_64

2.首先我们要创建一个普通用户,因为quota对root是无效的。我们就创建一个普通用户myquota1作为演示,然后我们看要演示的磁盘是否开启quota,这里我对/dev/sda6分区进行操作,我们先查看/dev/sda6是否开启quota

[root@localhost ~]# mount
/dev/sda6 on /disk2 type ext4 (rw,relatime,seclabel,data=ordered)
我们可以看到quota没有开启,所以我们需要重新挂载。为了使下次开机也起作用,我们把挂载写到/etc/fstab文件中

[root@localhost ~]# vim /etc/fstab
/dev/sda6       /disk2          ext4    defaults,usrquota,grpquota  0 0

#由于我们增加了用户和组的配额,所以这里我们要重新mount一次,使我们的修改生效

[root@localhost ~]# mount -o remount /disk2
[root@localhost ~]# mount
/dev/sda6 on /disk2 type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)

现在已经开启了对用的磁盘配额
3.生成磁盘配额数据库

[root@localhost disk2]# quotacheck -acgu

[root@localhost disk2]# ls
aquota.group aquota.user lost+found
这里的参数意思分别是
-a 所有分区(已支持配额)
-c 创建
-u 用户
-g 组
4.启动磁盘配额

[root@localhost disk2]# quotaon -a //启动所有分区的磁盘配额(或针对性的开启:quotaon /data)
查看指定分区的磁盘配额功能是否开启:

quotaon -p  /data

在这里插入图片描述
5.编辑磁盘配额文件

[root@localhost ~]# edquota  -u myquota1

Disk quotas for user myquota1 (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 0 0 0 0 0
/dev/sda6 0 5120 10240 1 5 10
这里我们可以看到/dev/sda6对用户myquota1的空间软限额为5M,硬限额为10M,创建文件数量软限制为5硬限制为10
在这里插入图片描述

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 7days 7days
/dev/sda6 5days 6hours
edquota -t 将打开磁盘对限额日期的宽限修改时间
可以使用天、小时、分、秒为单位来设定宽限期。默认的都为7天,在这里,/dev/sda6磁盘空间限制的宽限期为5天,而文件数量限制的宽限期只有6个小时。
6.查看用户磁盘配额

[root@localhost ~]# quota -uv myquota1

Disk quotas for user myquota1 (uid 1002): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
   /dev/sdb    4096*   2048    4096   6days       4*      3       5   6days

6.测试

我们切换到myquota1用户先看查看自身限额情况

[myquota1@localhost disk2]$ quota
Disk quotas for user myquota1 (uid 1002): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  /dev/sda6       0    5120   10240               1       5      10        

然后我们来测试效果

[myquota1@localhost disk2]$ touch file2
[myquota1@localhost disk2]$ dd if=/dev/zero of=file2 bs=1M count=2
[myquota1@localhost disk2]$ dd if=/dev/zero of=file3 bs=1M count=2
[myquota1@localhost disk2]$ dd if=/dev/zero of=file4 bs=1M count=2
***sda6: warning, user block quota exceeded***
2+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 0.00488266 s, 430 MB/s

我们可以看到我们在创建file4时系统给出了警告,这时候我们再来看一下配额情况

[myquota1@localhost data]$ quota
Disk quotas for user myquota1 (uid 1002): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
   /dev/sdb    4096*   2048    4096   6days       4*      3       5   6days

给出了警告:文件数量那里带上了星号!

四、quota的实用命令
测试完quota的效果,我们再来说几个quota的实用命令
1.不用edquota编辑文件,直接使用命令配置

[myquota1@localhost disk2]$ quota
Disk quotas for user myquota1 (uid 1002): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  /dev/sda6       0    5120   10240               1       5      10       
[myquota1@localhost disk2]$ exit
logout
[root@localhost ~]#  setquota myquota1 20480 40960 50 100 /dev/sda6
[root@localhost ~]# quota myquota1
Disk quotas for user myquota1 (uid 1002): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  /dev/sda6       0   20480   40960               1      50     100                 

setquota使用格式:
setquota user blocks限制 inode限制 文件系统
setquota myquota1 20480 40960 50 100 /dev/sda6
2.复制磁盘配额配置文件给多个用户

[root@localhost ~]# edquota -p myquota1  myquota2
[root@localhost ~]# quota myquota2
Disk quotas for user myquota2 (uid 1003): none
[root@localhost ~]# quota -v myquota2 
Disk quotas for user myquota2 (uid 1003): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  /dev/sda6       0   20480   40960               0      50     100        
  /dev/sdb1       0       0       0               0       0       0       

复制命令为eqquota -p user1 user2 user3
把user1的磁盘限额设置复制给user2,user3.
在这里要注意一点刚复制完后用quota user2是没法查看配额情况的,我们需要加上-v参数(显示该用户在所有挂入系统的储存设备的空间限制),或者切换到该用户到限额目录下创建个文件也能使用quota看到信息了。
3.查看磁盘配额报表情况

[root@localhost ~]# repquota -a

*** Report for user quotas on device /dev/sda6
Block grace time: 5days; Inode grace time: 06:00
                    Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0       
myquota1  --       0   20480   40960              1    50   100       
myquota2  --       0   20480   40960              1    50   100       

*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                    Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      13       0       0              2     0     0  

4.关掉磁盘配额

[root@localhost ~]# quotaoff -a
[root@localhost ~]# repquota -a
*** Report for user quotas on device /dev/sda6
Block grace time: 5days; Inode grace time: 06:00
                    Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0       
myquota1  --       0   20480   40960              1    50   100       
myquota2  --       0   20480   40960              1    50   100       

*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                    Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      13       0       0              2     0     0       

quotaoff -a 是关掉所有的磁盘配额
也可以在quotaoff后跟指定分区关掉指定分区配额。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值