点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
LVM,即Logical Volume Manager,逻辑卷管理器,是一种硬盘的虚拟化技术,可以允许用户的硬盘资源进行灵活的调整和动态管理。 LVM是Linux系统对于硬盘分区管理的一种机制,诞生是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对硬盘的强制性扩容和缩容理论上是可行的,但是却可能造成数据丢失。LVM技术是通过在硬盘分区和文件系统之间增加一个逻辑层,提供了一个抽象的卷组,就可以把多块硬盘设备、硬盘分区,甚至RAID整体进行卷则合并,并可以根据情况进行逻辑上的虚拟分割,这样一来,用户不用关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区设备的动态调整。 在部署LVM时,要依次配置PV物理卷、VG卷组和LV逻辑卷。
接下来,我将使用Vmware虚拟机,来进行LVM的创建和管理实战。3.1 实战目标
建立LVM,LVM的PV分别是RAID 1,磁盘和磁盘分区。并进行LV的扩容、缩容、快照、删除等实验。3.2 硬件准备
在Vmware虚拟机上新添加四块硬盘。如下图所示:3.3 LVM创建PV、VG和LV
分别使用mdadm和fdisk创建RAID 1和磁盘分区,在这里我们选择/dev/sdb和/dev/sdc制作RAID,/dev/sdd创建磁盘分区,命令(fdisk为交互式界面,配置过程略)如下:
注:如没有mdadm命令,CentOS/RHEL通过以下命令安装(yum install mdadm)。mdadm -Cv dev/md0 -n 2 -l 1 /dev/sdb /dev/sdc
/dev/sdd创建磁盘分区(fdisk为交互式界面,配置过程略):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为实际逻辑卷的大小);
- lvcreate -n lv0 -L 10G storage
最终,我们在/dev目录下能够生成一个同名的磁盘文件,如下所示:这样,当我们创建文件系统、挂载后,就可以正常使用逻辑卷了,命令如下所示:mkfs.xfs /dev/storage/lv0
mkdir -p /lvm
mount /dev/storage/lv0 /lvm
此时,我们已经可以查看逻辑卷的挂载情况了,效果如下所示:3.4 LV扩容
在生产环境中,经常会出现的一种现象就是随着业务的拓展,我们原先分配的硬盘分区不够使用,这时我们就需要对硬盘进行扩容。LVM的逻辑卷可以方便的进行扩容。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系统扩容,则必须使用umount3.5 LV缩容
在一般情况下,不允许对磁盘设备进行缩容,因为这可能造成数据丢失的风险。尽管如此,LVM还是提供了LV缩容的方法。然而,xfs系统不允许缩容,如果是ext4系统,缩容配置如下:e2fsck -f /dev/storage/lv0
resize2fs /dev/storage/lv0 10G
mount -a
上述第一条命令是对文件系统进行缩容,第二条命令是对LVM的卷组进行缩容,第三条命令是重新挂载。3.6 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
3.7 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