3.4.1 LVM基本概念:PV、VG、LV与PE

LVM(Logical Volume Manager)通过将物理存储抽象为可动态管理的逻辑资源,实现容量扩展、在线调整与更灵活的磁盘利用。本节聚焦核心概念:PV、VG、LV与PE,以及它们之间的关系,并配套最小可执行示例、排错与练习。

原理结构图(PV→VG→LV→文件系统):

文章图片

概念与关系要点:
- PV(Physical Volume):LVM最小物理管理单元,通常由整盘或分区初始化而来;PV被切分成等大小的PE。
- VG(Volume Group):由多个PV聚合的资源池,统一分配与管理。
- LV(Logical Volume):从VG中按需分配得到的逻辑卷,最终在其上创建文件系统并挂载。
- PE(Physical Extent):默认4MB(可自定义),是LVM分配空间的最小单位;LV由多个PE组成,LE与PE一一映射。

安装与基础环境检查(示例以RHEL/CentOS为主):

# 安装LVM管理工具
sudo yum install -y lvm2

# 检查LVM版本与内核模块
lvm version
lsmod | grep dm_mod

# 查看现有磁盘
lsblk -f

命令解释:
- lvm version:确认lvm2工具是否就绪。
- lsmod | grep dm_mod:确认设备映射器模块加载。
- lsblk -f:查看磁盘、分区与文件系统关系,避免误操作系统盘。

最小可执行示例(PV/VG/LV/PE关系可视化):

# 假设新增两块空盘 /dev/sdb /dev/sdc
sudo pvcreate /dev/sdb /dev/sdc

# 创建VG,并指定PE大小为8MB便于观察
sudo vgcreate -s 8M vg_data /dev/sdb /dev/sdc

# 从VG中创建两个LV
sudo lvcreate -L 10G -n lv_mysql vg_data
sudo lvcreate -L 5G  -n lv_logs  vg_data

# 查看PV/VG/LV与PE映射
sudo pvs
sudo vgs
sudo lvs -o +seg_pe_ranges

关键输出预期(示意):
- vgs 看到 vg_data 总容量为两块盘之和。
- lvs -o +seg_pe_ranges 可看到LV映射到哪些PE区间。

命令解释:
- pvcreate:将磁盘初始化为PV(写入LVM元数据)。
- vgcreate -s 8M:创建VG并指定PE大小;PE大小影响LV扩展粒度与元数据规模。
- lvcreate -L:按容量创建LV;-n指定名称。
- pvs/vgs/lvs:查看LVM三层对象状态。

排错与常见问题定位(示例):

# 1) PV初始化失败:设备被占用
sudo pvs
sudo wipefs -a /dev/sdb   # 清除旧签名后重试

# 2) VG中PE不足导致LV创建失败
sudo vgs -o vg_name,vg_size,vg_free,vg_free_count

# 3) 查看LVM元数据与设备映射
sudo lvdisplay
sudo dmsetup ls --tree

排错说明:
- wipefs -a 可清理旧文件系统/RAID签名(谨慎使用)。
- vg_free_count 表示剩余PE数量,可判断是否满足LV需求。
- dmsetup ls --tree 直观看到逻辑卷到物理设备映射层级。

练习:
1. 用两块新盘创建 vg_data,PE大小设置为16MB,创建 lv_app 20GB;用 vgs -o +vg_free_count 验证PE变化。
2. 尝试在已有VG中再创建一个5GB的LV,观察 lvs -o +seg_pe_ranges 的PE分配区间。
3. 将一个已存在的分区初始化为PV,并加入VG后,比较加入前后 vg_sizevg_free 的变化。

小结:
理解PV、VG、LV、PE的映射关系,是后续执行扩容、缩减、快照与故障排查的基础。