RHEL6基础二十七之quota磁盘配额管理

一、简介

磁盘配额管理主要是指限制某些用户的可用磁盘空间,如针对提供虚拟主机的Web服务器,需要对网站空间大小进行限制;针对邮件服务器,需要对用户邮箱大小进行限制;针对文件服务器,需要对每个用户可用的网络硬盘空间进行限制等。在Linux系统中,引入了quota磁盘配额功能,目的就是将用户对磁盘容量的使用限制在一个合理的水平,防止存储资源耗尽。

quota磁盘配额功能只对指定的文件系统(分区)内有效,用户使用其它未设置配额的文件系统时,将不会受到限制。其主要针对系统中指定的用户账号、组账号进行限制,没有被设置限额的用户或组将不受影响。对组账号设置配额后,组内所有用户使用的磁盘容量、文件数量的总和不能超过限制。

quota磁盘配额对用户、组限制的范围:磁盘容量、文件数量

磁盘容量:限制用户能够使用的磁盘数据块(block)大小,也就是限制磁盘空间大小,默认单位为KB。
文件数量:限制用户能够拥有的文件个数。在Linux系统中,每一个文件都有一个对应的数字标记,称为i节点(inode)编号,这个编号在文件系统内是唯一的,因此quota通过限制i节点的数量来实现对文件数量的限制。

磁盘配额限制的方法:软限制、硬限制

软限制:设定一个软性的配额数值(如400MB磁盘空间、150个文件),在固定的宽限期(默认为7天)内允许暂时超过这个限制,但系统会给出警告信息。
硬限制:设定一个硬性的配额数值(如500MB磁盘空间、200个文件),而且绝对禁止用户超过该限值。当达到硬限制值时,系统也会给出警告并禁止继续写入数据。硬限制的配额值应大于相应的软限制值,否则软限制值将失效。

二、配置quota磁盘配额

1.查看系统中是否安装quota:

在RHEL6系统中,内核已经定制了支持Linux文件系统的磁盘配额功能,而且在系统中默认安装了quota软件包,因而只需直接设置启用该功能即可。

[root@justin ~]# rpm -qa quota
quota-3.17-16.el6.i686
[root@justin ~]#

如果没有安装可以在系统安装包里找到该软件进行安装

[root@justin cdrom]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@justin cdrom]# cd /mnt/cdrom/Packages/
[root@justin Packages]# rpm -ivh quota-3.17-16.el6.i686.rpm

2.启用quota磁盘配额功能

对文件系统/dev/sdb5进行quota管理

在RHEL6系统中主要是通过修改配置文件“/etc/fstab”的方式启用quota磁盘配额功能,通过这种方式启用的磁盘配额功能可以永久生效。修改“/etc/fstab”,给需要设置配额的文件系统添加usrquota和grpquota选项。

[root@justin ~]# vim /etc/fstab
proc                    /proc                   proc    defaults        0 0
/dev/sdb1               /mnt/sdb1               swap    defaults        0 0
/dev/sdb5               /mnt/sdb5               ext4    defaults,usrquota,grpquota        0 0
/dev/sdb6               /mnt/sdb6               vfat    defaults        0 0
/home/swapfile          swap                    swap    defaults        0 0
[root@justin ~]# mount -o remount /mnt/sdb5    ;重新挂载文件系统
[root@justin ~]# mount |grep sdb5        
/dev/sdb5 on /mnt/sdb5 type ext4 (rw,usrquota,grpquota)
[root@justin ~]#

Tips:启用quota后需要重新挂载,defaults,默认无配额管理;加入usrquota关键字,实现基于用户的磁盘配额;加入grpqouta关键字,实现基于组的磁盘配额;如果两者都需要,全部添写,中间可以用逗号分隔

3.检测磁盘配额并生成配额文件

144144186.png

[root@justin ~]# quotacheck -cugv /mnt/sdb5
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb5 [/mnt/sdb5] done
quotacheck: Cannot stat old user quota file: 没有那个文件或目录
quotacheck: Cannot stat old group quota file: 没有那个文件或目录
quotacheck: Cannot stat old user quota file: 没有那个文件或目录
quotacheck: Cannot stat old group quota file: 没有那个文件或目录
quotacheck: Checked 2 directories and 0 files
quotacheck: Cannot create new quotafile /mnt/sdb5/aquota.user.new: 权限不够
quotacheck: Cannot initialize IO on new quotafile: 权限不够
quotacheck: Cannot create new quotafile /mnt/sdb5/aquota.group.new: 权限不够
quotacheck: Cannot initialize IO on new quotafile: 权限不够
[root@justin ~]# setenforce 0
[root@justin ~]# quotacheck -cugv /mnt/sdb5
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb5 [/mnt/sdb5] done
quotacheck: Cannot stat old user quota file: 没有那个文件或目录
quotacheck: Cannot stat old group quota file: 没有那个文件或目录
quotacheck: Cannot stat old user quota file: 没有那个文件或目录
quotacheck: Cannot stat old group quota file: 没有那个文件或目录
quotacheck: Checked 2 directories and 0 files
quotacheck: Old file not found.
quotacheck: Old file not found.
[root@justin ~]# ls /mnt/sdb5
aquota.group  aquota.user  lost+found
[root@justin ~]#

