快照

概述

快照:某一时间点某一磁盘的数据状态文件。做重要操作前,对云主机根云盘、数据云盘、云主机内存或弹性裸金属实例做特定时间点的临时状态保留,方便出现故障后迅速回滚。如需长期备份,建议使用灾备服务。

快照类别

快照包括手动快照和自动快照两种类型:
  • 手动快照:用户随时手动对云主机根云盘、数据云盘或弹性裸金属实例创建快照。
  • 自动快照:通过定时任务创建快照,或系统在特定场景触发一次性自动快照。
    • 通过定时任务创建快照,用户需提前创建定时快照策略,系统会在设置的时间点自动对相应资源创建快照。
    • 系统在以下特定场景可能触发一次性自动快照:
      • 根云盘扩容
      • 数据云盘扩容
      • 重置云主机
      • 快照回滚
        Note:
        • 系统默认快照回滚不会触发一次性自动快照。
        • 用户可自行设置快照回滚是否触发一次性自动快照,设置方法:

          进入设置 > 平台设置 > 全局设置 > 高级设置 > 资源中心 > 云资源池 > 快照,开启自动创建云盘快照开关即可。

      • 在Ceph主存储上创建根云盘或数据云盘的镜像

快照视图

ZStack Cube 旗舰版支持两种快照视图:列表视图和拓扑视图。
  • 列表视图:以列表的方式展示快照信息,包括:快照名称、类型、容量、创建日期和支持的操作。
  • 拓扑视图:以快照树的方式展示快照信息,包括:快照链和快照节点。支持定位到当前快照、还原画布、放大、缩写、全屏等操作。

应用场景

快照功能适用于以下应用场景:
  • 故障迅速还原:当生产环境出现异常故障,可使用快照回滚功能迅速还原至正常状态。该手段为临时方案,考虑到数据的长期完善保护,建议使用灾备服务。
  • 数据开发:通过对生产数据创建快照,从而为数据挖掘、报表查询和开发测试等应用提供近实时的真实生产数据。
  • 提高操作容错率:在系统升级或业务数据迁移等重大操作前,建议创建一份或多份快照。一旦升级或者迁移过程中出现任何问题,可以通过快照及时恢复到正常的系统数据状态。

快照原理

非Ceph存储 QCOW2外部快照原理

