一、什么是LVM

       逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。LVM的作法是将几个物理的分区(或磁盘)通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再分成为可使用的分区(LV),最终就能够挂载使用了。

二、LVM的相关概念
       PhysicalVolume,PV,物理卷: 物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),   是 LVM的 本存储逻辑块。
       Volume,VG,卷组: 所谓的LVM大磁盘就是将许多PV整合成这个VG,所以VG就是LVM组合起来的大磁盘。
       Physical Extend,PE,物理扩展块 每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的   最小单元。PE          的大小是可配置的, 默认为4MB。
       Logical Volume,LV,逻辑卷: LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

三、创建LVM逻辑卷的具体过程

1、创建物理文件系统,并将其文件系统类型设置为lvm,分区时修改文件系统类型为8e,如下:

wKioOVLDfYDBnltpAABAfHohIv8557.jpg

以上为我们要创建LVM逻辑卷准备的两个分区。

2、创建物理卷(PV),我们来看下和PV相关的命令:
pvcreate:将物理分区创建成为物理卷(PV),创建命令;
pvscan:查询目前系统里面任何具有PV的磁盘;
pvdisplay:显示出目前系统上面的PV状态;
p vremove:将PV属性删除,让该分区不具有PV属性;

下面我看来创建PV吧,其实非常简单了。
[root@lab02 ~]# pvcreate /dev/sd{c,d}3
[root@lab02 ~]# pvscan

LVM 逻辑卷管理详解_第1张图片


[root@lab02 ~]# pvdisplay /dev/sd{c,d}3

LVM 逻辑卷管理详解_第2张图片

       查看当前的PV状态, /dev/sd{c,d}3 指定查看那个sdc3、sdd3的PV状态,如果不指定即查看所有PV状态。这样我们的PV就创建好了,分别是sdc3、sdd3!


[root@lab02 ~]# pvs
LVM 逻辑卷管理详解_第3张图片

查看PV的简要信息,看到和上面命令的区别了吧!



3、创建卷组(VG)我们来看下和VG相关的命令:
vgcreate:创建VG的命令;
vgscan:查找系统上面是否有VG存在;
vgdisplay:显示目前系统上面的VG状态;
vgextend:在VG内增加额外的PV;
vgreduce:在VG内删除PV;
vgchange:设置VG是否启动;
vgremove:删除一个VG;

格式:vgcreate  [-s N[mgt]]  VG名称  PV名称
参数:
-s:后面接PE的大小(size),单位可以是m,g,t(大小写均可) 默认为4MB
[root@lab02 ~]# vgcreate -s 8M test_vg /dev/sd{c,d}3
[root@lab02 ~]# vgscan

LVM 逻辑卷管理详解_第4张图片


[root@lab02 ~]# vgdisplay test_vg

LVM 逻辑卷管理详解_第5张图片

看当前的PV状态,这里就不多做解释了


[root@lab02 ~]# vgs

wKioOVLDgTfi43niAAA5ZSSEAfU331.jpg

       大家应该可以看明白吧,和之前介绍的pvs差不多哦!从这里可以看到,我们的VG已经创建好了,将之前创建的两个PV的大小,整合到一起了,我们新建的VG大小为10G。



4、创建逻辑卷(LV)我们来看下和LV相关的命令
lvcreate :新建LV;
lvscan:查询系统上面的LV;
lvdisplay:显示系统上面 LV 状态;
lvextend:在 LV里面增加容量;
lvreduce:在 LV里面减少容量
lvremove:删除一个LV;
lvresize:对LV进行容量大小的调整;

我们来创建一个LV吧!


格式:lvcreate  [-L N[mgt]] [-n LV名称]  [VG名称]

参数:
    -L :后面接容量,容量的单位可以是M,G,T等,最小单位为PE,这个单位必须是PE的倍数,若不相符,系统自动计算相近的容量。
       -l:后面接PE的个数,而不是数量
       -n:后面接的就是LV的名称。

创建一个4G大小的LV吧,看看如 何创建。

