LVM的全称是:Logical Volume Manager(逻辑卷管理器),由内核中的DM模块提供此项功能,

LVM的组成结构,如下图所示

wKioL1V8E5LCSnlsAAC8RY8XmKI528.jpg

LV可以把一个或多个任意(包括RAID)的块设备做成物理卷(PV),将他们组合起来,并把一块或多块PV的存储能力抽象成一个一个的物理盘区(PE),这些PV的集合称为为一个卷组(VG)。其中PE的大小为2^n。PV的大小是块设备的大小,VG的大小是左右PV的大小之和,LV的大小最大可以达到VG的大小。并且可以对LV执行mke2fs命令对其创建文件系统并挂载至系统的某目录下使用。

在LVM上建的分区可以动态的增加或缩减,这对于硬盘使用空间无法确定的项目是非常方便的。而且可以利用LVM给分区做快照卷,利用此技术可以在不停机的情况下备份需要的数据,并且所备份的数据的时间都是同一时刻的。


LVM的相关命令:

pvcreate,pvs,pvdisplay,pvremove,pvmove,pvscan

vgcreate,vgs,vgdisplay,vgremove,vgreduce,vgextend,vgscan

lvcreate,lvs,lvdisplay,lvremove,lvreduce,lvextend,lvscan


下面给几个创建LVM的例子:


创建一个10G大小的LV(使用两个5G大小的PV),并对其创建ext4文件系统的步骤

     先准备两个大小为5G的分区:sdb1、sdb2

     1、创建pv:

        pvcreate /dev/{sdb1,sdb2}

     2、创建VG:

        vgcreate -s 8M myvg  /dev/sda5

        -s #:指定卷组中的单个PE大小,

        myvg:卷组名称

     3、创建LV:

        lvcreate -n mylv -L 10G myvg

        -n NAME:指定创建的LV的名称

        -L #:指定创建的LV的大小

        myvg:卷组名称

     4、创建ext4文件系统

        mke2fs -t ext4 /dev/myvg/mylv

缩减上面创建的LV的大小至5G

     缩减有风险,操作需谨慎(必须离线进行)

     缩减顺序:先卸载LV,然后对LV执行e2fsck -f检测文件系统,检测无误后对文件系统的大小进行缩减,最后对LV的大小进行缩减。(操作顺序很重要,不能逆向操作

步骤如下:

     1、卸载LV:

         umount /dev/myvg/mylv

     2、检测文件系统:

         e2fsck -f /dev/myvg/mylv

         -f:强制对文件系统进行检测

     3、缩减文件系统的大小:

         resize2fs /dev/myvg/mylv 5G

     4、缩减LV的大小:

         lvreduce -L 5G /dev/myvg/mylv

         -L #:指定缩减的大小,可以用“-”。表示相对原来的大小减少

增加上面的LV的大小至8G

     增加大小可以在线操作,无需离线进行

     增加顺序:先增加LV的大小,后增加文件系统的大小(操作顺序很重要,不能逆向操作

步骤如下:

     1、增加LV的大小

         lvextend -L 8G /dev/myvg/mylv   

         -L #:指定缩减的大小,可以用“+”。表示相对原来的大小增加

     2、增加文件系统的大小

         resize2fs /dev/myvg/mylv 8G

给上面的LV创建一个大小为2G的快照卷

     为了保证快照卷中的数据都是同一时刻的,防止在创建过程中进程修改LV中的数据,先要把快照卷挂载只读,然后创建快照卷,数据备份完毕后重新将LV挂载为读写

步骤如下:

     1、挂载LV为只读

         mount -o remount,ro /dev/myvg/mylv

     2、创建快照卷

         lvcreate -n kuaizhao-mylv -L 2G -s -p r /dev/myvg/mylv

         -s:指定创建快照卷

         -p r:指定创建的快照卷的权限为读权限

     3、重新挂载LV为读写:

         mount -o remount,rw /dev/myvg/mylv