首页/数据/备份与容灾速查/LVM 快照回滚与导出

LVM 快照回滚与导出

快照可回滚原卷(lvconvert --merge)快速撤销变更,也可以挂载后按需拷贝单个文件,是升级与误操作后的快速恢复手段。

备份与容灾速查数据更新于 2026-10-13

LVM 快照怎么恢复

LVM 快照基于写时复制:创建时几乎不占空间,之后原卷被改写的块才复制到快照卷。恢复有两条路,一是 lvconvert --merge 把原卷整体回滚到快照时间点,二是把快照只读挂载后按需拷贝单个文件。前者快但不可逆,后者慢但影响面小,升级回退与误删事故分别对应这两种用法。

基本信息

适用平台Linux + LVM2(lvcreate/lvconvert/lvs)
权限要求root
快照容量按预计变更量设置,写满后快照失效
查看状态lvs -a -o name,origin,lv_size,data_percent

典型使用场景

  • 系统升级或打补丁前建快照,出问题在窗口内整体回滚
  • 误删数据后挂载快照,只把受影响的文件拷回生产目录
  • 批量变更前留一个时间点,作为变更失败时的兜底
  • 数据库停机维护期间的快速回退点(配合停库保证一致性)
  • 取某个历史版本的配置或代码目录做对比

回滚与按需导出

回滚与按需导出
lvcreate -L 10G -s -n data_snap /dev/vg_data/data   # 变更前建快照
lvs -a -o name,origin,data_percent                    # 观察快照使用率
lvconvert --merge /dev/vg_data/data_snap              # 整体回滚到快照时间点
mkdir -p /mnt/snap                                   # 或只挂快照取文件
mount -o ro /dev/vg_data/data_snap /mnt/snap
cp /mnt/snap/conf/app.yml /srv/app/conf/              # 拷回被误删的文件
umount /mnt/snap && lvremove /dev/vg_data/data_snap   # 用完后清理快照

两种恢复方式对比

方式影响范围注意事项
lvconvert --merge原卷全部数据回退快照时间点之后的写入全部丢失,且快照卷随后被删除
挂载快照取文件只覆盖指定文件需要人工确认取哪些文件,快照容量不足时可能已失效
data_percent 接近 100%快照空间耗尽快照标记为无效,回滚与挂载都不可用
回滚要求原卷未被占用:多数发行版会拒绝合并正在挂载使用的卷,需要先停服务或卸载文件系统。执行前确认其他副本存在,合并完成后没有第二次尝试机会。
快照一致性取决于创建瞬间的状态:文件系统在挂载可写状态下建快照,得到的是崩溃一致视图,恢复后可能需要日志回放;数据库要拿到应用一致快照,需先执行 FLUSH TABLES WITH READ LOCK 或停库后再建快照。

操作要点

步骤命令要点注意
创建lvcreate -L 大小 -s -n 名称 原卷大小按变更量估算,写满即失效
观察lvs -o data_percent持续接近 100% 需扩容或提前回滚
回滚lvconvert --merge 快照卷原卷需卸载,时间点之后的数据全部丢弃
取文件mount -o ro 快照卷只读挂载,避免改动快照内容

易错点

  • 在线业务直接回滚:原卷被挂载使用导致合并失败,或在未停库的情况下回滚拿到不一致的数据
  • 快照容量按 1% 之类的经验值拍脑袋设置:写密集场景几小时内就写满失效
  • 把 LVM 快照当备份:快照与原卷同处一个卷组,磁盘损坏时一起丢失
  • 合并完成后才发现回滚结果不对:快照已被自动删除,无法再切回原状态

数据来源与参考

  • Red Hat 文档(LVM 快照回滚)
  • man 8 lvconvert
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