LVM2的扩展和缩减基本用法

LVM2是LogicalVolumeManager (逻辑卷管理)的简写,2代表版本Version 2,它是Linux环境下对磁盘分区进行管理的一种机制。它的主要作用是使用纯软件的方式来组织一个或多个底层硬件设备为一个抽象的逻辑设备所使用。LVM使用的是内核中的dm模块,即设备映射(device mapper),它是将一个或多个底层设备组织成一个逻辑设备的模块。

下图简单的描述了PV、VG与LV之间的关系。

             LVM的扩展与缩减_动态

注释:PV、VG、LV均可动态扩展。

    了解了LVM的基本原理,现在来了解他们的管理工具:

     首先是PV,仅介绍其几个常用的选项:pvcreate:创建pv;pvmove:移除PE;pvdisplay:显示pv的详细信息;pvs:显示pv的简要信息。

     pvcreate的使用方法:

     pvcreate PhysicalVolume 

     其次是VG:vgcreate:创建vg;vgs:显示vg的简要信息;vgdisplay:显示vg的详细信息;vgextend:扩展extend;vgreduce:缩减vg。

     vgcreate的使用方法:

vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroup-Name PhysicalDevicePath [PhysicalDevicePath...]

     vgextend的使用方法:

vgcreate  VolumeGroup-Name PhysicalDevicePath [PhysicalDevicePath...]

     vgreduce的使用方法:

vgcreate  VolumeGroup-Name PhysicalDevicePath [PhysicalDevicePath...]

     最后是LV:lvcreate:创建lv;lvs:显示lv的简要信息;lvdisplay:显示lv的详细信息。lvextend:扩展逻辑卷。

     lvcreate的使用方法:

lvcreat -L #[mMgGtT] -n NAME VolnumeGroup

     lvextend的使用方法:

lvextend -L [+]#[mMgGtT] /dev/VG_name/LV_name

     现在利用上述命令创建一个有两个PV组成的大小为10G的名为testvg的VG,要求PE的大小为16M,而后在卷组中创建大小为5G的逻辑券testlv,并将其挂载至/users目录。

      使用到的命令如下:

      创建PV1:pvcreate /dev/sdb5(已创建好系统类型为Linux LVM的分区2个,一个是sdb5拥有5G空间,另一个是sdb6也拥有5G空间);

      创建PV2:pvcreate /dev/sdb6;

      创建名为testvg的VG并将PV1和PV2加入其中:

      vgcreate -s 16M testvg /dev/sdb5;vgcreate -s 16M testvg /dev/sdb6;

      利用vgdisplay查看创建的VG,如下图所示。LVM的扩展与缩减_详细信息_02

创建大小为5G的LV:lvcreate -L 5G -n testlv testvg,查看lvcreate的详细信息,如下图所示:

LVM的扩展与缩减_动态_03

     创建目录users:usermkdir /users ;

     格式化LV卷为etx4类型mke2fs -t etx4 /dev/testvg/testlv;

     格式化完成后再挂载至目录/users下:mount /dev/testvg/testlv /users;

在上述操作的基础上将名为testlv的LV扩展至7G:

     扩展物理边界:lvextend -L 7G(或者+2G) /dev/testvg/testlv

     扩展逻辑边界:resize2fs /dev/testvg/testlv(没有指明大小表明使用这个分区上所有可用空间,此命令仅用于ext类型的分区。)

注释:物理边界是指我们创建的分区,逻辑边界是指在分区上创建的文件系统,当我们只扩展分区的时候,文件系统是没有扩展的,因此我们还需要对文件系统也做一次扩展也就是扩展逻辑边界。

     扩展完成之后查看逻辑卷大小,如下图所示:

LVM的扩展与缩减_动态_04

最后将testlv缩减至3G:

      同扩展LV一样,我们不能直接缩减物理边界,而应该先缩减逻辑边界,再缩减物理边界。

     首先卸载:umount /dev/testvg/testlv,因为缩减是不允许联机进行的。

      其次进行文件系统的强制检测和修复:e2fsck -f /dev/testvg/testlv。

      接着缩减逻辑边界:resize2fs /dev/testvg/testlv 2G。  

      然后缩减物理边界:lvreduce -L 3G /dev/testvg/testlv

      最后挂载至/users目录下:mount /dev/testvg/testlv /users

缩减完成之后,使用df -hl查看缩减后的LV,如下图所示:

      LVM的扩展与缩减_Linux_05

至此LVM的缩减与扩展已完成。