快照
概述
快照:某一时间点某一磁盘的数据状态文件。做重要操作前,对云主机根云盘、数据云盘、云主机内存或弹性裸金属实例做特定时间点的临时状态保留,方便出现故障后迅速回滚。如需长期备份,建议使用灾备服务。
快照类别
- 手动快照:用户随时手动对云主机根云盘、数据云盘或弹性裸金属实例创建快照。
- 自动快照:通过定时任务创建快照,或系统在特定场景触发一次性自动快照。
- 通过定时任务创建快照,用户需提前创建定时快照策略,系统会在设置的时间点自动对相应资源创建快照。
- 系统在以下特定场景可能触发一次性自动快照:
- 根云盘扩容
- 数据云盘扩容
- 重置云主机
- 快照回滚Note:
- 系统默认快照回滚不会触发一次性自动快照。
- 用户可自行设置快照回滚是否触发一次性自动快照,设置方法:
进入,开启自动创建云盘快照开关即可。
- 在Ceph主存储上创建根云盘或数据云盘的镜像
快照视图
- 列表视图:以列表的方式展示快照信息,包括:快照名称、类型、容量、创建日期和支持的操作。
- 拓扑视图:以快照树的方式展示快照信息,包括:快照链和快照节点。支持定位到当前快照、还原画布、放大、缩写、全屏等操作。
应用场景
- 故障迅速还原:当生产环境出现异常故障,可使用快照回滚功能迅速还原至正常状态。该手段为临时方案,考虑到数据的长期完善保护,建议使用灾备服务。
- 数据开发:通过对生产数据创建快照,从而为数据挖掘、报表查询和开发测试等应用提供近实时的真实生产数据。
- 提高操作容错率:在系统升级或业务数据迁移等重大操作前,建议创建一份或多份快照。一旦升级或者迁移过程中出现任何问题,可以通过快照及时恢复到正常的系统数据状态。
快照原理
非Ceph存储 QCOW2外部快照原理
对于非Ceph存储(本地存储/NFS/Shared Mount Point/Shared Block),ZStack Cube 旗舰版采用QCOW2外部快照(External Snapshot)机制。
- 快照链与快照树
通常一块磁盘对应一条快照链,ZStack Cube 旗舰版支持对一块磁盘创建一棵快照树,快照树的每一个分支都是一条快照链。
如图 1所示:图 1. 快照树 
快照树包括以下信息:- 快照链:磁盘的一组快照组成的关系链,快照树的每一个分支都是一条快照链。
- 快照节点:快照链中的一个节点,表示磁盘的一份快照。
- 快照容量:快照占用的存储空间。支持查看快照树中所有快照的总容量,以及单个快照节点的容量。
Note:- 对于非Ceph存储,系统默认每条快照链最多有128个节点,用户可在全局设置中,通过修改云盘快照增量的最大数目自行设置快照链的最大长度。对于Ceph存储,单盘最大快照数量为32,包括手动创建及自动创建的快照。
- 快照链长度达到上限后:
- 若继续创建自动快照,系统会自动删除最早的自动快照。
- 若继续创建手动快照,用户需手动删除不需要的快照。
- 在生产环境中,建议单块磁盘的快照数量尽量控制在5以内,快照过多会影响云主机/云盘的IO性能、数据安全以及主存储容量。如需长期备份,建议使用灾备服务。
- 创建快照
当一个外部快照被创建,实质是新建一个空白的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。
- 基于backing file创建单条快照链。
- 合并快照
外部快照之间互相依赖(每一个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不再有用,删除即可。
- 向下合并(Blockcommit)
Ceph存储快照原理
对于Ceph存储,ZStack Cube 旗舰版采用Ceph存储自带的快照功能,当下业界分布式存储主流采用ROW(Redirect-On-Write,写时重定向)快照机制。
创建快照
- 创建云主机快照:
- 单盘快照:对云主机根云盘创建快照。
- 快照组:对云主机根云盘、所加载的数据云盘以及云主机内存创建快照。
- 创建数据云盘快照:对数据云盘创建快照。
- 创建弹性裸金属实例快照:对弹性裸金属创建快照。
创建云主机快照
在ZStack Cube 旗舰版主菜单,点击,进入云主机界面。选择某一云主机(运行中/已暂停/已停止),点击,弹出创建云主机快照界面。
- 名称:设置云主机快照名称。命名规则:长度限制1~128字符,输入内容只能包含中文汉字、英文字母、数字、空格和以下7种英文字符
- _ . ( ) : +且不支持以空格开头或结尾 - 简介:可选项,可留空不填
- 快照类型:对云主机创建单盘快照或快照组
-
- 单盘:对云主机根云盘创建快照
- 快照组:对云主机根云盘、所加载的数据云盘以及云主机内存创建快照Note:
- 若云主机已加载共享云盘,不支持创建快照组。
- 创建内存快照前,需确保云主机处于运行中状态。
- 创建内存快照前,需将云主机加载的外接设备卸载。
- 创建内存快照时,为保证内存一致性,云主机会短时间处于暂停状态。
- 内存快照不支持Ceph和Vhost主存储类型。
用户也可进入云主机详情页创建云主机快照。在云主机详情页的快照子页面,点击创建快照,弹出创建云主机快照界面,创建云主机快照。

创建数据云盘快照
在ZStack Cube 旗舰版主菜单,点击,进入数据云盘界面。选择某一云盘,点击,弹出创建数据云盘快照界面。
- 名称:设置云盘快照名称。命名规则:长度限制1~128字符,输入内容只能包含中文汉字、英文字母、数字、空格和以下7种英文字符
- _ . ( ) : +且不支持以空格开头或结尾 - 简介:可选项,可留空不填
用户也可进入数据云盘详情页创建云盘快照。在云盘详情页的快照子页面,点击创建快照。弹出创建数据云盘快照界面,创建云盘快照。

创建弹性裸金属实例快照
在ZStack Cube 旗舰版主菜单,点击,进入弹性裸金属实例界面。选择某一弹性裸金属实例,点击,弹出创建云主机快照界面。
- 名称:设置弹性裸金属实例快照名称。命名规则:长度限制1~128字符,输入内容只能包含中文汉字、英文字母、数字、空格和以下7种英文字符
- _ . ( ) : +且不支持以空格开头或结尾 - 简介:可选项,可留空不填
- 快照类型:仅支持对弹性裸金属实例根云盘创建单盘快照
用户也可进入弹性裸金属实例详情页创建弹性裸金属实例快照。在弹性裸金属实例详情页的快照子页面,点击创建快照。弹出创建弹性裸金属实例快照界面,创建弹性裸金属实例快照。

注意事项
- 支持对运行中或已停止的云主机或弹性裸金属实例创建快照。
- 弹性裸金属实例暂不支持创建快照组。
- 若云主机已加载共享云盘,不支持创建快照组。
- 在生产环境中,建议单块磁盘的快照数量尽量控制在5以内。快照过多会影响云主机/云盘/弹性裸金属实例的I/O性能、数据安全以及主存储容量。如需长期备份,建议使用灾备服务。
- 在生产环境中,为确保数据完整性,不建议对高I/O的云主机或弹性裸金属实例创建快照。当云主机或弹性裸金属实例内部进行高I/O操作时,对云主机或弹性裸金属实例创建快照,内存中存在部分数据没有落入硬盘,这部分数据将无法保存到快照中。
- Shared Block以及Ceph主存储上创建的共享云盘,不支持创建快照。
管理快照
在ZStack Cube 旗舰版主菜单,点击,进入快照界面。
管理云主机快照
| 操作 | 描述 |
|---|---|
| 创建云主机快照 | 对运行中或已停止的云主机创建快照。 云主机快照包括单盘快照和快照组两种类型:
|
| 编辑云主机快照 | 修改云主机快照的名称与简介。 |
| 创建云主机 | 基于快照创建云主机,点击后进入基于快照创建云主机界面,该界面除创建云主机常用配置外,还显示所选快照时间、云主机根盘所需空间以及是否同时创建数据云盘选项。 Note:
|
| 恢复云主机快照 | 将数据恢复到所选快照节点。 Note:
|
| 删除云主机快照 | 删除不需要的快照。 Note:
|
| 解绑快照组 | 将云主机快照恢复为单盘快照,并解除此云主机与相关云盘快照的组关系。解绑后不可批量恢复,请谨慎操作。 |
管理数据云盘快照
| 操作名称 | 描述 |
|---|---|
| 创建数据云盘快照 | 为数据云盘创建快照。 Note: Shared
Block主存储上创建的共享云盘,不支持创建快照。 |
| 编辑名称简介 | 修改数据云盘快照的名称与简介。 |
| 恢复数据云盘快照 | 将云盘数据恢复到所选快照节点。 Note:
|
| 删除数据云盘快照 | 删除不需要的数据云盘快照,支持批量删除。 Note:
|
管理弹性裸金属实例快照
| 操作名称 | 描述 |
|---|---|
| 创建弹性裸金属实例快照 | 为处于运行状态、停止状态的弹性裸金属实例创建快照。 |
| 编辑弹性裸金属实例快照 | 修改弹性裸金属实例快照的名称与简介。 |
| 恢复弹性裸金属实例快照 | 将数据恢复到所选快照节点。 Note:
|
| 删除弹性裸金属实例快照 | 删除不需要的快照。 Note:
|
使用快照建议
本章节主要针对生产环境使用快照功能给出建议说明。
创建快照建议
- 在生产环境中,建议单块磁盘的快照数量尽量控制在5以内,快照过多会影响云主机/云盘的I/O性能、数据安全以及主存储容量。如需长期备份,建议使用灾备服务。
- 在生产环境中,为确保数据完整性,不建议对高I/O的云主机创建快照。当云主机内部进行高I/O操作时,对云主机创建快照,内存中存在部分数据没有落入硬盘,这部分数据将无法保存到快照中。
- 在生产环境中,为确保快照组恢复成功,不建议将普通快照组与包含云主机内存的快照组混用。
- 在生产环境中,不建议进行高频的定时快照备份。长时间高频定时快照会从I/O、容量、业务稳定性等多方面影响生产环境:
- 长时间高频定时快照,会导致快照过多,影响云主机业务。例如:对于Ceph存储场景,主要影响云主机写性能;对于本地存储或集中式存储场景,主要影响云主机读性能。
- 长时间高频定时快照,会导致全量快照相对较多,影响主存储的整体I/O输出。
- 长时间高频定时快照,会导致快照过多,占用额外的主存储容量。
自动定时快照说明
- 根云盘扩容
- 数据云盘扩容
- 重置云主机
- 在Ceph主存储上创建根云盘或数据云盘的镜像
- 快照回滚Note:
- 系统默认快照回滚不会触发一次性自动快照。
- 用户可自行设置快照回滚是否触发一次性自动快照,在全局设置中,开启自动创建云盘快照开关即可。默认为false。
- 执行快照回滚操作前,强烈建议对磁盘创建一份快照,以保护当前磁盘数据状态。
快照影响说明
- 系统容量占用
- 本地存储或集中式存储场景下,创建增量快照仅占用略微存储空间,创建全量快照会占用一倍存储空间。
- Ceph主存储场景下,创建快照本身不占用额外的存储空间,但创建快照后,对原有磁盘进行写操作可能触发快照的写时复制(Copy-On-Write),从而导致每个快照消耗与原有磁盘相同的存储空间大小。
- 当前业务影响
- 创建快照:一般情况下无影响,但在创建全量快照时,存储网络会有额外的网络I/O产生,特别是本地存储或集中式存储场景,磁盘I/O带宽占用比较明显,但磁盘IOPS基本不受影响。
- 删除快照:一般情况下,删除快照会同时删除其子分支上的快照,并把数据合并(merge)到磁盘中,该过程会有额外的磁盘I/O带宽产生,业务I/O可能略微变慢。
