云硬盘 EVS-云硬盘快照:标准快照容量计算原理
标准快照容量计算原理
云硬盘的快照总容量以快照链(一块云硬盘中所有快照组成的关系链)为单位进行统计,统计当前云硬盘所有快照的数据块占用的存储空间。
- 快照链增加快照容量计算
以图3中的场景为例,假设快照的数据块为固定大小2MiB,那么快照链增加快照后的容量计算如下:
- 创建快照1时,云硬盘的快照链中仅有快照1,快照链容量 = 快照1容量 = 数据块A容量 + 数据块B容量 + 数据块C容量 = 6MiB
- 创建快照2时,云硬盘的快照链中有快照1、快照2,快照链容量 = 快照1容量 + 快照2容量 = 6MiB + (数据块A1容量 + 数据块B1容量 + 数据块D容量)= 12MiB
- 创建快照3时,云硬盘的快照链中有快照1、快照2、快照3,快照链容量 = 快照1容量 + 快照2容量 + 快照3容量 = 6MiB + 6MiB +(数据块A2容量 + 数据块C1容量 + 数据块E容量)= 18MiB
- 快照链删除快照容量计算
删除快照时,会遍历快照元数据文件中的所有数据块信息,遵循以下删除原则:
- 数据块被下一个快照继承,该数据块不能删除。
- 数据块没有被下一个快照继承:
- 继承数据块:如果上一个快照未被删除,那么该继承数据块不能删除;否则可以删除。
- 修改数据块:可以删除。
- 新增数据块:可以删除。
图4 快照中的数据块删除原则
以下通过举例说明删除快照后快照链容量计算。
以图5中的场景为例,在14:00删除快照2,在15:00删除快照3,那么快照链删除快照后的容量计算如下:
- 删除快照前,快照链容量 = 快照1容量 + 快照2容量 + 快照3容量 = 18MiB
- 14:00删除快照2,遍历快照2元数据文件中的所有数据块信息:
- 数据块A1:没有被快照3继承,且为快照1中的数据块A修改而来(修改数据块),因此数据块A1可以删除。
- 数据块B1:被快照3继承,数据块B1不能删除。
- 数据快C:没有被快照3继承,但继承于快照1(继承数据块)且快照1未被删除,因此数据块C不能删除。
- 数据块D:被快照3继承,因此数据块D不能删除。
删除快照2后,快照链容量 = 18MiB - 数据块A1容量 = 16MiB
- 15:00删除快照3,遍历快照3元数据文件中的所有数据块信息:
- 数据块A2:没有被下一快照继承,且为快照2中的数据块A1修改而来(修改数据块),因此数据块A2可以删除。
- 数据块B1:没有被下一快照继承,但继承于快照2且快照2已被删除,因此数据块B1可以删除。
- 数据快C1:没有被下一快照继承,且为快照2中的数据块C修改而来,因此数据块C1可以删除。
- 数据块D:没有被下一快照继承,但继承于快照2且快照2已被删除,因此数据块D可以删除。
- 数据块E:没有被下一快照继承,且为快照3新增数据块,因此数据块E可以删除。
删除快照3后,快照链容量 = 16MiB - 数据块A2容量 - 数据块B1容量 - 数据块C1容量 - 数据块D容量 - 数据块E容量 = 6MiB