一、linux的lv(logical volume)

lv各层次示例图如下:

linux运行lua项目 linux lv_数据

核心思想:最底层的pv就是一个一个的磁盘,在保证总体容量的情况下,可以移除部分磁盘,在pv上面设置一个vg,相当于vg把所有pv的容量融合在一起,在vg之上再进行逻辑磁盘的容量分配,vg给lv进行空间分配时,是以pe为单位进行的。pe在lv层面叫le,这些功能都是由linux的dm模块,也就是device mapper模块实现的。

  实现lv的好处在于,在保证总体容量,不影响使用的情况下,lv,vg可以扩展或者减少容量,pv同样可以加可以撤。

 lv可以实现:多路径(几个路径做备份,那个坏了,另一个可以顶上,而且平时还可以让数据并行传输),快照(快照中只保存数据更改的部分)

 

二、新建lv过程

 新建分区(磁盘类型调整为linux lvm类型的)

1.pvcreate /dev/sda{10,11} 创建pv

2.pvs 简单查看pv信息或者pvdisplay 查看pv的详细信息

   pvdisplay /dev/sda10

   pvscan 扫描当前系统上的pv

3.创建vg

vgcreate myvg /dev/sda{10,11}

vgcreate 用法:

    -s:可以指定pe大小,默认为4M。单位可以为b、k、m、g

 延伸:

      删除vg命令

      vgremove  vgname

      缩减vg过程:

     先执行pvmove命令:

      pvmove /dev/sda11,将pv sda11中的数据移到其他pv

      vgreduce myvg /dev/sda11

     pvremove /dev/sda11 将pv删除

4.vgs

   vgdisplay myvg 

5.扩展vg 

vgextend myvg /dev/sda12

6.创建lv

lvcreate -n LV_NAME -L (容量大小)#M,G VG_NAME

lvcreate  -L 50M -n testlv myvg

lv 存放在 /dev/mapper/VG_NAME-LV_NAME, 被/dev/VG_NAME/LV_NAME软链接

7.格式化

 mke2fs -j /dev/myvg/testlv

8.挂载

mount   /dev/myvg/testlv

9.移除lv

 umount  /dev/myvg/testlv

lvremove  /dev/myvg/testlv

 

三、扩展lv

先扩展物理边界,再扩展逻辑边界

扩展物理边界:先检查vg是否够用

 lvextend -L 

     -L[+]#:表示扩展了5G,-L +5G ,扩展到5G: -L 5G

扩展逻辑边界

resize2fs

resize2fs -p /path/to/lv 物理设备能提供多少,就扩展多少。

四、缩减逻Lv

umonut /path/to/lv

缩减逻辑边界

resize2fs /path/to/lv # 表示缩减逻辑卷

不能在线缩减,得先卸载

确保缩减后的空间大小,依然能存储原有的数据

在缩减之前应该先检查文件系统,确保文件系统处于一致性状态。e2fsck -f 

缩减物理边界

lvredude -L{-} # /path/to/lv

缩减逻辑边界

lvreduce -l /path/to/lv

五、创建快照卷

1.注意:

  (1).生命周期为整个数据访问时长,在这段时长内,数据的增长量不能超出快照卷大小,

  (2).快照卷应该是只读的

  (3).快照卷要跟原卷在同一卷组

2.创建

lvcreate 
  -s
   -p r|w
lvcreate -L #
eg:lvcreate -L 50M -N testlv-snap -s -p r  /dev/myvg/testlv

挂载

mount /dev/myvg/testlv-snap /mnt

快照创建后,对原卷中的数据进行改变,不会影响快照中的数据。