RHEL6入门系列之二十二,quota磁盘配额管理

简介:

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

一、quota磁盘配额简介
 
quota磁盘配额功能只在指定的文件系统(分区)内有效,用户使用其它未设置配额的文件系统时,将不会受到限制。
quota主要针对系统中指定的用户账号、组账号进行限制,没有被设置限额的用户或组将不受影响。对组账号设置配额后,组内所有用户使用的磁盘容量、文件数量的总和不能超过限制。
通过设置磁盘配额可以对用户或组进行两方面的限制:磁盘容量、文件数量。
  • 磁盘容量:限制用户能够使用的磁盘数据块(block)大小,也就是限制磁盘空间大小,默认单位为KB。
  • 文件数量:限制用户能够拥有的文件个数。在Linux系统中,每一个文件都有一个对应的数字标记,称为i节点(inode)编号,这个编号在文件系统内是唯一的,因此quota通过限制i节点的数量来实现对文件数量的限制。
磁盘配额的限制方法分为软限制和硬限制两种。
  • 软限制:设定一个软性的配额数值(如400MB磁盘空间、150个文件),在固定的宽限期(默认为7天)内允许暂时超过这个限制,但系统会给出警告信息。
  • 硬限制:设定一个硬性的配额数值(如500MB磁盘空间、200个文件),而且绝对禁止用户超过该限值。当达到硬限制值时,系统也会给出警告并禁止继续写入数据。硬限制的配额值应大于相应的软限制值,否则软限制值将失效。
二、配置quota磁盘配额
 
RHEL6系统中,内核已经定制了支持Linux文件系统的磁盘配额功能,而且在系统中默认安装了quota软件包,因而只需直接设置启用该功能即可。
下面以在系统中已经创建好的磁盘分区“ /dev/sdb1”为例,将其挂载到“/data”目录,然后在该文件系统中配置实现磁盘配额功能。
 
1、启用quota磁盘配额功能
 
RHEL6系统中主要是通过修改配置文件“/etc/fstab”的方式启用quota磁盘配额功能,通过这种方式启用的磁盘配额功能可以永久生效。
修改“ /etc/fstab”,给需要设置配额的文件系统添加usrquota和grpquota选项。如图所示,在文件系统“/data”对应行的“defaults”字段后面添加“usrquota”,启用用户配额功能,添加“grpquota”启用组配额功能。
[root@localhost ~]# vim /etc/fstab                   ’修改配置文件

2、更新装载文件系统

修改完“ /etc/fstab”文件后需要将文件系统重新挂载,使设置生效。
[root@localhost ~]# mount -o remount /data           ’重新挂载文件系统
重新挂载后,执行 mount命令查看已经挂载的文件系统,发现成功启用了usrquota和grpquota功能:
[root@localhost ~]# mount | grep sdb1               ’查看已经挂载的文件系统
/dev/sdb1 on /data type ext4 (rw,usrquota,grpquota)
 
3、检测磁盘配额并生成配额文件
 
使用 quotacheck命令可以对文件系统进行磁盘配额检测,发现哪些文件系统启用了磁盘配额功能,并在这些文件系统中生成配额文件aquota.user和aquota.group,以便保存用户、组在该分区中的配额设置。
[root@localhost ~]# quotacheck -cuvg /data            ’检测磁盘配额并生成配额文件
相关选项的作用:
-c,创建配额文件。
-u,检查用户配额信息,创建 aquota.user文件。
-g,检查组配额信息,创建 aquota.group文件。
-v,显示详细信息。

注意,在采用默认设置的RHEL6系统中执行该命令时将产生“权限不够”的错误提示,如下图所示。

这是由于系统中默认启用了SELinux安全机制,将SELinux设为许可模式,再次执行命令,即可成功。
[root@localhost ~]# setenforce 0                 ’将SELinux设为许可模式
[root@localhost ~]# quotacheck -cuvg /data       ’再次执行quotacheck命令
命令执行成功后,会在“/data”目录中生成两个配额文件:aquota.user、atuota.group,分别用于保存用户和组的配额限制。
[root@localhost ~]# ls /data                     ’查看生成的配额文件
aquota.group aquota.user lost+found

4、编辑用户和组账号的配额设置
 
