Linux磁盘配额(Quota)与进阶文件系统管理


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.bkjia.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.bkjia.com ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/hda3 4.8G 740M 3.8G 17% /home            <===/home 确实是独立的
使用如下的方式来手动加入quota的支持
[root@www.bkjia.com ~]# mount -o remount,usrquota,grpquota /home
[root@www.bkjia.com ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)
当你重新挂载时,系统会同步更新/etc/mtab这个档案,所以你必须要确定/etc/mtab已经加入usrquota, grpquota的支持到你所想要设定的文件系统中。
[root@www.bkjia.com ~]# vi /etc/fstab
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
[root@www.bkjia.com ~]# umount /home
[root@www.bkjia.com ~]# mount -a
[root@www.bkjia.com ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)

实作Quota流程-2:建立quota记录文件
其实Quota是透过分析整个文件系统中,每个使用者(群组)拥有的档案总数与总容量,再将这些数据记录在该文件系统的最顶层目录,然后在该记录文件中再使用每个账号(或群组)的限制值去规范磁盘使用量
quotacheck :扫瞄文件系统并建立Quota的记录文件
[root@www.bkjia.com ~]# quotacheck [-avugfM] [/mount_point]
选项与参数:
-a :扫瞄所有在/etc/mtab内,含有quota支持的filesystem
-u :针对用户扫瞄档案与目录的使用情况,会建立aquota.user
-g :针对群组扫瞄档案与目录的使用情况,会建立aquota.group
-v :显示扫瞄过程的信息
-f :强制扫瞄文件系统,并写入新的quota配置文件
-M :强制以读写的方式扫瞄文件系统,只有在特殊情况下才会使用
quotacheck 的选顷你只要记得『 -avug 』一起下达即可

