LVM:

一、

Logical Volum Manager :逻辑卷管理器

LVM可以整合多个物理分区在一起,让这些分区看起来是一个磁盘一样,还可以在将来其他的物理

分区或将其从这个LVM管理的磁盘当中删除!

物理卷(PV)id=8e ---> 卷组(Vg) --> 逻辑卷(Lv)    三层    

二、特点:

一个Vg至少包含一个物理卷。

逻辑卷可用

卷组大小由物理卷改变

逻辑卷大小改变,边界改变,不影响里面数据

逻辑卷可以缩减,边界缩小,不影响里面数据(有一定风险)

快照卷

逻辑卷有快照功能,保存原卷数据某一时刻的状态

访问快照是快照那一时刻数据的状态

快照非常小。

快照刚刚创建时几乎是空的。是访问逻辑卷的一条路径。

在线备份

在操作数据时备份数据不完整,损坏的。 可以使用快照。

PE: 物理盘区。--- check

三、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 ,利用lvr
 
  esize
 
  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 /dev/myvg/mylv

e2fsck -f /dev/myvg/mylv

resize2fs  /dev/myvg/mylv 2G

lvreduce -L 2G(-1G) /dev/myvg/mylv

mount /dev/myvg/mylv

八、怎么实现卷快照:

snap_mulv 快照卷名

lvcreat -L 128M -s -p r -n snap_mylv /dev/myvg/mylv

#-L 128M指定大小 ;-p r 指定权限为只读 ;-n snap_mylv为快照卷名称; -s 创建快照

mkdir /backup   创建挂载点

mount /dev/myvg/snap_mylv /back/    挂载快照卷

九、例如:
# fdisk /dev/sdb

n  t 8e w

# partprobe

# mke2fs -j /dev/sdb5 /dev/sdb6 /dev/sdb7

# pvcreate /dev/sdb{5,6,7}

# pvdisplay /dev/sdb5  | pvs

 

# vgcreate myvg /dev/sdb5

# vgdisplay myvg  |  vgs

# vgextend myvg /dev/sdb6 /dev/sdb7

# vgs

# pvmove /dev/sdb5

# vgreduce myvg /dev/sdb5

 

# vgremove myvg

# vgcreate -s 16M myvg /dev/sdb6 /dev/sdb7   

# vgexteng -t myvg /dev/sdb5

 

# lvcreate -L 5G -n mylv myvg

# lvdispaly /dev/myvg/mylv  | lvs

 

# lvextend -L 8G(+3G) /dev/myvg/mylv

# resize2fs /dev/myvg/mylv 8G(+3G)

# umount /dev/myvg/mylv

# e2fsck -f /dev/myvg/mylv

# lvreduce -L 6G(-2G) /dev/myvg/mylv

# mount /dev/myvg/mylv /mnt

 

# lvcreate -L 2G -s -p r -n snap_mylv /dev/myvg/mylv

# lvreduce /dev/myvg/snap_mylv