文章目录
逻辑卷是什么
逻辑卷的原理
逻辑卷的优点
lv的管理
lv的建立
xfs格式下lvm的拉伸
ext4下lvm的拉伸和缩减
lvm快照
lvm快照的原理和作用
快照的建立
lvm的删除
逻辑卷是什么
LVM:(Logical Volume Manager) ,逻辑卷管理器。
它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样可以减少操作成本.
逻辑卷管理器解决的主要问题如下:
解决分区空间不够用或者分区空间绰绰有余的情况。
基本磁盘分区的边界是不能随意扩展的。分区大小是在刚刚划分分区的时候就决定了。但是使用逻辑卷技术之后,可利用逻辑卷来将两块独立的物理分区连接起来,它可以增加或缩减此前固定磁盘的大小。
逻辑卷的原理
为理解方便起见,我们在这里将真实存在的两个物理分区想象成
两个橙子。
如何把两个独立的橙子平均分给五个人呢,榨成橙汁就可以了!
1.pv :物理卷 被命令处理过的物理分区。
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块。
2.vg:物理卷组
被组装到一起的物理卷
3.pe: 物理块
lvm设备的最小存储单元,lvm是pe的整数倍.pe是一个一个存储小颗粒(pe 2兆 lvm 8兆等)
4.lvm: 逻辑卷
直接使用的设备,可以增大缩减并保持原有数据不变
原理详解:
逻辑卷(lv)是将几个磁盘分区或者块设备(pv,pv的id必须是8e的,pv可以位于不同的磁盘分区里,pv大小可以不一)组织起来形成一个大的扩展分区(vg,卷组,一个vg至少要包含一个pv。),该扩展分区不能直接用,需要将其划分成逻辑卷(lv)才能使用,lv可以格式化成不同的文件系统,挂载后直接使用。 lv的扩展和缩减是不会影响原有数据的,但逻辑卷缩减的风险大于逻辑卷扩展的风险。
实例应用:
微信的用户不断增加,各种数据不断增加,数据是无限的,但是最开始的某块存储设备不可能是无限大的,它肯定有个物理最大值。
因此需要通过软件完成原有存储设备的伸缩容量,可以使原来独立的两个磁盘,在逻辑上结合在一起,后续可以不断实现逻辑添加磁盘,满足更大的需求。
逻辑卷的优点
1.灵活的容量.
当使用逻辑卷时,文件系统可以扩展到多个磁盘上,可以聚合多个磁盘或磁盘分区成单一的逻辑卷.
2.可伸缩的存储池.
你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备.
3.在线的数据再分配.
可以在线移动数据,数据可以在磁盘在线的情况下重新分配.比如,你可以在线更换可热插拔的磁盘.
4.方便的设备命名
逻辑卷可以按你觉得方便的方式来起任何名称.
5.磁盘条块化.
你可以生成一个逻辑盘,它的数据可以被条块化存储在2个或更多的磁盘上.这样可以明显提升数据吞吐量.
6.镜像卷
逻辑卷提供方便的方法来镜像的数据.
7.卷快照
使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不影响真实数据.
lv的管理
lv的建立
此实验需要使用监控命令方便观察效果。
1.mkdir /weixindata 创建一个用户使用空间的挂载目录
2.watch -n 1 "pvs;echo=====;vgs;echo=====;lvs;echo===;df -H /weixindata #pvs(表示查看pv的状态)
3.划分分区并且指定分区标签为8e
4.pvcreate /dev/vdb2 创建物理卷,将橙子榨橙汁
5.vgcreate -s 16M vg1 /dev/vdb2
#创建物理卷组,将橙子汁倒进容器里,单位是16M 容器的名字随便起,此处为vg1
-s 可指定pe的大小
6.lvcreate -L 20M -n lv1 vg1 创建逻辑卷lv1,将vg(大容器)里的橙汁倒20M倒在小杯子里,给每个人喝,这杯喝完,再倒一杯给下个人喝。
7.mkfs.xfs /dev/vg1/lv1 将lvm逻辑卷格式化之后才能挂载
8.mount /dev/vg1/lv1 /weixindata
9.df -H
watch -n 1 "pvs;echo=====;vgs;echo=====;lvs;echo===;df -H /weixindata
最实验的虚拟机里原来的/dev/vdb1已经是一个逻辑卷了,并不是这里操作的。
3.创建pv(将/dev/vdb2 橙子榨橙汁,做成物理卷)
4.准备将20M拿出来放在杯子里让人喝,(放在物理卷里让系统使用)但实际并不是20,而是32M
5.格式化文件系统
xfs格式下lvm的拉伸
情况一:当vg剩余容量充足的情况(一个橙子够喝时)
lvextend -L 100M /dev/vg1/lv1 #拉伸lv的大小
xfs_growfs /dev/vg1/lv1 #同步拉伸文件系统的大小
1.lvextend -L 100M /dev/vg1/lv1 实际做了 但是没截图
情况二:vg的剩余容量不足时(需要再拿个新橙子)
1.再次建立分区并修改标签为8e
2.pvcreate /dev/vdb3 #榨橙汁
3.vgextend vg1/dev/vdb3 #将新榨的橙汁倒进之前的vg1大杯子
4.lvextend -L 550M /dev/vg1/lv1 #拉伸lv
5.xfs_growfs /dev/vg1/lv1 #拉伸文件系统
1.建立新的lvm分区/dev/vdb3
vgextend vg1 /dev/vdb3 将果汁导进去vg1大杯子
lvextend -L 550M /dev/vg1/lv1 拉伸lvm
实际做了但是忘记截图
xfs格式不支持缩减
ext4下lvm的拉伸和缩减
ext文件系统可缩减。
实验前的准备
umount /weixindata
mkfs.ext4 /dev/vg1/lv1
mount /dev/vg1/lv1 /weixindata
blkid
拉伸
lvextend -L 580M /dev/vg1/lv1 #扩展lvm设备
resize2fs /dev/vg1/lv1 #拉伸文件系统
缩减
1.umount /weixindata
2.e2fsck -f /dev/vg1/lv1 #扫描设备里的内容,直接缩减会损坏设备,会报错
3.resize2fs /dev/vg1/lv1 100M
4.lvreduce -L 100M /dev/vg1/lv01 缩减lvm设备到100M (-l 代表缩减了多少)
5.mount /dev/vg1/lv1 /weixindata
6.df -H /weixindata
移除空闲的pv
将vdb3上的数据移动到vdb2上,然后将vdb3空闲出来。
pvmove /dev/vdb3 /dev/vdb2 #将vdb3上的数据移动到2
vgreduce vg1 /dev/vdb3 将橙汁拿走
pvremove /dev/vdb3
lvm快照
lvm快照的原理和作用
逻辑卷可以支持快照功能。
快照的工作原理:
保存数据某一时刻的状态。快照刚刚建立的时候,它的大小是空的,需要指定它的大小。
快照是访问原文件的另一条路径。
快照是在数据改变之前将数据原封不动的保存到快照空间里面。
注意数据变化的幅度不能超过给定快照空间的大小,否则快照将崩溃。
快照的作用:
对某一时刻数据状态的备份提供另一条访问路径,通过快照来备份数据到其它位置,备份完成后,快照就没用了,卸载和移除该快照卷。快照空间的大小取决于数据改变的频度和所需要使用的时间长度,即有限的时间内原文件数据改变的空间大小。
在快照上读内容,在母盘上写内容。
快照的建立
umount /weixindata
lvcreate -L 20M -n lv0-backup -s /dev/vg1/lv1 指定快照lv0backup的大小为20M
lvdisplay #查看lvm状态 或者lvs
mount /dev/vg1/lv0-backup /weixindata
测试:给快照放超过它本身大小的数据,快照会被撑破
dd if=/dev/zero of=/weixindate/file bs=1M count=50
会写入,但是快照会被自动卸载,再次mount会失败。
因为被撑爆了,可以重新照一张照片。
lvm的删除
正常删除时
umount /weixindata
lvremove /dev/vg1/lv0-backup
lvremove /dev/vg1/lv1
vgremove vg1
pvremove /dev/vdb2
删除vg中出现问题的设备
当设备被误删时,会报错(No device found PV…),因为lvm不能识别该设备,
vgreduce --removemissing vgname
vgremove vgname
pvremove /dev/vdbx