Tips:在采用默认设置的RHEL6系统中执行该命令时将产生“权限不够”的错误提示,这是由于系统中默认启用了SELinux安全机制,将SELinux设为许可模式,再次执行命令,即可成功。

4.用户和组账号的配额设置

145141194.png

对justin用户设置软限制为40M,硬限制为50M:

151134157.png


Tips:进行配置设置时,只需要修改相应的soft、hard列下的数值即可。一般很少对用户的文件数量进行限制,所以主要是修改第3列和第4列中的软限制容量和硬限制容量

对justin组设置硬限制为1G:

[root@justin ~]# edquota -g justin
Disk quotas for group justin (gid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb5                         0          0       1024000        0        0        0

Tips:配额设置仅对基本组生效。如用户justin所属的基本组是“justin”,所属的附加组是“justin1”,那么只有针对“justin”组设置的配额才对justin有效,而针对“justin1”组设置的配额则对justin没有限制。

三、激活磁盘配额

152926200.png

[root@justin ~]# quotaon -ugv /mnt/sdb5
/dev/sdb5 [/mnt/sdb5]: group quotas turned on
/dev/sdb5 [/mnt/sdb5]: user quotas turned on
[root@justin ~]#

四、验证磁盘配额功能

153522545.png上面设置用户justin对/mnt/sdb5有40M的磁盘空间软限制,50M的磁盘硬限制,组justin有磁盘空间1G的硬限制,我准备了三个文件,大小分别为35M、25M、5M,并授予justin对/mnt/sdb5写权限

[root@justin ~]# chmod 777 /mnt/sdb5
[root@justin ~]# su - justin
[justin@justin ~]$ cd /usr/local/src/
[justin@justin src]$ ll
total 66228
-rw-r--r--. 1 root root 36236959 Aug 23 10:20 VMware9??????.rar
-rw-r--r--. 1 root root 25650448 Aug 23 14:34 xshell_4.0.0104.exe
-rw-r--r--. 1 root root  5924552 Aug 23 14:32 yyws.zip
[justin@justin src]$ cp -a VMware9汉化包.rar /mnt/sdb5  ;正常复制35M文件
[justin@justin src]$ cp -a yyws.zip /mnt/sdb5    ;再次复制5M文件出现告警
sdb5: warning, user block quota exceeded.
[justin@justin src]$ cp -a xshell_4.0.0104.exe /mnt/sdb5  ;再次复制25M文件失败
sdb5: write failed, user block limit reached.
cp: writing `/mnt/sdb5/xshell_4.0.0104.exe': Disk quota exceeded
[justin@justin src]$

以上说明磁盘配额已经生效

[justin@justin src]$ quota
Disk quotas for user justin (uid 500):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5   51200*  40960   51200   6days       3       0       0      
[justin@justin src]$ quota -g justin
Disk quotas for group justin (gid 500):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5   51200       0 1024000               3       0       0      
[justin@justin src]$

Tips:Filesystem:表示本行配置对应的文件系统(分区),即配额的作用范围;blocks:表示用户当前已经使用的磁盘容量,默认单位为KB,该值由edquota程序自动计算生成;limit:极限;grace:宽限期

查看磁盘空间限制情况

105743414.png

[root@justin ~]# repquota /mnt/sdb5
*** Report for user quotas on device /dev/sdb5
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     
justin    +-   51200   40960   51200  6days       3     0     0   
[root@justin ~]# repquota -u /mnt/sdb5
*** Report for user quotas on device /dev/sdb5
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     
justin    +-   51200   40960   51200  6days       3     0     0     
[root@justin ~]# repquota -g /mnt/sdb5
*** Report for group quotas on device /dev/sdb5
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     
justin    --   51200       0 1024000              3     0     0

五、关闭磁盘配额

110223609.png

[root@justin ~]# quotaoff /mnt/sdb5



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值