快照可以保留某一时间点的云盘数据状态,常用于数据备份和制作自定义镜像。

前提条件

创建快照时,资源的状态要求如下:
  • 实例必须处于运行中已停止状态。
  • 云盘必须处于使用中已过期状态。
    说明 若创建快照时已过期状态的云盘正好达到过期释放时间,云盘被释放的同时也会删除创建中Creating)的快照。

背景信息

创建快照是极为重要的操作,在有操作风险的场景中,您可以提前创建快照备份数据。例如修改关键系统文件、实例从经典网络迁移至专有网络VPC、日常数据备份、实例误释放恢复、预防网络攻击、更换操作系统、为生产环境提供数据支撑和其他具有操作风险的场景。

快照还可以制作自定义镜像,在大量ECS实例中快速部署应用环境。具体操作请参见使用快照创建自定义镜像

创建快照时,您需要注意以下事项:
  • 创建快照涉及资源计费,计费详情请参见快照计费方式
  • 创建快照可能会轻微降低云盘的性能,I/O性能短暂变慢。您需要避开业务高峰。
  • 快照只会备份某一时刻的数据,创建快照期间,操作云盘产生的增量数据不会同步到快照中。
  • 为保证成功创建快照,创建快照时,您不能修改ECS实例状态,如停止或重启ECS实例。
  • 您自行创建的快照会一直保留,请定期删除不再需要的快照,避免快照容量持续扣费。具体操作请参见优化快照使用成本
  • 如果您使用多分区的单云盘制作了扩展卷,创建的快照可以正常回滚云盘。具体操作请参见使用快照回滚云盘
  • 当云盘被用作创建动态扩展卷或者RAID阵列时,为保证数据备份一致性,建议您避开业务高峰期,停止应用程序对动态扩展卷或者RAID阵列的写入操作,并将缓存数据刷新至云盘。停止所有I/O操作后再创建快照。

创建一份快照的所需时间主要取决于云盘容量大小。根据快照的增量原理,云盘的第一份快照为全量快照,耗时较久。再次创建快照,相对耗时较短,但依然取决于和上一份快照之间的数据变化量。变化越大,耗时越久。详情请参见原理介绍

在控制台上创建快照

在云服务器ECS管理控制台上通过实例页面创建快照的操作路径如下:

  1. 登录ECS管理控制台
  2. 在左侧导航栏,单击实例与镜像 > 实例
  3. 在顶部状态栏处,选择地域。
  4. 找到需要创建快照的实例,在操作列中,单击管理


  5. 在左侧导航栏,单击本实例磁盘,然后单击对应云盘右侧的创建快照。一次只能选择一块云盘,磁盘属性可以是系统盘和数据盘。


  6. 输入快照的名称,单击确定


  7. 在左侧导航栏单击本实例快照查看快照任务。您可以看到快照进度和快照状态。


您也可以通过存储与快照 > 云盘页面的操作路径完成创建快照。

调用API创建快照

本文API示例的调用工具为阿里云CLI。更多有关如何调用API的详情,请参见ECS API快速入门

  1. 获取实例ID。
    • 如果您已远程连接到ECS实例,可以通过实例元数据获取实例ID。详情请参见实例元数据
      例如Linux实例可以运行以下命令查询实例ID:
      curl http://100.100.100.200/2016-01-01/meta-data/instance-id
    • 在本地计算机中,您可以通过调用DescribeInstances接口获取实例ID:
      aliyun ecs DescribeInstances --output cols=InstanceId,InstanceName
  2. 调用DescribeDisks接口筛选云盘ID。
    aliyun ecs DescribeDisks --RegionId <TheRegionId> --InstanceId 'i-0xi1ioe********166cq' --output cols=DiskId
  3. 调用CreateSnapshot接口根据云盘ID创建快照。
    aliyun ecs CreateSnapshot --DiskId d-bp19pjyf12hebp******
    返回以下信息时,表示已成功发起创建任务。
    {"RequestId":"16B856F6-EFFB-4397-8A8A-CB73FA******","SnapshotId":"s-bp1afnc98r8kjh******"}
  4. 调用DescribeSnapshots接口查询快照创建状态。
    "SnapshotId"="s-bp1afnc98r8kjh******""Status":"accomplished"同时出现,表示快照已成功创建。
    aliyun ecs DescribeSnapshots --RegionId cn-hangzhou --InstanceId i-bp1afnc98r8k69****** --output cols=SnapshotId,Status

后续步骤