逻辑卷快照必须在同卷组内创建且依赖剩余PE空间,-s参数须紧接lvcreate、源LV路径不可颠倒,快照非只读备份,合并前原LV须卸载,其本质是短期COW机制而非长期备份方案。

快照必须在同一个卷组里创建
逻辑卷快照不是独立存储,而是依赖原始LV所在卷组的剩余空间。如果vgdisplay显示空闲PE为0,lvcreate -s会直接报错Insufficient free extents。实际操作前先确认:
vgdisplay <vg_name> | grep "Free PE"建议预留至少20%卷组空间专供快照使用——写入越频繁、快照保留越久,所需空间越大。
lvcreate -s命令的关键参数不能颠倒顺序
常见误写是把源LV路径放在-s后面,结果创建出一个普通LV而非快照。正确写法必须是:
lvcreate -L 2G -s -n snap_lv /dev/vg_name/original_lv其中
-s必须紧接lvcreate,-n指定快照名,/dev/vg_name/original_lv是**源LV的完整路径**(不是VG名或LV名单独传入)。漏掉-s或位置错乱,得到的就是一个全新LV,和快照完全无关。快照不是只读备份,修改原LV会影响快照一致性
默认创建的快照是可写的(COW机制),但它的作用仅限于“冻结某一时刻的数据状态”。一旦原LV被修改(比如dd覆盖、文件系统重格式化),快照中未被覆盖的块仍可读取;但若快照自身也被写入(例如挂载后误操作),会导致后续无法可靠还原。因此:
- 创建后立即用
mkfs.ext4 /dev/vg_name/snap_lv格式化并挂载只读(mount -o ro) - 不要对快照做
fsck或e2fsck -f,它不支持强制检查 - 超过快照分配空间(如2G快照记录了3G变更),快照自动变为
Inactive状态,lvs里显示swi-a-s---中的i即代表invalid
恢复时不能直接用lvconvert --merge回滚正在使用的LV
合并快照到原LV要求原LV处于未激活状态。常见错误是:原LV已挂载,却执行lvconvert --merge /dev/vg_name/snap_lv,此时命令会卡住或报错Cannot merge when origin is open。正确流程是:
umount /dev/vg_name/original_lv<br>lvconvert --merge /dev/vg_name/snap_lv<br>mount /dev/vg_name/original_lv /mnt注意:合并后快照LV自动删除,且该操作不可逆。如果原LV只是临时故障,更安全的做法是复制快照内容到新LV:
dd if=/dev/vg_name/snap_lv of=/dev/vg_name/restored_lv bs=4M。
快照生命周期很短,它不是替代rsync或borg的长期备份方案;只要原LV持续写入,快照占用空间就不断增长,稍不留意就会失效。


















