磁盘配额(Quota)的应用与实践
1》什么是Quota
在Linux中,由于是多用户,多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量占用掉了硬盘空间的话,那肯定影响其他用户的使 用权限,因此管理员应该适当限制硬盘的空间给用户,以妥善分配系统资源,使磁盘的容量使用较为公平;举例来说,我们用户的默认主文件夹都是在/home下面,如果/home是个 独立的分区,假设这个分区有10G,而/home下面共有30个账户,也就是说,每个用户平均应该会有333MB的空间才对,偏偏有个用户在他的主文件夹下面下了好多电影,占用了 8G的空间,这样会造成其他正常用户的不便,如果想要让磁盘的容量公平分配,这个时候就得要靠quota的帮忙;
1>Quota的一般用途:quota比较常使用的几个情况是:
针对WWW Server:列如每个人的网页空间的容量限制;
针对MAIL Server: 例如每个人的邮件空间限制;
针对FILE Server:列如每个人最大的可用网络硬盘空间(教学环境中最常见);
上面讲的是针对网络服务的设计,如果是针对Linux系统主机上面的设置,用途有下面这些:
1)限制某一用户组所能使用的最大磁盘配额(使用用户组限制);
2)限制某一用户所能使用的最大磁盘配额(使用用户限制);
3)以Link的方式来使邮件可以作为限制的配额(更改/var/spool/mail这个路径);
2>Quota的使用限制:虽然quota很好用,但是使用上还是有些限制要先了解的;
1)仅能针对整个文件系统:
quota实际在运行的时候,是针对整个文件系统进行限制的,列如:如果你的/dev/sda5是挂载在/home下面,那么在/home下面的所有目录都会受到限 制;
2)内核必须支持quota:
Linux内核必须支持quota这个功能才行,如果你是使用CentOS 5.x的默认内核,那你的系统已经默认支持quota这个功能,如果你是自行编译内核 的,那么请特别留意你是否已经真的打开了quota这个功能;
3)Quota的日志文件:
目前新版的Linux操作系统使用的是Kernel 2.6.xx的内核版本,这个内核版本支持新的quota模块,使用的默认文件(aquota.user,apuota.group)将 不同于旧版本的quota.user,quota.group,而由旧版本的quota可以通过convertquota这个程序来转换;
4)只对一般身份用户有效:
并不是所有在Linux上面的账号都可以设置quota,列如root就不能设置quota,因为整个系统所有的数据几乎都是它的,所以你不能针对某个目录 来进行quota的设计,但你可以针对某个文件系统来设置;
3>Quota的规范设置选项:quota针对整个文件系统的限制项目主要分为下面几个部分:
1)容量限制或文件数量限制:
文件系统主要规划为存放属性的inode与实际文件数据的block块,Quota既然是管理文件系统,所以当然可以管理inode或block,这两个管理的功能 为:
限制inode用量:管理用户可以新建的文件数量;
限制block用量:管理用户磁盘容量的限制,较常见的为这种方式;
2)soft/hard:
既然是规范,当然就有限制值,不管是inode/block,限制值都有两个,分别是soft与hard;通常hard限制值要比soft还要高,举例来说,若限制项目 为block,可以限制hard为500MB,而soft为400MB,这两个限制值的意义为:
hard:表示用户的用量绝对不会超过这个限制值,以上面的设置为例,用户所能使用的磁盘容量绝对不会超过500MB,若超过这个值则系统会锁住 该用户的磁盘使用权;
soft:表示用户在低于soft的限值时,可以正常使用磁盘,但若超过soft且低于hard的值时,每次用户登录系统时,系统会主动发出磁盘即将爆满的 警告信息,且会给予一个宽限时间(gracetime),不过,若用户在宽限时间倒数期间就将容量再次低于soft限值下,则宽限时间会停止;
3)会倒计时的宽限时间(grace time)
这个宽限时间只有在用户的磁盘用量介于soft到hard之间时,才会出现且会倒数的一个时间,由于达到hard限值时,用户的磁盘使用权可能会被锁 住,为了担心用户没有注意到这个磁盘配额的问题,因此设计了soft,当你的磁盘用量即将到达hard且超过soft时,系统会给予警告,但也会给一段时间 让用户自行管理磁盘,一般默 认的宽限时间为7天,如果7天内你都不进行任何磁盘管理,那么soft限制值会即刻替代hard限值来作为quota的限值;
2》Quota实例:
1>案例描述及创建用户:
目的与账号:现在我们让五个人为一组,这五个人的账户分别是myquota1,myquota2,myquota3,myquota4,myquota5,这五个用户的密码都是password,且这五个用户所 属的初始用户组都是myquotagrp,其他的账号属性则使用默认值;
账号的磁盘容量限制值:我们想让这五个用户都能够取得300MB的磁盘使用量(hard),文件数量则不予限制,此外,只要容量使用率超过250MB(soft),就予以警告 (soft);
用户组的限额:由于我的系统里面还有其他用户存在,因此我仅承认myquotagrp这个用户组最多仅能使用1GB的容量,这也就是说,如果其中三个用户都用了280MB的 容量,那么其他两人最多只能使用160MB的磁盘容量,这就是用户组与用户同时设置时会产生的结果;
宽限时间的限制:最后,我们希望每个用户在超过soft限制值之后,都还能够有14天的宽限时间,
创建用户:
2>文件系统支持:
要使用Quota必须要内核与文件系统支持才行,我们已经使用了默认支持Quota的内核,那么接下来就是要启动文件系统的支持,不过由于Quota仅针对整个文 件系统来进行规划,所以我们得先查一下/home是否是个独立的文件系统;此外,由于VFAT文件系统并不支持Linux Quota功能,所以我们必须查询一下/home的文件 系统,看看是否是ext2/ext3,这样才能够支持quota功能;
1)如果只是想要在这次开机中实验Quota,那么可以使用如下的方式来手动加入quota的支持:
2)事实上,当你重新挂载时,系统会同步更新/etc/mtab这个文件,所以我们必须确定/etc/mtab已经加入usrquota,grpquota的支持到你所想要设置的文件系统 中,另外也要强调用户与用户组的quota文件系统支持参数分别是usrquota和grpquota,千万不可写错了,不过手动挂载的数据在下次重新挂载时就会消失,因 此最好写入配置文件中,直接修改/etc/fstab;
3>新建Quota配置文件:
其实Quota是通过分析整个文件系统中每个用户(用户组)拥有的文件总数与总容量,再将这些数据记录在该文件系统的最顶层目录,然后在该配置文件中再 使用每个账号(或用户组)的限制值去规定磁盘使用量的,所以构建这个Quota配置文件就非常重要了,扫描有支持Quota参数(usrquota,grpquota)的文件系统,就 使用quotacheck这个命令,此命令语法如下:
quotacheck [-avugfM] [/mount_point]
参数:
-a: 扫描所有在/etc/mtab内,含有quota支持的文件系统,加上此参数后,/mount_point可以不必写,因为扫描所有的文件系统了;
-u:针对用户扫描文件与目录的使用情况,会新建aquota.user;
-g:针对用户组扫描文件与目录的使用情况,会新建aquota.group;
-v:显示扫描过程的信息;
-f:强制扫描文件系统,并写入新的quota配置文件(危险);
-M:强制以读写的方式扫描文件系统,只有在特殊情况下才会使用;
4>Quota启动,关闭与限制值设置
制作好quota配置文件后,接下来就是要启动quota了,启动的方式很简单,使用quotaon,至于关闭就用quotaoff即可;
quotaon [-vug] [/mount_point]
参数:
-u:针对用户启动quota(quota.user);
-g:针对用户组启动quota(quota.group)
-v:显示启动过程的相关信息;
-a:根据/etc/mtab内的文件系统设置启动有关的quota,若不加-a的话,则后面就需要加上特定的那个文件系统;
因为我们需要启动user/group的quota,所以使用下面的语法:
特殊用法,假如你要启动/var的quota支持,那么仅启动user quota时:
#quotaon -uv /var
这个"quotaon -avug"的命令几乎只在第一次启动quota时才需要进行,因为下次等你重新启动系统时,系统的/etc/rc.d/rc.sysinit这个初始化脚本就会自动的执 行这个命令了,因此你只要在这次实例中进行一次即可,将来都不需要自行启动quota;
quotaoff:关闭quota服务
quotaoff [-a]
quotaoff [-ug] [/mount_point]
参数:
-a:全部的文件系统的quota都关闭(根据/etc/mtab);
-u:仅针对后面接的那个/mount_point关闭user quota;
-g:仅针对后面接的那个/mount_point关闭group quota;
edquota:编辑账号/用户组的限值与宽限时间,edquota是editquota的缩写,所以就是用来编辑用户或者是用户组限额的命令;
edquota [-u username] [-g groupname]
edquota -t 修改宽限时间;
edquota -p 范本账号 -u 新账号
参数:
-u:后面接账号名称,可以进入quota的编辑界面去设置username的限值;
-g:后面接组名,可以进入quota的编辑界面去设置groupname的限值;
-t:可以修改宽限时间;
-p:复制范本,那个范本账号为已经存在并且已设置好quota的用户;意义为将范本账号这个人的quota限值复制给新账号;
设置用户myquota1的限值:
七个字段的意义分别为:
文件系统:说明该限值时针对哪个文件系统的;
磁盘容量:这个数值是quota自己算出来的,单位为KB,不要修改它;
soft:磁盘容量(block)的soft限值,单位为KB;
hard:block的hard限值,单位为KB;
文件数量:这是quota自己算出来的,单位 为个数,不要修改;
soft:inode的soft限值;
hard:inode的hard限值;
*******当soft/hard为0时,表示没有限制的意思;
设置其他用户的限值:
设置用户组的限额:
将宽限时间改为14天:
5>Quota限制值的报表:
quota的报表主要有两种模式,一种是针对每个个人或用户组的quota命令,一个是针对整个文件系统的repquota命令,
1)quota:单一用户的quota报表;
quota [-uvs] [username]
quota [-gvs] [groupname]
参数:
-u:后面可以接username,表示显示出该用户的quota限值,若不接username,表示显示出执行者的quota限值;
-g:后面可接groupname,表示显示出该用户的quota限值;
-v:显示每个用户在文件系统中的quota值;
-s:使用1024为倍数来指定单位,会显示如M之类的单位;
2)repquota:针对文件系统的限额做报表;
repquota -a [-vugs]
参数:
-a:直接到/etc/mtab查询具有quota标志的文件系统,并报告quota的结果;
-v:输出的数据将含有文件系统相关的详细信息;
-u:显示出用户的quota限值(这是默认值);
-g:显示出个别用户组的quota限值;
-s:使用M,G为单位显示结果;
查询本例中所有用户的quota限制情况:
6>测试与管理:
1)利用myquota1的身份,创建一个270MB的大文件,并查看quota结果;
2)再创建另外一个大文件,让总容量超过300MB;
3)warnquota:对超过限额这发出警告信:
此命令可以依据/etc/warnquota.conf的设置,然后找出目前系统上面quota用量超过soft的账号,通过Email的功能将警告信件发送到用户的电子邮 件信箱,warnquota并不会自动执行,所以我们需要手动去执行,执行之后它会发送两封信出去,一封给myquota1,一封给root;
可以进入/var/spoll/mail中查看:
可以在/etc/warnquota.conf文件中更改提示信息,改成中文也行;
4)setquota:直接于命令中设置quota限额;
setquota [-u|-g] 名称 block (soft) block(hard) inode(soft) inode(hard) 文件系统
查看原始的myquota5限值,并给予soft/hard 分别为100000/200000:
3》不改动既有系统的Quota实例:
如果你的主机原先没有想到要设置成为邮件主机,所以并没有规划将邮件信箱所在的/var/spool/mail目录独立成为一个分区,然后目前你的主机已经没有办法新增或分 出任何新的分区了,我们知道quota是针对整个文件系统进行设计的,因此你是否就无法针对mail的使用量给予quota的限制呢;此外,如果你想要让用户的邮件信箱与主文件 夹的总体磁盘使用量为固定,那又该如何是好,由于/home及/var/spool/mail根本不可能是同一个文件系统(除非是都不分区,使用根目录,才有可能整合在一起),所以该如 何进行这样的quota限制呢?
其实没有那么难,既然quota是针对整个文件系统来进行限制,假设你又已经有/home这个独立的分区了,那么你只要:
1)将/var/spool/mail这个目录完整地移动到/home下面;
2)利用ln -s /home/mail /var/spool/mail 来新建连接数据;
3)将/home进行quota限额设置;
磁盘配额(Quota)的应用与实践的更多相关文章
- 鸟哥的Linux私房菜——第十八章:磁盘配额quota
视频链接:http://www.bilibili.com/video/av10892470/ 磁盘配额quota的意思是给用户进行使用磁盘额度的空间的划分,举个例子,你的百度网盘的使用空间,其他云盘的 ...
- 磁盘配额-----quota
为什么要使用磁盘配额:为了限制普通用户使用普通磁盘的空间与创建文件的个数等. 不至于个别人的浪费影响所有人的使用. 需要安装quota的软件包. mount -o usrquota,grpquota ...
- 磁盘配额quota
磁盘配额 1 启用磁盘配额 首先创建新的分区 /dev/sd5,并创建文件系统. [root@local ~]# mkfs.ext4 /dev/sda5 由于xfs 不磁盘配额能成功,这里使用ext4 ...
- Linux学习-磁盘配额 (Quota) 的应用与实作
什么是 Quota 在 Linux 系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生, 如 果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其他使用者的使用权力! ...
- linux之磁盘配额(quota)
1.什么是quota 简单的说就是限制用户对磁盘空间的使用量. 因为Linux是多用户多任务的操作系统,许多人共用磁盘空间,为了合理的分配磁盘空间,于是就有了quota的出现. 2.quota的用途 ...
- linux之磁盘配额(quota)使用方法(转)
1.什么是quota 简单的说就是限制用户对磁盘空间的使用量. 因为Linux是多用户多任务的操作系统,许多人共用磁盘空间,为了合理的分配磁盘空间,于是就有了quota的出现. 2.quota的用途 ...
- 磁盘配额quota应用
1.文件系统支持 quota是针对整个文件系统来进行规划,所以我们得先查一下/home是否是个独立的文件系统. [root@Monitor home]# df -h /home Filesystem ...
- 第15章 磁盘配额(Quota)与高级文件系统管理
磁盘配额(quota)的应用与实践 什么是quota 举例来说,用户的默认主文件夹是在/home下面,如果/home是个独立的分区,假设是10G,/home下有30个账号,这样30个用户共享这10G的 ...
- liniux备忘录-磁盘配额与进阶文件系统管理
知识 磁盘配额Quota 可以限制磁盘的使用容量,可以对用户.群组磁盘的最大使用容量. 磁盘配额Quota的使用限制 只能针对整个文件系统. 核心必须支持Quota. 自行编译的核心需要注意 Quot ...
随机推荐
- 基元线程同步构造之信号量(Semaphore)
信号量(semaphore)不过是由内核维护的 int32变量而已,(说通俗点就是好比一个线程容器里面允许执行的线程数,0计数就是允许执行的0个线程数,1就是允许执行的1个线程数,2就是允许执行的2个 ...
- linux基础命令:
linux基础命令: 显示 echo 输出我写的内容 ls 查看当前目录的文件 pwd 查看当前目录 ifconfig 查看网卡信息 grep 过滤 -v 取反 -n man 查看命令的帮助信息 md ...
- java基础五 [数字与静态](阅读Head First Java记录)
本章主要讲了静态变量.静态方法,final关键词.以及介绍了怎么对数字和日期进行格式化输出.这里对这些内容进行了整理.本章还介绍了java.util.Date和java.util.Calendar来操 ...
- switch_to_frame,切换frame框架
页面包含frame/iframe标签,需要先切换到该frame标签,再去定位属于这个frame的元素. 如果要再去定位其他frame的元素,需要回到该frame的上级,定位到要选择的frame,不 ...
- 对象导航查询和OID查询(补)
----------------siwuxie095 对象导航查询 以客户和联系人为例(一对多) 1.应用场景 ...
- [leetcode]367. Valid Perfect Square验证完全平方数
Given a positive integer num, write a function which returns True if num is a perfect square else Fa ...
- 四种强制类型转换的总结(const_cast、static_cast、dynamic_cast、reinterpreter_cast)
四种强制类型转换的总结(const_cast.static_cast.dynamic_cast.reinterpreter_cast) 转载 2011年10月03日 23:59:05 标签: stru ...
- struts2框架之OGNL表达式概述(在代码中使用OGNL表达式)
1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象 * 通 ...
- .Net多线程 并行编程(三)---并行集合
为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能. 而System.Collections和System.Collections.Generic命名 ...
- Web前端工程师常去的15个技术网站
1.CSDN 网址:https://www.csdn.net/ 简介: CSDN (Chinese Software Developer Network) 创立于1999年,是中国最大的IT社区和服务 ...