1.LVM是什么?

LVM为逻辑卷管理器,可以将多个物理分区整合起来,让其看起来好像是一个大磁盘,LVM最大的用处为弹性地调整文件系统的容量。

与LVM相关的几个概念

    PV 物理卷 位于LVM最底层,通过pvcreate命令将磁盘分区(分区的SystemID需要实现转换成8e,通过fdisk命令实现)转换而成

    VG 卷用户组 由多个PV整合而成,也就是上面说的大磁盘,其大小取决于PE的大小和个数。默认VG最大可以包含65536个PE(一个PE大小默认为4MB),即256GB。

    PE 物理扩展块,是LVM的最小存储块,类似与文件系统的block

    LV 逻辑卷 由VG切分而成,是可以被格式化文件系统的类似的分区。LV的设备名的格式/dev/vgname/lvname

   LVM 是通过交换PE来实现弹性调整文件系统的容量的。

   实现的流程:创建PV----创建VG-----创建LV----格式化LV-----挂载使用。

2.如何实现创建LV?

  创建PV

  首先创建4个分区,并且将systemid改为8e

  Linux基础(18)LVM以及应用_快照

  创建PV  pvcreate /dev/sda{9,10,11,12}

  Linux基础(18)LVM以及应用_LVM_02

  创建VG

  使用vgcreate命令,-s用来指定PE的大小

  Linux基础(18)LVM以及应用_Linux_03

  如果需要增减VG的容量,使用vgextend命令 格式为vgextend vgname /dev/sda#

  划分LV

  使用lvcreate命令

  格式为lvcreate [options]  vgname

  -l  通过PE的数量指定LV的大小

  -L  通过容量来指定LV的大小 单位可以G,M,T

  -n  指定LV的名字

   Linux基础(18)LVM以及应用_Linux_04

  格式化LV并且挂载

  Linux基础(18)LVM以及应用_快照_05

3.增加LV的容量

  五步走

  使用fdisk创建分区---创建PV---使用vgextend加入新的PV扩展VG---利用lvresize将新的PV内的PE加入到LV中----使用e2fsck检查文件系统----使用resize2fs扩大文件系统的容量

  pvcreate /dev/sda13  #新建PV

  vgextend myvg /dev/sda13  #扩展VG

  lvresize -L +100M /dev/myvg/mylv #扩展LV

  e2fsck -f /dev/myvg/mylv #注意,应该是强行检车,没有-f是不行的  

  resize2fs /dev/myvg/mylv #将LV的容量扩展到整个文件系统

  最重要的使用lvresize命令

  lvresize -l 或者-L选项 通过+来扩展LV的容量

  具体格式为lvresize -L +... /dev/vgname/lvname

  Linux基础(18)LVM以及应用_快照_06

4.减少LV的容量

  步骤

  umount /dev/myvg/mylv #LVM不支持在线缩小,但是放大可以,所以应该先卸载

  e2fsck -f /dev/myvg/mylv #强行进行磁盘检查

  resize2fs /dev/myvg/mylv 400M   #降低文件系统的容量,原来是500M,现在减小到400M

  lvresize -L -100M /dev/myvg/mylv #降低LV的容量

  pvdisplay #将某个PV抽离VG的时候,必须要确定里面的PE不被使用才可以,所以使用pvdisplay查看哪个PV的PE是没有使用的,将要抽离的PV中的含有数据的PE移动到该PV里

  pvmove /dev/sda9 /dev/sda13  #转移PE

  vgreduce myvg /dev/sda9将/dev/sda#抽离出VG

  pvremove /dev/sda9

  Linux基础(18)LVM以及应用_Linux_07

  

5.LVM的重要应用,快照 snapshot,可以用来备份数据

  快照的原理:将系统信息记录下来,如果有数据改动了,就将原来的数据移到快照区,没有改动的区域由文件系统和快照区共享。

  创建快照区

  pvcreate /dev/sda9

  vgextend myvg /dev/sda9

  lvcreate -L 100M -s -n mysnapshot /dev/myvg/mylv #最重要的是-s选项,意思是创建快照区,最后的/dev/myvg/mylv 是"被快照"的文件系统

  Linux基础(18)LVM以及应用_快照_08

  接下来挂载快照区

  mkdir /mnt/snapshot

  mount /dev/myvg/mysnapshot /mnt/snapshot

  df #查看是否挂载成功  

  Linux基础(18)LVM以及应用_Linux_09

  可以看到快照区就像是LV的一面镜子,一样一样的。也就是我们在挂载/dev/myvg/mylv 与/dev/myvg/mysnapshot后里面看到的数据是一样的。

  快照的重要的作用就是可以用来复原文件系统

  cd /mydata

  rm -rf *  #搞破坏

  lvdisplay /dev/myvg/mysnapshot #发现确实被占用了一部分空间

  mkdir -p /backups

  cd /mnt/snapshot

  tar -jcf /backups/mylv.tar.bz2  * #备份

  umount /mnt/snapshot

  lvremove /dev/myvg/mysnapshot

  mke2fs -j /dev/myvg/mylv

  mount /dev/myvg/mylv /mydata

  cd /mydata

  tar xf /backups/mylv.tar.bz2 #还原

6.LVM的关闭

必须按下面的流程操作进行,否则会让文件系统出现问题。

umount /mnt/mydata #先卸载LV

lvremove /dev/myvg/mylv #删除LV

vgchange -an myvg #让vg不具备active 的标志

pvremove /dev/sda{9,10,11,12,13} #删除PV

fdisk /dev/sda #将分区的systemid由8e改为83  具体操作不在赘述

Linux基础(18)LVM以及应用_快照_10