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