云硬盘快照是指云硬盘数据在某个时刻的完整拷贝或镜像,是一种重要的数据容灾手段,当数据丢失时,可通过快照将数据完整的恢复到创建快照的时间点。
当前快照存在标准快照和存量快照两种类型,如下表所示。
表 照类型说明
| 类型 | 说明 |
|---|---|
| 标准快照 | 快照数据存储在OBS中,新建快照均为标准快照。使用标准快照创建云硬盘,通过控制台创建的云硬盘的模式(SCSI或VBD)、加密属性、可用区、云硬盘类型和快照源云硬盘不需要保持一致。 |
| 存量快照 | 快照数据与云硬盘数据存储在一起,不再支持新建。已有的存量快照会继续保留,仅支持恢复数据、在相同可用区创建新云硬盘和删除快照操作。 |
表 功能介绍
| 功能介绍 | 说明 |
|---|---|
| 创建快照 | 支持创建单个快照,保存指定时刻的云硬盘数据。 说明 快照为只读属性,当快照创建完成后,快照中的数据将无法进行任何修改。 |
| 回滚数据 | 如果云硬盘的数据发生错误或者损坏,可以回滚快照数据至创建该快照的云硬盘,从而恢复数据。 |
| 使用快照创建云硬盘 | 通过快照创建新的云硬盘,可以快速将快照中的数据复制给新的云硬盘。 |
| 使用快照极速可用功能 | 标准快照创建后,需要把数据上传至OBS中才可以使用,但是随着云硬盘中存储的数据越来越多,上传时间会越来越长。为了解决以上问题,您可以开启快照极速可用功能实现快照创建后秒级可用,无需等待上传完成就可以进行快照回滚数据和创建云硬盘,回滚数据和创建云硬盘速度快且不影响数据的完整性。 |
| 查看快照信息 | 查看快照容量包含:查看某个云硬盘下的所有快照总容量(快照链容量)、查看指定时间段内的快照总容量、查看当前账号在指定区域下的快照总容量。 查看快照详情包括:所属区域和可用区、所属的云硬盘信息、快照的标签等信息。 |
| 删除快照 | 当不再使用快照或快照数量超过配额时,可以删除部分快照以释放存储空间。 |
使用场景
快照功能可以帮助您实现以下需求:
日常备份数据
通过对云硬盘定期创建快照,实现数据的日常备份,可以应对由于误操作、病毒以及黑客攻击等导致数据丢失或不一致的情况。
快速恢复数据
应用软件升级或业务数据迁移等重大操作前,您可以创建一份或多份快照,一旦升级或迁移过程中出现问题,可以通过快照及时将业务恢复到快照创建点的数据状态。
例如,当由于云服务器A的系统盘A发生故障而无法正常开机时,由于系统盘A已经故障,因此也无法将快照数据回滚至系统盘A。此时您可以使用系统盘A已有的快照新创建一块云硬盘B并挂载至正常运行的云服务器B上,从而云服务器B能够通过云硬盘B读取原系统盘A的数据。
说明
当前通过快照回滚数据,只支持回滚快照数据至源云硬盘,不支持快照回滚到其它云硬盘。
快速部署多个业务
通过同一个快照可以快速创建出多个具有相同数据的云硬盘,从而可以同时为多种业务提供数据资源。例如数据挖掘、报表查询和开发测试等业务。这种方式既保护了原始数据,又能通过快照创建的新云硬盘快速部署其他业务,满足企业对业务数据的多元化需求。
快照原理
标准快照存储原理
标准快照是以数据块作为快照数据备份的最小粒度,快照分为全量快照和增量快照。为云硬盘创建的第一个快照为全量快照,全量快照包含创建快照时间点前云硬盘上的所有数据(数据块);后续创建的快照均为增量快照,增量快照仅存储较上一个快照有变化的数据块。
全量快照和增量快照的元数据文件中会记录快照创建时间点前的所有数据块信息,因此通过任何一个快照回滚数据至云硬盘时,均可以恢复创建快照时间点前的所有云硬盘数据。
根据数据块的来源区分,快照元数据文件中包含三类数据块:继承数据块(继承于上一个快照的数据块)、修改数据块(较上一个快照有修改的数据块)、新增数据块(较上一个快照新增的数据块)。
快照的数据文件中只会存储较上一个快照有变化的数据块(修改数据块、新增数据块)。
如图所示,假设云硬盘在9:30和10:30均有数据写入,为了备份数据,在9:00创建快照1,在10:00创建快照2,在11:00创建快照3,创建快照原理如下:
9:00首次创建快照,快照1中包含云硬盘的所有数据,其中的数据块有A、B、C,快照1为全量快照。快照1的元数据文件中会记录云硬盘全量的数据块A、B、C。
随后写入数据,修改数据块A为A1,修改数据块B为B1,新增数据块D,10:00创建快照2,仅存储较快照1有变化的数据块A1、B1、D,快照2为增量快照。快照2的元数据文件中会记录云硬盘全量的数据块A1、B1、C、D,其中数据块C继承于快照1。
随后写入数据,修改数据块A1为A2,修改数据块C为C1,新增数据块E,11:00创建快照3,仅存储较快照2有变化的数据块A2、C1、E,快照3为增量快照。快照3的元数据文件中会记录云硬盘全量的数据块A2、B1、C1、D、E,其中数据块B1、D继承于快照2。
标准快照容量计算原理
云硬盘的快照总容量以快照链(一块云硬盘中所有快照组成的关系链)为单位进行统计,统计当前云硬盘所有快照的数据块占用的存储空间。云硬盘的单个快照容量不会超过云硬盘容量,但是随着快照的增加,快照链容量可能会大于云硬盘容量。
快照链增加快照容量计算
以下图中的场景为例,假设快照的数据块为固定大小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
快照链删除快照容量计算
删除快照时,会遍历快照元数据文件中的所有数据块信息,如下图所示,遵循以下删除原则:
数据块被下一个快照继承,该数据块不能删除。
数据块没有被下一个快照继承:
继承数据块:如果上一个快照未被删除,那么该继承数据块不能删除;否则可以删除。
修改数据块:可以删除。
新增数据块:可以删除。
以下通过举例说明删除快照后快照链容量计算。
以图6-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
云硬盘备份与快照的区别
云硬盘备份以及快照为存储在云硬盘中的数据提供冗余备份,确保高可靠性,两者的主要区别如下表所示。
| 指标 | 存储方案 | 数据同步 | 容灾范围 | 业务恢复 |
|---|---|---|---|---|
| 备份 | 与云硬盘数据分开存储,数据存储在对象存储(OBS)中,可以实现在云硬盘存储损坏情况下的数据恢复。 | 保存云硬盘指定时刻的数据,可以设置自动备份。如果将创建备份的云硬盘删除,那么对应的备份不会被同时删除。 | 与云硬盘位于不同AZ内 | 通过恢复备份至云硬盘,或者通过备份创建新的云硬盘,找回数据,恢复业务。数据持久性高。 |
| 存量快照 | 快照存放在云硬盘所在的物理存储磁盘中,不会占用云硬盘的空间。 说明 备份由于数据搬迁会耗费一定的时间,创建快照和回滚快照数据的速度比备份快。 | 保存云硬盘指定时刻的数据。如果将创建快照的云硬盘删除,那么对应的快照也会被同时删除。重装操作系统或切换操作系统后,系统盘快照会自动删除;数据盘快照不受影响,可以照常使用。 | 与云硬盘位于同一个AZ内 | 通过回滚快照至云硬盘,或者通过快照创建新的云硬盘,找回数据,恢复业务。 |
| 标准快照 | 与云硬盘数据分开存储,数据存储在对象存储(OBS)中,可以实现在云硬盘存储损坏情况下的数据恢复。 | 保存云硬盘指定时刻的数据,如果将创建快照的云硬盘删除,对应的快照不会被同时删除。 | 与云硬盘位于不同AZ内 | 通过回滚快照至云硬盘,或者通过快照创建新的云硬盘,找回数据,恢复业务。数据持久性高。 |