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