一、LVM 基础概念
LVM(Logical Volume Manager,逻辑卷管理)通过分层管理实现灵活存储配置,核心组件包括:
物理卷(PV):底层存储单元,由磁盘分区/物理设备初始化而来,最小分配单位为 PE(物理扩展块)。
卷组(VG):多个 PV 的集合,形成统一存储池。
逻辑卷(LV):从 VG 中划分的动态存储单元,可像传统分区一样格式化、挂载,支持动态扩容/缩容。

二、LVM 管理命令总览
按操作对象分层整理核心命令,覆盖「扫描、创建、查看、删除、扩容、缩容」全流程:
三、LVM 完整实践流程
LVM 遵循 PV→VG→LV 分层依赖关系,操作需按「底层到上层」或「上层到下层」的顺序:
创建:先做
pvcreate,再vgcreate,最后lvcreate;删除:先删
lvremove,再vgremove,最后pvremove;扩容:先通过
vgextend给 VG 加 PV ,再用lvextend扩 LV ,最后扩展文件系统(如resize2fs);缩容:先缩文件系统(如
resize2fs),再lvreduce缩 LV ,最后可选vgreduce缩 VG (移除空闲 PV )。
1. 环境准备:添加虚拟磁盘

在虚拟机中新增两块虚拟磁盘(sdb、sdc),通过 lsblk 确认识别:
lsblk
# 输出示例(新增 sdb、sdc 磁盘)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 24G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 23G 0 part
├─centos-root 253:0 0 20.6G 0 lvm /
└─centos-swap 253:1 0 2.4G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk 2. 磁盘分区(可选:为 PV 准备分区)
对 sdb、sdc 创建主分区(也可直接用整盘做 PV):
# 分区 sdb(创建 10GB 主分区 sdb1)
fdisk /dev/sdb
# 输入 n→p→1→回车→+10G→w 保存
# 分区 sdc(创建 5GB 主分区 sdc1)
fdisk /dev/sdc
# 输入 n→p→1→回车→+5G→w 保存
# 查看分区结果
lsblk
# 输出示例(新增 sdb1、sdc1 分区)
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 10G 0 part
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 5G 0 part 3. 创建物理卷(PV)
将分区/磁盘初始化为 PV:
# 初始化 PV(支持多设备批量创建)
pvcreate /dev/sdb1 /dev/sdc1
# 查看 PV 状态
pvs
# 输出示例(sdb1、sdc1 已转为 PV)
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <23.00g 0
/dev/sdb1 lvm2 --- 10.00g 10.00g
/dev/sdc1 lvm2 --- 5.00g 5.00g4. 创建卷组(VG)
将 PV 组合为 VG(统一存储池):
# 创建 VG(命名为 volumeGroup01,包含 sdb1、sdc1)
vgcreate volumeGroup01 /dev/sdb1 /dev/sdc1
# 查看 VG 状态
vgs
# 输出示例(volumeGroup01 容量 14.99G,空闲 14.99G)
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <23.00g 0
volumeGroup01 2 0 0 wz--n- 14.99g 14.99g5. 创建逻辑卷(LV)
从 VG 中划分动态存储单元(LV):
# 创建 LV(命名 logicVolume01,大小 12G)
lvcreate --size 12G --name logicVolume01 volumeGroup01
# 查看 LV 状态
lvs
# 输出示例(logicVolume01 容量 12G,归属 volumeGroup01)
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 20.59g
swap centos -wi-ao---- 2.40g
logicVolume01 volumeGroup01 -wi-a----- 12.00g 6. 格式化与挂载 LV
LV 需格式化文件系统后挂载使用:
# 格式化(以 xfs 为例,也可用 ext4 等)
mkfs.xfs /dev/volumeGroup01/logicVolume01
# 创建挂载点并挂载
mkdir -p /mount/xl
mount /dev/volumeGroup01/logicVolume01 /mount/xl
# 查看挂载状态
df -Th
# 输出示例(/mount/xl 已挂载,容量 12G)
/dev/mapper/volumeGroup01-logicVolume01 xfs 12G 33M 12G 1% /mount/xl7. 动态扩容 LV(扩展实践)
VG 剩余空间可扩容 LV,需同步文件系统:
# 查看 VG 剩余空间(volumeGroup01 剩余 ~3G)
vgs
# 输出示例:volumeGroup01 VFree 2.99g
# 扩容 LV(使用 VG 全部剩余空间)
lvextend -l +100%FREE /dev/volumeGroup01/logicVolume01
# 同步文件系统(xfs 用 xfs_growfs,ext4 用 resize2fs)
xfs_growfs /mount/xl
# 验证扩容结果
df -Th
# 输出示例(/mount/xl 容量变为 ~15G)
/dev/mapper/volumeGroup01-logicVolume01 xfs 15G 33M 15G 1% /mount/xl注意事项
依赖顺序:操作需遵循 PV→VG→LV 分层逻辑,删除时需反向(先删 LV→再删 VG→最后删 PV)。
文件系统同步:扩容 LV 后,必须用对应工具(
xfs_growfs/resize2fs)同步文件系统,否则挂载容量不更新。快照与备份:LV 支持快照(
lvcreate -s),可用于数据备份,但需预留足够快照空间。缩容风险:缩容 LV 需先缩文件系统(如
xfs不支持在线缩容,需卸载后操作),风险较高,建议优先扩容。
通过以上步骤,可完整实现 LVM 从搭建到动态扩容的全流程管理,灵活应对存储需求变化。