LVM快照卷通过lvcreate -s命令基于COW机制创建只读时间点视图,需满足三条件:源卷属LVM、VG有足够空闲PE(≥512)、文件系统支持在线快照(XFS需xfs_freeze冻结);创建后验证状态、只读挂载,备份完成立即卸载并删除快照。

创建 LVM 快照卷用于备份,核心是用 lvcreate -s 命令生成一个基于写时复制(COW)机制的只读时间点视图。它不复制全部数据,而是秒级建立逻辑卷的“瞬间影像”,为后续备份提供强一致、零停机的操作窗口。
前提条件必须满足
快照能否成功创建并稳定运行,取决于三个硬性条件:
- 目标目录(如
/var/lib/mysql)必须挂载在 LVM 管理的逻辑卷上,执行df -h /path查看设备名,应类似/dev/mapper/vgdata-mysql_lv - 该逻辑卷所属的卷组(VG)要有足够空闲物理扩展(PE),建议至少预留 512 个 PE(约 2GB),用
vgdisplay vgname | grep "Free PE"检查 - 文件系统需支持在线快照:XFS 强烈建议先
xfs_freeze -f /mount/point冻结,ext4 可跳过冻结但务必执行sync刷缓存
创建快照的标准命令与参数
以源逻辑卷 /dev/vgdata/lv_mysql 为例,创建名为 mysql_snap_20260729、大小为 2GB 的快照:
lvcreate -L 2G -s -n mysql_snap_20260729 /dev/vgdata/lv_mysql
注意:-L 指定的是 COW 元数据区大小,不是快照实际占用空间;该值需按业务写入量估算——例如每秒写 3MB、备份预计耗时 6 分钟,则最小需 3 × 360 × 1.5 ≈ 1620MB,生产环境建议起步 1–2GB。
验证与挂载快照
创建后立即验证状态是否正常:
- 运行
lvs -a | grep mysql_snap,输出中Attr字段应含s(snapshot)和wi-a-s---类标识 - 新建挂载点并只读挂载:
mkdir -p /mnt/snap_mysql && mount -o ro,nouuid /dev/vgdata/mysql_snap_20260729 /mnt/snap_mysql(nouuid防止因 UUID 冲突触发自动修复)
备份完成后及时清理
快照不是永久副本,必须闭环操作:
- 从挂载点执行备份,保留权限与扩展属性:
tar --acls --xattrs -cf /backup/mysql_$(date +\%F_\%H%M).tar -C /mnt/snap_mysql . - 备份完成立刻卸载:
umount /mnt/snap_mysql - 确认 tar 包可解压、校验无误后,再删除快照释放空间:
lvremove /dev/vgdata/mysql_snap_20260729(此操作不可逆)


















