LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它的作用能让磁盘在不损坏数据的情况下,对磁盘进行伸缩扩展。在生产环境中非常有用。

 

一般装的linux,其根分区都有逻辑卷。

 

LVM最低层就是物理卷,也就是我们常说的物理设备PV(physical volume)。一个或几个分区划分成PV后,再把其组成一个或多个VG(volume group)卷组。

lvm_physical       lvm_volume_02

而LV逻辑卷就是在VG之上建立的,一般用户是看不到底层的物理设备,他们感觉就像一个分区一样。

对应LV而言,它又分逻辑边界和物理边界。物理边界就相当于我们的磁盘分区一样,逻辑边界是在物理边界里建立出来的。

lvm_target_03

注意逻辑边界必须小于等于物理边界。最好是小于物理边界,因为万一你要缩减逻辑卷时它如果是按1000进行换算,而不是是按1024换算。而VG是按1024换算,那么会出问题。当然一般不会,以防万一。

 

创建LVM:1. 首先用fdisk把磁盘分区类型调整到8e即linux LVM

          2. pvcreate /dev/device

          3. vgcreate VG-NAME /dev/device

                                -s PE(每个磁盘块大小,默认4M)

          4. lvcreate –n LV-NAME VG-NAME –L +#(指定空间大小)

          5. mke2fs –t ext4 /dev/VG-NMAE/LV-NAME 或者 /dev/mapper/VG-NAME-LV-NAME

VG扩展:

首先准备好一个PV;

使用vgextend命令即可完成扩展;

vgextend VG_NAME /dev/device(设备名)

VG缩减:一般都不会缩减,但是如果磁盘坏了,就用得上

1. 确定要移除的PV;

2. 将此PV上的数据转移至其他PV;

           pvmove /dev/device 注意:用vgs查看卷的空闲空间,空闲空间必须大于要移除的分区空间才能移除成功。不然会报错,因为创建好了LV后,PV的空间都挪到了VG上,所以当你pvs查看时就会出现这种情况

lvm_blank_04

3. 从卷组中将此PV移除;

            vgreduce VG-NAME /dev/device

4. 删除此pv

            pvremove /dev/device

扩展逻辑卷

1. 确定要扩展多大?

2. 确定当前逻辑卷所在的卷组有足够的空闲空间;

扩展:

                  1、物理边界

                                   lvextend –L [+]SIZE  /dev/VG-NAME/LV-NAME  有+号表示:扩展了多少。没+号表示:扩展到多少

                  2、逻辑边界

                                    resize2fs /dev/VG-NAME/LV-NAME

缩减逻辑卷

确定缩减为多大?前提是:至少能容纳原有的所有数据。

缩减:

        1、卸载并强行检测文件系统;
            e2fsck –f  /dev/VG-NAME/LV-NAME 
        2、逻辑边界
            resize2fs /dev/VG-NAME/LV-NAME  SIZE     e2fs只适用于ext文件系列,如果是其它的文件系统要用另外的工具
        3、物理边界
            lvreduce -L [-]SIZE /dev/VG-NAME/LV-NAME

快照卷:
                  1) 生命周期为整个数据时长;在这段时长内,数据的增长量不能超出快照卷大小;
                  2) 快照卷应该是只读的;
                  3) 跟原卷在同一卷组内;
     lvcreate
        -s : 快照卷;
        -p r: 限制快照卷为只读访问

    lvcreate -L SIZE -s -p r -n LV_NAME /path/to/lv

移除逻辑卷:
    lvremove /path/to/lv

移除卷组:
    vgremove VG_NAME