配置配额系统
综述
•在内核中执行
•以文件系统为单位启用
•对不同组或者用户的策略不同
根据块或者节点进行限制
•执行软限制(soft limit)
•硬限制(hard limit)
初始化
•分区挂载选项:usrquota、grpquota
•初始化数据库:quotacheck
执行
•开启或者取消配额:quotaon、quotaoff
•直接编辑配额:edquota username
•在shell中直接编辑:
setquota usename 4096 5120 40 50 /foo
•定义原始标准用户
edquota -p user1 user2
示例:对/home下的kbq用户进行配额:
将home迁移到一个独立的磁盘分区(具体见实验) quotacheck -cu /home(对home下的用户创建配额机制)
若上述命令有报错,是由于SElinux,后续会有介绍 [root@centos7 ~]#getenforce Enforcing
[root@centos7 ~]#setenforce 0
[root@centos7 ~]#getenforce
Permissive
进行上述操作后再创建配额机制即可。
创建成功后在/home目录下回生成一个aquota.user的二进制文件(表示创建配额成功。)
[root@centos7 ~]#quotaon -p /home
group quota on /home (/dev/sdb2) is off
user quota on /home (/dev/sdb2) is off
在/etc/fstab中的defaults后面加userquota
[root@centos7 ~]#quotaon /home
[root@centos7 ~]#quotaon -p /home
group quota on /home (/dev/sdb2) is off
user quota on /home (/dev/sdb2) is on
#edquota kbq即可对kbq用户进行配额的编辑了。
注意:grpquota针对的是用户的所属组而不是属主。
RAID
提高IO能力:
磁盘并行读写
提高耐用性;
磁盘冗余来实现
级别:多块磁盘组织在一起的工作方式有所不同
RAID实现的方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
安装OS前在BIOS里配置
软件RAID:通过OS实现
RAID-0:条带卷,strip
读、写性能提升;
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2, 2
RAID-1: 镜像卷,mirror
读性能提升、写性能略有下降;
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2, 2N
RAID-4:
多块数据盘异或运算值,存于专用校验盘
RAID-5:
读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:允许最多1块磁盘损坏
最少磁盘数:3, 3+
RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:允许最多2块磁盘损坏
最少磁盘数:4, 4+
RAID-10:
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
实验:制作RAID 5
准备了4块硬盘,sdc,sdd,sde,sdf1 (均为30G)并且使sdf1的属性为fd且为备用盘。
#开始制作 mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{c,d,e,f1}
#在制作期间可能需要一段时间,可用cat /proc/mdstat命令查看进度(也可用mdadm -D /dev/md0)
#在生成md0这个设备之后需要将其存入配置文件中 (这个文件的作用在于若该raid设备被禁用了之后若没有这个文件raid设备将无法启动。) mdadm -Ds /dev/md0 > /etc/mdadm.conf
#创建完成后对该设备创建文件系统
mkfs.ext4 /dev/md0 建立一个挂载点并将md0挂上
mkdir /mnt/raid
mount /dev/md0 /mnt/raid
#为了实验需要复制一些文件到raid下
cp /etc/passwd /mnt/raid/f1
cp /etc/passwd /mnt/raid/f2
cp /etc/passwd /mnt/raid/f3
测试写速度:dd if=/dev/zero of=/mnt/raid/bigfile bs=1M count=1024
测试读速度:dd if=/dev/zero of=/mnt/raid/bigfile bs=1M count=1024
要想保存住,一定要写入配置文件中。
raid10的制作:(具体步骤参考raid5)
方法1
#先建立底层建筑2个raid1的设备md0和md1 mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb{1,2}
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdc{1,2}
#再将2个raid1设备做raid0 mdadm -C /dev/md2 -a yes -l 0 -n 2 /dev/md{0,1}
方法2:
mdadm -C /dev/md0 -a yes -l 10 -n 4 /dev/sdb{1,2} /dev/sdc{1,2}
软件raid的实现:
mdadm:模式化的工具
命令的语法格式:mdadm[mode] [options]
支持的RAID级别:LIEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
创建:-C 装配: -A 监控: -F 管理:-f, -r, -a
-C: 创建模式
-n #: 使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件 -c CHUNK_SIZE: 指明块大小
-x #: 指明空闲盘的个数
-D:显示raid的详细信息;
mdadm -D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏 -a: 添加磁盘 -r: 移除磁盘
观察md的状态:
cat /proc/mdstat
使用mdadm创建并定义RAID设备
#mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
用文件系统对每个RAID设备进行格式化
#mke2fs -j /dev/md0 测试RAID设备
使用mdadm检查RAID设备的状况
#mdadm --detail|D /dev/md0
增加新的成员
#mdadm –G /dev/md0 –n4 -a /dev/sdf1
软RAID测试和修复
模拟磁盘故障
mdadm /dev/md0 -f /dev/sda1
移除磁盘
mdadm /dev/md0 –r /dev/sda1
从软件RAID磁盘修复磁盘故障
替换出故障的磁盘然后开机
在备用驱动器上重建分区
mdadm /dev/md0 -a /dev/sda1
mdadm、/proc/mdstat及系统日志信息
生成配置文件:
mdadm –D –s >> /etc/mdadm.conf
停止设备:
mdadm –S /dev/md0
激活设备:
mdadm –A –s /dev/md0 激活
强制启动:
mdadm –R /dev/md0
删除raid信息:
mdadm --zero-superblock/dev/sdb1
注意:在删除raid时 1 umount 取消挂载 2 mdadm -S /dev/md0 停止raid设备 3 rm -f /etc/mdstat
4 vim /etc/fstab 修改配置文件 5 mdadm --zero-superblock /dev/sda7
彻底清除超级块信息 清除Raid成员上raid元数据
逻辑卷管理器(LVM)
突出优势:可扩展性
原理: 底层为磁盘或分区,用fdisk命令将其system id改为8e (Linux LVM)
第二层为创建PV和查看PV(physical volumes)
创建的命令:pvcreate 设备名
查看:pvs 或者 pvdisplay
第三层为用PV创建VG
工具为vgcreate,vgdisplay
第四层为从VG中切割出LV
工具lvcreate lvdisplay
第五层为格式化后挂载使用
工具:mkfs mount
实验:创建逻辑卷的步骤:
pvcreate /dev/sd{b5,c}
#将/dev/sdb5,/dev/sdc 打包创建为物理卷
此时可以pvs查看有无成功。
vgcreate -s 16M vg0 /dev/sd{c,b5}
#将已创建为物理卷的2个卷合成一个卷组 -s后跟PE的大小 并设置这个卷组的名称
lvcreate -n lv0 -l 1000 vg0
#-n 后跟创建的逻辑卷名称 ,-l 为此逻辑卷的大小(-L +xx为添加至xx) 针对vg0卷组操作
lvdisplay
--- Logical volume ---
LV Path /dev/vg0/lv0
LV Name lv0
VG Name vg0
#生成的逻辑卷/dev/vg0/lv0其实是一个软连接指向../dm-0
-l 是以PE为单位 也可以跟100%free -L 后面跟大小容量
实验:扩展逻辑卷
假设我们现在的逻辑卷组的空间不够了,可以设置一个分区为物理卷后再添加。
pvcreate /dev/sde
#将该磁盘变成物理卷
vgextend vg0 /dev/sde
#对vg0这个卷组扩展/dev/sde这个物理卷
lvextend -L 60G /dev/vg0/lv0
#扩展至60G 对于lv0这个逻辑卷来说。
resize2fs /dev/vg0/lv0
#因为添加的物理卷没有文件系统,所以需要对其进行同步。(该命令只针对ext系列的文件系统,若要对xfs文件系统进行同步需用xfs_grows +设备名。命令。) 若先一步到位不在最后不用同步可用选项-r
lvextend -r -L 60G /dev/vg0/lv0
实验:缩减逻辑卷
不支持在线使用,有损失数据的风险,需在缩减之前做备份。
xfs文件系统不支持缩减。
umount /mnt/lv0
#需进行离线操作,取消挂载。
e2fsck -f /dev/vg0/lv0
#在执行某些重大操作前必须检查文件的完整性
resize2fs /dev/vg0/lv0 30G
#先缩减文件系统的空间
lvreduce -L 30G /dev/vg0/lv0
#在缩减逻辑卷的大小
mount /dev/vg0/lv0 /mnt/lv0 #进行挂载使用
注!!:操作期间不要挂载操作。
实验:移除PV
1 vgdisplay 空闲空间
pvdisplay
2 pvmove /dev/sdb
将/dev/sdb中的数据移到其它卷组成员中
3 vgreduce vg0 /dev/sdb
将/dev/sdb 从vg0组中移除
4 pvremove /dev/sdb
将/dev/sdb 从物理卷中移除 5 卸载硬盘
实验:跨主机迁移LV
1 查看LV对应的卷组是由几个PV组合的
/dev/sdc /dev/sdd
2 查看下VG名称,确保在目标主机上的名称不要冲突
vgrename vg0 newvg0
lvrename /dev/vg0/lv0 /dev/newvg0/newlv0
3在源主机
umount /dev/newvg0/lv0
vgchange -an newvg0
vgexport newvg0
4 将对应所有PV,接入到目标主机
5 在目标主机
pvscan
vgimport newvg0
vgchange -ay newvg0 激活
mount /dev/newvg0/newlv0 /mnt/newlv0