LVM:
Logical Volum Manager :逻辑卷管理器
LVM可以整合多个物理分区在一起,让这些分区看起来是一个磁盘一样,还可以在将来其他的物理分区或将其从这个LVM管理的磁盘当中删除!


LVM组成:
PV:物理卷,实际分区需要调整系统标示符(ID)成为8e(LVM的识别符),调整system ID可以利用fdisk

VG:卷用户组,所谓的LVM大磁盘就是将许多PV整个成这个VG,VG就是LVM组合起来的大磁盘

LV:最终的VG还会被切成LV,Lv就是最后可以被格式化使用的类似分区!由于PE的大小是在格式化分区是指定的固定大小,所以呢Lv的大小也是有PE的总数所决定的!

PE:物理扩展块,LVM默认使用的4M的PE块,LVM最多能使用65534个PE,,是lVM中最小的存储块,PE有点像是文件系统的block大小,调整PE影响VG的最大容量!

实现流程:
fdisk(system ID改为8e创建逻辑卷分区)-->  pvcreat,pvscan(创建与查看物理卷)-->vgcreat,vgdisplay(以pv卷创建VG卷) --> lvcreat,lvdisplay(从VG中切割出LV)--> mkfs,mount(格式化后挂载使用)

逻辑卷支持快照(snapshot),快照就是将当时的系统信息记录下来,就好像照相功能一般,将来若有任何数据改动了,则原始数据会被移动到快照区,没有被改动的区域则由快照区与文件系统共享,快照卷的大小取决于,数据改变大小和数据改变频度!

命令参数:
PV参数:
pvscan(查询当前系统上任何具有PV的磁盘)
pvcreate(将物理分区新建为PV)
     前期准备是:fdisk /dev/sdb n p 1 t 8e w ..#n为新建分区,p为主分区,1为sdb1卷标,t更改分区属性,8e为LVM默认的标识符,w保存当前的配置信息
     
     pvcreat /dev/sdb{1,2,3}
     pvscan
     pvdisplay
pvdisplay(显示出目前系统上面的PV状态)
pvremove(将PV属性删除,让该分区不具有PV属性)

VG参数:
vgcreate(新建VG的命令)
     -s 指定PE大小,单位可以是K M G T (大小写均可)
        eg:vgcreat -s 16M myvg /dev/sdb{1,2}
            vgscan
            vgscan
            vgdisplay
 vgscan(查找当前系统上是否有VG的存在) vgdisplay(显示当前系统上的VG状态) vgextend(在VG内增加额外的PV)
        eg: vgextend myvg /dev/sdb3 #将sdb3扩展给myvg
            vgdisplay
 vgreduce(在VG内删除PV)
 vgchange(设置VG是否启动(active))
 vgremove(删除一个VG)

LV参数:
lvcreate(新建LV)
     -L 后面直接指定容量,单位可以为K M G T,最小单位为PE
     -l 后面跟的是PE的个数
     -n 后面跟的是LV的名称
         eg:lvcreat -l 255 mylv mylv         #将myvg全部分配给mylv,PE共255个
            ll /dev/myvg/mylv
            lvdisplay
            mkfs -t ext3 /dev/myvg/mylv #(指定LV的全名)
            mkdir /mnt/lvm
            mount /dev/myvg/mylv /mnt/lvm
            df -lh
            cp -a /etc/* /mnt/lvm #测试一下可以lvm,复制一下试试
lvscan(查询系统上面的LV)
lvdisplay(显示系统上面的LV状态)
lvextend(在LV里面增加容量)
     pvcreat /dev/sdb4 #建立新的PV
     pvscan
     vgextend myvg /dev/sdb4 #加大VG利用vgextend
     vgdisplay
     lvresize -l +200 /dev/myvg/mylv #放大LV ,利用lvresize
     lvdisplay
     df /mnt/lvm
     dumpe2fs /dev/myvg/mylv #查看原本文件系统中的superblock记录情况
     resize2fs -f /dev/myvg/mylv #resize2fs的语法,-f强制进行操作
     resize2fs /dev/myvg/mylv #完整的将LV 的容量扩充到整个文件 系统
     df /mnt/lvm
     ll /mnt/lvm
lvreduce(在LV里面减少容量)
     pvdisplay #显示/dev/sdb中的容量大小,并尝试计算文件系统缩小多少
     pvscan
     resize2fs /dev/myvg/mylv 2300M #直接降低文件系统的容量,这里不能将2300M写成2.3G ,这里不能写小数点
     umount /mnt/lvm
     resize2fs /dev/myvg/mylv 2300M
     e2fsck -f /dev/myvg/mylv
     resize2fs /dev/myvg/mylv 2300M
     mount /dev/myvg/mylv /mnt/lvm
     df /mnt/lvm
     
     lvresize -l -45 /dev/myvg/mylv #降低LV的容量,同时剩余45个PE
     lvdisplay
     pvdisplay #确认/dev/sdb3是否都将PE删除了
     pvmove /dev/sdb3 /dev/sdb5 #将sdb3中的PE移动到sdb5中去
     vgreduce myvg /dev/sdb3 #将sdb3从/dev/myvg中移除
     pvscan
     pvremove /dev/sdb3 #这里就成功移除了 !
lvremove(删除一个LV)
lvresize(对LV进行容量大小的调整)
     -L 后面直接指定容量,单位可以为K M G T,最小单位为PE
     -l 后面跟的是PE的个数



如何扩展卷:
一、lvextend
   -L 3G(扩展到3G)/+2G(或者加2G)  /dev/myvg/mylv
二、resize2fs  /dev/myvg/mylv

如何缩减卷:
umount lV
e2fsck -f
resize2fs
lvreduce
mount

怎么实现卷快照:
snap_mulv 快照卷名
lvcreat -L 128M -s -p r -n snap_mylv /dev/myvg/mylv #-L 128M指定大小 ;-p r 指定权限为只读 ;-n snap_mylv为快照卷名称!
mkdir /backup
mount /dev/myvg/snap_mylv /back/