当Linux操作系统根分区的磁盘空间耗尽时,系统将无法建立新的文件,从而会出现服务程序崩溃、系统无法启动等故障。为了避免在服务器中出现类似的磁盘空间不足的问题,可以设置启用磁盘容量配额管理的功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防个别用户恶意或无意间占用大量磁盘空间,保持系统存储空间的稳定性和持续可用性。在服务器管理中,此功能非常重要,但对单机用户来说其意义不大。
可以使用quota命令进行磁盘容量配额管理,从而限制用户的磁盘可用容量及所能创建的最大文件个数。quota命令还有软限制和硬限制的功能。
软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
硬限制:当达到硬限制时会提示用户,并强制终止用户的操作。
CentOS 8中已经安装了quota磁盘容量配额服务程序包,但磁盘分区却默认没有开启对quota的支持,此时需要手动编辑配置文件,使CentOS 8中的/boot目录支持quota磁盘容量配额服务,如图所示。
注,类型如下:
- 根据用户(uquota/usrquota/quota)
- 根据组(gquota/grpquota)
- 根据目录(pquota/prjquota)(不能与grpquota同时设定)
【vim /etc/fstab】
另外,需要特别注意的是,早期的Linux操作系统使用usrquota参数让磁盘设备支持quota磁盘容量配额服务,而CentOS 8使用的则是uquota参数。在重启系统后使用mount命令查看,即可发现/boot目录已经支持quota磁盘容量配额服务了,如图所示。
【reboot】
【mount | grep boot】
一、xfs_quota命令
xfs_quota命令是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令,格式为【xfs_quota [参数] 配额 文件系统】。其中,-c参数用于以参数的形式设置要执行的命令;-x参数是专家模式,让运维人员能够对quota磁盘容量配额服务进行更多复杂的配置。
接下来使用xfs_quota命令来设置用户yhy对/boot目录的quota磁盘容量配额服务。具体的限额控制包括:硬盘使用量的软限制和硬限制分别为3MB和6MB;创建文件数量的软限制和硬限制分别为3个和6个,如下图所示。
【useradd yhy】创建一个用于检查quota磁盘容量配额效果的用户yhy。
【chmod -Rf o+w /boot】针对/boot目录增加其他用户的写权限,保证用户能够正常写入数据。
【xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 yhy' /boot】
【xfs_quota -x -c report /boot】
当配置好上述各种软、硬限制后,尝试切换到普通用户,然后分别尝试创建大小为5MB和8MB的文件。可以发现,在创建大小为8MB的文件时受到了系统限制,如图8-20所示。
【su - yhy】切换用户。
【dd if=/dev/zero of=/boot/yhy bs=5M count=1】创建一个大小为5MB的文件。
【dd if=/dev/zero of=/boot/yhy bs=8M count=1】创建一个大小为8MB的文件。
二、edquota命令
edquota命令用于编辑用户的quota限额,格式为【edquota [参数] [用户]】。在为用户设置quota磁盘容量配额服务后,可以使用edquota命令按需修改限额的数值。其中,-u参数表示要针对哪个用户进行设置;-g参数表示要针对哪个用户组进行设置。edquota命令会调用Vi或Vim编辑器来让ROOT管理员修改要限制的具体细节。下面把用户yhy的硬盘使用量的硬限制从6MB提升到8MB,如图8-21所示。可以发现,在创建大小为10MB的文件时受到了系统限制,如下图所示。
【exit】切换到ROOT用户。
【edquota -u yhy】
【su - yhy】
Last login: Mon Sep 7 16:43:12 CST 2017 on pts/0
【dd if=/dev/zero of=/boot/yhy bs=8M count=1】
创建一个大小为8MB的文件。
【dd if=/dev/zero of=/boot/yhy bs=10M count=1】
创建一个大小为10MB的文件。