linux文件系统通过物理设备→分区→物理卷(pv)→卷组(vg)→逻辑卷(lv)→文件系统多层抽象构建;其中pv需标记为8e类型或整盘直用,vg由pv组成并以pe为单位管理,lv从vg划分后格式化挂载,支持在线扩容但/boot不可置于lvm。

Linux 文件系统不是直接挂在物理磁盘上,而是通过多层抽象逐级构建的。理解这个层级关系,是做可靠存储管理的前提。
物理设备 → 分区 → 物理卷(PV)
最底层是真实硬件,比如 /dev/sdb 或 /dev/nvme0n1。它本身不能直接存文件,需先划分结构:
- 用 fdisk 或 parted 创建分区,如 /dev/sdb1
- 分区类型必须设为 8e(Linux LVM),否则 LVM 无法识别
- 整块盘也可跳过分区步骤,直接作为 PV 使用(如 /dev/sdc),但生产环境更推荐先分区再标记
- 执行 partprobe 或 udevadm settle 让内核立即识别新分区
物理卷(PV) → 卷组(VG)
PV 是 LVM 的“砖块”,VG 就是把砖块垒成的“墙”——一个统一的存储池:
- 运行 pvcreate /dev/sdb1 把分区变成 PV,会写入 LVM 元数据头
- 用 vgcreate vg_data /dev/sdb1 /dev/sdc 把多个 PV 合并为 VG,总容量自动累加
- VG 中的最小分配单位叫 PE(Physical Extent),默认 4MB,可创建时指定(-s 参数)
- vgs 和 vgdisplay 能看到空闲 PE 数,这是后续扩容的关键依据
卷组(VG) → 逻辑卷(LV) → 文件系统
LV 是从 VG 中切出来的“虚拟分区”,它才是最终挂载和使用的对象:
- 用 lvcreate -L 50G -n lv_web vg_data 划出固定大小 LV;或用 -l 100%FREE 吃光剩余空间
- LV 设备路径为 /dev/vg_data/lv_web,也软链接到 /dev/mapper/vg_data-lv_web
- 格式化:ext4 用 mkfs.ext4,xfs 用 mkfs.xfs
- 挂载后,文件系统才真正可用;若要开机自动挂载,需在 /etc/fstab 中写入对应条目
在线扩容:LV + 文件系统同步增长
已有 LV 挂载使用中,仍可不停机扩容,但两步缺一不可:
- 先扩展 LV 容量:lvextend -L +20G /dev/vg_data/lv_web 或 lvextend -l +100%FREE /dev/vg_data/lv_web
- 再扩展文件系统边界:resize2fs /dev/vg_data/lv_web(ext4)或 xfs_growfs /mount/point(xfs,注意传挂载点而非设备路径)
- 缩容则必须先卸载、检查文件系统、再缩小文件系统、最后缩小 LV,风险高,一般不建议在线操作
- /boot 分区不能放在 LVM 上,因为 GRUB 等引导程序不支持读取 LVM 元数据











