您的位置:首页 > 运维架构 > Linux

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

2011-03-01 18:10 726 查看
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开始
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: