LVM(Logical Volume Manager)是一个应用于 Linux 内核的本地卷管理器 (Logical Volume Manager),它是Linux环境下对磁盘分区进行管理的一种机制,通过建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

 
    每个Linux的使用者,在装系统的时候,给系统分区是一个让人头疼的问题。管理员不仅要考虑到当前某个分区需要的容量,还要遇见到该分区以后的使用情况,给其相应的空间。如果估计不当,会导致某个分区不够用,这时可能要备份系统,清楚硬盘,重新对硬盘分区,然后恢复数据到新分区等。而对有些服务器来说,停机是不能允许的,那么当磁盘空间耗尽的话,该怎么办呢?而LVM就完美的解决了这些问题,他可以使管理员自由的分区,并能方便实现文件系统跨越分区和不同磁盘。
 
    我们前面提到LVM通过在硬盘和分区之上的一个逻辑层,来实现管理。而这个逻辑层的组成是什么呢?它有三个层次:
    1,物理卷
    它是最底层的,用pv标识,可以把任何一种物理块设备创建为物理卷,例如磁盘分区或RAID设备都能被创建为物理卷    
    2,卷组
    用vg标识,它由pv组成,可以把多个pv创建为一个卷组。vg的大小由物理卷的大小来决定,vg的大小可以扩展或者缩减,扩展或缩减之后其中存放的数据不会丢失。
    3,逻辑卷
    用lv标识,建立在vg之上,可以在vg上建立多个,建立之后就可以格式化为磁盘分区来使用了。
    逻辑卷非常重要的功能是支持:快照
    什么是快照呢?
    在LVM中,快照存放在相应的卷组中,它也是一个逻辑卷。快照是原文件的第二条访问路径,通过快照可以访问原文件,但这个原文件是建立快照那一刻的文件的状态,对快照备份就是对这一时刻的文件备份,这就保证了在备份的时候,原文件不改变,保证了数据的完整和可用性。
    而快照工作原理是什么呢?
    快照刚建立的时候是空的,其中存放的是建立快照之后那些被改变的文件,也就是说快照的大小会随着你磁盘写入量的增大而增加。当我们恢复或使用快照的时候,系统会把快照中存放的文件还原为原来的状态,这也就相当于把文件恢复到建立快照时的状态了。
快照的大小,取决于备份数据的时间,及这段时间内,磁盘数据的变化量。备份完后,删除快照就好了。
    
    既然LVM有三个层次,那么我们必须先将物理设备创建成物理卷,在组合物理卷创建为卷组,再在物理卷上创建逻辑卷,最后把逻辑卷格式化为相应的文件系统就可以使用了。
    我们先来了解一下和物理卷,卷组,逻辑卷相关的一些命令:
     pvcreate  创建物理卷
     pvremove  删除物理卷
     pvmove    移动物理卷中的数据
     pvscan    扫描物理卷
     pvdisplay 显示物理卷的详细信息
     pvs       显示物理卷的摘要信息
    
     vgcreate  创建卷组
     vgdisplay 显示卷组的详细信息
     vgextend  扩展卷组
     vgreduce  缩减卷组
     vgremove  删除卷组
     vgs       显示卷组的摘要信息
     vgscan    扫描卷组
 
     lvcreate  创建逻辑卷
     lvdisplay 显示逻辑卷的信息信息
     lvremove  删除逻辑卷
     lvreduce  缩减逻辑卷
     lvextend  扩展逻辑卷
     lvs       显示逻辑卷的摘要信息
     lvscan    扫描逻辑卷
    
     下面讲解创建过程:
     fdisk /dev/sda
     先对磁盘分区,创建我们要使用的分区,id为"8e"
     一,创建
     pvcreate /dev/sda5 /dev/sda6
     把这两个磁盘分区创建为逻辑卷
  
     vgcreate -s 8M myvg /dev/sda5 /dev/sda6
     -s  用于指定PE的大小,不指定默认是4M,单位可以是K,M,G,T等
     把这两个物理卷创建为卷组,卷组名myvg
 
     lvcreate -L 1G -p rw -n lv1 myvg
     -L 指定创建的逻辑卷的大小,单位可以是K,M,G,T
     -n 指定创建的逻辑卷的名字
     -p 可以指定逻辑卷的权限,例r|rw
     在卷组myvg中创建逻辑卷mylv
 
     mke2fs -j /dev/myvg/lv1
     格式化这个逻辑卷为ext3文件系统,之后挂载就可以使用了
 
     mkdir /mylv
 
     vi /etc/fstab
     /dev/myvg/lv1 /mylv ext3 defaults 0 0
     在文件中添加如下行,可以使这个逻辑卷在开机时自动挂载
 
     mount /dev/myvg/lv1 /mylv
     挂载lv1,使现在就能使用
 
     二,查看相关信息
     pvdisplay  
     查看所有物理卷的信息
     pvdisplay /dev/sda5
     查看此物理卷的信息   
     vgdisplay  
     查看所有卷组的信息
     vgdisplay /dev/myvg
     查看此卷组的信息   
     lvdisplay  
     查看所有逻辑卷的信息
     lvdisplay /dev/myvg/lv1
     查看此逻辑卷的信息 
 
     三,扩展缩减
     文件系统定义的是一个软边界,lv创建的是一个硬边界。当我们扩展逻辑卷的时候:先要扩展硬边界,再扩展软边界。当我们缩减逻辑卷的时候:先要缩减软件边界,再缩减硬边界 
     扩展卷组:
     vgextend myvg /dev/sda7  (sda7的id为8e)
     给卷组再新建一个物理卷,这样卷组的空间就变大了
 
     缩减卷组:
     pvmove /dev/sda6
     缩减卷组之前,先将要移除的物理卷中的数据移走,它会自动识别移动数据
     
     vgreduce myvg /dev/sda6
     去除了sda6,也就缩减了卷组的大小
 
 
     扩展逻辑卷:     
     lvextend -L 2G /dev/myvg/lv1
     把逻辑卷扩展到2G
   
     resize2fs /dev/myvg/lv1 
     自动扩展文件系统至和逻辑卷相同大小
 
     缩减逻辑卷:
     umount /dev/myvg/mylv
     缩减时要先卸载
   
     e2fsck -f /dev/myvg/lv1
     强制检测这个文件系统
    
     resize2fs /dev/myvg/lv1 1G
     缩减文件系统到1G
 
     lvreduce -L 1G /dev/myvg/lv1
     缩减逻辑卷到1G
 
     mount /dev/myvg/lv1 /mylv
     挂载之后就可以继续使用了
     
     四,快照的创建
     lvcreate -L 100M -s -p r -n snap_lv1 /dev/myvg/lv1
     -L 创建快照的大小
     -s 指定要创建的是快照
     -p 指定这个快照的权限
     -n 创建快照的名字
     给/dev/myvg/lv1创建一个快照snap_lv1
  
     mkdir /backup
 
     mount /dev/myvg/snap_lv1 /mnt
     挂载这个快照至/mnt下
 
     tar jcf /backup/snap_lv1.tar.bz2 /mnt
     实现对快照的保存,也就实现了对建立快照时文件系统的备份
 
     umount /mnt
     卸载快照
 
     lvremove  /dev/myvg/snap_lv1
     删除快照