LVM管理

发布时间 2023-06-19 09:51:25作者: 角刀牛Java

一、LVM理论

LVM,即Logical Volume Manager,逻辑卷管理器,是一种硬盘的虚拟化技术,可以允许用户的硬盘资源进行灵活的调整和动态管理。
LVM是Linux系统对于硬盘分区管理的一种机制,诞生是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对硬盘的强制性扩容和缩容理论上是可行的,但是却可能造成数据丢失。LVM技术是通过在硬盘分区和文件系统之间增加一个逻辑层,提供了一个抽象的卷组,就可以把多块硬盘设备、硬盘分区,甚至RAID整体进行卷则合并。并可以根据情况进行逻辑上的虚拟分割,这样一来,用户不用关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区设备的动态调整。
LVM的架构体系中,有三个很重要的概念:
PV,物理卷,即实际存在的硬盘、分区或者RAID
VG,卷组,是由多个物理卷组合形成的大的整体的卷组
LV,逻辑卷,是从卷组上分割出来的,可以使用使用的逻辑存储设备
LVM架构体系如下图所示:

二、LVM创建和管理命令

在部署LVM时,要依次配置PV物理卷、VG卷组和LV逻辑卷。常用的LVM部署命令如下表所示:

功能/命令物理卷管理卷组管理逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdispaly
删除 pvremote vgremote lvremote
扩展 物理卷不能扩展 vgextend lvextend
缩小 物理卷不能缩小 vgreduce lvreduce

三、LVM创建和管理实战

接下来,我将使用Vmware虚拟机,来进行LVM的创建和管理实战。

(一)实战目标

建立LVM,LVM的PV分别是RAID 1,磁盘和磁盘分区。并进行LV的扩容、缩容、快照、删除等实验。

(二)硬件准备

在Vmware虚拟机上新添加四块硬盘,如下图所示

 

 

 

 

(三)LVM创建PV、VG和LV

分别使用mdadm和fdisk创建RAID 1和磁盘分区,在这里我们选择/dev/sdb和/dev/sdc制作RAID,/dev/sdd创建磁盘分区,命令(fdisk为交互式界面,配置过程略)如下:

mdadm -Cv /dev/md0 -n 2 -l 1 /dev/sdb /dev/sdc

结果如下:

 


之后创建物理卷,命令如下:

pvcreate /dev/md0 /dev/sdd1 /dev/sde

效果如下:

 


然后创建卷组,命令如下:

vgcreate storage /dev/md0 /dev/sdd1 /dev/sde

效果如下:

 


接下来就可以创建逻辑卷了,我们尝试创建一个大小为10G的逻辑卷,在创建逻辑卷时,lvcreate命令常用参数如下:
-L 指定逻辑卷的大小(实际大小,如1G、512M等,该大小必须为4M的整数倍,否则大小会自动增大称为成4M整数倍)
-l 指定逻辑卷的大小(基本单元个数,-l后面数字乘4M为实际逻辑卷的大小)
-n 表示逻辑卷名称
逻辑卷创建命令如下:

lvcreate -n lv0 -L 10G storage

最终,我们在/dev目录下能够生成一个同名的磁盘文件,如下所示:

 


这样,当我们创建文件系统、挂载后,就可以正常使用逻辑卷了,命令如下所示:

mkfs.xfs /dev/storage/lv0
mkdir -p /lvm
mount /dev/storage/lv0 /lvm

 

此时,我们已经可以查看逻辑卷的挂载情况了,效果如下所示:

 

(四)LV扩容

在生产环境中,经常会出现的一种现象就是随着业务的拓展,我们原先分配的硬盘分区不够使用,这时我们就需要对硬盘进行扩容。LVM的逻辑卷可以方便的进行扩容。LV扩容步骤如下所示:

lvextend -L 15G /dev/storage/lv0
xfs_growfs /dev/storage/lv0

 

上述第一条命令表示对LVM的逻辑卷进行扩容,-L表示扩容后的大小而不是增加的大小,也可以使用-l参数指定大小。第二条命令是在创建xfs系统后,让xfs系统随着LV的增大而增大。

 


注意:
1、在进行扩容前,请保证LVM的卷组内有足够的空间可以进行扩容。
2、如果在LV扩容的时候,还没有创建文件系统,则可以省略上述第二条命令。
3、如果是xfs系统扩容,可以不用umount,如果是ext4系统扩容,则必须使用umount。

(五)LV缩容

在一般情况下,不允许对磁盘设备进行缩容,因为这可能造成数据丢失的风险。尽管如此,LVM还是提供了LV缩容的方法。
然而,xfs系统不允许缩容,如果是ext4系统,缩容配置如下:

e2fsck -f /dev/storage/lv0
resize2fs /dev/storage/lv0 10G
mount -a

 

上述第一条命令是对文件系统进行缩容,第二条命令是对LVM的卷组进行缩容,第三条命令是重新挂载。

(六)LV快照

LVM具备快照的功能,该功能类似于Vmware中的快照,LVM可以创建一个快照卷,快照卷就如同一个LV的备份。在操作中可以使用快照卷将LV的状态还原到某个节点的状态。
我们首先创建一个逻辑卷,在完成文件系统创建和挂载后,向该LV中写入一个实验性文件,过程如下:

lvcreate -n lv1 -L 1G /storage
mkfs.ext4 /dev/storage/lv1
mount /dev/storage/lv1 /lvm
echo “LVM snapshoot” > experiment.txt

 

让后,我们创建快照卷,在lvcreate命令中,使用-s参数创建快照卷,如下所示:

lvcreate -L 1G -s -n lvsnap /dev/storage/lv1

 

这样,快照卷就创建好了,如下所示:

 


接下来,我么尝试使用快照卷的恢复功能,方法是删掉刚才在lv1中创建的experiment.txt文件,然后恢复快照卷,查看新的lv1中experiment文件是否存在。过程如下:

rm -rf /lvm/experiment.txt
umount /lvm
lvconvert --merge /dev/storage/lvsnap
mount /dev/storage/lv1 /lvm
ll /lvm
cat /lvm/experiment

 

结果如下所示:

 

(七)PV、VG和LV删除

PV、VG和LV的删除比较简单,只要简单的使用pvremove、vgremove和lvremove进行删除即可,但是在删除时一定要注意,先解除挂载再删除LV,先删除LV再删除VG,先删除PV最后删除PV。
相关命令如下:

unount /lvm
lvremove /dev/storage/lv1
vgremove /dev/storage
pvremove /dev/md0 /dev/sdd1 /dev/sde













 

转载出处:https://blog.csdn.net/weixin_40228200