LVM 快照是什么
LVM 快照基于写时复制(COW):创建瞬间就得到该逻辑卷的时间点视图,之后源卷上被改动的块会先复制到快照空间,未改动的部分则继续指向原数据。备份程序因此可以从容读取快照,而不必长时间锁住生产卷;代价是快照空间会被写入量消耗,空间用尽快照立刻失效。
基本信息
| 适用平台 | Linux + LVM2(各主流发行版) |
|---|---|
| 创建命令 | lvcreate -L 大小 -s -n 快照名 源逻辑卷(-s 表示快照) |
| 空间机制 | 只保存变化数据,写入量超过预留空间时快照失效不可用 |
| 权限要求 | 需要 root 或具备 LVM 管理权限的 sudo 授权 |
典型使用场景
- 数据库物理备份的过渡层:打快照后从快照读数据,缩短对生产卷的锁窗口
- 虚拟机磁盘备份:以只读方式挂载快照导出镜像,不中断虚拟机
- 发布前留回退点:升级前打一个快照,出问题可快速挂载核对旧数据
- 大目录打包备份:直接从快照读取,避免备份期间文件被改动导致归档不一致
- 测试环境数据拷贝:用快照快速克隆一份数据用于验证
创建、使用与回收
创建、使用与回收
# 创建快照:预留空间要按备份期间的写入量估算
lvcreate -L 10G -s -n data_snap /dev/vg_data/data
# 只读挂载,避免误写污染快照
mkdir -p /mnt/snap && mount -o ro /dev/vg_data/data_snap /mnt/snap
# 从快照导出独立副本
tar -czf /backup/data-$(date +%F).tar.gz -C /mnt/snap .
# 用后立刻回收,避免快照空间被持续消耗
umount /mnt/snap && lvremove -f /dev/vg_data/data_snap
# 查看快照使用率:Data% 接近 100% 说明快照即将失效
lvs -o lv_name,lv_size,data_percent,lv_attrlvs 输出逐列读法
| 列 | 含义 | 正常/异常 |
|---|---|---|
| lv_size | 快照逻辑卷大小,即 COW 空间大小 | 明显小于源卷是设计如此,但写入量大时需要更大 |
| data_percent | COW 空间已用比例 | 持续升高接近 100% 时快照将失效,备份必须已完成 |
| lv_attr | 属性位,首字符 s 表示快照卷 | 出现无效标记说明快照已被标记为不可用 |
| lv_time | 创建时间,用于确认快照对应哪个时间点 | 与备份记录时间对不上时说明快照被重复使用 |
快照不是备份:它依赖原卷与卷组,源卷损坏或卷组故障时快照同样不可用。正确做法是在快照有效期内把数据导出为独立副本,并确认备份完成后再回收快照。
对运行中的数据库卷直接打快照得到的是崩溃一致视图:起库会触发恢复流程。要求应用一致时,先执行数据库的锁表或检查点操作,再打快照。