Linux作为多用户的操作系统,多人使用同一块磁盘的情况是不可避免的问题,为保证磁盘的有效利用及数据安全性,限制各用户对共有磁盘访问及读写是不错的解决方法。针对此,Linux系统的磁盘配额显得尤为重要。 本文以CentOS Linux release 7.6.1810为基础,通过新扩展磁盘的方式演示磁盘配额,完成Linux操作系统中针对用户完成磁盘配额的使用方式。磁盘配额简介 磁盘配额,顾名思义即为磁盘分配额度,而‘quota’也具有‘额度’之意。在Linux操作系统中,磁盘配额就是限制用户对磁盘空间的使用量,以此保证磁盘空间的有效利用及对磁盘的有效分配。在Centos7以后的版本中默认已经支持quota功能,具体以各版本的说明。磁盘配额的限制类型 磁盘配额常见存在两种配额类型,分别为磁盘容量、文件数量。具体如下: (1)磁盘容量:限制用户、用户组可以使用的磁盘数据库大小,默认单位为KB; (2)文件数量:限制用户、用户组可以创建(拥有)的文件个数。磁盘配额方式 磁盘配额常见存在两种配额方法,分别为软限制、硬限制。具体如下: (1)软限制(soft):用户可以超过磁盘配额软限制,在超过软限制时系统会出现提示信息,不影响用户使用超出配额软限制的磁盘,但是不能超过硬限制磁盘配额; (2)硬限制(hard):用户不允许超过磁盘配额硬限制,在超过硬限制时系统会出现提示信息,同时也会拒绝用户使用超出配额硬限制的磁盘。磁盘配额宽限期 当用户磁盘使用量超过软限制但未达到硬限制时,系统会出现磁盘配额宽限期(grace time)。在磁盘配额宽限期之间,系统会给予警告,但不影响用户继续使用磁盘。在磁盘配额宽限期(grace time)之间,用户可以管理系统分配的磁盘空间。若超出宽限期,用户认为管理磁盘空间,则软限制将会取代硬限制作为磁盘配额的最终限制,并禁止用户对磁盘写入数据。 注: (1)超过磁盘硬限制后可能导致数据写入不完整; (2)一般情况下,软限制应小于或等于硬限制。若软限制大于硬限制,则软限制不起任何作用。扩展磁盘 在虚拟机系统内添加磁盘。具体如下图所示: 磁盘分区 执行命令,新增磁盘分区。具体如下图所示: 分区结束后使用‘w’命令保存。具体如下图所示: 查看当前系统文件系统类型 执行命令,查看当前系统内文件系统类型。具体如下图所示:[root@freeops ~]# df -T /home 磁盘格式化 执行命令,格式化磁盘。具体如下图所示:[root@freeops ~]# mkfs.xfs /dev/sdb1 创建挂载点 执行命令,创建磁盘挂载点。具体如下图所示:[root@freeops ~]# mkdir /quotest 挂载磁盘 执行命令,挂载磁盘。具体如下图所示:[root@freeops ~]# mount -o uquota,gquota /dev/sdb1 /quotest 注:此处挂载不能使用mount命令直接挂载,需要添加‘-o uquota,gquota’参数。查看是否支持磁盘配额 执行命令,查看当前磁盘是否支持磁盘配额。具体如下图所示:[root@freeops ~]# mount | grep quotest 注: (1)执行上述命令,若系统返回数据中包含usrquota、grpquota,则证明该磁盘支持磁盘配额; (2)执行上述命令,若系统返回数据中包含noquota,则证明该磁盘不支持磁盘配额。若需要使用磁盘配额功能需要卸载该磁盘后重新使用‘-o uquota,gquota’参数挂载磁盘。设置开机自动挂载 编辑‘/etc/fstab’文件,添加如下信息设置开机自动挂载磁盘。具体如下图所示: 查看系统环境 磁盘配额需要使用xfs_quota功能,执行命令,查看系统是否已安装该命令环境。具体如下图所示:[root@freeops ~]# rpm -qa | grep xfsprogs xfsprogs-4.5.0-18.el7.x86_64 添加用户 执行以下命令,创建用户及用户组。具体如下图所示: 设置磁盘读写权限 执行以下命令,设置磁盘读写权限。具体如下图所示: 设置磁盘配额 执行命令,设置磁盘配额。具体如下图所示:[root@freeops ~]# xfs_quota -x -c "limit bsoft=800M bhard=1G -u test001" /quotest/ 查看磁盘配额情况 执行命令,查看当前磁盘的配额情况。具体如下图所示:[root@freeops ~]# xfs_quota -x -c "report" /quotest/ 测试磁盘配额功能 执行命令,测试磁盘配额功能。具体如下图所示:[test001@freeops ~]$ dd if=/dev/zero of=/quotest/quotest.txt bs=20M count=30 注:由上图可知,test001可以正常在/quotest中正常写入600M数据; 执行命令,测试磁盘配额功能。具体如下图所示:[test001@freeops ~]$ dd if=/dev/zero of=/quotest/quotest.txt bs=20M count=55 注:由上图可知,test001可以在/quotest中仅能写入1.0G数据,超过1.0G时会出现提示;查看宽限时间 执行‘quota’命令,查看磁盘宽限时间。具体如下图所示: 注:由上图可知,本例磁盘配额宽限时间为6天。 扩展: (1)quotaoff -a:关闭所有的磁盘配额; (2)quotaoff /quotest:关闭指定/quotest分区磁盘配额。 (3)设置磁盘配额开机自启:echo "quotaon -aug" >> /etc/rc.d/rc.local。