Linux LVM快照基于写时复制(COW),创建迅速且不中断业务,但须满足源卷由LVM管理、与快照同属一卷组、预留足够空间等前提,并需应用层协调(如锁表或fsfreeze)保障备份一致性,及时删除以防空间耗尽。

Linux LVM 快照不是“复制”,而是基于写时复制(COW)机制的瞬时数据视图,创建快如毫秒,不中断业务,但必须严格满足前提条件、及时清理,并配合应用层协调才能保障备份一致性。
创建快照前的关键准备
快照能否成功、是否可靠,取决于三点基础:
- 源逻辑卷必须由LVM管理(即路径形如
/dev/vg_name/lv_name),不能是直接挂载的物理分区或裸设备 - 快照必须与源卷位于同一卷组(VG)内,跨VG创建会报错
Volume group "xxx" not found - 卷组中需预留足够空间——建议按备份窗口内预计变更量预估:低负载场景取原卷活跃数据的10%,高IO数据库建议20%–25%,最小不低于1GB
创建与验证快照的操作要点
以源卷/dev/vg0/data为例,创建名为data_snap的2GB快照:
lvcreate -L 2G -s -n data_snap /dev/vg0/data
创建后不会出现在默认lvs输出中,需用以下任一方式确认:
-
lvs -a—— 查看所有逻辑卷,快照名后带snap,Attr列首字母为s(如swi-a-s---) -
lvdisplay /dev/vg0/data—— 明确列出Snapshot LE和Origin字段
快照设备路径为/dev/vg0/data_snap,不是/dev/mapper/下的别名,勿混淆。
安全使用快照进行一致备份
快照本身只读、不可写,挂载时务必指定-o ro:
mkdir -p /mnt/snap<br>mount -o ro /dev/vg0/data_snap /mnt/snap
为保障应用级一致性(如MySQL、PostgreSQL),应在挂载前冻结写入:
- 数据库:执行
FLUSH TABLES WITH READ LOCK后再创建快照,解锁前完成挂载与备份 - 文件服务:暂停写入进程或使用
fsfreeze --freeze临时冻结文件系统(需XFS/ext4支持)
备份完成后立即卸载:umount /mnt/snap,避免快照长期挂载引发空间耗尽风险。
删除与合并快照的注意事项
快照仅用于短时备份,任务结束后应尽快清理:
- 常规删除:
lvremove /dev/vg0/data_snap(快照未合并时可直接执行) - 若需回滚到快照状态(即恢复原始卷为快照时刻的数据),必须先停用源卷:
lvchange -an /dev/vg0/data,再执行:lvconvert --merge /dev/vg0/data_snap - 合并完成后,快照自动销毁,源卷重启即可;若源卷处于active状态,命令将拒绝执行并提示
Cannot merge during logical volume is active
快照空间一旦data%接近100%(可用lvs -o +data_percent监控),LVM会将其置为Inactive,后续写入可能失败,此时只能立即备份+删除,不可依赖扩容补救。


















