概念:
- Quota 的一般用途:
- 针对 WWW server ,例如:每个人的网页空间的容量限制!
- 针对 mail server,例如:每个人的邮件空间限制。
- 针对 file server,例如:每个人最大的可用网络硬盘空间 (教学环境中最常见!)
- 限制某一群组所能使用的最大磁盘配额 (使用群组限制):
- 限制某一用户的最大磁盘配额 (使用用户限制):
- 以 Link 的方式,来使邮件可以作为限制的配额 (更改 /var/spool/mail 这个路径):直接使用 Link 的方式指向 /home (或者其他已经做好的 quota 磁盘),这通常是用在原本磁盘分区的规划不好,但是却又不想要更动原有主机架构的情况中啊!
- Quota 的使用限制
- 仅能针对整个 filesystem:不能针对『某个目录』来进行 Quota 的设计
- 核心必项支持 quota :
- Quota 的记录文件
- 只对一般身份使用者有效:
- Quota 的规范设定项目:
- 针对整个 filesystem 的限制项目主要分为底下几个部分:
- 容量限制或档案数量限制 (block 或 inode):
- 限制 inode 用量:可以管理使用者可以建立的『档案数量』;
- 限制 block 用量:管理用户磁盘容量的限制,较常见为这种方式。
- 柔性劝导与硬性规定 (soft/hard):
- hard:表示使用者的用量绝对不会超过这个限制值
- soft:表示使用者在低于 soft 限值时,可以正常使用磁盘,但若超过 soft 且低于 hard 的限值,每次用户登入系统时,系统会主动发出磁盘即将爆满的警告讯息, 且会给予一个宽限时间,(grace time)。不过,若使用者在宽限时间倒数期间就将容量再次降低于 soft 限值之下,(grace time)。不过,若使用者在宽限时间倒数期间就将容量再次降低于 soft 限值之下,
- 会倒数计时的宽限时间 (grace time):
- 容量限制或档案数量限制 (block 或 inode):
- 针对整个 filesystem 的限制项目主要分为底下几个部分:
- 软件磁盘阵列 (Software RAID)
- RAID-0 (等量模式, stripe):效能最佳。 数据平分放在N个磁盘中。(最少两块磁盘)
- RAID-1 (映像模式, mirror):完整备份。 数据拷贝一份放在其他磁盘中。(最少两块磁盘)
- RAID 0+1,RAID 1+0。 数据先平分再拷贝或者先拷贝再平分。(最少四块磁盘)
- RAID 5:效能与数据备份的均衡考虑。 数据平分在N-1颗磁盘上,另一个磁盘记录检验码。(最少三块磁盘)
- Spare Disk:预备磁盘的功能:
- spare disk 就是一颗或几颗没有包含在原本磁盘阵列等级中的磁盘,这颗磁盘平时并不会被磁盘阵列所使用, 当磁盘阵列有仸何磁盘损毁时,则这颗 spare disk 会被主动的拉进磁盘阵列中,并将坏掉的那颗硬盘移出磁盘阵列! 然后立即重建数据系统。
- 磁盘阵列的优点
- 数据安全与可靠性:指的并非信息安全,而是当硬件 (指磁盘) 损毁时,数据是否还能够安全的救援或使用之意;
- 读写效能:例如 RAID 0 可以加强读写效能,让你的系统 I/O 部分得以改善;
- 容量:可以让几颗磁盘组合起来,故单一文件系统可以有相当大的容量。
- 逻辑滚动条管理员 (Logical Volume Manager)
- LVM 的重点在于『可以弹性的调整 filesystem 的容量!』而并非在于效能与数据保全上面,LVM 可以整合几个实体 partition 在一起, 让这些 partitions 看起来就像是一个磁盘一样!而且,还可以在未来新增或移除其他的实体 partition 到这个 LVM 管理的磁盘当中。
- 什么是 LVM: PV, PE, VG, LV
- Physical Volume, PV, 实体滚动条
- 我们实际的 partition 需要调整系统标识符 (system ID) 成为 8e (LVM 的标识符),然后再经过pvcreate 的指令将他转成 LVM 最底层的实体滚动条 (PV) ,之后才能够将这些 PV 加以利用! 调整 system ID 的方是就是透过 fdisk。
- Volume Group, VG, 滚动条群组
- 所谓的 LVM 大磁盘就是将讲多 PV 整合成这个 VG,所以 VG 就是 LVM 组合起来的大磁盘!VG 最多仅能包含 65534 个 PE 而已。 如果使用 LVM 预设的参数,则一个 VG 最大可达 256GB 的容量。
- Physical Extend, PE, 实体延伸区块
- LVM 预设使用 4MB 的 PE 区块,而 LVM 的 VG 最多仅能含有 65534 个 PE ,因此预设的 LVM VG 会有4M*65534/(1024M/G)=256G。所以调整 PE 会影响到 VG 的最大容量。
- Logical Volume, LV, 逻辑滚动条
- 最终的 VG 还会被切成 LV,这个 LV 就是最后可以被格式化使用的类似分割槽。
- Physical Volume, PV, 实体滚动条
- LVM系统快照
- 快照就是将当时的系统信息记录下来,就好像照相记录一般! 未来若有任何资料更动了,则原始资料会被搬移到快照区,没有被更动的区域则由快照区与文件系统共享。首先,由于快照区与原本的 LV 共享很多 PE 区块,因此快照区与被快照的 LV 必项要在同一个 VG 上头。
实例:
- quota
- 实作 Quota 流程-1:文件系统支援
- df -h 目录 --------查看目录是否为独立文件系统
- mount | grep 目录-------查看目录挂载的情况
- mount -o remount,usrquota,grpquota /home
- 重新挂载,添加磁盘配额功能-----此动作将两个挂载属性添加在/etc/mtab,一次性的
- vi /etc/fstab 写入/etc/fstab,每次开机都生效
- LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
- umount /home
- mount -a
- 实作 Quota 流程-2:建立 quota 记录文件
- quotacheck [-avugfM] [/mount_point] --------------扫瞄文件系统并建立 Quota 的记录文件
- -a :扫瞄所有在 /etc/mtab 内,含有 quota 支持的 filesystem,加上此参数后,/mount_point 可不必写。
- -u :针对用户扫瞄档案与目录的使用情况,会建立 aquota.user
- -g :针对群组扫瞄档案与目录的使用情况,会建立 aquota.group
- -v :显示扫瞄过程的信息;
- -f :强制扫瞄文件系统,并写入新的 quota 配置文件 (危险)
- -M :强制以读写的方式扫瞄文件系统,只有在特殊情况下才会使用。
- quotacheck 的选顷你只要记得『 -avug 』一起下达即可!---出现提示权限不足时,关闭selinux ,命令为:setenforce 0
- quotacheck [-avugfM] [/mount_point] --------------扫瞄文件系统并建立 Quota 的记录文件
- 实作 Quota 流程-3:Quota 启动、 关闭与限制值设定
- quotaon [-avug] ------------------启动quota的服务
- quotaon [-vug] [/mount_point]
- -u :针对使用者启动 quota (aquota.user)
- -g :针对群组启动 quota (aquota.group)
- -v :显示启动过程的相关讯息;
- -a :根据 /etc/mtab 内的 filesystem 设定启动有关的 quota。
- quotaon 启用一次后,系统重启会读取/etc/rc.d/rc.sysinit初始化脚本,会自动下达
- ------------------------------------------------------
- quotaoff [-a] ------------------关闭quota服务
- quotaoff [-ug] [/mount_point]
- -a :全部的 filesystem 的 quota 都关闭 (根据 /etc/mtab)
- -u :仅针对后面接的那个 /mount_point 关闭 user quota
- -g :仅针对后面接的那个 /mount_point 关闭 group quota
- ------------------------------------------------------
- quotaoff [-ug] [/mount_point]
- edquota [-u username] [-g groupname] -----------编辑账号/群组的限值与宽限时间
- edquota -t <==修改宽限时间 -----------前提是用户有该目录的读写权限
- edquota -p 范本账号 -u 新账号
- -u :后面接账号名称。可以进入 quota 的编辑画面 (vi) 去设定 username 的限制值;
- -g :后面接组名。可以进入 quota 的编辑画面 (vi) 去设定 groupname 的限制值;
- -t :可以修改宽限时间。
- -p :复制范本。那个 模板账号 为已经存在并且已设定好 quota 的使用者,
- 范例:[root@www ~]# edquota -u myquota1
- 七个字段分别的意义为: 0表示不限制
- 文件系统 (filesystem):说明该限制值是针对哪个文件系统 (或 partition);
- 磁盘容量 (blocks):这个数值是 quota 自己算出来的,单位为 Kbytes,请不要更动他;
- soft:磁盘容量 (block) 的 soft 限制值,单位亦为 KB
- hard:block 的 hard 限制值,单位 KB;
- 档案数量 (inodes):这是 quota 自己算出来的,单位为个数,请不要更动他;
- soft:inode 的 soft 限制值;
- hard:inode 的 hard 限制值;
- 七个字段分别的意义为: 0表示不限制
- 实作 Quota 流程-4:Quota 限制值的报表
- quota [-uvs] [username] ----------单一用户的 quota 报表
- quota [-gvs] [groupname]
- -u :后面可以接 username ,表示显示出该用户的 quota 限制值。
- -g :后面可接 groupname ,表示显示出该群组的 quota 限制值。
- -v :显示每个用户在 filesystem 的 quota 值;
- -s :使用 1024 为倍数来指定单位,会显示如 M 之类的单位!
- repquota -a [-vugs] ---------针对文件系统的限额做报表
- -a :直接到 /etc/mtab 搜寻具有 quota 标志的 filesystem ,幵报告 quota 的结果;
- -v :输出的数据将含有 filesystem 相关的绅部信息;
- -u :显示出用户的 quota 限值 (这是默讣值);
- -g :显示出个别群组的 quota 限值。
- -s :使用 M, G 为单位显示结果。
- 实作 Quota 流程-5:测试与管理 -------------------测试时切记切换到限制用户登录状态下!!
- dd if=/dev/zero of=bigfile bs=1M count=270
- repquota -auv
- dd if=/dev/zero of=bigfile2 bs=1M count=300 hda3: write failed, user block limit reached.
- du -sk
- repquota -au
- ------------------------------------------------------------------------------
- warnquota --------对超过限额者发出警告信
- 依据 /etc/warnquota.conf 的设定,然后找出目前系统上面 quota 用量超过 soft (就是有 grace time出现的那些家伙) 的账号,透过 email 的功能将警告信件发送到用户的电子邮件信箱。
- vi /etc/warnquota.conf-----------自定义邮件提示内容
- vi /etc/cron.daily/warnquota-----设置每天自动执行
- 添加 /usr/sbin/warnquota
- [root@www ~]# chmod 755 /etc/cron.daily/warnquota
- setquota :直接于指令中设定 quota 限额
- setquota [-u|-g] 名称 block(soft) block(hard) inode(soft) inode(hard) 文件系统
- 范例:
- [root@www ~]# setquota -u myquota5 100000 200000 0 0 /home
- 不更动既有系统的 quota 实例
- 让使用者的邮件信箱与家目录的整体磁盘使用量为固定
- 将 /var/spool/mail 这个目录完整的移动到 /home 底下;
- 利用 ln -s /home/mail /var/spool/mail 来建立链接数据;
- 将 /home 进行 quota 限额设定
- 让使用者的邮件信箱与家目录的整体磁盘使用量为固定
- 软件磁盘阵列的设定
- mdadm --detail /dev/md0 ----------查看磁盘阵列/dev/md0 信息
- mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N --level=[015] --spare-devices=N /dev/sdx /dev/hdx...
- --create :为建立 RAID 的选顷;
- --auto=yes :决定建立后面接的软件磁盘阵列装置,亦即 /dev/md0,/dev/md1..
- --raid-devices=N :使用几个磁盘 (partition) 作为磁盘阵列的装置
- --spare-devices=N :使用几个磁盘作为备用 (spare) 装置
- --level=[015] :设定这组磁盘阵列的等级。支持很多,不过建议只要用 0, 1, 5 即可
- --detail :后面所接的那个磁盘阵列装置的详细信息
- 实例:
- mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/hda{6,7,8,9,10}
- cat /proc/mdstat-------也可以查看
- 格式化与挂载使用 RAID
- mkfs -t ext3 /dev/md0
- mkdir /mnt/raid
- mount /dev/md0 /mnt/raid
- 仿真 RAID 错误的救援模式
- mdadm --manage /dev/md[0-9] [--add 装置] [--remove 装置] [--fail 装置]
- --add :会将后面的装置加入到这个 md 中!
- --remove :会将后面的装置由这个 md 中移除
- --fail :会将后面的装置设定成为出错的状态
- mdadm --manage /dev/md0 --fail /dev/hda8 假设8出错
- mdadm --manage /dev/md0 --add /dev/hda11 --remove /dev/hda8 加入新的移除错误的
- mdadm --manage /dev/md[0-9] [--add 装置] [--remove 装置] [--fail 装置]
- 开机自动启动 RAID 并自动挂载
- [root@www ~]# mdadm --detail /dev/md0 | grep -i
- uuid UUID : 7c60c049:57d60814:bd9a77f1:57e49c5b
- [root@www ~]# vi /etc/mdadm.conf -----------centos6.5 无
- ARRAY /dev/md0 UUID=7c60c049:57d60814:bd9a77f1:57e49c5b
- vi /etc/fstab
- /dev/md0 /mnt/raid ext3 defaults 1 2
- umount /dev/md0; mount -a
- 关闭软件 RAID(重要!) ----------进入/proc/partitions目录下查看raid装置名
- umount /dev/md0
- vi /etc/fstab
- /dev/md0 /mnt/raid ext3 defaults 1 2 删除或批注
- mdadm --stop /dev/md0
- vi /etc/mdadm.conf
- ARRAY /dev/md0 UUID=7c60c049:57d60814:bd9a77f1:57e49c5b 删除或批注
- LVM 实作流程
- PV 阶段
- pvcreate :将实体 partition 建立成为 PV;
- pvscan :搜寻目前系统里面任何具有 PV 的磁盘;
- pvdisplay :显示出目前系统上面的 PV 状态;
- pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性。
- 例:pvcreate /dev/hda{6,7,8,9}
- 如果因为使用过raid导致创建pv失败,请查看/proc/partitions档案内,raid装置号,然后使用mdadm -S 装置号将其删除
- VG 阶段
- vgcreate :建立 VG 的指令!
- vgscan :搜寻系统上面是否有 VG 存在?
- vgdisplay :显示目前系统上面的 VG 状态;
- vgextend :在 VG 内增加额外的 PV ;
- vgreduce :在 VG 内移除 PV;
- vgchange :设定 VG 是否启动 (active);
- vgremove :去除一个 VG 啊!
- 例:vgcreate [-s N[mgt]] VG名称 PV名称
- -s :后面接 PE 的大小 (size) ,单位可以是 m, g, t (大小写均可)
- 例:vgcreate [-s N[mgt]] VG名称 PV名称
- LV 阶段
- lvcreate :建立 LV !
- lvscan :查询系统上面的 LV ;
- lvdisplay :显示系统上面的 LV 状态啊!
- lvextend :在 LV 里面增加容量!
- lvreduce :在 LV 里面减少容量;
- lvremove :去除一个 LV !
- lvresize :对 LV 进行容量大小的调整!
- 例:lvcreate [-L N[mgt]] [-n LV名称] VG名称
- -L :后面接容量,容量的单位可以是 M,G,T 等,要注意的是,最小单位为 PE, 因此这个数量必项要是 PE 的倍数,若不相符,系统会自行计算最相近的容量
- -l :后面可以接 PE 的『个数』,而不是数量。若要这么做,得要自行计算 PE 数
- n :后面接的就是 LV 的名称啦!
- lvcreate -L 5.81G -n vbirdlv vbirdvg
- 例:lvcreate [-L N[mgt]] [-n LV名称] VG名称
- 文件系统阶段
- mkfs -t ext3 /dev/vbirdvg/vbirdlv <==注意 LV 全名!
- mkdir /mnt/lvm
- mount /dev/vbirdvg/vbirdlv /mnt/lvm
- df
- 放大 LV 容量
- 用 fdisk 设定新的具有 8e system ID 的 partition
- 利用 pvcreate 建置 PV
- 利用 vgextend 将 PV 加入我们的 vbirdvg
- 利用 lvresize 将新加入的 PV 内的 PE 加入 vbirdlv 中
- 透过 resize2fs 将文件系统的容量确实增加!
- resize2fs [-f] [device] [size]
- -f :强制进行 resize 的动作!
- [device]:装置的文件名;
- [size] :可以加也可以不加。如果加上 size 的话,那么就必项要给予一个单位, 譬如 M, G 等等。如果没有 size 的话,那么预设使用『整个 partition』 的容量来处理!
- resize2fs [-f] [device] [size]
- 缩小 LV 容量--------------与放大步骤相反
- umount /mnt/lvm ---------先卸载
- resize2fs /dev/vbirdvg/vbirdlv 6900M ------将文件系统容量缩小到
- e2fsck -f /dev/vbirdvg/vbirdlv ----------检查文件系统
- mount /dev/vbirdvg/vbirdlv /mnt/lvm -----挂载
- df /mnt/lvm --------查看大小
- lvresize -l -89 /dev/vbirdvg/vbirdlv ------抽离想要的分区
- lvdisplay 查看lv信息
- pvdisplay 确认想要移除的分区内的PE被移除
- pvmove /dev/hda6 /dev/hda10 移动PE 使想要抽离的分区内的PE全部成为free
- vgreduce vbirdvg /dev/hda6 将分区移除vg
- pvremove /dev/hda6 移除分区pv属性
- LVM快照
- 快照区的建立
- vgdisplay ---------查看VG剩余容量
- lvcreate -l 60 -s -n vbirdss /dev/vbirdvg/vbirdlv
- 利用 lvcreate 建立系统忚照区,我们取名为 vbirdss,且给予 60 个 PE
- -s 的选顷!代表是 snapshot 忚照功能之意!
- mkdir /mnt/snapshot
- mount /dev/vbirdvg/vbirdss /mnt/snapshot
- df
- umount /mnt/snapshot
- 利用忚照区复原系统
- mkdir -p /backups <==确认真的有这个目录!
- cd /mnt/snapshot ---------进入快照区目录
- tar -jcv -f /backups/lvm.tar.bz2 * ----------备份快照区所有资料 即原有系统的所有资料
- umount /mnt/snapshot -----------卸载快照区
- lvremove /dev/vbirdvg/vbirdss -----------卸除vbirdss以及里面的内容
- umount /mnt/lvm -----------卸载原系统挂载点
- mkfs -t ext3 /dev/vbirdvg/vbirdlv ---重新格式化
- mount /dev/vbirdvg/vbirdlv /mnt/lvm ---重新挂载
- tar -jxv -f /backups/lvm.tar.bz2 -C /mnt/lvm -------将原备份的压缩文件解压到该目录
- 快照区的建立
- LVM的移除
- 先卸除系统上面的 LVM 文件系统 (包括忚照不所有 LV);
- 使用 lvremove 移除 LV ;
- 使用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志;
- 使用 vgremove 移除 VG:
- 使用 pvremove 移除 PV;
- 最后,使用 fdisk 修改 ID !
- 例:
- umount /mnt/lvm
- umount /mnt/snapshot
- lvremove /dev/vbirdvg/vbirdss <==先处理忚照
- lvremove /dev/vbirdvg/vbirdlv <==再处理原系统
- vgchange -a n vbirdvg
- vgremove vbirdvg
- pvremove /dev/hda{6,7,8,9,10}
- 最后再用 fdisk 将磁盘的 ID 给他改回来 82 就好啦!整个过程就这样的啦! ^_^ 重点!
- PV 阶段