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“块”组成可供挂载使用的设备文件
从上图可以看出VG是一个或多个PV抽象出一个逻辑层,该逻辑层对外提供的块大小称为PE,将多个PE组成的LV就是用于挂载的设备文件。空间的扩展或收缩就是增加或减少PE的过程。LVM功能实际上是通过内核中的dm模块(device mapper)实现,它将一个或多个底层块设备组织成一个逻辑设备的模块,在/dev/目录下以dm-#形式展现
三、创建LVM2逻辑卷
1.添加一个新磁盘,或在原有磁盘剩余空间上新创建几个分区(只要是块设备都可以用于创建LVM2),注意分区时ID号要是8e
2.从分区类型中可以看到,8e是用于LVM的的ID号
3.使用pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3命令新建3个PV,完成后可以使用pvs查看
4.使用命令vgcreate [-s #[kKmMgG]] myvg /dev/sdb1 /dev/sdb2 /dev/sdb3 创建VG,可以使用-s设置PE块的大小,默认是4M,myvg是自定义的VG名称
5.使用命令lvcreate -L 15G -n mylv myvg创建LV,此处需要注意的是如果后期删除LV需要之名LV的路径,即使用lvremove /dev/myvg/mylv命令完成
创建好的LV可以在/dev/mapper/下通过VG_NAME-LV_NAME或者在/dev/下通过VG_NAME/LV_NAME找到,这两个路径其实都是指向/dev/dm-#的链接
6.此时LV就已将创建完成,使用mke2fs命令将LV格式化后就可以挂载使用了
三、LVM2扩容
从前文得知LV的大小受制于PE、VG、PV,所以当要对LV进行扩容时推荐的步骤为:扩容PV——扩容VG——扩容LV——扩大文件系统大小
1.再将一个分区创建为PV
2.将新创建的分区加入myvg的VG中,使用vgs可以看到PV数量由3变成了4
3.在通过lvresize -L +4G /dev/myvg/mylv命令扩容LV大小,此处注意-L后+4G表示再原有基础上再增加4G的空间,也可以写成lvresize -L 19G /dev/myvg/mylv表示空间大小增加到19G
4.此时LV空间虽然扩大了,但是会发现挂载的设备文件空间大小并没有发生变化
卸载原来的挂载点,使用resize2fs /dev/myvg/mylv命令对文件系统扩容后,再挂载看到已经变成19G了
补充说明
在讲LV设备(/dev/myvg/mylv)挂载到/lvm目录下后,直接扩展文件系统时提示无法在线扩展
卸载后再次尝试扩展文件系统提示找不到有效的超级块
重启后再次尝试,提示先检查并修复文件系统
只有当检查完文件系统后再次扩容才能够成功,具体产生的原因尚且不清楚