背景
作为IT运维工程师,或者IT交付工程师。服务器的磁盘管理是必做工作之一,而常见的操作系统大家都知道包括Windows和Linux。由于两种操作系统的区别很大,磁盘的管理方式当然也大相径庭。而今天我们重点介绍Linux磁盘LVM逻辑卷的管理方式,希望对粉丝朋友们有所帮助!
LVM介绍
一、LVM是什么,好处是?
LVM,全称Logical Volume Manger,即逻辑卷管理器。它由Linux内核驱动和应用层的管理工具配合划分组成。逻辑卷的划分需要在硬盘分区的基础上创建逻辑层。
好处:
1、灵活性:可以灵活的管理我们服务器的存储设备,可在在系统运行时添加新的物理卷或移除不再需要的物理卷,逻辑卷大小可以动态调整
2、恢复快:当某个物理磁盘出现故障,可以迅速更换并重新加入到卷组中,由于数据分布存储在整个卷组中,因此可以减少停机时间和数据丢失风险。
二、LVM的组成模块
1、物理卷 (PV,Physical Volume)
一个提供存储物理设备,即我们常说的物理磁盘。在物理设备基础上划分的分区称为物理卷。而一般供LVM存储的物理卷包括硬盘分区(常见的为MBR和GPT)、SAN 存储盘、RAID 或 LUN等,它包含一个特殊的LVM头。
2、卷组 (VG,Volume Group)
卷组,字面意思就是由对一个或多个物理卷组合成的组,在Linux文件系统中格式为 /dev/VG_NAME。
3、逻辑卷 (LV,Logical Volume)
逻辑卷作为系统存储的最终元设备,在卷组的基础上创建、划分和管理。它作为一个虚拟分区供操作系统使用,我们说的文件系统就是创建在逻辑卷上。逻辑卷在Linux中格式为 /dev/VG_NAME/LV_NAME。
三、LVM创建逻辑图

逻辑图表示:
1、磁盘B划分了物理卷1和2,磁盘C划分了物理卷3
2、物理卷1划分了卷组1,物理卷2和3划分了卷组2
3、卷组1基础上划分了逻辑卷1,卷组2基础上划分了逻辑卷2和3
PS:物理块 (PE,Physical Extends),为了解释多个物理卷如何被划分到一个逻辑卷,这里提下PE
PE是一个卷组中最小的连续区域(默认为4 MiB),可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。而多个物理卷被划分到一个卷组,进而可分配到一个逻辑卷的原因就在此
LVM使用
一、创建LVM分区
在真正创建逻辑卷的三个模块之前,必须要先将磁盘进行分区。我用两个数据盘作为展示:

fdisk /dev/vdb
fdisk /dev/vdcvdb1

vdb2

vdc1

操作后状态如下,用“lsblk -f”查看:

二、创建PV物理卷
PS:创建物理卷之前可以用以下指令查看可用作划分物理卷的磁盘有哪些
lvmdiskscan
可以看出所有分区都没有创建PV,这里用/dev/vdb1、/dev/vdb2、/dev/vdc1来做操作展示
1、通过pvcreate指令创建PV卷
pvcreate /dev/vdb1 /dev/vdb2 /dev/vdc1 #这里是三个分区一起
pvdisplay可以查看PV卷的详细情况:

三、创建VG卷组
格式:vgcreat <VG_NAME> <PV_NAME>
vgcreat VG1 /dev/vdb1
vgcreat VG2 /dev/vdb2 /dev/vdc1
#这里直接按照逻辑图创建卷组
vgdispaly查看VG详细信息:

pvs指令可以看出PV所属的VG:

四、创建LV逻辑卷
格式:lvcreate -L <LV_SIZE> <VG_NAME> -n <LV_NAME>
lvcreate -L 10G VG1 -n LV1
lvcreate -L 10G VG2 -N LV2
lvcreate -L 15G VG2 -N LV3
lvdispaly查看LV详细信息:


五、格式化逻辑卷
格式:mkfs.<filesystem_type> /dev/mapper/<VG_NAME>-<LV_NAME>

PS:filesystem_type在这里选xfs
mkfs.xfs /dev/mapper/VG1-LV1
mkfs.xfs /dev/mapper/VG2-LV2
mkfs.xfs /dev/mapper/VG2-LV3
lsblk -f查看此时LV分区格式化情况:

六、挂载
这里直接展示自动挂载配置
1、首先我创建了三个挂载目录备用:

2、接着修改配置文件“/etc/fstab”

注:挂载请配置你创建的逻辑卷(例如:/dev/mapper/VG1-LV1),不要配置逻辑卷所在的实际分区设备(比如:/dev/vdb1)
3、重启主机或者用partprobe刷新磁盘
挂载完后如下:

LVM其他知识
一、LV逻辑卷扩容
格式:lvextend -L +<extend_size> <lv_path>

#比如我现在给/dev/VG2-LV2再扩容2G
lvextend -L +2G /dev/VG2-LV2

可见/dev/VG2/LV2已经从10G变为12G