配额设置是实现磁盘配额功能中最重要的环节,使用 edquota命令结合“-u”、“-g”选项可用于编辑用户或组的配额设置。
例如,针对用户 jerry进行磁盘配额设置。
[root@localhost ~]# edquota -u jerry             ’设置用户 jerry的磁盘配额
正确执行 edquota命令后,将进入到文本编辑界面,可以设置磁盘容量和文件数目的软、硬限制数值,如下图所示。

edquota的编辑界面中,第1行提示了当前配额文件所对应的用户或组账号,第2行是配置标题栏,分别对应以下每行配置记录。配置记录中从左到右分为七个字段,各字段的含义如下所述。

  • Filesystem:表示本行配置对应的文件系统(分区),即配额的作用范围。
  • blocks:表示用户当前已经使用的磁盘容量,默认单位为KB,该值由edquota程序自动计算生成。
  • inodes:表示用户当前已经拥有的文件数量,该数值也是由edquota程序自动计算生成。
  • soft:第3列中的soft对应为磁盘容量的软限制数值,默认单位为“KB”;第6列中的soft对应为文件数量的软限制数值,默认单位为“个”。
  • hard:第4列中的hard对应为磁盘容量的硬限制数值,默认单位为“KB”,第7列中的hard对应为文件数量的硬限制数值,默认单位为“个”。
进行配置设置时,只需要修改相应的 soft、hard列下的数值即可。另外,由于很少对用户的文件数量进行限制,所以主要是修改第3列和第4列中的软限制容量和硬限制容量。
这里将用户 jerry的磁盘容量软限额设置为400000(即400MB),硬限额设置为500000(即500MB),设置完成后保存退出。
也可以通过“ edquota –g”命令对用户组进行配额设置。例如,针对caiwu组进行磁盘配额设置,将其硬限额设置为4000000(即4GB)。
[root@localhost ~]# edquota -g caiwu             ’设置 caiwu组的磁盘配额

需要注意的是,配额设置仅对基本组生效。如用户jerry所属的基本组是“caiwu”,所属的附加组是“xiaoshou”,那么只有针对“caiwu”组设置的配额才对jerry有效,而针对“xiaoshou”组设置的配额则对jerry没有限制。

5、激活磁盘配额
 
磁盘配额设置完毕后,还必须用 quotaon命令将之激活,在命令中需要指定设备文件名或文件系统的挂载点目录作为命令参数。
[root@localhost ~]# quotaon -ugv /data      ’激活“ /data”文件系统的用户、组配额
/dev/sdb1 [/data]: group quotas turned on
/dev/sdb1 [/data]: user quotas turned on
相关选项的作用:
-u,激活用户磁盘配额。
-g,激活组磁盘配额。
-v,显示详细信息。
 
三、验证磁盘配额功能
 
使用受配额限制的用户账号 jerry登录Linux系统,并向应用了配额的文件系统进行复制文件等写入操作,测试所设置的磁盘配额项是否有效。为了方便测试,将用户jerry的基本组设为caiwu,对用户和组的磁盘配额功能一并进行测试。
 
[root@localhost ~]# usermod -g caiwu jerry      ’jerry用户的基本组设为caiwu
[root@localhost ~]# id jerry                    ’查看 jerry的用户信息
uid=604(jerry) gid=517(caiwu) 组 =517(caiwu)
[root@localhost ~]# chmod 777 /data             ’开放 /data目录的写入权限
[root@localhost ~]# su – jerry                 ’切换到 jerry用户身份
[jerry@localhost ~]$ ll –h                     ’事先准备好的容量为 210MB的测试文件
总用量  210M
-rw-r--r--. 1 root root 210M 12月  12 07:50 test.data
[jerry@localhost ~]$ cp test.data /data         ’/data目录中复制测试文件
[jerry@localhost ~]$ cp test.data /data/test2.data     ’再次复制测试文件,开始报警
sdb1: warning, user block quota exceeded.
[jerry@localhost ~]$ cp test.data /data/test3.data     ’第三次复制测试文件,提示超出限额
sdb1: write failed, user block limit reached.
cp: 正在写入 "/data/test3.data": 超出磁盘限额
 
磁盘配额功能验证成功。
切换到 root用户身份,使用quota命令结合“-u”、“-g”选项可以分别查看指定用户和组的配额使用情况。
[root@localhost ~]# quota -u jerry        ’查看用户 jerry的磁盘配额使用情况