对于非Ceph存储(本地存储/NFS/Shared Mount Point/Shared Block),ZStack Cube 旗舰版采用QCOW2外部快照(External Snapshot)机制。

  1. 快照链与快照树

    通常一块磁盘对应一条快照链,ZStack Cube 旗舰版支持对一块磁盘创建一棵快照树,快照树的每一个分支都是一条快照链。

    图 1所示:
    图 1. 快照树


    快照树包括以下信息:
    • 快照链:磁盘的一组快照组成的关系链,快照树的每一个分支都是一条快照链。
    • 快照节点:快照链中的一个节点,表示磁盘的一份快照。
    • 快照容量:快照占用的存储空间。支持查看快照树中所有快照的总容量,以及单个快照节点的容量。
    Note:
    • 对于非Ceph存储,系统默认每条快照链最多有128个节点,用户可在全局设置中,通过修改云盘快照增量的最大数目自行设置快照链的最大长度。对于Ceph存储,单盘最大快照数量为32,包括手动创建及自动创建的快照。
    • 快照链长度达到上限后:
      • 若继续创建自动快照,系统会自动删除最早的自动快照。
      • 若继续创建手动快照,用户需手动删除不需要的快照。
    • 在生产环境中,建议单块磁盘的快照数量尽量控制在5以内,快照过多会影响云主机/云盘的IO性能、数据安全以及主存储容量。如需长期备份,建议使用灾备服务。
  2. 创建快照

    当一个外部快照被创建,实质是新建一个空白的qcow2文件,该空白文件的backing file指向旧qcow2文件,旧qcow2文件置为只读,于是旧qcow2文件自身成为一个快照,后续只对新qcow2文件写入数据。

    • 基于backing file创建单条快照链。
      图 2所示:
      图 2. 创建快照 单链


      假定已有一个原始镜像(Base),以该原始镜像为模板创建云主机1,对云主机1依次创建快照1A、快照1B。
      • 原始镜像:一个已制作好的磁盘镜像文件,包含完整的操作系统以及引导程序,作为Base(只读)。
      • 云主机1:新建空白文件Overlay-1,backing file指向Base,Base保持为只读,于是Base成为一个快照,后续只对Overlay-1写入数据。
      • 快照1A:新建空白文件Overlay-1A,backing file指向Overlay-1,Overlay-1置为只读,于是Overlay-1成为一个快照,后续只对Overlay-1A写入数据。
      • 快照1B:新建空白文件Overlay-1B,backing file指向Overlay-1A,Overlay-1A置为只读,于是Overlay-1A成为一个快照,后续只对Overlay-1B写入数据。云主机1使用的是快照链内最后一个快照1B对应的磁盘文件,快照1B为Active。
    • 基于backing file创建多条快照链。
      图 3所示:
      图 3. 创建快照 多链


      假定已有一个原始镜像(Base),以该原始镜像为模板创建云主机1、云主机2、云主机3,对云主机1依次创建快照1A、快照1B,对云主机2创建快照2A,对云主机3创建快照3A。
      • 原始镜像:一个已制作好的磁盘镜像文件,包含完整的操作系统以及引导程序,作为Base(只读)。
      • 快照链1:
        • 云主机1:新建空白文件Overlay-1,backing file指向Base,Base保持为只读,于是Base成为一个快照,后续只对Overlay-1写入数据。
        • 快照1A:新建空白文件Overlay-1A,backing file指向Overlay-1,Overlay-1置为只读,于是Overlay-1成为一个快照,后续只对Overlay-1A写入数据。
        • 快照1B:新建空白文件Overlay-1B,backing file指向Overlay-1A,Overlay-1A置为只读,于是Overlay-1A成为一个快照,后续只对Overlay-1B写入数据。云主机1使用的是快照链1内最后一个快照1B对应的磁盘文件,快照1B为Active。
      • 快照链2:
        • 云主机2:新建空白文件Overlay-2,backing file指向Base,Base保持为只读,后续只对Overlay-2写入数据。
        • 快照2A:新建空白文件Overlay-2A,backing file指向Overlay-2,Overlay-2置为只读,于是Overlay-2成为一个快照,后续只对Overlay-2A写入数据。云主机2使用的是快照链2内最后一个快照2A对应的磁盘文件,快照2A为Active。
      • 快照链3:
        • 云主机3:新建空白文件Overlay-3,backing file指向Base,Base保持为只读,后续只对Overlay-3写入数据。
        • 快照3A:新建空白文件Overlay-3A,backing file指向Overlay-3,Overlay-3置为只读,于是Overlay-3成为一个快照,后续只对Overlay-3A写入数据。云主机3使用的是快照链3内最后一个快照3A对应的磁盘文件,快照3A为Active。
  3. 合并快照

    外部快照之间互相依赖(每一个overlay依赖它的backing file),每个快照保存有相应数据,不可直接删除某个快照来缩短链长度。外部快照可通过向下合并(Blockcommit)或向上合并(Blockpull)两种方式来缩短链长度。

    • 向下合并(Blockcommit)

      在同一条快照链内,支持将overlays合并至backing files。

      图 4所示:
      图 4. 向下合并


      假定已有一个原始镜像(Base),基于Base创建云主机1,并对云主机1创建3个互相依赖的外部快照,即:快照1A、快照1B、快照1C。现将快照1A、快照1B向下合并至云主机1,于是快照1C(Active)的backing file直接指向云主机1,快照链缩短。快照1A、快照1B不再有用,删除即可。

    • 向上合并(Blockpull)

      在同一条快照链内,支持将backing files合并至overlays。

      图 5所示:
      图 5. 向上合并


      假定已有一个原始镜像(Base),基于Base创建云主机1,并对云主机1创建3个互相依赖的外部快照,即:快照1A、快照1B、快照1C。现将快照1A、快照1B向上合并至快照1C(Active),于是快照1C(Active)的backing file直接指向云主机1,快照链缩短。快照1A、快照1B不再有用,删除即可。

