1.前言
1.1 lvm是什么?
- LVM,Logical Volume Manger,是linux内核提供的一种逻辑卷管理功能,由内核驱动和应用层工具组成,它是在硬盘的分区基础上,创建了一个逻辑层,可以非常灵活且非常方便的管理存储设备。
- LVM利用Linux内核的device-mapper功能来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦、为调整分区而不得不移动其他分区的不便,它相比传统的分区系统可以更灵活地管理磁盘
1.2 lvm的组成
- 物理卷(PV,Physical Volume):真实存在的物理磁盘,如我们挂载的磁盘,分区等
- 卷组(VG,Volume Group):一组物理卷的集合,一个卷组可以包含多个物理卷
- 逻辑卷(LV,Logical Volume):逻辑卷是一个虚拟分区,通过分配卷组上面的空间,挂载到文件目录,也就是说挂载到文件目录上的最终是逻辑卷
- 物理块(PE,Physical Extends):一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。
- 关系图,从下图的关系可以看出它们的关系为磁盘->分区->物理卷->卷组->逻辑卷->文件系统
1.3 lvm的优缺点
优点
- 相比传统硬盘,lvm更加灵活
- 可以把多个硬盘看成一个硬盘
- 可以使用逻辑卷,横跨更多空间
-
缺点
-
2.lvm的使用
2.1 分区
在进行lvm的使用之前,我们先要对我们的磁盘进行分区,并且分区的类型要为lvm类型,分区我们可以使用fdisk或parted工具进行分区
- 如果使用的是MBR,设置分区类型要为8e
- 如果使用的是GPT,设置分区类型要为E6D6D379-F507-44C2-A23C-238F2A3DF928
查看磁盘
我们先给磁盘挂载了一个20G的磁盘,以下会对磁盘进行划分为一个10G和8G的分区,可以先使用fsblk查看我们的磁盘

- 进行分区
再次使用fdisk的命令确定磁盘卷名称

这里使用fdisk进行分区,先创建了一个10G的磁盘分区

修改磁盘的类型

同样步骤,创建一个磁盘空间为8G的分区

查看磁盘信息
2.2 物理卷pv
- 通过lvmdiskscan命令查看可以作为lvm的磁盘分区
从下图可以查看/dev/sda2已经是lvm的pv,这里我们可以使用/dev/sdb1和/dev/sdb2创建pv物理卷
lvmdiskscan

使用pvcreate创建pv
# pvcreate device1 device2 ... 格式pvcreate /dev/sdb1 /dev/sdb2


查看pv信息
可以使用pvc、pvscan、pvdisplay查看物理卷pv的信息
2.3 卷组vg
使用vgcreate创建卷组
# vgcreate vg_name pv1 pv2 ... 格式vgcreate my-vg /dev/sdb1 /dev/sdb2

查看vg信息
可以使用vgs、vgscan、vgdisplay查看vg的相关信息
2.4 逻辑卷lv
使用lvcreate创建逻辑卷
lvcreate -L <lv_size> <vg_name> -n <lv_name>lvcreate -L 5G my-vg -n lv-test01
查看lv相关信息
- 可以使用lvs、lvscan、lvdisplay查看相关信息

- 逻辑卷创建完成后,可以在/dev/mapper/下查看磁盘

2.5挂载磁盘
在我们创建好逻辑卷的时候,我们就可以对磁盘进行挂载了,不过挂载之前,需要对磁盘进行格式化,这里要注意的是,我们是对我们的逻辑盘进行格式化和挂载,并不是我们磁盘的物理分区进行格式化和挂载
- 查看逻辑盘路径
使用lvdisplay查看

- 格式化磁盘和挂载
```bash
mkfs.
mkfs.ext4 /dev/my-vg/lv-test01 mount /dev/my-vg/lv-test01 /work//dev/mapper/ - 格式
> 在我们挂载磁盘后,我们需要在/etc/fstab进行增加配置,不然下次机器重启后,又需要重新挂载<a name="nPbB4"></a>## 3.扩容<a name="sUFLN"></a>### 3.1 现有磁盘扩容> 对磁盘进行扩容其实就是扩容逻辑盘的空间大小,扩容逻辑盘可以使用lvextend命令进行扩容> - 命令格式:lvextend -L <extend_size> <lv_path>- 具体操作> 这里我们对/dev/my-vg/lv-test01进行增加5g的容量扩容```bashlvextend -L +5G /dev/mapper/my--vg-lv--test01

从上图可以看到,我们的磁盘已经进行了5G的扩容,但是磁盘大小并没有刷新变化,这里是因为我已经挂载过了磁盘,所以需要使用resize2fs(ext文件类型)命令或xfs_growfs(xfs文件类型)命令使磁盘生效,可以通过df -Th命令查看文件类型
3.2 新增磁盘扩容
新增磁盘扩容步骤
- 新增磁盘
- 对磁盘进行分区
- 创建物理盘
- 将物理盘加入到现有的劵组
- 扩容磁盘&刷新磁盘
- 新增磁盘

- 分区

- 创建物理盘




