快照是云盘在某一个或多个时间点的数据备份,可以将当前云盘恢复到快照对应历史时间点的云盘数据。本文为您介绍创建快照、归档快照和删除快照的原理、快照容量的计算原理以及快照容量与云盘容量的关系等。
创建快照原理
原理说明
快照是以数据块(存储系统中用于管理数据的基本单元)作为快照数据备份的最小粒度,分为全量快照和增量快照。为云盘创建的第一份标准快照是全量快照,会备份创建时间点前该云盘上的所有数据。后续创建的标准快照均是增量快照,仅备份自上一份快照以来有变化(修改或新增)的数据块,这样可以有效地降低快照存储空间,为您节省快照存储成本。增量快照虽不存储全量数据,但会引用全量快照中无变化的数据,记录全量数据信息,因此通过任一快照回滚云盘时,均可以恢复快照创建时间点的所有云盘数据。
快照创建完成后,将默认存储在对象存储OSS中,以实现数据的长期安全保存和灵活恢复。
示例说明
假设ECS实例的某块云盘分别在10:00和11:00有业务修改和新业务数据写入,那么该云盘快照的原理说明如下:
9:00时,云盘的数据块为A和B,此时创建第一份快照1,快照1为全量快照,备份数据块A和B,存储了该云盘上在创建快照1时的所有数据。
云盘继续写入数据,修改数据块B为B1。在10:00时创建第二份快照2,快照2为增量快照,仅备份有变化的数据块B1,但会记录云盘的全量数据块A和B1信息,其中数据块A引用于快照1。
云盘继续写入数据,新增数据块C。在11:00时创建第三份快照3,快照3为增量快照,仅备份有变化的数据块C。但会记录云盘的全量数据块A、B1和C信息,其中数据块A引用于快照1,数据块B1引用于快照2。
以此类推。
归档快照原理
原理说明
针对一些不需要频繁访问但又需要长期保存的标准快照,您可以将快照归档,转换为归档快照,来降低快照存储成本。归档快照采用全量和增量模式存储数据,即第一份进行归档的快照为全量快照,后续该云盘的归档快照均为基于此全量快照的增量快照,仅备份自上一份归档快照以来发生变化的数据块。更多信息,请参见归档快照。
示例说明
示例1:归档云盘的唯一快照
假设某块云盘只有1份标准快照,归档此类快照时,归档快照与标准快照大小相同。归档后,该云盘只有1份归档快照,标准快照容量为0。
示例2:归档云盘的增量快照
假设某块云盘有3份标准快照,分别将增量快照2和增量快照3进行归档。
将标准快照2归档时,第一份归档快照2将转换为全量快照,包含标准快照2的全量信息,即归档快照2包含数据块A和B1。此时由于归档前,标准快照2的B1数据块被标准快照3引用,因此数据块B1会被保留,并与标准快照3相关联。
之后,再将标准快照3归档时,归档快照3为增量快照,仅包含增量信息,即归档快照3仅包含数据块C。但会记录云盘的数据块A和B1的引用信息(数据块A和B1引用于归档快照2)。
以此类推。
归档后,该云盘将产生两条快照链,标准快照链包含1个标准快照,归档快照链包含2个归档快照。
删除快照原理
原理说明
由于云盘的全量快照和增量快照均会存储全量的数据块信息,删除其中任意一份快照时,使用未删除的快照均可以恢复快照创建时间点的所有云盘数据。
示例说明
假设ECS实例的某块云盘创建了快照1、快照2及快照3,各快照包含的数据块示例如下:
快照1:全量快照,包含数据块A和B。
快照2:增量快照,仅包含增量数据,即快照2仅包含数据块B1。记录云盘的全量数据块A和B1信息,其中数据块A引用于快照1。
快照3:增量快照,仅包含增量信息,即快照3仅包含数据块C。记录云盘的全量数据块A、B1和C信息,其中数据块A引用于快照1,数据块B1引用于快照2。
示例1:删除云盘的全量快照
删除全量快照1时,快照链中的下一个快照2将变成全量快照,由于快照1的A数据块被快照2引用,因此数据块A会被保留至快照2中,快照 1 中的数据块B被删除。对于快照3,数据块A引用变为快照2,数据块B1的引用不变。
示例2:删除云盘的增量快照
删除增量快照2时,仅需注意引用关系,由于快照2的A数据块引用于快照1,B1数据块被快照3引用,因此删除增量快照2后,会取消A数据块的引用,并将数据块B1保留至快照3。
快照容量计算原理
原理说明
每块云盘的快照总容量以快照链(云盘所有快照组成的关系链)为粒度进行统计,统计当前云盘所有快照的数据块占用的存储空间。归档部分快照后,一块云盘会生成两条快照链(一条标准快照链、一条归档快照链),系统会根据两条快照链的快照容量分别计算标准快照存储费用和归档快照存储费用。更多信息,请参见根据快照链查看单块云盘的快照容量和快照计费。
根据快照链计算容量有几分钟的延迟,实际发生费用请以账单为准。
快照容量涉及的概念说明如下:
快照全量大小:单个快照所有数据块占用的存储空间大小。
快照增量大小:当前快照与同一快照链中上一份快照之间不同的数据块占用的存储空间大小。
快照总容量:第一份快照(即全量快照)的全量大小与后续所有增量快照的增量大小之和。
快照容量计算示例
假设某块云盘容量100 GiB,已写入数据量为30 GiB,其分别在10:00和11:00有业务修改和新业务数据写入,那么该云盘快照容量计算说明如下:
标准快照1:9:00时,云盘的数据量为30 GiB,此时创建第一份标准快照1,标准快照1为全量快照,备份当前云盘的全部数据量,全量大小为30 GB。
标准快照2:云盘继续覆盖写入10 GiB数据。在10:00时创建第二份标准快照2,标准快照2为增量快照,仅备份有变化的10 GB数据,但会记录全量30 GB数据信息,其中20 GB引用于标准快照1。
标准快照3:云盘继续新增写入10 GiB数据,此时云盘总数据量为40 GiB。在11:00时创建第三份标准快照3,标准快照3为增量快照,仅备份相比标准快照2有变化的10 GB数据,但会记录全量40 GB数据信息,其中20 GB引用于标准快照1,10 GB引用于标准快照2。
这3份标准快照组成该云盘的标准快照链。则归档前:标准快照总容量=全量标准快照1+增量标准快照2+增量标准快照3=50 GB
假设将快照2和快照3进行归档,2份归档快照组成该云盘的归档快照链。
归档快照2:全量快照,备份全量数据,全量大小为30 GB。
归档快照3:增量快照,仅备份有变化的10 GB数据,但会记录全量40 GB数据信息,其中30 GB引用于归档快照2。
则归档后该云盘会包含两条快照链:
归档快照总容量=全量归档快照2+增量归档快照3=40 GB
标准快照总容量=全量标准快照1=30 GB
经对比,归档后快照容量相比于归档前快照容量增加了20 GB,归档云盘的部分快照可能不会为您节省成本。有关归档全部快照前后详细的费用对比说明请参见归档快照。
快照容量与云盘容量的关系
云盘的单个快照容量不会超过云盘容量,但是随着快照的增加,云盘容量可能会小于所有快照的总容量。
假设您创建了一个40 GiB的云盘,第一次写入了30 GB的数据,那么此时创建的快照容量是30 GB。之后采用覆盖写方式,写入30 GB数据后再次创建快照,此时云盘容量仍然是40 GiB,但此时因变化的数据量为30 GB,所以该盘的快照总容量为60 GB,大于云盘容量。
您可以通过快照链查看单块云盘的容量以及快照容量。具体操作,请参见根据快照链查看单块云盘的快照容量。如下图所示,①是云盘容量大小,②是该云盘包含的所有快照容量大小。
快照容量与系统容量的差异
快照会以固定大小的数据块(Block)作为快照数据备份的最小粒度,以此来计算快照容量大小。
当用户在云盘内进行删除文件操作时,系统显示的容量会减少,但通常对于操作系统的文件系统来说,删除文件仅是标记文件为删除,并不会真正地物理删除该文件对应的数据。因此,对于云盘来说,删除文件也是一个写入操作,并不会减少云盘真正的数据占用空间,相应地如果此时创建快照,快照依然会包含该删除文件对应的数据块。除非操作系统内的文件系统真正执行了文件删除,您可以详细了解文件系统的TRIM机制。
用户无主动写入系统盘的行为,但快照容量依然可能增长。操作系统在运行时会产生系统文件,同样会写入云盘,并备份在快照中。
一份快照的容量大小可能略大于云盘写入数据的大小。因为文件系统的一些元数据信息会占用云盘空间,快照的数据块会包含该元数据信息及用户写入的真实数据信息。例如,用户只在云盘中创建1 MB的文本文件,快照备份的数据大小因为有文件系统元数据的存在会略大于文本文件的大小,即快照容量会大于1 MB。