LVM逻辑卷管理


磁盘空间的动态划分和管理
 
LVM简介
LVM是Logical Volume Manager(逻辑卷管理器)的简写,提供将多块磁盘从逻辑上组合成一个大容量的存储(VG)。并且支持容量在线动态扩展和缩减。

LVM管理的概念
PP:物理分区(physical  partition)。
PV:物理卷(Pysical Volume),可以是单独磁盘,也可以是硬盘分区。是标识了pv的物理磁盘或分区。
VG:卷组(Volume Group),一个或多个PV组成的存储空间。
LV:逻辑卷(Logical Volume),相当于物理分区的/dev/sdaX,只有逻辑卷才可以写数据。

PE:物理扩展(Pysical Extent),VG单元,类似于RAID的条带大小。 当多个PV组成一个VG时,LVM会在所有PV上做类似格式化的动作,将每个PV切成一块块的空间,这一块块的空间就称为PE, 通常是4MB。
LE:逻辑扩展(Logical Extent),LV的组成单位。大小为PE的倍数(通常为1:1)。



LVM能够实现分区的动态扩容和缩容  
 
LVM的创建过程其实是一个先整合,在划分的过程。
 
LVM创建过程
 1.添加硬盘或者是分区,通知内核
 2.创建物理卷
 3.创建卷组
 4.创建逻辑卷
 5.创建文件系统
 6.挂载使用


下面通过案例实现来具体了解:

       案例1:给虚拟机添加4块1G的SCSI硬盘,将其中的sdb、sdc创建成一个名称为vg0的卷组,在卷组中创建一个 1.6G的名称为lv0的逻辑卷,再创建一个400M的名称为lv1的逻辑卷。并将lv0、lv1逻辑卷格式化成ext4文件系统,将lv0挂载到/lv0目录中,将lv1挂载到/lv1目录中,并分别写入一些文件到逻辑卷中。
案例2:对lv0逻辑卷扩容和缩容。将lv0的容量扩大为2G,并验证lv0的容量。
案例3:对vg0卷组扩容和缩容。将sdd、sde硬盘加入到vg0卷组中,并验证vg0的容量。

案例1实施思路:
1、将sdb、sdc硬盘创建成pv,并查看信息
lsblk
pvscan
pvcreate  --help    或   man  pvcreate  
pvcreate   /dev/sd[bc]  或  pvcreate   /dev/sdb   /dev/sdc
pvs
pvdisplay

2、创建vg,并查看vg信息
vgscan
vgcreate  --help
vgcreate  -s  8M  vg0   /dev/sd[bc]  或  vgcreate   vg0   /dev/sdb   /dev/sdc

-s 指定PE的大小  
   PE(物理扩展单元)  大小(默认4M)
   
查看vg信息  
vgs
vgdisplay

3、创建lv,并查看lv信息
lvscan
lvcreate   -L   1.6G   -n  lv0   vg0
       -n   指定lv的名字
       -L   指定lv的大小
       vg0  用vg0的空间做lv  

lvcreate -n lv1 -l 20  vg0
       -l   指定使用多少个PE

查看lv信息
lvs
lvdisplay

4、格式化
mkfs.ext4    /dev/vg0/lv0

5、手动挂载,写入数据
mkdir    -pv   /lv0   /lv1
mount   /dev/vg0/lv0   /lv0
mount   /dev/vg0/lv1   /lv1
lsblk
mkdir  /lv0/conf   /lv1/host
cp  -v  /etc/*.conf   /lv0/conf/
cp  -v  /etc/host*   /lv1/host/

------------------  
     
案例2:lv0扩容  从vg0直接取空间
lvextend -L +400M /dev/vg0/lv0  在原来的空间上加上多少空间
lvs    查看lv状态信息
resize2fs /dev/vg0/lv0 文件系统扩容
df  -h    查看文件系统容量

lv扩容 卷组没有空间了
1.创建新分区
fdisk -cu /dev/sdd

2.创建物理卷
pvcreate /dev/sdd  /dev/sde

3.加入卷组 vg扩容
vgextend vg0 /dev/sdd  /dev/sde
vgs

4.逻辑卷扩容  lv扩容
lvextend -L 2.5G /dev/vg0/lv0  指定到多少
lvs

5.文件系统扩容
resize2fs /dev/vg0/lv0
df  -h

------------------  
     案例3:缩容
注意:
1.风险大有可能造成数据损坏
2.不能在线缩容
3.确保缩减后的空间大小依然能存储原来的所有数据
4.在缩减之前强制检查文件系统

一.现在lv1空间不足,卷组vg内没有空间,lv0空间过大,缩减lv0空间,给lv1加空间
缩减lv0 在缩减lv0之前先缩减文件系统

1.卸载
umount  /dev/vg0/lv0

2.强制检查文件系统
e2fsck -f /dev/vg0/lv0

3.缩减文件系统
resize2fs /dev/vg0/lv0 100M  缩减到400M

4.缩减lv
lvreduce -L 400M /dev/vg0/lv0  缩减到400M

检查缩容后的lv1逻辑卷的数据有没有损失
1.挂载
mount /dev/vg0/lv1  /lv1

2.查看数据内容
cd  /lv1
cat  a.txt

给lv0扩容
lvextend -L +700M /dev/vg0/lv0
给lv0文件系统扩容
resize2fs   -p   /dev/vg0/lv0

----------------------------------

       案例4:xfs文件系统的扩容

文件系统容量更新的方法与ext4略有不同而且不支持缩容

xfs_growfs  设备


----------------------------
数据迁移
pvmove /dev/sdc

从卷组移除物理卷
vgreduce vg0  /dev/sdb

删除物理卷
pvremove /dev/sdb
 
删除卷组
vgremove vg0  

删除逻辑卷
lvremove /dev/vg0/lv1

---------------------
删除LVM
   先卸载
   删除逻辑卷
   删除卷组
   删除物理卷
----------------------
逻辑卷管理命令大全:
   
分区

pvcreate
pvs
pvdisplay
pvscan
pvmove    
pvremove

vgcreate
vgs
vgdisplay
vgscan
vgextend
vgreduce
vgremove

lvcreate
lvs
lvdisplay
lvscan
lvextend
lvreduce
lvremove


lvm快照----恢复

centos7需要快照和逻辑卷同样大小,恢复逻辑卷快照后,快照卷消失

恢复快照需要卸载逻辑卷和快照卷

lvcreate  -n snapshot  -s  -L 1G /dev/vg0/test

mount  -o  ro,nouuid  /dev/vg0/snapshot  /mnt/snapshot

nouuid貌似centos7没有此参数,centos8适用

umount  逻辑卷和快照卷

lvconvert  --merge  /dev/vg0/snapshot  恢复快照

mount