Linux磁盘配额,RAID,LVM
磁盘配额,就是妥善的分配系统资源
quota比较常用的情况
针对 www server 例如:每个人的网页空间的容量限制
针对 mail server 例如:每个人的邮件空间限制
针对 file server 例如:每个人最大的可用网络磁盘空间
quota的使用限制
仅针对整个文件系统:如果你的/dev/sda5是挂载在/home底下,那么在/home底下的所在目录都会受到限制
核心必须支持quota : 也就是说linux核心必须支持quota这个功能才行,而由旧版本的quota可以籍由convertquota这个程序来转换
成新帮本的aquota的
只针对一般身份使用者有效:例如root就不能设定quota,因为整个系统的数据几乎都是他的
所以不能针对【某个目录】来进行quota的设计,但可以针对【某个文件系统】来设定,
quota的规范设定项目:quota针对整个文件系统的限制项目主要分为底下几个部分‘
1可以管理inode(档案数量)和block的数量(管理用户磁盘容量的限制)
2柔性劝导与硬性规定(soft/hard) ,通常hard限制要比soft高,若限制项目为block,可以限制hard为500MBytes而soft为400MByte
hard代表硬性规定,绝对不允许超个的限制值,如若超过则系统会锁住该用户的磁盘使用权
soft 代表软性规定,如果超过了软性的限制,但是低于硬性的限制,每次用户登录系统时,系统会主动发出磁盘即将爆满
的警告信息,且会给予一个宽限时间,不过,若使用者在宽限时间倒数期间将容量再次降低与soft限制之下,则宽限时间会停止
3会倒数计时的宽限时间 这个宽限时间用于磁盘用量在soft到hard之间时,才会出现,soft就是为了提醒用户注意这个磁盘配额的问题
一般宽限时间为7天,如果7天内你都不进行任何磁盘管理,那么soft限制值会即可取代hard限制来作为quota的限制,此时
你的磁盘使用权就会被封锁住而无法新增档案了
一个quota实例
有五个账户,且每个用户的初始群组都是myquotagrp,其他的帐号属性则使用默认值,每个用户能够使用300MBytes的磁盘使用量(hard)
250MBytes的磁盘使用量(soft),群组限制,针对myquotagrp这个群组最多仅能使用1GByte的容量,这个时候就会使群组的设定和用户的
设定产生一定的问题,最后那个宽限时间为14天
在操作之前,先得查看一下,/home是否是一个独立的filesystem
df -h /home,接着查看文件系统的类型,由于VFAT文件系统并不支持Linux Quota的功能,使用mount | grep home来查看/home的文件系统类型
接下来可以使用如下的方法加入quota的支持mount -o remount,usrquota,grpquota /home,接着再执行mount | grep home就可以看到这个文件系统上
已经加入usrquota,grpquota的支持到你所想要设定的系统中了,另外使用者与群组的quota文件系统支持的参数为: usrquota grpquota
若希望下次开机的时候自动的挂载该文件系统,可以直接修改/etc/fstab LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
mount -a 的意思是将fstab中的文件系统重新的挂载
接着建立quota记录文件
使用quotacheck:扫描文件系统并建立Quota的记录文件
quotacheck [-avugfM] [/mount_point]
选项和参数
-a :扫瞄所有在 /etc/mtab 内,含有 quota 支持的 filesystem,加上此参数后,
-u : 针对用户扫描档案与目录的使用情况,会建立aquota.user
-g :针对群组扫描档案与目录的使用情况,会建立 aquota.group
-v :显示扫瞄过程的信息;
-f :强制扫瞄文件系统, 写入新的 quota 配置文件 (危险)
-M :强制以读写的方式扫瞄文件系统,只有在特殊情况下才会使用。
quotacheck -avug仅针对整个系统含有usrquota, grpquota参数的文件系统进行quotacheck扫描
由于/home目录支持usrquota和grpquota,所以搜索结果会将两个记录文件放在/home底下,这两个档案就是quota最重要的信息
因为特殊需求需要强制扫瞄已挂载的文件系统时,使用quotacheck -avug -mf
这两个文件不是纯文本,是quota自己的数据文件,且该档案会一直变动,这个因为当你对/home这个文件系统进行操作时
你操作的结果会影响磁盘,所以当然会记载到这两个档案中的,所以要建立aquota.user 和 aquota.group 记得使用quotacheck指令
不要手动编辑
制作好quota配置文件,接着要启动quota了,使用quotaon和quotaoff进行开启和关闭
启动quota的服务
-u :针对使用者启动 quota (aquota.user)
-g :针对群组启动 quota (aquota.group)
-v :显示启动过程的相关讯息;
-a :根据 /etc/mtab 内的 filesystem 设定启动有关的 quota ,若不加 -a 的话, 则后面就需要加上特定的那个 filesystem 喔!
由于我们要启动usr/group的quota,所以执行quotaon -avug ,由于只有在第一次启动quota时才需要进行这个命令,因此等到下次重启系统时
系统的/etc/rc.d/rc.sysinit这个初始化脚本就会自动的下达这个命令了,因此你只要在这次实例中进行一次即可,未来不需要自行启动quota的
quotaoff :关闭 quota 的朋务
-a :全部的 filesystem 的 quota 都关闭 (根据 /etc/mtab)
-u :仅针对后面接的那个 /mount_point 关闭 user quota
-g :仅针对后面接的那个 /mount_point 关闭 group quota
edquota :编辑账号/群组的限值与宽限时间
edquota [-u username] [-g groupname] -u进入quota的编辑页面去设定username的限制值
edquota -t <==修改宽限时间 -g 可以进入quota的编辑页面去设定groupname的限制值
edquota -p 范本账号 -u 新账号 将范本账号这个人的quota限制值复制给新帐号,进入quota的编辑页面去设定username的限制值
例如设定myquota1这个用户的限额设定 执行命令edquota -u myquota1
画面中的第一行为说明针对哪个帐号进行quota的限制设定,第二行则是标头行,共分七个字段 1,文件系统或分区
2 磁盘容量(blocks) 3soft 磁盘容量(blocks) 4 hard block的hard限制值 5档案数量 6 inode的soft限制值 7 inode的hard限制值
当 soft/hard 为 0 时,表示没有限制的意思,
目前先设定号myquota1,接着执行 edquota -p myquota1 -u myquota2 赋给myquota2 一直到myquota5就行了
接着再设定去组 edquota -g myquotagrp ,最后edquota -t 来将宽限时间改为14天
查看限制值的报表 quota的报表主要有两种模式,一种是针对每个个人或群组quota指令,一个是针对整个文件系统的
repquota指令,
先看quota : 单一用户的quota报表
quota [-gvs] [groupname]
选项和参数:
-u : 后面可以接username,表示显示该用户的quota限制值,若不接username表示显示出执行者的quota的限制值
-g : 后面可接 groupname ,表示显示出该群组的 quota 限制值。
-v :显示每个用户在 filesystem 的 quota 值;
-s :使用 1024 为倍数来指定单位,会显示如 M 之类的单位!
quota -uvs myquota1 myquota2的含义是显示这两个用户在所以文件系统中的quota值,大小以M为单位显示
显示出 myquotagrp 的群组限额
quota -gvs myquotagrp 显示这个群组在所有文件系统中的quota值,大小以M为单位显示
如果要针对整个 filesystem 列出报表时, 那个可爱的 repquota 就派上用场啦!
repquota :针对文件系统的限额做报表
repquota -a [-vugs]
-a :直接到 /etc/mtab 搜寻具有 quota 标志的 filesystem ,并报告 quota 的结果;
-v :输出的数据将含有 filesystem 相关的细部信息;
-u :显示出用户的 quota 限值 (这是默认值);
-g :显示出个别群组的 quota 限值。
-s :使用 M, G 为单位显示结果
查询本案例中所有使用者的 quota 限制情况:
执行repquota -auvs,查询出mtab中含有quota的文件系统的所有用户的限定值,输出的结果含有firstsystem相关的细部信息
并且以M,G为单位显示结果
quota的测试与管理
首先建置一个270MB的大档案,观察结果
dd if=/dev/zero of=bigfile bs=1M count=250 接着会看到警告warning的讯息
repquota -auv 查看所有/etc/mtab文件系统中,用户的磁盘配额的使用情况,并且将文件系统的相关细部信息一并输出
此时看到grace出现,并且开始倒数了
此时再建立一个大档案,让总容量超过300M,接着看到的讯息不一样了,提示没有办法写入了,
du -sk 查看果然到了极限了
如果在宽限时间归零之前不做任何处理,那么到归零之后通过repquota -au进行查看时,就会发现grace的部分变成none啦,不继续倒数了
有时候使用者不知道系统出了什么问题,最好寄一些警告信(email)给用户比较妥当,透过warnquota来处理即可
warnquota :对超过限额者发出警告信
这是根据/etc/warnquota.conf的设定,然后找出系统上面quota用量超过soft的账号,透过email的功能将警告信发送到用户的电子邮件信箱
warnquota不会自动执行,我们需要手动执行,单纯执行warnquota之后,他会发送两封信出去,一封给root
一封给这个使用者
执行warnquota可能不会产生任何讯息以及信件,因为只有当使用者quota有超过soft,warnquota才会发送警告信
信件内容中,包括标题、信息内容说明、签名文件等数据放在/etc/warnquota中,你也可以更改其中的内容
不过这个发送信件的方式并不适用在/var/spool/mail也爆掉的quota控管中,因为这个系统的容量已经爆掉了,那么
新的信件当然就收不下来的,我们需要让系统自动的执行warnquota
vi /etc/cron.daily/warnquota 编辑每天的执行任务,让固定的时间去执行/usr/sbin/warnquota指令
chmod 755 /etc/cron.daily/warnquota
setquota :直接于指令中设定 quota 限额
如果你想要使用 script 的方法来建立大量的账号,并且所有的账号都在建立时就给予 quota
可以有两个方法
1 先建立一个原始quota 使用 edquota -p quota账号 -u new账号, 写入脚本中
2 直接以 setquota 建立用户的 quota 设定值
不同于edquota是呼叫vi来进行设定,setquota直接由指令输入所必须要的各项限制值
命令结构:
setquota [-u|-g] 名称 block(soft) block(hard) inode(soft) inode(hard)
quota -uv myquota5
setquota -u myquota5 100000 200000 0 0 /home
quota -uv myquota5
这样可以看到结果的改变
不更改既有系统的 quota 实例
例如设定邮件主机,原先没有规划将信箱所在的/var/spool/mail 目录独立成一个parition,那么可以通过让
使用者的邮件信箱与家目录的总体磁盘使用量为固定,由于/home以及/var/spool/mail根本不在一个文件系统中
1. 将 /var/spool/mail 这个目录完整的移懂到 /home 底下;
2. 利用 ln -s /home/mail /var/spool/mail 来建立链接数据;
3. 将 /home 进行 quota 限额设定