Quota 的一般用途
1、针对WWW server,例如:每个人的网页空间的容量限制
2、针对mail server,例如:每个人的邮件空间限制
3、针对file server,例如:每个人最大的可用网络硬盘空间
针对 Linux 系统主机
1、限制某一群组所能使用的最大磁盘配额
2、限制某一用户的最大磁盘配额
3、以Link的方式,来使邮件可以作为限制的配额
Quota 的使用限制
1、仅能针对整个filesystem
2、核心必须支持quota
3、Quota的记录文件
4、只对一般身份使用者有效
你不能针对『某个目录』来进行Quota的设计,但你可以针对『某个文件系统(filesystem)』来设定。
Quota 的规范设定项目
1、容量限制或档案数量限制(block 或 inode)
限制inode用量:可以管理使用者可以建立的『档案数量』
限制block用量:管理用户磁盘容量的限制
2、柔性劝导与硬性规定(soft/hard):
hard:表示使用者的用量绝对不会超过这个限制值
soft:表示使用者在低于soft限值时,可以正常使用磁盘,但若超过soft切低于hard的限值,会有告警信息。
3、会倒数计时的宽限时间(grace time):
宽限时间只有在用户的磁盘用量介于soft到hard之间时,才会出现且会倒数的一个东西。
当你的磁盘用量即将到达hard且超过soft时,系统会给予警告,但也会给一段时间让用户自行管理磁盘。一般预设的宽限时间为七天,如果七天内你都不进行任何磁盘管理,那么soft限制值会即刻取代hard限值来作为quota的限制。
一个Quota实作范例
1、设一专题,5个人为一组,quota1,quota2,quota3,quota4,quota5 初始群组都为quotagroup
2、账号的磁盘容量限制值:我想让这五个用户都能够取得300M的磁盘使用量(hard),档案数量则不予限制。此外,只要容量使用率超过250M,就予以警告(soft)
3、群组的限额:由于系统里面还有其他用户存在,因此我仅承认quotagroup这个群组最多仅能使用1G的容量,
4、宽限时间的限制:最后每个使用者在超过soft限制值之后,都还能够有14天的宽限时间。
用脚本来创建账号添加密码等工作
[root@www.linuxidc.com ~]# vi addaccount.sh
#!/bin/bash
groupadd quotagroup
for username in quota1 quota2 quota3 quota4 quota5
do
useradd -g quotagroup $username
echo "$username" | passwd --stdin $username
done
实作Quota流程-1:文件系统支援
由于Quota仅针对整个文件系统来进行规划,所以我们得先查一下,/home是否是个独立的filesystem
[root@www.linuxidc.com ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/hda3 4.8G 740M 3.8G 17% /home <&#61;&#61;&#61;/home 确实是独立的
使用如下的方式来手动加入quota的支持
[root&#64;www.linuxidc.com ~]# mount -o remount,usrquota,grpquota /home
[root&#64;www.linuxidc.com ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)
当你重新挂载时&#xff0c;系统会同步更新/etc/mtab这个档案&#xff0c;所以你必须要确定/etc/mtab已经加入usrquota, grpquota的支持到你所想要设定的文件系统中。
[root&#64;www.linuxidc.com ~]# vi /etc/fstab
LABEL&#61;/home /home ext3 defaults,usrquota,grpquota 1 2
[root&#64;www.linuxidc.com ~]# umount /home
[root&#64;www.linuxidc.com ~]# mount -a
[root&#64;www.linuxidc.com ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)
实作Quota流程-2&#xff1a;建立quota记录文件
其实Quota是透过分析整个文件系统中&#xff0c;每个使用者(群组)拥有的档案总数与总容量&#xff0c;再将这些数据记录在该文件系统的最顶层目录&#xff0c;然后在该记录文件中再使用每个账号(或群组)的限制值去规范磁盘使用量
quotacheck &#xff1a;扫瞄文件系统并建立Quota的记录文件
[root&#64;www.linuxidc.com ~]# quotacheck [-avugfM] [/mount_point]
选项与参数&#xff1a;
-a &#xff1a;扫瞄所有在/etc/mtab内&#xff0c;含有quota支持的filesystem
-u &#xff1a;针对用户扫瞄档案与目录的使用情况&#xff0c;会建立aquota.user
-g &#xff1a;针对群组扫瞄档案与目录的使用情况&#xff0c;会建立aquota.group
-v &#xff1a;显示扫瞄过程的信息
-f &#xff1a;强制扫瞄文件系统&#xff0c;并写入新的quota配置文件
-M &#xff1a;强制以读写的方式扫瞄文件系统&#xff0c;只有在特殊情况下才会使用
quotacheck 的选顷你只要记得『 -avug 』一起下达即可
实作Quota流程-3&#xff1a;Quota启劢、关闭与限制值设定
quotaon &#xff1a;启动quota的服务
[root&#64;www.linuxidc.com ~]# quotaon [-avug]
[root&#64;www.linuxidc.com ~]# quotaon [-vug] [/mount_point]
选项与参数&#xff1a;
-u &#xff1a;针对使用者启动quota(aquota.user)
-g &#xff1a;针对群组启动quota(aquota.group)
-v &#xff1a;显示启动过程的相关讯息
-a &#xff1a;根据/etc/mtab内的filesystem设定启动有关的quota,若不加-a的话&#xff0c;则后面需加上特定的那个filesystem
[root&#64;www.linuxidc.com ~]# quotaon -auvg
/dev/hda3 [/home]: group quotas turned on
/dev/hda3 [/home]: group quotas turned on
quotaoff &#xff1a;关闭quota的朋务
[root&#64;www.linuxidc.com ~]# quotaoff [-a]
[root&#64;www.linuxidc.com ~]# quotaoff [-ug] [/mount_point]
选项与参数&#xff1a;
-a &#xff1a;全部的filesystem的quota都关闭
-u &#xff1a;仅针对后面接的那个/mount_point关闭user quota
-g &#xff1a;仅针对后面接的那个/mount_point关闭group quota
edquota &#xff1a;编辑账号/群组的限值与宽限时间
[root&#64;www.linuxidc.com ~]# edquota [-u username] [-g groupname]
[root&#64;www.linuxidc.com ~]# edquota -t <&#61;&#61;修改宽限时间
[root&#64;www.linuxidc.com ~]# edquota -p 范本账号-u新账号
选项与参数&#xff1a;
-u &#xff1a;后面接账号名称。可以进入quota的编辑画面(vi)去设定username的限制值
-g &#xff1a;后面接组名。可以进入quota的编辑画面(vi)去设定groupname的限制值
-t &#xff1a;可以修改宽限时间
-p &#xff1a;复制范本。那个模板账号为已经存在并且已设定好quota的使用者
[root&#64;www.linuxidc.com ~]# edquota -u quota1
Disk quotas for user quota1 (uid 710):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 80 0 0 10 0 0
实作Quota流程-4&#xff1a;Quota限制值的报表
quota &#xff1a;单一用户的quota报表
[root&#64;www.linuxidc.com ~]# quota [-uvs] [username]
[root&#64;www.linuxidc.com ~]# quota [-gvs] [groupname]
选项与参数&#xff1a;
-u &#xff1a;后面可以接 username &#xff0c;表示显示出该用户的quota限制值&#xff0c;若不接username&#xff0c;表示显示执行者的
-g &#xff1a;后面可接groupname&#xff0c;表示显示出该群组的quota限制值
-v &#xff1a;显示每个用户在filesystem的quota值
-s &#xff1a;使用1024为倍数杢挃定单位&#xff0c;会显示如M之类的单位
[root&#64;www.linuxidc.com ~]# quota -uvs quota1 quota2
[root&#64;www.linuxidc.com ~]# quota -gvs quotagroup
repquota &#xff1a;针对文件系统的限额做报表
[root&#64;www.linuxidc.com ~]# repquota -a [-vugs]
选项与参数&#xff1a;
-a &#xff1a;直接到/etc/mtab搜寻具有quota标志的filesystem&#xff0c;并报告quota的结果
-v &#xff1a;输出的数据将汗有filesystem相关的详细信息
-u &#xff1a;显示出用户的quota限值
-g &#xff1a;显示出个别群组的quota限值
-s &#xff1a;使用M, G为单位显示结果
[root&#64;www.linuxidc.com ~]# repquota -auvs
实作Quota流程-5&#xff1a;测试与管理
用户测试&#xff1a;
[myquota1&#64;www ~]# dd if&#61;/dev/zero of&#61;bigfile bs&#61;1M count&#61;270
看什么时候达到报警&#xff0c;什么达到阀值等
用报表方式查看
[root&#64;www.linuxidc.com ~]# repquota -auv
warnquota &#xff1a;对超过限额者发出警告信
[root&#64;www.linuxidc.com ~]# vi /etc/warnquota.conf
SUBJECT &#61; NOTE: You are exceeding your allocated disk space limits <&#61;&#61;第10行
CC_TO &#61; "root&#64;localhost" <&#61;&#61;第11行
MESSAGE &#61; Your disk usage has exceeded the agreed limits\ <&#61;&#61;第21行
on this server|Please delete any unnecessary files on following filesystems:|
SIGNATURE &#61; root&#64;localhost <&#61;&#61;第25行
# 可以将他改成如下的模样啊&#xff01;
SUBJECT &#61; 注意&#xff1a;你在本系统上拥有的档案容量已经超过最大容许限额
CC_TO &#61; "root&#64;localhost" <&#61;&#61;除非你要寄给其他人&#xff0c;否则这个顷目可以不改
MESSAGE &#61; 你的磁盘容量已经超过本机的容许限额&#xff0c;|\
请在如下的文件系统中&#xff0c;删除不必要的档案&#xff1a;|
SIGNATURE &#61; 你的系统管理员 (root&#64;localhost)
# 在MESSAGE内的 | 代表断行的意思&#xff0c;反斜杠则代表连接下一行
Subject: 注意&#xff1a;你在本系统上拥有的档案容量已经超过最大容许限额
To: quota1&#64;www.pica.com
Cc: root&#64;www.linuxidc.com.pica.com
setquota &#xff1a;直接于指令中设定quota限额
[root&#64;www.linuxidc.com ~]# setquota [-u|-g] 名称 block(soft) block(hard) inode(soft) inode(hard) 文件系统
观察原始的quota5限值&#xff0c;并给予soft/hard分别为100000/200000
[root&#64;www.linuxidc.com ~]# quota -uv quota5
等价于&#61;&#61;
[root&#64;www.linuxidc.com ~]# setquota -u quota5 100000 200000 0 0 /home
逻辑滚动条管理员(Logical Volume Manager)
Physical Volume &#61;&#61; PV 实体滚动条
PV 阶段
pvcreate &#xff1a;将实体partition建立成为PV
pvscan &#xff1a;搜寻目前系统里面任何具有PV的磁盘
pvdisplay &#xff1a;显示出目前系统上面的PV状态
pvremove &#xff1a;将PV属性移除&#xff0c;让该partition且具有PV属性
[root&#64;www.linuxidc.com ~]# pvcreate /dev/hda{6,7,8,9}
[root&#64;www.linuxidc.com ~]# pvscan
[root&#64;www.linuxidc.com ~]# pvdisplay
Volume Group VG &#61;&#61; 滚动条群组
VG 阶段
vgcreate &#xff1a;就是主要建立VG的指令
vgscan &#xff1a;搜寻系统上面是否有VG存在
vgdisplay &#xff1a;显示目前系统上面的VG状态
vgextend &#xff1a;在VG内增加额外的PV
vgreduce &#xff1a;在VG内移除PV
vgchange &#xff1a;设定VG是否启动(active)
vgremove &#xff1a;删除一个VG
[root&#64;www.linuxidc.com ~]# vgcreate [-s N[mgt]] VG名称 PV名称
选项与参数&#xff1a;
-s &#xff1a;后面接PE的大小(size),单位可以是m,g,t(大小写均可)
[root&#64;www.linuxidc.com ~]# vgcreate -s 16M jinqvg /dev/hda{6,7,8}
Volume group "jinqvg" successfully created
[root&#64;www.linuxidc.com ~]# vgscan
[root&#64;www.linuxidc.com ~]# vgdisplay
将剩余的PV(/dev/hda9)丢给jinqvg
[root&#64;www.linuxidc.com ~]# vgextend jinqvg /dev/hda9
[root&#64;www.linuxidc.com ~]# vgdisplay
Physical Extend PE &#61;&#61; 实体延伸区块
Logical Volume LV &#61;&#61; 逻辑滚动条
LV 阶段
lvcreate &#xff1a;建立LV啦
lvscan &#xff1a;查询系统上面的LV
lvdisplay &#xff1a;显示系统上面的LV状态
lvextend &#xff1a;在LV里面增加容量
lvreduce &#xff1a;在LV里面减少容量
lvremove &#xff1a;删除一个LV
lvresize &#xff1a;对LV进行容量大小的调整
[root&#64;www.linuxidc.com ~]# lvcreate [-L N[mgt]] [-n LV名称] VG名称
[root&#64;www.linuxidc.com ~]# lvcreate [-l N] [-n LV名称] VG名称
选项与参数&#xff1a;
-L &#xff1a;后面接容量,容量的单位可以是M,G,T等,要注意的是,最小单位为PE
-l &#xff1a;后面可以接PE的『个数』,而不是数量
-n &#xff1a;后面接的就是LV的名称
将整个jinqvg通通分配给jinqlv
[root&#64;www.linuxidc.com ~]# lvcreate -l 356 -n jinqlv jinqvg 或
[root&#64;www.linuxidc.com ~]# lvcreate -L 5.56G -n jinqlv jinqvg
[root&#64;www.linuxidc.com ~]# ll /dev/jinqvg/jinqlv
[root&#64;www.linuxidc.com ~]# lvdisplay
三、文件系统阶段
#1. 格式化、挂载与观察我们的LV
[root&#64;www.linuxidc.com ~]# mkfs -t ext3 /dev/jinqvg/jinqlv
[root&#64;www.linuxidc.com ~]# mkdir /mnt/lvm
[root&#64;www.linuxidc.com ~]# mount /dev/jinqvg/jinqlv /mnt/lvm
[root&#64;www.linuxidc.com ~]# df
#2. 放大LV容量
1. 用fdisk设定新的具有8e system ID的partition
2. 利用pvcreate建置PV
3. 利用vgextend将PV加入我们的jinqvg
4. 利用lvresize将新加入的PV内的PE加入jinqlv中
5. 透过resize2fs将文件系统的容量确实增加
[root&#64;www.linuxidc.com ~]# fdisk /dev/hda
[root&#64;www.linuxidc.com ~]# pvcreate /dev/hda10
[root&#64;www.linuxidc.com ~]# pvscan
[root&#64;www.linuxidc.com ~]# vgextend jinqvg /dev/hda10
[root&#64;www.linuxidc.com ~]# vgdisplay
[root&#64;www.linuxidc.com ~]# lvresize -l &#43;179 /dev/jinqvg/jinqlv
[root&#64;www.linuxidc.com ~]# lvdisplay
[root&#64;www.linuxidc.com ~]# dumpe2fs /dev/jinqvg/jinqlv
[root&#64;www.linuxidc.com ~]# resize2fs [-f] [device] [size]
选项与参数&#xff1a;
-f &#xff1a;强制进行resize的动作
[device]&#xff1a;装置的文件名
[size] &#xff1a;可以加也可以不加。如果加上size的话&#xff0c;那么就必项要给予一个单位&#xff0c;譬如M,G等等
完整的将LV的容量扩充到整个filesystem
[root&#64;www.linuxidc.com ~]# resize2fs /dev/jinqvg/jinqlv
结论&#xff1a;扩充LV时不需要umount lv,而且新扩充LV时&#xff0c;数据不会丢失。
卸载要从lv开始