[root@lab02 ~]# lvcreate -L 4G -n my_lv test_vg    # 创建大小为4G的LV
[root@lab02 ~]# lvscan    # 查看系统上面的LV
[root@lab02 ~]# lvs    # 查看LV简要信息。

LVM 逻辑卷管理详解_第6张图片


[root@lab02 ~]# lvdisplay /dev/test_vg/my_lv

LVM 逻辑卷管理详解_第7张图片


       LV 到这里我们也创建好了,下面我们就来对新创建的LV进行格化、挂载等操作吧,这里我就不对格式化挂载等操作进行过多的解释了,我们直接来操作吧。要注意VG的全称是test_vg;LV的名称必须要使用全名,/dev/test_vg/my_lv这样才对哦,所以千万不要格式化错了哦,路径要选对哦


[root@lab02 ~]# mke2fs -t ext4 /dev/test_vg/my_lv
[root@lab02 /]# mount /dev/test_vg/my_lv /mnt

LVM 逻辑卷管理详解_第8张图片


       从上图可以看出,我们已经成功把my_lv挂载到了/mnt目录下,通过df命令也可以查看到大小为4G。到这里lvm的基本内容就讲解完了,下面我们还看看如何扩展VG、缩减VG、扩展LV、缩减LV以及快照卷等用法


5、扩展VG的容量
[root@lab02 ~]# fdisk -l /dev/sdb | grep sdb9
[root@lab02 ~]# vgs
[root@lab02 ~]# pvcreate /dev/sdb9
[root@lab02 ~]# vgextend test_vg /dev/sdb9

LVM 逻辑卷管理详解_第9张图片

通过上图可以看出扩展VG的容量扩展了2G,应该不难理解吧。下面我们在来看看如何缩减VG


6、缩减VG的容量
[root@lab02 ~]# pvmove /dev/sdc3
[root@lab02 ~]# vgreduce test_vg /dev/sdc3
[root@lab02 ~]# pvremove /dev/sdc3

LVM 逻辑卷管理详解_第10张图片

现在我们VG的容量,已经减少到7G了,到这里我们就能看到使用LVM的好处了吧。下面我们继续往下看!


7、扩展逻辑卷(LV)
[root@lab02 ~]# lvextend -L +2G /dev/test_vg/my_lv
[root@lab02 ~]# resize2fs /dev/test_vg/my_lv

LVM 逻辑卷管理详解_第11张图片

LVM 逻辑卷管理详解_第12张图片

在次查看LV容量,已经增加到6G,至此完成了LV容量的扩展。


8、缩减逻辑卷(LV)
[root@lab02 ~]# resize2fs /dev/test_vg/my_lv 3G
[root@lab02 ~]#lvreduce -L 3G /dev/test_vg/my_lv

LVM 逻辑卷管理详解_第13张图片

LV容量已经缩减到3G,完成LV容量的缩减
注:这里在提一个,进行LV扩展、缩减操作时最好对文件系统进行检查,以免出现问题。可以通过e2fsck命令进行检查。


9、快照卷
       LVS快照就是将当时的系统信息记录下来,就好像照相记录一样。将来若有任何数据改动了,则原始数据会被移到快照区,没有被动的区域则由快照区与文件系统共享。下面我们来看一个创建快照的过程吧,其实很简单
[root@lab02 ~]# lvcreate -L 100M -s -p r -n my_lv-snap /dev/test_vg/my_lv
[root@lab02 ~]# ls /dev/test_vg
[root@lab02 ~]# mount -o ro /dev/test_vg/my_lv-snap /media

LVM 逻辑卷管理详解_第14张图片


10、删除LV、VG、PV
   lvremove
   vgremove
   pvremove

       例:将刚刚创建的my_lv-snap快照删除。
       # lvremove /dev/test_vg/my_lv-snap         这样就可以了,简单吧,VG、PV删除都是一样的,在这里就不举例了。

       总结:本文介绍了关于LVM的相关概念,并详细的讲解了物理卷(PV)、卷组(VG)、逻辑卷(LV)的创建,物理卷(VG)的扩展与缩减,逻辑卷(LV)的扩展与缩减。最后简单介绍了如何创建快照卷等功能,希望对大家有所帮助