我们先来看一下这张图片:

image.png

PV: 底层的一个硬盘设备,可以是一个分区,也可能是一个RAID。我们可以把这个块设备创建成一个物理卷格式,即一个PV。

VG: 将一个或多个PV提供的存储空间在一个更低的单位上划分成一个个独立的存储单元,并且把这些存储单元合成一个较为高层的组件叫做卷组vg;

       其中vg可以包含多个物理卷。我们这里可以看到vg有点类似于扩展分区,这种格式的分区是没有办法创建文件系统的,必须要它划分成逻辑分区。

LV: 在vg的基础上再次创建LV的组件,LV才是真正意义上的逻辑卷。每一个LV逻辑卷都是一个独立的文件系统,可以被格式化挂载使用,LV的大小可以是vg内的任意大小空间;

       lv可以支持动态扩展的,当存储空间不够时,可以再添加pe,当空间足够时,可以删除的多余的pe,并且这个过程是不损害lv当中原有的数据的,lv的大小可以动态扩展跟收缩。

PE: vg会在一个逻辑层次上将每一个pv所提供的物理空间划分成固定大小的PE.(物理盘区),然后在vg上面创建lv,所为创建lv的过程就是指定一定数量的pe来组成逻辑存储单元的过程。


pv管理工具:

        pvs:简要显示pv的信息

        pvdisplay:显示pv的详细信息

        pvcreate  /dev/DEVICE:创建PV

vg管理工具:

        vgs:简要显示vg的信息

        vgdisplay:显示vg的详细信息

        vgcreate  卷组名  /dev/DEVICE:创建vg

        vgextend  VolumeGroupNam  PhysicalDevicePath:  扩展vg

        vgreduce  VolumeGroupNam  PhysicalDevicePath:  缩减vg

        备注:这里我们要注意在缩减前先做pvmove进行物理层次的缩减即PV的缩减

 lv管理工具:

       lvs:简要显示lv的信息

       lvdisplay:显示lv的详细信息,路径为/dev/卷组名称/卷组

       lvcreate -L  [大小MGT]  -n NAME VolumeGroup(vg名称)

       lvcreate -L 128M  -n mylv myvg

       lvremove  /dev/VG_NAME/LV_NAME:删除逻辑卷

      扩展逻辑卷:

       lvextend -L  [+]MGT  /dev/VG_NAME/VL_NAME

       resize2fs   /dev/VG_NAME/LV_NAME 只适用于ext文件系统

      缩减逻辑卷:(缩减后的空间一定要能容纳现有所有的数据)

       umount  /dev/VG_NAME/LV_NAME

       e2fsck -f /dev/VG_NAME/LV_NAME

       resize2fs /dev/VG_NAME/LV_NAME   [MGT] 缩减文件系统

       lvreduce -L [-]MGT /dev/VG_NAME/LV_NAME 缩减逻辑卷

       mount  /dev/VG_NAME/LV_NAME 挂载


接下来我们用一个示例来讲解一下逻辑卷的创建与管理

首先我们新添加一块磁盘/dev/sdb

然后创建三个5G的分区,磁盘格式设置为LVM格式,并为其创建ext4文件系统

    image.png

partprobe /dev/sdb:通知内核重新读取磁盘

接下来我们创建一个PV

pvcreate /dev/sdb1

image.png

这里我们可以使用pvdisplay查看一下

image.png


接下我们创建一个vg

vgcreate  myvg  /dev/sdb1

如果不制定大小的话,默认创建出来的vg卷中的PE大小为4M,想要为PE指定大小可以使用-s选项

vgcreate -s 10 myvg  /dev/sdb1

这样创建出来的PE大小为10M 

注意:如果我们想要删除次卷组可以使用命令vgremove

例如删除刚刚创建的myvg卷组

vgremove  myvg

我们现在可以将第一个逻辑分区添加到刚刚创建好的myvg中

pvcreate /dev/sdb5

vgextend myvg  /dev/sdb5

image.png

如果我们想要缩减vg卷组,首先我们要将卷组中想要移除pv中的数据移到卷组中其它的pv上面,然后在缩减

pvmove /dev/sdb5

vgreduce  myvg  /dev/sdb5

image.png

现在我们来创建一个名称为mylv的逻辑卷

lvcreate -L 2G -n mylv myvg

image.png

对逻辑卷进行格式化并挂载到/mnt/test目录上

mke2fs  -t  ext4  /dev/myvg/mylv

mount /dev/myvg/mylv   /mnt/test

这时候这个逻辑卷分区就可以正常使用了,我们复制一个文件做一下测试

cp /etc/fstab   /mnt/test

扩展逻辑卷

lvextencet  -L 5G  /dev/myvg/mylv

并重新出创建文件系统

resize2fs   /dev/myvg/mylv

image.png

备注:resize2fs命令只适用于ext文件系统类型,如果是xfs,btrfs文件系统则需要使用别的命令

设置开机自动挂载

在/etc/fstab文件中添加

/dev/myvg/mylv   /mnt/test    ext4  defaults   0  0  

缩减逻辑卷

先缩减文件系统到指定大小

第一步:先卸载文件系统

umount  /dev/myvg/mylv

第二步:e2fsck -f /dev/myvg/mylv做文件系统的强制检测文件系统修复

e2fsck -f /dev/myvg/mylv

第三步:resize2fs   /dev/myvg/mylv  #[mg]

resize2fs   /dev/myvg/mylv 3G

lvreduce -L 3G  /dev/myvg/mylv

image.png

这样我们就完成了对逻辑卷的缩减


上述所有内容就是对逻辑卷管理的一些概述与操作。