可以看到jerry所用的磁盘空间(blocks)已经达到了最大限额(limit)。

[root@localhost ~]# quota -g caiwu       ’查看caiwu组的磁盘配额使用情况

可以看到caiwu组所用的磁盘空间500000KB尚未达到最大限额4000000KB。

也可以使用 repquota命令针对指定的文件系统输出配额情况报告。
[root@localhost ~]# repquota /data        ’查看“ /data”文件系统的配额使用情况报告

从中可以看到有哪些用户在/data文件系统中被设置了磁盘配额,以及用户磁盘空间的使用情况。

最后需要强调的是, 由于root用户在Linux系统中具有至高无上的权限,所以quota磁盘配额对root是无效的。

本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1125980
相关文章
|
存储 JSON 负载均衡
Token、Session、Cookies是什么?如何理解其不同?一文带你了解
这篇文章详细解释了Token、Session和Cookies的概念、作用及其区别,探讨了它们在维持HTTP无状态连接中用户状态的用途和优缺点,特别是Session的服务器端存储和Token的客户端存储特性,以及它们在不同场景下的应用。
Token、Session、Cookies是什么?如何理解其不同?一文带你了解
|
9月前
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
397 18
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的志愿者管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的志愿者管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
177 0
|
机器学习/深度学习 数据可视化 UED
黑匣子被打开了!能玩的Transformer可视化解释工具,本地运行GPT-2、还可实时推理
【9月更文挑战第4天】Transformer Explainer是一款基于网页的交互式可视化工具,专为帮助用户理解复杂的Transformer模型而设计。通过多层次抽象、实时推理及互动实验,以及无需安装即可使用的便捷性,此工具选取GPT-2作为教学模型,降低了学习门槛并提升了教育普及度。用户可以通过输入自定义文本观察预测过程,深入了解内部组件的工作原理。此外,它还减少了认知负荷,增强了互动学习体验。未来,该工具将在复杂性管理和性能优化方面继续改进,并通过用户研究进一步提升功能和可用性。[论文地址:https://arxiv.org/pdf/2408.04619]
418 1
|
搜索推荐 前端开发 C#
推荐7款美观且功能强大的WPF UI库
推荐7款美观且功能强大的WPF UI库
994 2
|
监控 数据安全/隐私保护 Python
ERP系统中的员工培训与知识管理解析
【7月更文挑战第25天】 ERP系统中的员工培训与知识管理解析
584 2
Linux磁盘配额
在Linux系统中,当用户的空间占用接近或超过预设的软限制时,系统会警告用户磁盘空间将满。软限制是允许用户使用的磁盘空间的最大值,在此限制下,用户仍有宽限期来减少空间使用。如果在宽限期内用户未减少空间占用,达到硬限制,软限制将升级为硬限制。硬限制是用户可以使用的绝对最大值。默认的宽限期是7天,如果超过这个期限,用户的空间限制会立即降低到硬限制。
python项目 以docker形式打包部署全流程
在很久很久以前,我已经听过Docker的大名,当时服务着急上线虽然考虑过用Docker来部署我的服务,但是因为赶期的原因放弃了。 这两天因为华为云服务器到期,而且阿里云服务器优惠力度特别大的原因,我要把华为云服务器里的工程迁移到阿里云。 迁移的过程中,大量的时间精力浪费在了重装python,加载依赖,迁移项目,配置端口等环境配置的工作上。 我在想,如果当时用了Docker部署,我至于受这气?
|
消息中间件 存储 网络协议
即时通讯需要用到哪些技术手段?
该文探讨了即时通讯技术,涉及网络协议(TCP/IP、UDP、HTTP/HTTPS)在IM中的应用,数据传输与同步(消息队列、长轮询、WebSocket、数据同步)技术,安全性保障(加密、认证授权、防止攻击)措施,以及多媒体处理(音频、视频处理和实时传输)和用户界面交互设计的重要性。文章旨在帮助读者理解并应用相关技术。
1113 1
|
存储 分布式计算 Hadoop
【云计算与大数据技术】Hadoop MapReduce的讲解(图文解释,超详细必看)
【云计算与大数据技术】Hadoop MapReduce的讲解(图文解释,超详细必看)
599 0