LVM基础概念:
LVM()逻辑卷管理器,主要适用于对Linux环境下面磁盘分区的管理机制
在真实的场景中,服务器使用的越久,所产生的数据量就会越来越大,导致硬盘本身空间越来越小;
这里针对分区来看,如果想要扩大容量,就得重新挂载硬盘,然后去做数据迁移,这样就会直接导致业务停止运行;
#这里分区的大小是在创建分区时就指定好的,一般的传统分区不能扩容
所以最好的解决方案应该是在不影响业务的情况下对文件系统的大小进行扩容,可以实现文件系统跨越不同的分区
总结:
逻辑卷就是在linux环境下,对磁盘分区进行灵活管理的机制(因为没法在磁盘阵列之上去进行扩容);所以逻辑卷就是在底层磁盘之上构建了一个逻辑层(这个逻辑层可以被当做硬盘来使用,可以进行格式化,挂载使用),在这个逻辑层上面再去创建文件系统
示例:
详解:
#/dev/sda* 这里普通分区,是LVM最底层的存储介质
#一个物理设备对应一个pv统称为物理卷(pv)
#vg的容量等于pv之和,一个pv只能给到一个vg来使用(而一个vg可以存在多个pv),例如这里每一个sda*都有10G,那么这个存储池就会有50G的容量
#最终能够被使用的就是lv,所以只有lv才能被进行格式化和挂载
#卷组中最小的存储单元被称为PE,所有的数据都会在PE里面,PE就分布在一个个的PV上
#LE==逻辑卷最小的寻址单元,一般来讲一个LE对应一个PE,功能就是帮助数据的找到和写入(所以可以实现类似镜像的功能,一个LE对应多个PE,写入数据时数据会保存多份==》性能太差,很少在生产环境中看到)
创建逻辑卷的步骤:
第一步:确认分区,并将分区做成LVM类型
#通过fdisk 制作即可
#到这里就相当于有了LVM最底层的物理设备
第二步:制作物理卷(命令:pvcreate)
#通过pvs 或者pvscan扫描可以看出当前设备上有多少物理卷
#关于Fmt类型中 lvm2(第二代逻辑卷)和lvm1(第一代逻辑卷)的区别
在LVM1中,如果需要调整卷的大小,需要先卸载后再来调整
在LVM2中,扩容不用卸载,但是缩小需要卸载
第三步:制作卷组VG(命令:vgcreate)
#通过vgs 可以看到卷组
#查看卷组详情 == 》 vgdisplay
注:这里PE Size 的大小必须要能够被2整除,默认的大小为4M
#指定PE的大小
1,卸载掉当前vg
vgremove 卷组名
2,指定PE大小重新制作vg
vgcreate -s 大小 卷组名 物理卷
第四步:制作逻辑卷LV(命令:lvcreate)
lvcreate -L 容量 -n 命名 卷组 #-L为指定lv的容量 -l为通过指定PE的个数来确定lv的容量
第五步:格式化lv进行使用
#格式化完毕后,即可挂载使用
#注:挂载后你会发现文件的路径为 /dev/mapper/vg0-lv0 ,而该路径与 /dev/vg0/lv0 相同都是指向 dm-0的软连接,而系统本身更喜欢把逻辑卷识别成 /dev/mapper/vg0-lv0 这种格式
删除逻辑卷的步骤:
#删除逻辑卷和创建逻辑卷是一个完全相反的过程,从 lv 开始,逐步往下删除,删除之前要确保逻辑卷没有被挂载使用
第一步:卸载逻辑卷
lvremove 逻辑卷路径
第二步:卸载卷组(存储池)
vgremove 存储池名称
第三步:卸载物理卷
vgremove 物理卷路径
第四步:删除分区(fdisk 中操作即可)
LVM高级特性:
逻辑卷的扩容
第1步:判断是否可以扩容==》也就是卷组的空间剩余的容量是否满足扩容的需求
第1-1步:如果卷组不够扩容
(1)先扩容卷组
(1.1)先将新硬盘做成物理卷
pvcreate 分区路径
(1.2)将物理卷加到卷组中
vgextend 卷组名 物理卷路径
(2)扩容逻辑卷
lvextend -L 大小 卷组路径
#注:扩容完成后不代表文件系统的空间就会增加,因为文件系统的空间是在首次格式化时就已经决定了,所以想要得到扩容后的容量,需要再次格式化,但是这样会导致数据丢失;所以一般的文件系统会提供一种工具专门供扩容来使用,可以在现在的文件系统上进行二次格式化,保障不会导致文件系统被破坏
不同的文件系统二次格式化的方式有所区别:
#xfs
xfs_growfs 设备名 #再次格式化,在线扩容,无需卸载
#ext
resize2fs 设备名 #与xfs_growfs 功能相同
示例:
第1-2步:如果卷组足够扩容
(1)直接扩容逻辑卷
lvextend -L 大小 卷组路径
逻辑卷的缩容
#并非所有的逻辑卷都能缩容,因为逻辑卷是否可以缩容取决于逻辑卷上层的文件系统(例如xfs文件系统就不能缩容,如果把逻辑卷强行缩容,会导致文件系统无法正常使用),所以缩容的步骤是先缩文件系统的大小,在缩容逻辑卷的大小;因此,文件系统本身不能支持缩容,则逻辑卷也不能进行缩容,例如 xfs 则不能进行缩容==》生产环境操作谨慎!谨慎!谨慎!逻辑卷的数据丢失,找回来的几率非常低
注:操作未全部做完全,不要提前挂载,不要提前挂载,不要提前挂载!!!
第1步:缩容文件系统(ext)
1-1 先卸载==》缩容需要停止业务
第2步:缩容逻辑卷(lvm)
2-1 检查文件系统,并强制修复(如果文件系统上有坏的块,那么缩容后会导致数据移到坏的块上面,并且空间越大,耗时越长,一般生产环境需要等很久。。)
e2fsck -f 逻辑卷路径
2-2 缩小文件(ext)系统
resize2fs 逻辑卷路径 缩小到的大小
2-3 缩小逻辑卷(lvm),并检查
lvreduce -L 缩小到的大小 逻辑卷路径
#检查是否缩小成功
#检查成功后即可挂载再次检查数据是否丢失
缩小卷组(vg):
第1步:确认目前卷组(vg)大小以及物理卷(pv)的分配情况
#这里我需要把sda2 从 vg0卷组中卸载掉
第2步:从卷组中卸载物理卷
vgreduce 卷组(vg) 物理卷路径(pv)
第3步:确认pv没有被使用后即可干掉
pvremove 物理卷