Ceph存储快照原理

对于Ceph存储,ZStack Cube 旗舰版采用Ceph存储自带的快照功能,当下业界分布式存储主流采用ROW(Redirect-On-Write,写时重定向)快照机制。

创建快照

创建快照分为以下三种场景:
  • 创建云主机快照:
    • 单盘快照:对云主机根云盘创建快照。
    • 快照组:对云主机根云盘、所加载的数据云盘以及云主机内存创建快照。
  • 创建数据云盘快照:对数据云盘创建快照。
  • 创建弹性裸金属实例快照:对弹性裸金属创建快照。

创建云主机快照

ZStack Cube 旗舰版主菜单,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择某一云主机(运行中/已暂停/已停止),点击操作 > 快照和备份 > 创建快照,弹出创建云主机快照界面。

可参考以下示例输入相应内容:
  • 名称:设置云主机快照名称。命名规则:长度限制1~128字符,输入内容只能包含中文汉字、英文字母、数字、空格和以下7种英文字符 - _ . ( ) : + 且不支持以空格开头或结尾
  • 简介:可选项,可留空不填
  • 快照类型:对云主机创建单盘快照或快照组
    • 单盘:对云主机根云盘创建快照
    • 快照组:对云主机根云盘、所加载的数据云盘以及云主机内存创建快照
      Note:
      • 若云主机已加载共享云盘,不支持创建快照组。
      • 创建内存快照前,需确保云主机处于运行中状态。
      • 创建内存快照前,需将云主机加载的外接设备卸载。
      • 创建内存快照时,为保证内存一致性,云主机会短时间处于暂停状态。
      • 内存快照不支持Ceph和Vhost主存储类型。

用户也可进入云主机详情页创建云主机快照。在云主机详情页的快照子页面,点击创建快照,弹出创建云主机快照界面,创建云主机快照。

图 1所示:
图 1. 创建云主机快照


创建数据云盘快照

ZStack Cube 旗舰版主菜单,点击资源中心 > 云资源池 > 虚拟资源 > 云盘 > 数据云盘,进入数据云盘界面。选择某一云盘,点击操作 > 创建数据云盘快照,弹出创建数据云盘快照界面。

可参考以下示例输入相应内容:
  • 名称:设置云盘快照名称。命名规则:长度限制1~128字符,输入内容只能包含中文汉字、英文字母、数字、空格和以下7种英文字符 - _ . ( ) : + 且不支持以空格开头或结尾
  • 简介:可选项,可留空不填

用户也可进入数据云盘详情页创建云盘快照。在云盘详情页的快照子页面,点击创建快照。弹出创建数据云盘快照界面,创建云盘快照。

图 2所示:
图 2. 创建数据云盘快照


创建弹性裸金属实例快照

ZStack Cube 旗舰版主菜单,点击资源中心 > 弹性裸金属管理 > 弹性裸金属实例,进入弹性裸金属实例界面。选择某一弹性裸金属实例,点击操作 > 创建快照,弹出创建云主机快照界面。

可参考以下示例输入相应内容:
  • 名称:设置弹性裸金属实例快照名称。命名规则:长度限制1~128字符,输入内容只能包含中文汉字、英文字母、数字、空格和以下7种英文字符 - _ . ( ) : + 且不支持以空格开头或结尾
  • 简介:可选项,可留空不填
  • 快照类型:仅支持对弹性裸金属实例根云盘创建单盘快照

用户也可进入弹性裸金属实例详情页创建弹性裸金属实例快照。在弹性裸金属实例详情页的快照子页面,点击创建快照。弹出创建弹性裸金属实例快照界面,创建弹性裸金属实例快照。

