lvconvert --merge 要求原 LV 必须 inactive,否则报错“Cannot merge during logical volume is active”;合并是就地回滚、不可逆操作,快照自动销毁,且必须确保源LV inactive、快照已激活才能执行。

lvconvert --merge 要求原 LV 必须 inactive
直接执行 lvconvert --merge /dev/vgname/snapname 大概率失败,报错 Cannot merge during logical volume is active。LVM 强制要求源逻辑卷(即被快照的那个 LV)处于非激活状态,否则拒绝合并——这不是权限问题,是底层 COW 机制的安全限制。
实操建议:
- 对非根分区(如
/home、/data):先umount /mount/point,再lvchange -an /dev/vgname/lvname - 对根文件系统(
/):无法在运行中停用,必须进 rescue 环境或 Live CD 启动,挂载 VG 后再操作 - 确认状态:
lvs -o +attr输出第三列应为-wi---(不含a),才表示 inactive - 合并命令本身不加
-y也会交互确认;但加了-y也不能绕过 inactive 检查
合并后快照自动消失,不可逆
lvconvert --merge 不是“恢复并保留快照”,而是把快照里存的旧数据块覆盖回原 LV 对应位置,完成后快照设备立即被销毁,lvs 列表里再也看不到它。这个过程没有中间态,也没有“撤回”选项。
容易踩的坑:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 误以为合并是“复制快照内容到新卷”,其实它是就地回滚,原 LV 内容被彻底覆盖
- 合并前没备份当前状态,一旦发现回滚后数据不对,已无补救余地
- 脚本里漏掉
lvremove清理——其实不需要,合并成功后它已不存在
挂载快照只读拷文件,别碰 dd
如果只是恢复几个误删的文件,不需要整卷回滚。快照设备可直接 mount -o ro 使用,但必须注意:
- 创建后立刻
lvchange -ay /dev/vgname/snapname,否则mount报wrong fs type - 挂载时务必加
-o ro(即使快照默认只读,显式声明更安全) - 绝对不要用
dd if=/dev/vgname/snapname of=...做“镜像备份”——COW 机制下快照设备不是稳定块设备,dd过程中可能因空间填满而中断 - ext4 用户需确认内核支持(4.12+ 通常没问题),老系统(如 RHEL6)要手动
modprobe dm-snapshot
快照看不见?先查 lvs -a 和 lvdisplay
运行 lvcreate -s 后立刻 lvs 看不到新卷,不是失败,是默认过滤掉了快照。LVM 把快照视为附属卷,不参与常规列表。
确认是否真创建成功:
- 用
lvs -a:快照卷名后带snap或你指定的名字,Attr 列首字母是s(如swi-a-s---) - 用
lvdisplay /dev/vgname/lvname:会明确列出Snapshot LE和Origin字段 - 路径一定是
/dev/vgname/snapname,不是/dev/mapper/下的别名 - 快照和源卷必须在同一 VG,跨 VG 会报
Volume group "xxx" not found
快照恢复最常卡在“原卷停不掉”和“快照没激活”这两步,其他都是确认性动作。真正危险的不是命令输错,而是误判状态后强行操作。










