17、RAID和LVM
一、RAID
1.什么是raid
磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。
2.raid诞生背景
提高读写能力
保证数据安全
3.raid有什么用
提高读写能力
保证数据安全
4.raid的模式
raid1 条带卷,最少两块盘。读写性能好,但没有容错机制。坏一块磁盘数据全丢。容量是多快盘之和
raid1 镜像卷,写入性能一般、读取性能快、有容错机制,但磁盘有50%浪费
raid5 校验卷, 至少3快盘,只允许坏一块盘,有效空间1/3,读写速度快。坏掉一块盘,读会慢。
-------------------
raid10:raid1和raid0的组合
4.1实验环境:
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sde 8:64 0 20G 0 disk
sdf 8:80 0 20G 0 disk
sdg 8:96 0 20G 0 disk
sdh 8:112 0 20G 0 disk
4.2.安装模拟环境的软件
yum install mdadm -y
mdadm命令常见参数解释:
-A 激活磁盘阵列
-C 建立一个新阵列
-D 打印阵列设备的信息
-G 改变阵列大小或形态
-S 停止阵列
-r 移除设备
-l 设定磁盘阵列的级别
-n 指定阵列磁盘的数量
-x 指定阵列中备用盘的数量
-f 将设备状态定为故障
-a 添加设备到阵列
4.3.实验
创建RAID0实验环境
raid种类 磁盘
1.创建RAID0
[root@oldboy ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
[root@oldboy ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=oldboy:0 UUID=55b053ef:4e189cab:e892fbe9:33317588
创建RAID1实验环境
raid种类 磁盘 热备盘
raid1 sdd、sde、 sdf
1)创建RAID1,并添加1个热备盘
2)模拟磁盘故障,看备用盘是否会自动顶替故障盘
3)从raid1中移出故障盘
[root@oldboy ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f]
创建RAID5实验环境
raid种类 磁盘 热备盘
raid5 sdg、sdh、sdi sdj
1)使用三块盘创建RAID5, 使用-x添加1个热备盘
2)模拟损坏一块磁盘,然后备用盘自动顶上,只能顶一次
3)在模拟损坏,检测数据是否丢失,如果没有再次模拟损坏.
1、创建RAID5阵列,添加一块备用盘
[root@oldboy ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 /dev/sd{g,h,i,j}
2、格式化RAID5,并挂载使用
[root@oldboy ~]# mkfs.xfs /dev/md5
[root@oldboy ~]# mkdir /raid5
[root@oldboy ~]# mount /dev/md5 /raid5/
3、检查RAID详情
[root@oldboy ~]# mdadm -D /dev/md5
4、模拟一块磁盘损坏
[root@oldboy ~]# mdadm -f /dev/md5 /dev/sdj
5 检查备用盘是否顶上
[root@oldboy ~]# mdadm -D /dev/md5
6、在模拟一块磁盘损坏
[root@oldboy ~]# mdadm -f /dev/md5 /dev/sdh
......持续此步骤进行验证
二、LVM
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
1.实现逻辑卷
1.将普通磁盘转为pv物理卷
[root@oldboy ~]# pvcreate /dev/sdb
2.将/dev/sdb物理卷加入卷组(资源池)-->名字lvm_test
[root@oldboy ~]# vgcreate lvm_test /dev/sdb
3.分配lv逻辑卷(分区)
[root@oldboy ~]# lvcreate -L 100M -n lv1 lvm_test
4.格式化分区
[root@oldboy ~]# mkfs.xfs /dev/lvm_test/lv1
5.挂载使用
[root@oldboy ~]# mount /dev/lvm_test/lv1 /lv1/
2.扩展vg卷组的大小
分配一个25GB的存储空间 (原有的不到20GB)
1.如何扩大VG卷组 (注意卷组的名称---)
#1.新硬盘加入pv
[root@xuliangwei~]# pvcreate /dev/sdc
#2.先检查当前的vg卷组大小
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 1020.00m 920.00m
#3.使用vgextend扩展卷组
[root@xuliangwei~]# vgextend datavg /dev/sdc
Volume group "datavg" successfully extended
#4.再次检查,发现卷组已经扩大
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 2 1 0 wz--n- 1.99g 1.89g
3.减少vg卷组的大小
假设想移除/dev/sdb磁盘,建议先将sdb磁盘数据先迁移到sdc磁盘,然后在移除。
(同一卷组的磁盘才可以进行在线迁移) (注意卷组的名称---)
#1.检查当前逻辑卷VG中PV使用情况
[root@xuliangwei~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 1.76g
/dev/sdc vg1 lvm2 a -- 2.00g 2.00g
#2.pvmove在线数据迁移,将sdb的数据迁移至sdc
[root@xuliangwei~]# pvmove /dev/sdb
/dev/sdb: Moved: 100.00%
#3.检查是否将sdb数据迁移至sdc
[root@xuliangwei~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g
#4.从卷组中移除sdb磁盘
[root@xuliangwei~]# vgreduce datavg /dev/sdb
Removed "/dev/sdb" from volume group "datavg"
4.动态的调整逻辑卷大小
1.逻辑卷的扩展,是取决于vg卷中是否还有剩余的容量,注意扩展逻辑卷不能超过卷组VG的总大小
[root@xuliangwei~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 1020.00m 920.00m
#1.扩展lv逻辑卷,增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
[root@xuliangwei~]# lvextend -L +800M /dev/datavg/lv1
#或者可以选择分配磁盘池中多少百分比给逻辑卷
[root@xuliangwei~]# lvextend -l +50%FREE /dev/datavg/lv1
#2.扩展逻辑卷后需要更新fs文件系统
[root@xuliangwei~]# xfs_growfs /dev/datavg/lv1 #xfs文件格式扩容
5.删除逻辑卷
3.删除逻辑卷,如果不想使用逻辑卷可以选择删除
[root@oldboyedu ~]# umount /dev/datavg/lv1
[root@oldboyedu ~]# lvremove /dev/datavg/lv1
LVM如果有一个磁盘损坏,整个lvm都坏了. lvm只有动态扩展作用
底层用RAID + 上层LVM = 既有冗余又有动态扩
6.总结
1.RAID
2.RAID模式 0 1 5 10
3.RAID实现 硬 软
4.系统的mdadm工具实现的软RAID (看看效果)
5.LVM逻辑卷
动态调整分区的大小(如果不是逻辑卷,无法调整)
PV pvcreate pvs
VG vgcreate vgextend vgremove vgs
LV lvcreate lvextend lvremove lvs