图 3所示:
图 3. 创建弹性裸金属实例快照


注意事项

  • 支持对运行中或已停止的云主机或弹性裸金属实例创建快照。
  • 弹性裸金属实例暂不支持创建快照组。
  • 若云主机已加载共享云盘,不支持创建快照组。
  • 在生产环境中,建议单块磁盘的快照数量尽量控制在5以内。快照过多会影响云主机/云盘/弹性裸金属实例的I/O性能、数据安全以及主存储容量。如需长期备份,建议使用灾备服务。
  • 在生产环境中,为确保数据完整性,不建议对高I/O的云主机或弹性裸金属实例创建快照。当云主机或弹性裸金属实例内部进行高I/O操作时,对云主机或弹性裸金属实例创建快照,内存中存在部分数据没有落入硬盘,这部分数据将无法保存到快照中。
  • Shared Block以及Ceph主存储上创建的共享云盘,不支持创建快照。

管理快照

ZStack Cube 旗舰版主菜单,点击资源中心 > 云资源池 > 资源服务 > 快照,进入快照界面。

管理云主机快照

操作 描述
创建云主机快照 对运行中或已停止的云主机创建快照。
云主机快照包括单盘快照和快照组两种类型:
  • 单盘快照:对云主机根云盘创建快照。
  • 快照组:对云主机根云盘、所加载的数据云盘以及内存创建快照。支持以快照组为单位统一恢复。
    Note:
    • 若云主机已加载共享云盘,不支持创建快照组。
    • 创建内存快照前,需确保云主机处于运行中状态。
    • 创建内存快照前,需将云主机加载的外接设备卸载。
    • 创建内存快照时,为保证内存一致性,云主机会短时间处于暂停状态。
    • 内存快照不支持Ceph主存储类型。
编辑云主机快照 修改云主机快照的名称与简介。
创建云主机 基于快照创建云主机,点击后进入基于快照创建云主机界面,该界面除创建云主机常用配置外,还显示所选快照时间、云主机根盘所需空间以及是否同时创建数据云盘选项。
Note:
  • 仅基于快照组创建云主机支持使用同时创建数据云盘功能。
  • 创建时支持指定根云盘主存储,若未指定根云盘主存储,默认与原云主机根云盘所在主存储一致。
  • 暂不支持指定数据云盘主存储,默认与原云主机的数据云盘所在主存储保持一致。
恢复云主机快照 将数据恢复到所选快照节点。
Note:
  • 单盘快照仅支持将云主机根云盘恢复到快照节点。
  • 快照组支持将组内的根云盘和数据云盘一起恢复到快照节点。
  • 仅停止状态的云主机支持恢复快照操作。恢复快照前,请先停止云主机。
  • 恢复快照会占用一定主存储空间,如系统预计恢复操作将导致主存储使用率超过90%或超过全局设置主存储使用阈值,则快照无法被恢复。
  • 支持在快照恢复后选择是否自动启动云主机,包含内存快照的云主机在快照恢复后默认处于运行状态。
  • 恢复快照组将清除当前数据,包括云主机的内存信息,并将云主机数据恢复至此快照节点。为避免重要数据丢失,建议对云主机当前状态及数据进行快照或备份。
  • 恢复快照组时,若云主机网络发生变更,请重新设置云主机网络信息。
  • 恢复快照组时,若云主机网卡和虚拟光驱数量与快照信息不一致,创建快照后新加载的网卡和虚拟光驱将被移除。
  • 若云主机快照组显示不可恢复,可能存在以下原因:
    • 快照组中的数据云盘快照被删除(至少一个数据云盘快照被删除),此时快照组不可恢复,仅支持单盘恢复。
    • 云主机所加载的数据云盘被删除(至少一块数据云盘被删除),此时快照组不可恢复,仅支持单盘恢复。
    • 云主机所加载的数据云盘被卸载(至少一块数据云盘被卸载),此时快照组不可恢复,仅支持单盘恢复。若将已卸载的数据云盘重新加载,则支持快照组恢复。
    • 云主机新加载数据云盘,此时快照组不可恢复,仅支持单盘恢复。若将新加载的数据云盘卸载,则支持快照组恢复。
