作者:Joke-晓 | 来源:互联网 | 2023-08-25 12:31
一、逻辑卷管理器(LogicalVolumeManager)需求引入:最初规划主机的时候,只给了home100G的,但是随着业务量的增大,导致用户的增多,这个文件系统不够大,满足不
一、逻辑卷管理器(Logical Volume Manager)
需求引入:最初规划主机的时候,只给了/home 100G的,但是随着业务量的增大,导致用户的增多,这个文件系统不够大,满足不了我们的需求,该怎么解决?
横向:再买一块大的新硬盘,重新分区并格式化,将/home的数据完整的迁移过去再将原来的分区卸载重新挂载新的分区!
思考:如果第二次分区给的容量太多,导致磁盘容量被浪费,想将分区缩小该怎么办?可能会重复上面流程,有没有好一点策略
概念:LVM侧重于是可以弹性的调整文件系统的容量,并不在于性能与数据安全上面!
弹性的理解:LVM管理磁盘中可以新增或者删除物理分区!
思考:前缀是逻辑,而不是物理?
分析:LVM可以整合多个物理分区,让这些分区看起来像是一个大磁盘一样!
粗略的流程:将几个分区(磁盘)通过软件整合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过划分成为可以使用的分区(LV),最终挂载进行使用!
二、LVM的基本术语
(1)PV (physical volume)
解释:一个物理卷通常是一个硬盘或者分区,在分区的时候通过fdisk调整系统标识符8e(LVM)
说明:调整系统标识符8e(LVM)仅仅是标识它的用途,只有经过pvcreate命令才能转化为LVM的底层物理卷!
注意:此时分区尚未格式化;如同对橘子进行榨汁!
(2)volume group (VG)
理解:盛放橘子汁的容器!
解释:卷组是LVM中使用的最高级别的抽象,它将逻辑卷和物理卷集合在一起成为一个管理单元!
白话:将多个PV整合成一个大的VG,这个VG就是LVM组成的最大的大磁盘!
(3)logical volume (LV)
理解:准备倒橘子汁了
解释:VG被切分成LV,相当于非LVM系统中的磁盘分区(只是分区尚未格式化),所以需要格式化挂载才能使用!
(4)physical extent (PE)
说明:PE是PV的最小存储单位(每个橘子汁)!
理解:LVM可以弹性的调整文件系统的容量,就是通过交换PE来进行的数据转换!
三、LVM的实践流程
实验环境说明
(1)LVM需要有内核支持(RHEL7默认安装)
(2)安装lvm2的软件
(3)mbr的fdisk分区
需求1:pv的正常使用
1)PV阶段 –>创建一个500M的PV
说明:
(1)如果之前分区已经格式化,会将分区擦除,重新格式化相应的类型!
(2)此时尚未通过vg对pv进行管理,下一步建立vg,开始管理pv!
2)VG阶段
说明:
(1)此时pvs命令可以看到pv其隶属于vg管理了
(2)VG的名字是自定义的,pv名称是分区的设备名
(3)创建vg的时候,默认PE是4M,可以通过-s来指定PE的大小
vgreduce vg0 /dev/svb2 -->移出在此卷组上的分区!
vgremove vg0 -->删除卷组,此卷的所有分区全部gameover
3)LV阶段
说明:创造出VG的大磁盘之后,建立分区(所谓的LV)!
说明:
(1)观察容量的变化,理解PE的转移的含义
(2)参数的说明-->L(size->指定容量)、l(PE的个数)、n(lv的名字)
(3)由于PE的最小单位是4,所以实际转移的是52,不是50
4)LV的使用
说明:此时的就像是用fdisk /dev/vdb进行分区的非LVM分区,所以也需要格式化和挂载才能使用!
说明:
(1)底层也是通过mapper映射完成的
需求2:用户增多,发现LV容量不够,需要进行扩容
说明
(1)LV放大到100M,但是文件系统还没有增加(通过xfs_growfs来更新),可以通过在线直接处理(无需umount)!
(2)xfs_growfs只是针对xfs的文件系统!
需求3:突然发现PV的容量不够使用了,怎么办?
说明:
(1)增加PV,一层一层的扩大,最后到文件系统
(2)通过pvs使用的对比证明了LVM的映射模式是线形映射(某个PV分区的容量够用的时候,其它PV空闲),便于弹性调整文件系统的容量!
需求4:ext4文件系统容量的扩展和缩小
(1)xfs不支持容量的缩小,但ext家族支持,这里采用ext4(常用)的文件系统!
(2)如果一开始可能就有容量缩减的需求,文件系统的格式可以指定为ext4!
1)扩容
2)缩减
(1)从安全的角度,resize2fs不支持ext文件系统的在线缩减,所以必须卸载!
说明
(1)不支持在线缩减,所以必须先卸载,然后必须强制进行磁盘检查(主要是检查文件系统是否有损坏,扫描逻辑卷上的空间)
(2)缩减的顺序为resize2fs -->先缩小LVM文件系统,再缩减LV的大小(注意LV容量的大小>=LVM的大小)
(3)缩减LV的大小,可能会造成LVM文件系统容量小于LV,即数据可能会溢出,所以会有警告信息
出现的问题:缩减的时候没有先卸载,直接缩减,导致块信息丢失,无法后续
了解:lvextend是扩展逻辑卷,lvreduce是缩小逻辑卷(不支持xfs),lvresize是扩展或缩小逻辑(不支持xfs)
需求5:删除PV
说明
(1)为了保证原始的数据不受破坏,进行数据的安全转移pvmove(用户感觉不到)!
(2)将分区1从vg0组管理中踢出;没有人管理,就好收拾了!
(3)接着就将分区1删除(remove)!
说明:挂载的分区感觉不到其中的变化的!
需求5:创建LVM的LV磁盘快照
概念:将当时的系统信息记录下来,就好想照相记录一般,将来若有任何数据的修改,则原始数据会被搬移到快照区,没有修改的区域则由快照区与文件系统共享!
作用:数据备份
类比:虚拟机的快照、git的快照!
实验1:快照
(1)注意lvs的Attr属性;
(2)注意df -H 的查看结果
(3)lvcreate 参数s的含义-->快照(snapshot),位置任意
说明
(1)快照的删除,不影响源LV!
快照需求:利用快照来恢复文件系统
1)相关的说明
2)测试步骤
(1)核心理念-->改变源LVM文件系统的内容-->lvdispaly(查看下变化),以及两个挂载点的内容!
(2)df -Th 两个挂载点--->核心(Userd)变化!快照只是记录了某个时间点的LVM的元数据!
(3)利用快照区对原本的文件系统备份-->不同的文件系统备份的方式不一样!
dumpe2fs -->ext4家族单备份工具!
xfsdump -->xfs的文件系统备份
注意:备份的原因(源格式化之前,原本的文件系统会将所有的数据都迁移到快照区域内,如果快照区域不够大,数据无法全部还原)!
(4)卸载源LVM的挂载点、然后lvremove-->将源LVM的数据完全删除!
(5)卸载快照-->格式化源LVM的文件系统(注意要匹配),然后挂载
(6)通过备份文件恢复到源LVM的挂载点上
xfsrestore -->针对xfs文件系统的备份的恢复
(7)看是否与最初的数据相同
ext4的restore、rstore命令的详细解释
需求6:LVM的删除
注意顺序,最好将ID也修改过来!
一张图让你学会LVM