LVM快照是基于写时复制的轻量级瞬时副本技术,用于在不中断业务下获取逻辑卷一致性视图,为备份提供时间窗口;需同卷组、预留PE空间,非永久副本,满则失效,须及时备份或扩容。

在Linux中,LVM快照(LVM Snapshot)是一种轻量级、基于写时复制(Copy-on-Write, COW)机制的逻辑卷瞬时副本技术,能在不中断业务的情况下对正在运行的逻辑卷做一致性快照。它不是备份本身,而是为备份争取“时间窗口”的关键手段——只要源卷保持只读或I/O可控,快照就能反映某一时刻的逻辑数据视图。
快照的前提与限制
使用LVM快照前需确认以下几点:
- 源逻辑卷(LV)必须属于同一卷组(VG),且VG中有足够空闲PE空间用于存放COW元数据;
- 快照LV本身不直接挂载使用(除非只读挂载且明确知晓风险),主要服务于备份工具(如xfsdump、tar、rsync等);
- 快照不是永久副本:当源卷发生大量写入,快照区域填满后会自动失效(状态变为Invalid),因此需及时处理或扩容;
- ext4/xfs等主流文件系统支持在线快照,但要求文件系统处于一致状态——建议在快照前执行sync,必要时配合应用层静默(如数据库flush tables with read lock)。
创建瞬时快照的操作流程
以源LV为/dev/vg0/lv_data为例,创建一个2G大小的快照LVlv_data_snap:
1. 检查空间与状态
vgdisplay vg0 # 查看Free PE是否足够(2G ≈ 512 PE,按PE大小换算) lvs -o +snap_percent # 确认无同名快照存在
2. 创建快照LV
lvcreate -L 2G -s -n lv_data_snap /dev/vg0/lv_data
其中-s表示创建快照,-L 2G指定COW空间大小(非快照数据体积,而是变更记录缓冲区)。
3. 验证快照生成
lvs | grep snap # 输出应包含 lv_data_snap,Attr字段含“s”(snapshot)和“owi---”等标识
利用快照完成安全备份
快照创建后立即可用,典型做法是挂载快照并执行备份:
- 新建挂载点:mkdir /mnt/snap;
- 只读挂载快照(推荐,避免误操作污染):mount -o ro /dev/vg0/lv_data_snap /mnt/snap;
- 执行备份(例如打包压缩):tar -cf /backup/lv_data_$(date +%F).tar -C /mnt/snap .;
- 备份完成后卸载:umount /mnt/snap;
- 删除快照释放空间:lvremove /dev/vg0/lv_data_snap(务必确认备份有效后再删)。
快照维护与常见问题
运行中需关注快照健康状态:
- 监控使用率:lvs -o +snap_percent,若接近100%,需立即扩容或终止写入;
- 扩容快照空间(预防失效):lvextend -L +1G /dev/vg0/lv_data_snap;
- 快照失效后无法恢复,源卷仍正常,但快照LV不可用,lvremove即可清理;
- 不要对快照LV做写操作(即使可写),否则破坏COW一致性,影响源卷稳定性。


















