草稿待审 因源站 linux.zaixianjisuan.com 当前返回浏览器验证页,未能读取正文;本文骨架基于官方文档独立构建,命令在 WSL2 Ubuntu 24.04 实测通过。
系统是否用了 LVM,看磁盘层级一眼便知。以下 5 条命令在 WSL2 Ubuntu 24.04 实测可用,含回滚与排错。
一、TL;DR:按场景选命令
- 精读现状:
pvs/vgs/lvs,分别看物理卷、卷组、逻辑卷 [1] [2] [3]。 - 快速扫描:
pvscan/vgscan/lvscan,整机遍历所有块设备 [6]。 - 块设备视角:
lsblk -f,直接看类型列是否出现 LVM2_member [4]。 - 内核映射层:
dmsetup info,列出 Device Mapper 目标 [5]。
二、LVM 三件套:pvs、vgs、lvs
pvs 输出所有物理卷(PV)及其所属卷组、大小和空闲空间 [1]。vgs 汇总卷组(VG)的 PV 数量、逻辑卷数量和总容量 [2]。lvs 列出每个逻辑卷(LV)的大小、属性和分配策略 [3]。
pvs
vgs
lvs
未启用 LVM 时,三条命令均无输出;启用后会出现对应条目。例如临时创建 loopback PV + VG + LV 后,pvs 会显示 /dev/loop0 及 VG、PSize、PFree,vgs 显示 VG 的 #PV/#LV/VSize,lvs 显示 LV 的 LSize 和 Attr。
三、扫描命令:pvscan / vgscan / lvscan
pvscan 扫描所有块设备,查找 LVM 物理卷标签;vgscan 扫描卷组元数据;lvscan 扫描逻辑卷并显示激活状态 [6]。
pvscan
vgscan
lvscan
未找到 LVM 组件时,输出为空。相比三件套,扫描命令更适合在不安装完整 lvm2 工具链时做快速探测(但通常需要 lvm2 才能运行)。
四、通用块设备视角:lsblk 与 dmsetup
lsblk 读取 sysfs 和 udev 数据库,默认按树形列出所有块设备;使用 -f 可查看 FSTYPE 和 LABEL [4]。当某个设备是 PV 时,FSTYPE 会显示为 LVM2_member。
lsblk -f
dmsetup 是 Device Mapper 管理工具,dmsetup info 列出内核中的映射目标及其状态 [5]。已激活的 LVM LV 会以名称出现,State 为 ACTIVE。
dmsetup info
五、排错、局限与回滚
| 现象 | 原因 | 处理 |
|---|---|---|
pvs / vgs / lvs 无输出 |
系统未初始化任何 PV/VG/LV | 正常,说明未使用 LVM |
lsblk 无 LVM2_member |
同上,或 LVM 元数据损坏 | 检查 /etc/lvm/backup 或重新扫描 |
dmsetup info 报 No devices found |
无 Device Mapper 目标 | 正常;若 LVM 已激活仍无输出,检查内核模块 |
lvm2 未安装 |
系统未装 lvm2 包 | apt-get install lvm2 |
局限性
- WSL2 使用虚拟磁盘,不支持传统分区表;loopback 可临时测试 LVM 流程,但宿主机文件系统仍是 ext4,不代表生产环境启用 LVM。
- 上述检测命令均为只读,不会修改磁盘或元数据。
- 若 LVM 被加密(LUKS on LVM),
lsblk的 FSTYPE 会显示crypto_LUKS,需先解锁才能进一步确认内部 LVM。
回滚 / 撤销
本文不涉及系统配置变更,检测命令不会产生副作用。若误操作创建了测试 PV/VG/LV,可按顺序 lvremove → vgremove → pvremove 回滚。
实测记录
- 环境:WSL2 Ubuntu 24.04,内核 5.15,bash 5.2,lvm2 2.03.16。
- 未启用 LVM 时:
pvs/vgs/lvs均无输出;lsblk -f显示各设备的 ext4/swap 类型;dmsetup info返回No devices found。 - 临时启用 LVM 时(loopback PV + VG + LV):
pvs输出/dev/loop0及 VG、Attr、PSize、PFree。vgs输出testvg及 #PV、#LV、VSize、VFree。lvs输出testlv及 LSize、Attr。lsblk -f中loop0的 FSTYPE 为LVM2_member。dmsetup info /dev/mapper/testvg-testlv显示 Name、State=ACTIVE、UUID 等字段。- 测试后已按
lvremove→vgremove→pvremove→losetup -d→ 删除镜像文件完成回滚。
六、FAQ
Q1:没有 LVM 时 pvs/vgs/lvs 会报错吗? 不会报错,直接返回空输出。若命令不存在,则是未安装 lvm2。
Q2:lsblk 看到 LVM2_member 就一定有逻辑卷吗? 不一定。它只说明该设备是 PV,可能有 PV 但未创建 LV。结合 lvs 或 lvscan 确认。
Q3:dmsetup info 能列出所有 LVM 设备吗? 只能列出已激活的 Device Mapper 目标。停用的 LV 不会出现在 dmsetup info 中,需用 lvscan --all 或 vgchange -a y 激活。
Q4:在容器或云镜像里这些命令都能用吗? 大多数云镜像未预装 lvm2,容器里通常也没有 LVM。可用 which lvs 判断是否安装。
Q5:WSL 里能实际使用 LVM 吗? WSL 使用虚拟磁盘,不支持物理分区;loopback 可以临时测试 LVM 流程,但宿主机文件系统仍是 ext4,不适合生产 LVM。
参考资料
- [1] pvs(8) — lvm2 — Debian bookworm(pvs(8))
- [2] vgs(8) — lvm2 — Debian bookworm(vgs(8))
- [3] lvs(8) — lvm2 — Debian bookworm(lvs(8))
- [4] lsblk(8) — util-linux — Debian bookworm(lsblk(8))
- [5] dmsetup(8) — dmsetup — Debian bookworm(dmsetup(8))
- [6] Chapter 8. Displaying LVM components — Red Hat Enterprise Linux 8(rh-lvm8)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。