Linux

    技术2022-05-20  45

    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 ~]# 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 ~]# df -h /home Filesystem Size Used Avail Use% Mounted on /dev/hda3 4.8G 740M 3.8G 17% /home            <===/home 确实是独立的 使用如下的方式来手动加入quota的支持 [root@www ~]# mount -o remount,usrquota,grpquota /home [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw,usrquota,grpquota) 当你重新挂载时,系统会同步更新/etc/mtab这个档案,所以你必须要确定/etc/mtab已经加入usrquota, grpquota的支持到你所想要设定的文件系统中。 [root@www ~]# vi /etc/fstab LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 [root@www ~]# umount /home [root@www ~]# mount -a [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw,usrquota,grpquota) 实作Quota流程-2:建立quota记录文件 其实Quota是透过分析整个文件系统中,每个使用者(群组)拥有的档案总数与总容量,再将这些数据记录在该文件系统的最顶层目录,然后在该记录文件中再使用每个账号(或群组)的限制值去规范磁盘使用量 quotacheck :扫瞄文件系统并建立Quota的记录文件 [root@www ~]# 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 ~]# quotaon [-avug] [root@www ~]# quotaon [-vug] [/mount_point] 选项与参数: -u :针对使用者启动quota(aquota.user) -g :针对群组启动quota(aquota.group) -v :显示启动过程的相关讯息 -a :根据/etc/mtab内的filesystem设定启动有关的quota,若不加-a的话,则后面需加上特定的那个filesystem [root@www ~]# quotaon -auvg /dev/hda3 [/home]: group quotas turned on /dev/hda3 [/home]: group quotas turned on quotaoff :关闭quota的朋务 [root@www ~]# quotaoff [-a] [root@www ~]# quotaoff [-ug] [/mount_point] 选项与参数: -a :全部的filesystem的quota都关闭 -u :仅针对后面接的那个/mount_point关闭user quota -g :仅针对后面接的那个/mount_point关闭group quota edquota :编辑账号/群组的限值与宽限时间 [root@www ~]# edquota [-u username] [-g groupname] [root@www ~]# edquota -t <==修改宽限时间 [root@www ~]# edquota -p 范本账号-u新账号 选项与参数: -u :后面接账号名称。可以进入quota的编辑画面(vi)去设定username的限制值 -g :后面接组名。可以进入quota的编辑画面(vi)去设定groupname的限制值 -t :可以修改宽限时间 -p :复制范本。那个模板账号为已经存在并且已设定好quota的使用者 [root@www ~]# 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 ~]# quota [-uvs] [username] [root@www ~]# quota [-gvs] [groupname] 选项与参数: -u :后面可以接 username ,表示显示出该用户的quota限制值,若不接username,表示显示执行者的 -g :后面可接groupname,表示显示出该群组的quota限制值 -v :显示每个用户在filesystem的quota值 -s :使用1024为倍数杢挃定单位,会显示如M之类的单位 [root@www ~]# quota -uvs quota1 quota2 [root@www ~]# quota -gvs quotagroup repquota :针对文件系统的限额做报表 [root@www ~]# repquota -a [-vugs] 选项与参数: -a :直接到/etc/mtab搜寻具有quota标志的filesystem,并报告quota的结果 -v :输出的数据将汗有filesystem相关的详细信息 -u :显示出用户的quota限值 -g :显示出个别群组的quota限值 -s :使用M, G为单位显示结果 [root@www ~]# repquota -auvs 实作Quota流程-5:测试与管理 用户测试: [myquota1@www ~]# dd if=/dev/zero of=bigfile bs=1M count=270 看什么时候达到报警,什么达到阀值等 用报表方式查看 [root@www ~]# repquota -auv warnquota :对超过限额者发出警告信 [root@www ~]# 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.pica.com setquota :直接于指令中设定quota限额 [root@www ~]# setquota [-u|-g] 名称 block(soft) block(hard) inode(soft) inode(hard) 文件系统 观察原始的quota5限值,并给予soft/hard分别为100000/200000 [root@www ~]# quota -uv quota5 等价于== [root@www ~]# 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 ~]# pvcreate /dev/hda{6,7,8,9} [root@www ~]# pvscan [root@www ~]# pvdisplay Volume Group VG == 滚动条群组 VG 阶段 vgcreate     :就是主要建立VG的指令 vgscan         :搜寻系统上面是否有VG存在 vgdisplay :显示目前系统上面的VG状态 vgextend     :在VG内增加额外的PV vgreduce     :在VG内移除PV vgchange     :设定VG是否启动(active) vgremove     :删除一个VG [root@www ~]# vgcreate [-s N[mgt]] VG名称 PV名称 选项与参数: -s :后面接PE的大小(size),单位可以是m,g,t(大小写均可) [root@www ~]# vgcreate -s 16M jinqvg /dev/hda{6,7,8} Volume group "jinqvg" successfully created [root@www ~]# vgscan [root@www ~]# vgdisplay 将剩余的PV(/dev/hda9)丢给jinqvg [root@www ~]# vgextend jinqvg /dev/hda9 [root@www ~]# vgdisplay Physical Extend PE == 实体延伸区块 Logical Volume LV == 逻辑滚动条 LV 阶段 lvcreate     :建立LV啦 lvscan         :查询系统上面的LV lvdisplay :显示系统上面的LV状态 lvextend     :在LV里面增加容量 lvreduce     :在LV里面减少容量 lvremove     :删除一个LV lvresize     :对LV进行容量大小的调整 [root@www ~]# lvcreate [-L N[mgt]] [-n LV名称] VG名称 [root@www ~]# lvcreate [-l N] [-n LV名称] VG名称 选项与参数: -L :后面接容量,容量的单位可以是M,G,T等,要注意的是,最小单位为PE -l :后面可以接PE的『个数』,而不是数量 -n :后面接的就是LV的名称 将整个jinqvg通通分配给jinqlv [root@www ~]# lvcreate -l 356 -n jinqlv jinqvg    或 [root@www ~]# lvcreate -L 5.56G -n jinqlv jinqvg [root@www ~]# ll /dev/jinqvg/jinqlv [root@www ~]# lvdisplay 三、文件系统阶段 #1. 格式化、挂载与观察我们的LV [root@www ~]# mkfs -t ext3 /dev/jinqvg/jinqlv [root@www ~]# mkdir /mnt/lvm [root@www ~]# mount /dev/jinqvg/jinqlv /mnt/lvm [root@www ~]# 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 ~]# fdisk /dev/hda [root@www ~]# pvcreate /dev/hda10 [root@www ~]# pvscan [root@www ~]# vgextend jinqvg /dev/hda10 [root@www ~]# vgdisplay [root@www ~]# lvresize -l +179 /dev/jinqvg/jinqlv [root@www ~]# lvdisplay [root@www ~]# dumpe2fs /dev/jinqvg/jinqlv [root@www ~]# resize2fs [-f] [device] [size] 选项与参数: -f             :强制进行resize的动作 [device]:装置的文件名 [size]     :可以加也可以不加。如果加上size的话,那么就必项要给予一个单位,譬如M,G等等 完整的将LV的容量扩充到整个filesystem [root@www ~]# resize2fs /dev/jinqvg/jinqlv 结论:扩充LV时不需要umount lv,而且新扩充LV时,数据不会丢失。 卸载要从lv开始


    最新回复(0)