删除云主机快照 删除不需要的快照。
Note:
  • 本地存储、NFS、SMP和Shared Block存储上创建的快照具有树状结构,删除根快照将同时删除其子分支上的快照,并解绑子分支上的快照组,请谨慎操作。
  • Ceph共享存储上创建的快照是独立的,不具有树状结构,删除某一快照不会影响其他快照。
  • 批量删除树状结构的快照时,系统会根据所选快照,自动计算最终需要删除的快照并级联删除。
  • 删除单个快照组类型的快照,将同时删除快照组内数据云盘对应的快照及子分支上的快照,请谨慎操作。
  • 批量删除单盘快照,将同时删除其子分支上的单盘快照并解绑子分支上的快照组,请谨慎操作。
  • 删除当前快照会消耗 I/O,请勿重启管理节点服务。
  • 删除本地存储、NFS、SMP和Shared Block存储上的快照,系统会先将快照数据合并进对应云盘。该过程占用一定主存储容量,若主存储容量不足,会导致快照无法删除。
  • 不支持混合删除单盘快照和快照组。
  • 含有内存快照的快照组不支持批量删除,该类快照组请单个删除。
  • 若所选快照已被链接克隆的云主机使用,将无法删除。如需删除快照,请先扁平合并解除依赖后,再执行此操作。
解绑快照组 将云主机快照恢复为单盘快照,并解除此云主机与相关云盘快照的组关系。解绑后不可批量恢复,请谨慎操作。

管理数据云盘快照

操作名称 描述
创建数据云盘快照 为数据云盘创建快照。
Note: Shared Block主存储上创建的共享云盘,不支持创建快照。
编辑名称简介 修改数据云盘快照的名称与简介。
恢复数据云盘快照 将云盘数据恢复到所选快照节点。
Note:
  • 恢复快照前,需要停止加载该数据云盘的云主机或将该数据云盘从云主机卸载。
  • 恢复快照会占用一定主存储空间,如系统预计恢复操作将导致主存储使用率超过90%或超过全局设置主存储使用阈值,则快照无法被恢复。
删除数据云盘快照 删除不需要的数据云盘快照,支持批量删除。
Note:
  • 本地存储、NFS、SMP和Shared Block存储上创建的快照具有树状结构,删除根快照将同时删除其子分支上的快照,请谨慎操作。
  • Ceph共享存储上创建的快照是独立的,不具有树状结构,删除某一快照不会影响其他快照。
  • 批量删除树状结构的快照时,系统会根据所选快照,自动计算最终需要删除的快照并级联删除。
  • 若待删快照存在快照组内快照,删除当前快照将同时删除其子分支上的快照。删除后相关快照组不可恢复,请谨慎操作。
  • 若单独删除快照组内的根云盘快照,将解散对应快照组,组内其他快照变更为单盘快照。
  • 若单独删除快照组内的数据云盘快照,快照组将保留,但组内其他快照只能以单盘形式恢复。
  • 删除本地存储、NFS、SMP和Shared Block存储上的快照,系统会先将快照数据合并进对应云盘。该过程占用一定主存储容量,若主存储容量不足,会导致快照无法删除。
  • 不支持混合删除单盘快照和快照组。
  • 若所选快照已被链接克隆的云盘使用,将无法删除。如需删除快照,请先扁平合并解除依赖后,再执行此操作。

管理弹性裸金属实例快照

