一、背景介绍

LVM2逻辑卷由于支持空间的动态扩展或收缩,在中小企业中有一定的使用场景,在CentOS5、6系统中经常会见到,从CentOS7以后默认的文件系统由ext4改为btrfs,而btrfs也支持空间的动态扩展和收缩,所以在CentOS7以后的系统中再使用LVM就是不明智的选择了

二、LVM原理介绍

在介绍LVM之前首先需要对几个名词进行说明:

PV——physical volume,在物理层面磁盘组成的磁盘卷

VG——volume group,在较低的逻辑层从多个PV中抽象出来的卷组

PE——physical extend,VG将PV所提供的容量再次以“块”的形式对外提供,每一个“块”的大小

LV——logical volume,由多个LV“块”组成可供挂载使用的设备文件

LVM2逻辑卷之1——创建及扩容_第1张图片

从上图可以看出VG是一个或多个PV抽象出一个逻辑层,该逻辑层对外提供的块大小称为PE,将多个PE组成的LV就是用于挂载的设备文件。空间的扩展或收缩就是增加或减少PE的过程。LVM功能实际上是通过内核中的dm模块(device mapper)实现,它将一个或多个底层块设备组织成一个逻辑设备的模块,在/dev/目录下以dm-#形式展现

三、创建LVM2逻辑卷

1.添加一个新磁盘,或在原有磁盘剩余空间上新创建几个分区(只要是块设备都可以用于创建LVM2),注意分区时ID号要是8e

LVM2逻辑卷之1——创建及扩容_第2张图片

2.从分区类型中可以看到,8e是用于LVM的的ID号

LVM2逻辑卷之1——创建及扩容_第3张图片

3.使用pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3命令新建3个PV,完成后可以使用pvs查看

LVM2逻辑卷之1——创建及扩容_第4张图片

4.使用命令vgcreate [-s #[kKmMgG]] myvg /dev/sdb1 /dev/sdb2 /dev/sdb3 创建VG,可以使用-s设置PE块的大小,默认是4M,myvg是自定义的VG名称

LVM2逻辑卷之1——创建及扩容_第5张图片

5.使用命令lvcreate -L 15G -n mylv myvg创建LV,此处需要注意的是如果后期删除LV需要之名LV的路径,即使用lvremove /dev/myvg/mylv命令完成

LVM2逻辑卷之1——创建及扩容_第6张图片

创建好的LV可以在/dev/mapper/下通过VG_NAME-LV_NAME或者在/dev/下通过VG_NAME/LV_NAME找到,这两个路径其实都是指向/dev/dm-#的链接

LVM2逻辑卷之1——创建及扩容_第7张图片

6.此时LV就已将创建完成,使用mke2fs命令将LV格式化后就可以挂载使用了

LVM2逻辑卷之1——创建及扩容_第8张图片

三、LVM2扩容

从前文得知LV的大小受制于PE、VG、PV,所以当要对LV进行扩容时推荐的步骤为:扩容PV——扩容VG——扩容LV——扩大文件系统大小

1.再将一个分区创建为PV

LVM2逻辑卷之1——创建及扩容_第9张图片

2.将新创建的分区加入myvg的VG中,使用vgs可以看到PV数量由3变成了4

LVM2逻辑卷之1——创建及扩容_第10张图片

3.在通过lvresize -L +4G /dev/myvg/mylv命令扩容LV大小,此处注意-L后+4G表示再原有基础上再增加4G的空间,也可以写成lvresize -L 19G /dev/myvg/mylv表示空间大小增加到19G

LVM2逻辑卷之1——创建及扩容_第11张图片

4.此时LV空间虽然扩大了,但是会发现挂载的设备文件空间大小并没有发生变化

LVM2逻辑卷之1——创建及扩容_第12张图片

卸载原来的挂载点,使用resize2fs /dev/myvg/mylv命令对文件系统扩容后,再挂载看到已经变成19G了

LVM2逻辑卷之1——创建及扩容_第13张图片

补充说明

在讲LV设备(/dev/myvg/mylv)挂载到/lvm目录下后,直接扩展文件系统时提示无法在线扩展

LVM2逻辑卷之1——创建及扩容_第14张图片

卸载后再次尝试扩展文件系统提示找不到有效的超级块

LVM2逻辑卷之1——创建及扩容_第15张图片

重启后再次尝试,提示先检查并修复文件系统

LVM2逻辑卷之1——创建及扩容_第16张图片

只有当检查完文件系统后再次扩容才能够成功,具体产生的原因尚且不清楚

LVM2逻辑卷之1——创建及扩容_第17张图片