一、LVM原理

LVM诞生的技术背景和实现功能

当我们在硬盘分区或者部署完RAID之后,用户随着实际需求的变化调整硬盘分区的大小时,就会受到硬盘分区和RAID的限制。这时候就需要用硬盘资源管理技术——LVM

LVM(logical volume manager,逻辑卷管理器)是linux系统用于对硬盘分区进行管理的一种机制,解决了硬盘设备在创建分区后不易修改分区大小的缺陷,允许用户对硬盘资源进行动态调整。

由于在真实生产环境中,我们无法准确的评估每个硬盘分区在日后的使用情况,因此会导致原先分配的硬盘分区不够用。比如存放博客数据的目录不断增大,我们就可以通过LVM来解决这个问题。

LVM关键概念

LVM是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。

LVM关键概念:

  • 物理卷(physical volume,PV):指硬盘分区/硬盘/RAID,可以在PV上面建立VG
  • 逻辑卷(logical volume,LV):虚拟分区,由PE组成
  • 卷组(volume group,VG):将一组PV整合成一个逻辑存储池,可在VG之上创建LV
  • 物理区域(physical extent,PE):硬盘可供指派给LV的最小单位(通常为4MB)

下图可以帮助理解LVM的四个关键概念:

LVM.png

卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态的扩展或缩小空间。这就是LVM的核心理念!

还不懂?看下下面的具象化解释。

具象化解释:我们从隔壁老王家借来一些面粉,准备下饺子吃。将这些面粉(即PV)揉成一个大面团(即VG),将这些大面团分割成一个饺子皮(即LV),每个饺子皮的重量必须是每4克面粉(即PE)的倍数

二、LVM部署

我们在部署LVM时,需要用到以下几个命令:

L8.png

部署准备:虚拟机磁盘中添加两块新硬盘,目的就是为了演示LVM理念中用户无需关心底层物理硬盘设备的特性。

部署目的:将两块硬盘进行卷组合并,卷组名自定义,根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后将这个逻辑卷设备格式化成EXT4文件系统后挂载使用。

部署LVM

  1. 创建PV和VG
    仍然以上面的RAID 10为例,使用LVM技术,首先取消挂载
#创建PV:让RAID 10支持LVM
pvcreate /dev/md10
#创建VG:将RAID 10加入到epiol卷组中,然后查看卷组状态
格式:vgcreate 卷组名称 物理卷名称  
vgcreate epiol /dev/md10
vgdisplay

L9.png

  1. 创建LV
    从VG中切割出一个约为10G的逻辑卷,其中逻辑卷切割时有两种计量单位:
  • 以容量为单位:-L 容量;例如-L 150MB
  • 以基本单元的个数为单位(默认4MB):-l 基本单元个数;容量=基本单元个数*4M
#创建LV,名为epiollv
lvcreate -n epiollv -L 10G epiol
#显示LV的详细信息
lvdisplay

L10.png

  1. 挂载
    将生成好的逻辑卷进行文件系统格式化,然后挂载使用。Linux系统会把LVM中的逻辑卷存放到/dev设备目录中(实际做了一个符号链接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名/逻辑卷名)
#格式化文件系统
mkfs.ext4 /dev/epiol/epiollv
#创建挂载点
mkdir /newspace
#挂载到挂载点
mount /dev/epiol/epiollv /newspace
#查看挂载状态
df -h
#写入配置文件,永久生效
echo “/dev/epiol/epiollv /newspace ext4 defults 0 0” >> /etc/fstab

L11.png

扩容LVM

扩容LVM之前,需要先卸载设备和挂载点之间的关联。将epiollv这个逻辑卷增加至15G

#取消挂载
umount /newspace
#将逻辑卷epiollv扩展至15G
lvextend -L 15G /dev/epiol/epiollv
#检查文件系统的完整性
e2fsck -f /dev/epiol/epiollv
#重置逻辑卷容量
resize2fs /dev/epiol/epiollv
#重新挂载文件系统,并查看挂载状态
mount /dev/epiol/epiollv && df -h

L12.png

L13.png

缩小LVM

缩小逻辑卷时,丢失数据的风险较大,所在在生产环境中执行该操作时,需要提前备份数据。另外linux规定,在对LVM逻辑卷进行缩容操作前,要先检查文件系统的完整性,也是为了保证数据安全。和扩容LVM相同的操作,先卸载设备和挂载点之间的关联

#取消挂载
umount /newspace
#检查文件系统的完整性
e2fsck -f /dev/epiol/epiollv
#缩小LVM至8G
resize2fs /dev/epiol/epiollv 8G
#重新挂载文件系统,并查看挂载状态
mount /dev/epiol/epiollv /newspace
df -h

L14.png

LVM快照

LVM具有快照卷的功能,类似虚拟机的快照。比如逻辑卷做了快照,在后续的操作时发现数据出现错误,这时候就可以利用快照来恢复还原。

LVM的特点:

  • 快照卷的容量必须等同于逻辑卷的容量
  • 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除
#显示卷组信息
vgdisplay

#模拟数据操作失误
echo “DATA ERROR!!!”  >  /newspace/error.txt
ls -l /newspace

#生成快照卷:使用-L指定切割大小,-n指定快照卷名称
lvcreate -L 120M -s -n SNAP /dev/epiol/epiollv
lvdisplay

#在逻辑卷所挂载的目录中创建一个20M的垃圾文件,然后查看快照卷的状态
dd if=/dev/zero of=/dev/epiol/epiollv count=1 bs=20M

tips:发现存储空间占用量上升了

#取消挂载文件系统
umount /newspace

#还原快照:为了校验SNAP快照卷的效果,需要对逻辑卷进行快照还原操作
lvcreate –merge /dev/epiol/SNAP

tips:快照卷会被自动删除,并且刚刚在逻辑卷被执行快照操作后再创建的20M垃圾文件也被删除了

#重新挂载文件系统
mount /dev/epiol/epiollv /newspace 
ls /newspace/

删除LVM

当生产环境中想要重新部署LVM或者不再需要LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,顺序不可颠倒!

#取消挂载文件系统
umount /newspace
vim /etc/fstab

#删除LV
lvremove /dev/epiol/epiollv

#删除VG(填写卷组名称即可)
vgremove epiol

#删除PV
pvremove /dev/md10

以上就是LVM的全部操作,练习一次比看两次都管用,文章若有错误之处,请评论指出,谢谢!


保持一个积极向上的良好心态,分享网络技术!