lvs -a 和 lvdisplay 是查 LVM 快照的正确命令,lsblk 不适合:因它仅显示块设备层级,不解析 LVM 元数据,无法识别快照属性、Origin 关系及 COW 状态。

直接查 lvs -a,它会列出所有逻辑卷,包括快照卷,并明确标注类型(snap 或 snapshot);lvdisplay 能显示更详细的归属关系,比如哪个原始 LV 被快照了、快照大小、COW 使用率等。
为什么 lsblk 不适合查 LVM 快照
lsblk 只展示内核识别的块设备层级,LVM 快照在底层是 device-mapper 的特殊映射设备(如 /dev/dm-5),但 lsblk 默认不解析其 LVM 元数据,也不会标记“这是快照”。即使加 -f 参数,你也只能看到挂载点和文件系统类型,无法确认该设备是否为快照、属于哪个原始 LV。
常见误判现象:
- 看到
/dev/mapper/vg0-lv0-snap就以为是快照 —— 实际可能只是个普通 LV 命名带-snap - 发现某个设备没出现在
lsblk输出里,就怀疑快照丢失 —— 其实它可能根本没被激活或未挂载,但lvs仍能查到
lvs -a 怎么一眼识别快照卷
运行 lvs -a 后,关键看三列:LV(逻辑卷名)、VG(卷组)、Attr(属性)。快照卷的 Attr 第二位是 s(如 swi-a-s---),且 LV 名通常带 -snap 或类似后缀(非强制,但惯例)。
示例输出片段:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 50.00g home centos -wi-ao---- 20.00g root_snap centos swi-a-s--- 1.00g root 12.45
说明:
-
root_snap是快照卷,Attr中s在第二位,表示 snapshot -
Origin列明确写出它快照的是root这个 LV -
Data%显示已用快照空间比例,超过 100% 表示快照已失效(COW 空间耗尽)
lvdisplay 查归属与状态细节
当需要确认快照是否可合并、是否只读、是否正在使用中,lvdisplay 比 lvs 更直接。它会显式列出 Snapshot status、Origin、Snapshot chunk size 等字段。
常用组合:
-
lvdisplay /dev/vg0/root_snap:查指定快照的完整元数据 -
lvdisplay -m /dev/vg0/root_snap:查看其底层物理扩展(PE)分布,判断是否跨 PV(影响性能) -
lvdisplay -c /dev/vg0/root_snap | cut -d: -f1,2,3,6,7,12:提取关键字段做脚本解析(VG、LV、Origin、Attr、Data%)
注意:lvdisplay 不加路径时默认只显示激活的 LV;若快照未激活(inactive),需先 lvchange -ay /dev/vg0/root_snap 再查,否则可能不显示。
快照“位”不是物理地址,而是逻辑归属关系
用户常问“快照位在哪”,其实 LVM 快照没有固定物理存储位置 —— 它共享原始 LV 所在卷组的 PE 空间,COW 数据动态写入卷组中空闲 PE。所谓“位”,准确说是它在 LVM 元数据中的注册信息:vg0 卷组里有个叫 root_snap 的 LV 条目,Origin 指向 root,Attr 标记为 s,这就是它的全部“位置”定义。
真正容易被忽略的是:lvs -a 输出中 Origin 列为空,不代表没快照 —— 它只对 active 快照生效;如果快照被停用(lvchange -an),Origin 会消失,此时必须用 lvdisplay 加路径才能看到完整关系。


















