什么是 Snapshot?
Snapshot(快照)是一种在特定时间点对系统、磁盘、文件系统或虚拟机状态进行“拍照”并保存的技术。它记录了该时刻的数据状态,可用于快速恢复、备份或测试等场景。
Snapshot 的工作原理
快照通常采用“写时复制”(Copy-on-Write, COW)或“重定向写入”(Redirect-on-Write, ROW)机制:
- 写时复制(COW):原始数据保持不变,当有新写入发生时,先将原数据复制到快照区域,再更新原始位置。
- 重定向写入(ROW):新数据直接写入新位置,原始数据保留作为快照内容,逻辑指针指向最新数据。
这两种方式都能在几乎不中断服务的情况下创建快照,且占用空间相对较小。
常见应用场景
- 虚拟机备份与回滚(如 VMware、Hyper-V、KVM)
- 数据库一致性备份(如 LVM 快照配合 MySQL)
- 文件系统版本管理(如 Btrfs、ZFS)
- 云存储服务中的数据保护(如 AWS EBS 快照)
优点与局限
优点:
- 创建速度快,几乎瞬时完成
- 节省存储空间(仅保存变化部分)
- 支持快速回滚和恢复
局限:
- 快照依赖原始数据,若原始卷损坏可能影响快照可用性
- 长期保留大量快照可能影响性能
- 并非所有系统都原生支持快照功能