实作Quota流程-3:Quota启劢、关闭与限制值设定
quotaon :启动quota的服务
[root@www.bkjia.com ~]# quotaon [-avug]
[root@www.bkjia.com ~]# quotaon [-vug] [/mount_point]
选项与参数:
-u :针对使用者启动quota(aquota.user)
-g :针对群组启动quota(aquota.group)
-v :显示启动过程的相关讯息
-a :根据/etc/mtab内的filesystem设定启动有关的quota,若不加-a的话,则后面需加上特定的那个filesystem
[root@www.bkjia.com ~]# quotaon -auvg
/dev/hda3 [/home]: group quotas turned on
/dev/hda3 [/home]: group quotas turned on
quotaoff :关闭quota的朋务
[root@www.bkjia.com ~]# quotaoff [-a]
[root@www.bkjia.com ~]# quotaoff [-ug] [/mount_point]
选项与参数:
-a :全部的filesystem的quota都关闭
-u :仅针对后面接的那个/mount_point关闭user quota
-g :仅针对后面接的那个/mount_point关闭group quota
edquota :编辑账号/群组的限值与宽限时间
[root@www.bkjia.com ~]# edquota [-u username] [-g groupname]
[root@www.bkjia.com ~]# edquota -t <==修改宽限时间
[root@www.bkjia.com ~]# edquota -p 范本账号-u新账号
选项与参数:
-u :后面接账号名称。可以进入quota的编辑画面(vi)去设定username的限制值
-g :后面接组名。可以进入quota的编辑画面(vi)去设定groupname的限制值
-t :可以修改宽限时间
-p :复制范本。那个模板账号为已经存在并且已设定好quota的使用者
[root@www.bkjia.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:Quota限制值的报表
quota :单一用户的quota报表
[root@www.bkjia.com ~]# quota [-uvs] [username]
[root@www.bkjia.com ~]# quota [-gvs] [groupname]
选项与参数:
-u :后面可以接 username ,表示显示出该用户的quota限制值,若不接username,表示显示执行者的
-g :后面可接groupname,表示显示出该群组的quota限制值
-v :显示每个用户在filesystem的quota值
-s :使用1024为倍数杢挃定单位,会显示如M之类的单位
[root@www.bkjia.com ~]# quota -uvs quota1 quota2
[root@www.bkjia.com ~]# quota -gvs quotagroup
repquota :针对文件系统的限额做报表
[root@www.bkjia.com ~]# repquota -a [-vugs]
选项与参数:
-a :直接到/etc/mtab搜寻具有quota标志的filesystem,并报告quota的结果
-v :输出的数据将汗有filesystem相关的详细信息
-u :显示出用户的quota限值
-g :显示出个别群组的quota限值
-s :使用M, G为单位显示结果
[root@www.bkjia.com ~]# repquota -auvs

实作Quota流程-5:测试与管理
用户测试:
[myquota1@www ~]# dd if=/dev/zero of=bigfile bs=1M count=270
看什么时候达到报警,什么达到阀值等
用报表方式查看
[root@www.bkjia.com ~]# repquota -auv
warnquota :对超过限额者发出警告信
[root@www.bkjia.com ~]# vi /etc/warnquota.conf
SUBJECT = NOTE: You are exceeding your allocated disk space limits <==第10行
CC_TO = "root@localhost" <==第11行
MESSAGE = Your disk usage has exceeded the agreed limits\ <==第21行
on this server|Please delete any unnecessary files on following filesystems:|
SIGNATURE = root@localhost <==第25行
# 可以将他改成如下的模样啊!
SUBJECT = 注意:你在本系统上拥有的档案容量已经超过最大容许限额
CC_TO = "root@localhost" <==除非你要寄给其他人,否则这个顷目可以不改
MESSAGE = 你的磁盘容量已经超过本机的容许限额,|\
                    请在如下的文件系统中,删除不必要的档案:|
SIGNATURE = 你的系统管理员 (root@localhost)
# 在MESSAGE内的 | 代表断行的意思,反斜杠则代表连接下一行
Subject: 注意:你在本系统上拥有的档案容量已经超过最大容许限额
To: quota1@www.pica.com
Cc: root@www.bkjia.com.pica.com
setquota :直接于指令中设定quota限额
[root@www.bkjia.com ~]# setquota [-u|-g] 名称 block(soft) block(hard) inode(soft) inode(hard) 文件系统
观察原始的quota5限值,并给予soft/hard分别为100000/200000
[root@www.bkjia.com ~]# quota -uv quota5
等价于==
[root@www.bkjia.com ~]# setquota -u quota5 100000 200000 0 0 /home


逻辑滚动条管理员(Logical Volume Manager)
Physical Volume == PV 实体滚动条
PV 阶段
pvcreate     :将实体partition建立成为PV
pvscan         :搜寻目前系统里面任何具有PV的磁盘
pvdisplay :显示出目前系统上面的PV状态
pvremove     :将PV属性移除,让该partition且具有PV属性
[root@www.bkjia.com ~]# pvcreate /dev/hda{6,7,8,9}
[root@www.bkjia.com ~]# pvscan
[root@www.bkjia.com ~]# pvdisplay
Volume Group VG == 滚动条群组
VG 阶段
vgcreate     :就是主要建立VG的指令
vgscan         :搜寻系统上面是否有VG存在
vgdisplay :显示目前系统上面的VG状态
vgextend     :在VG内增加额外的PV
vgreduce     :在VG内移除PV
vgchange     :设定VG是否启动(active)
vgremove     :删除一个VG
[root@www.bkjia.com ~]# vgcreate [-s N[mgt]] VG名称 PV名称
选项与参数:
-s :后面接PE的大小(size),单位可以是m,g,t(大小写均可)
[root@www.bkjia.com ~]# vgcreate -s 16M jinqvg /dev/hda{6,7,8}
Volume group "jinqvg" successfully created
[root@www.bkjia.com ~]# vgscan
[root@www.bkjia.com ~]# vgdisplay
将剩余的PV(/dev/hda9)丢给jinqvg
[root@www.bkjia.com ~]# vgextend jinqvg /dev/hda9
[root@www.bkjia.com ~]# vgdisplay
Physical Extend PE == 实体延伸区块
Logical Volume LV == 逻辑滚动条
LV 阶段
lvcreate     :建立LV啦
lvscan         :查询系统上面的LV
lvdisplay :显示系统上面的LV状态
lvextend     :在LV里面增加容量
lvreduce     :在LV里面减少容量
lvremove     :删除一个LV
lvresize     :对LV进行容量大小的调整
[root@www.bkjia.com ~]# lvcreate [-L N[mgt]] [-n LV名称] VG名称
[root@www.bkjia.com ~]# lvcreate [-l N] [-n LV名称] VG名称
选项与参数:
-L :后面接容量,容量的单位可以是M,G,T等,要注意的是,最小单位为PE
-l :后面可以接PE的『个数』,而不是数量
-n :后面接的就是LV的名称
将整个jinqvg通通分配给jinqlv
[root@www.bkjia.com ~]# lvcreate -l 356 -n jinqlv jinqvg    或
[root@www.bkjia.com ~]# lvcreate -L 5.56G -n jinqlv jinqvg
[root@www.bkjia.com ~]# ll /dev/jinqvg/jinqlv
[root@www.bkjia.com ~]# lvdisplay

三、文件系统阶段
#1. 格式化、挂载与观察我们的LV
[root@www.bkjia.com ~]# mkfs -t ext3 /dev/jinqvg/jinqlv
[root@www.bkjia.com ~]# mkdir /mnt/lvm
[root@www.bkjia.com ~]# mount /dev/jinqvg/jinqlv /mnt/lvm
[root@www.bkjia.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@www.bkjia.com ~]# fdisk /dev/hda
[root@www.bkjia.com ~]# pvcreate /dev/hda10
[root@www.bkjia.com ~]# pvscan
[root@www.bkjia.com ~]# vgextend jinqvg /dev/hda10
[root@www.bkjia.com ~]# vgdisplay
[root@www.bkjia.com ~]# lvresize -l +179 /dev/jinqvg/jinqlv
[root@www.bkjia.com ~]# lvdisplay
[root@www.bkjia.com ~]# dumpe2fs /dev/jinqvg/jinqlv
[root@www.bkjia.com ~]# resize2fs [-f] [device] [size]
选项与参数:
-f             :强制进行resize的动作
[device]:装置的文件名
[size]     :可以加也可以不加。如果加上size的话,那么就必项要给予一个单位,譬如M,G等等
完整的将LV的容量扩充到整个filesystem
[root@www.bkjia.com ~]# resize2fs /dev/jinqvg/jinqlv
结论:扩充LV时不需要umount lv,而且新扩充LV时,数据不会丢失。
卸载要从lv开始

相关内容