LVM快照是基于COW的轻量级时间点副本,需合理预估空间、只读挂载、监控扩容并及时清理;数据库场景须配合锁和binlog实现一致性备份。
Linux LVM 快照不是“全量复制”,而是基于 COW(Copy-On-Write) 的轻量级时间点副本,适合做瞬时备份、测试回滚和数据库一致性快照。关键不在“能不能用”,而在“怎么控风险、保可用”。
快照空间只用于存放原始 LV 被修改前的数据块,因此容量必须覆盖“快照存活期间的预期变更量”。例如:
-s 表示快照,-n 指定名称,-L 指定大小,路径必须是完整 LV 设备路径(如 /dev/mqsvg1/mysqllv1);lvcreate -L 300M -s -n mysqllvsnap /dev/mqsvg1/mysqllv1;快照默认为只读,挂载前建议显式指定 -o ro 防误写:
mkdir -p /mnt/snap;mount -o ro /dev/mqsvg1/mysqllvsnap /mnt/snap;ls -l /mnt/snap 应与源目录结构一致;tar --one-file-system -czf 或 rsync -aH,避免跨文件系统符号链接干扰;umount /mnt/snap,再执行清理,防止快照长期挂载导致空间耗尽。快照不自动清理,空间满则失效(状态变为 Invalid),必须人工干预:
lvs -o +snap_percent,lv_attr,重点关注 Data% 列;
容:lvresize -L +100M /dev/mqsvg1/mysqllvsnap(需 VG 有空闲 PE);lvremove /dev/mqsvg1/mysqllvsnap;对 MySQL/MariaDB 等服务,仅靠快照不能保证事务一致性,需配合逻辑锁与二进制日志标记:
FLUSH TABLES WITH READ LOCK;;SHOW MASTER STATUS;,保存文件名与偏移量;UNLOCK TABLES;;mysqlbinlog 回放锁之后的增量日志,实现 RPO≈0。不复杂但容易忽略:快照不是永久备份,它只是“时间锚点”——真正可靠的数据保护,需要快照 + 外存归档 + 日志校验三位一体。