linux lvm 的本质是将物理存储“打散再重组”,通过pv(物理卷)、vg(卷组)、lv(逻辑卷)三层抽象实现灵活管理:pv为带元数据的块设备并划分为pe,vg聚合多个pv形成统一存储池,lv从vg中分配并可动态调整大小。

Linux LVM 的本质,是把物理存储“打散再重组”——不是直接操作硬盘或分区,而是先抽象出三层结构:PV 是原料,VG 是仓库,LV 是可直接用的货箱。
物理卷(PV):LVM 的基础砖块
PV 是被 pvcreate 初始化过的块设备,比如 /dev/sdb、/dev/nvme0n1p2 或 RAID 阵列。它不直接存数据,而是带上 LVM 元数据,划分为固定大小的 PE(默认 4MiB)。一个 PV 必须属于且仅属于一个 VG。
- 初始化:sudo pvcreate /dev/sdb /dev/sdc1
- 查看状态:pvs(简明)或 pvdisplay /dev/sdb(详细)
- 移除前必须清空:先用 pvmove 迁走数据,再用 pvremove 清除元数据
卷组(VG):统一管理的存储池
VG 把多个 PV 的空间聚合成一个逻辑池,所有 PE 在这个池里统一调度。VG 名称全局唯一,是 LV 分配空间的唯一来源。
- 创建:sudo vgcreate myvg /dev/sdb /dev/sdc1
- 扩容:sudo vgextend myvg /dev/sdd —— 新 PV 加入后,VG 总容量立即增加
- 缩容:先 pvmove /dev/sdb,再 sudo vgreduce myvg /dev/sdb
- 删除 VG 前,必须先删掉它里面所有 LV
逻辑卷(LV):用户真正使用的虚拟分区
LV 是从 VG 中切出来的连续(或条带化)逻辑空间,表现为 /dev/myvg/mydata 这样的设备路径。它可格式化、挂载,大小支持在线调整——但注意:lvextend 只改块设备边界,文件系统需额外扩展。
- 创建:sudo lvcreate -L 20G -n data myvg
- 扩容:sudo lvextend -L +5G /dev/myvg/data,然后运行 resize2fs /dev/myvg/data(ext4)或 xfs_growfs /mnt/data(XFS)
- 查看:lvs 或 lvdisplay /dev/myvg/data
- LV 支持快照、镜像、RAID 等高级特性,但基础使用只需关注创建与伸缩
整个流程就是:选好磁盘 → pvcreate 打标 → vgcreate 归仓 → lvcreate 出货 → 格式化挂载。每层职责清晰,互不越界。











