LVM 快照
LVM 快照是 Linux 逻辑卷管理提供的 "秒级瞬间定格" 技术。它能在几毫秒内为你的整个数据卷创建一个可读写的 "历史镜像",而无需复制任何实际数据
LVM 快照并非完整复制原始数据,它通过 "写时复制 (Copy-On-Write,COW) " 机制共享原始 LV(称为 "源 LV" )的数据块,仅在源 LV 或快照 LV 发生修改时才复制变化的数据,因此空间占用远小于完整副本
如何合理规划快照大小?(原则:宁大勿小,避免 COW 区域满导致快照失效)
短期快照(如升级前):通常分配源 LV 大小的 10%-20%(如 100GB 源 LV 分配 10-20GB 快照)
长期快照(不推荐):需根据业务写入量动态调整(如数据库服务器可能需 50% 以上)
LVM 快照核心特性:
- 轻量化:初始不占用额外空间(仅需少量元数据),随数据变化动态增长
- 即时创建:无需等待数据复制,创建过程毫秒级完成
- 临时性质:设计用于短期场景(如备份、测试),不建议长期保留
- 双向可用:可从快照恢复源 LV,或从源 LV 更新快照(需读写快照)
LVM 快照的工作流程如下:
- 创建快照时:快照 LV 与源 LV 共享所有数据块,快照仅记录 "指向源 LV 数据块" 的元数据,不占用实际数据空间(仅需为 COW 区域分配少量空间)
- 源 LV 写入数据时:
- 若源 LV 要修改某个数据块,LVM 会先将该块的原始数据复制到快照的 COW 区域
- 然后源 LV 才会写入新数据。此时,快照通过 COW 区域保留了修改前的数据
- 快照 LV 写入数据时(仅读写快照):
- 若快照是读写模式,修改快照数据时,直接写入快照自身的 COW 区域,不影响源 LV
LVM 快照的创建与管理
# 先创建一个 5G 大小的 lv

# 格式化并挂载

# 创建测试数据

# 创建快照并模拟数据丢失(-s 表示创建 snapshot)

# 从快照恢复数据(lvm 快照是一次性的,恢复快照后对应 lv 自动删除)
# lvconvert --mergesnapshot 是最后一颗 "后悔药",如果确认必须整体回滚,果断卸载并执行它;如果只是个别文件问题,请挂载快照手动还原文件,别轻易动用这颗核弹
# 挂载快照前不要使用 mkfs 命令,挂载需使用 mount -t <xfs/ext[234]> -o ro,nouuid 选项(快照文件系统类型取决于 "源 LV" 文件系统类型)
# 如果仍然挂载失败,检查文件系统一致性:
fsck -f /dev/<vg-name>/<lv-snapshot_name> (EXT4)
xfs_repair /dev/<vg-name>/<lv-snapshot_name>(XFS)


浙公网安备 33010602011771号