操作名称 描述
创建弹性裸金属实例快照 为处于运行状态、停止状态的弹性裸金属实例创建快照。
编辑弹性裸金属实例快照 修改弹性裸金属实例快照的名称与简介。
恢复弹性裸金属实例快照 将数据恢复到所选快照节点。
Note:
  • 快照仅支持将弹性裸金属实例根云盘恢复到快照节点。
  • 仅停止状态的弹性裸金属实例支持恢复快照操作。恢复快照前,请先停止云主机。
  • 恢复快照会占用一定主存储空间,如系统预计恢复操作将导致主存储使用率超过90%或超过全局设置主存储使用阈值,则快照无法被恢复。
  • 支持在快照恢复后选择是否自动启动弹性裸金属实例。
删除弹性裸金属实例快照 删除不需要的快照。
Note:
  • 本地存储、NFS、SMP和Shared Block存储上创建的快照具有树状结构,删除根快照将同时删除其子分支上的快照,并解绑子分支上的快照组,请谨慎操作。
  • Ceph共享存储上创建的快照是独立的,不具有树状结构,删除某一快照不会影响其他快照。
  • 批量删除树状结构的快照时,系统会根据所选快照,自动计算最终需要删除的快照并级联删除。
  • 删除本地存储、NFS、SMP和Shared Block存储上的快照,系统会先将快照数据合并进对应云盘。该过程占用一定主存储容量,若主存储容量不足,会导致快照无法删除。
  • 删除当前快照会消耗 I/O,请勿重启管理节点服务。

使用快照建议

本章节主要针对生产环境使用快照功能给出建议说明。

创建快照建议

  1. 在生产环境中,建议单块磁盘的快照数量尽量控制在5以内,快照过多会影响云主机/云盘的I/O性能、数据安全以及主存储容量。如需长期备份,建议使用灾备服务。
  2. 在生产环境中,为确保数据完整性,不建议对高I/O的云主机创建快照。当云主机内部进行高I/O操作时,对云主机创建快照,内存中存在部分数据没有落入硬盘,这部分数据将无法保存到快照中。
  3. 在生产环境中,为确保快照组恢复成功,不建议将普通快照组与包含云主机内存的快照组混用。
  4. 在生产环境中,不建议进行高频的定时快照备份。长时间高频定时快照会从I/O、容量、业务稳定性等多方面影响生产环境:
    • 长时间高频定时快照,会导致快照过多,影响云主机业务。例如:对于Ceph存储场景,主要影响云主机写性能;对于本地存储或集中式存储场景,主要影响云主机读性能。
    • 长时间高频定时快照,会导致全量快照相对较多,影响主存储的整体I/O输出。
    • 长时间高频定时快照,会导致快照过多,占用额外的主存储容量。

自动定时快照说明

系统在以下特定场景可能触发一次性自动快照:
  • 根云盘扩容
  • 数据云盘扩容
  • 重置云主机
  • 在Ceph主存储上创建根云盘或数据云盘的镜像
  • 快照回滚
    Note:
    • 系统默认快照回滚不会触发一次性自动快照。
    • 用户可自行设置快照回滚是否触发一次性自动快照,在全局设置中,开启自动创建云盘快照开关即可。默认为false。
    • 执行快照回滚操作前,强烈建议对磁盘创建一份快照,以保护当前磁盘数据状态。

快照影响说明

  1. 系统容量占用
    • 本地存储或集中式存储场景下,创建增量快照仅占用略微存储空间,创建全量快照会占用一倍存储空间。
    • Ceph主存储场景下,创建快照本身不占用额外的存储空间,但创建快照后,对原有磁盘进行写操作可能触发快照的写时复制(Copy-On-Write),从而导致每个快照消耗与原有磁盘相同的存储空间大小。
  2. 当前业务影响
    • 创建快照:一般情况下无影响,但在创建全量快照时,存储网络会有额外的网络I/O产生,特别是本地存储或集中式存储场景,磁盘I/O带宽占用比较明显,但磁盘IOPS基本不受影响。
    • 删除快照:一般情况下,删除快照会同时删除其子分支上的快照,并把数据合并(merge)到磁盘中,该过程会有额外的磁盘I/O带宽产生,业务I/O可能略微变慢。