快照用于备份云盘在某一个或者多个时间点的数据。快照有力地保证了您的业务安全和提高了应用部署效率。
增量快照原理
云盘格式化后会在逻辑块地址LBA(Logical Block Address)的基础上划分数据块(Block)。一旦数据块有业务数据写入,就将参与计量。云盘第一份快照是实际使用量的全量快照,不备份空数据块。例如,200GiB的云盘,已使用122GiB,则第一份快照容量为122GiB。后续快照均是增量快照,备份自上一个快照以来的增量业务数据。因此同一个数据块在不同快照中可能会出现多个版本。例如,下图快照1、快照2和快照3分别是一块云盘的第一份、第二份和第三份快照。
创建每一份快照时,文件系统分块检查云盘数据,只有发生变化的数据块才会被备份到快照中:
- 快照1是第一份快照,备份了该云盘上某一时刻的所有数据。
- 快照2只备份有变化的数据块B1和C1。数据块A和D引用快照1中的A和D。
- 快照3只备份有变化的数据块B2。数据块A和D引用快照1中的A和D,数据块C1引用快照2中的C1。
- 当云盘需要恢复到快照3的状态时,回滚磁盘功能将数据块A、B2、C1和D备份到云盘上,恢复云盘到快照3的状态。
- 假如您需要删除快照2,则快照中的数据块B1被删除,不会删除存在引用关系的数据块C1。当云盘恢复到快照3的状态时,仍可以恢复数据块C1。
快照链
快照链是一块云盘中所有快照组成的关系链。一块云盘对应一条快照链,快照链ID即云盘ID。
一条快照链中有大量引用和被引用的数据块关系。快照链包括以下信息:
- 快照容量:快照链中所有快照占用的存储空间。
说明 快照服务按照快照容量计费,您可以使用快照链确认每块云盘的快照容量。
- 快照额度:每块云盘最多只能创建256份手动快照以及1000份自动快照。更多详情,请参见使用限制。
说明 云盘快照数量达到配额上限后,如果要继续创建自动快照,系统会自动删除最早的自动快照;如果要手动创建快照,您需要手动删除不需要的快照。更多信息,请参见 执行或取消自动快照策略和 删除快照。
- 快照节点:快照链中的一个节点表示云盘的一份快照。每条快照链最多有1256个节点,等于手动快照及自动快照的额度之和。
删除快照的原理
当您不再需要某份快照或者快照个数超出额度时,您需要删除一部分快照释放空间。由于快照采用增量原理,假设您需要删除快照链中的某一份快照S1,则流程示意图和逻辑概览如下所示。
- 阿里云离线分析已删除快照S1的所有数据块(Block),删除未被快照链中其他快照引用的数据块。
- 添加快照S1数据块到快照S2。剩下的快照一共记录了10个Block的信息:
- 快照S0的6个。
- 快照S1的2个数据块。
- 快照S2的2个。