- 卷快照:对块存储服务 创建的卷 进行备份,这是最常用、最标准的快照方式。
- 服务器快照:对计算服务 的虚拟机实例 进行备份,这通常是通过创建一个从该服务器启动的模板 来实现的,而不是直接生成一个镜像文件。
下面我将分别详细介绍这两种快照的命令。

卷快照 命令
卷快照是 OpenStack 中功能最完善、最可靠的备份方式,它依赖于 Cinder 块存储服务。
准备工作:确保 Cinder 服务可用
在创建快照之前,请确保:
- 你已经有一个可用的 Cinder 卷。
- 你有足够的配额来创建快照。
- 你正在使用的 OpenStack RC 文件已经加载。
# 加载你的 OpenStack RC 文件 (替换为你的路径和文件名) source /path/to/your-openstackrc.sh
创建卷快照
这是核心命令,它会为指定的卷创建一个点对点的备份。
命令格式:

openstack volume snapshot create --volume <卷ID或名称> --name <快照名称> [可选参数]
示例:
假设我们有一个名为 my-data-volume 的卷,我们要为它创建一个名为 my-data-snap-20251027 的快照。
# 方法一:使用卷名称 (推荐,更直观) openstack volume snapshot create --volume my-data-volume --name my-data-snap-20251027 # 方法二:使用卷ID (如果名称有冲突或不确定) # 首先获取卷ID openstack volume list # 假设返回的ID是 a1b2c3d4-e5f6-7890-1234-567890abcdef openstack volume snapshot create --volume a1b2c3d4-e5f6-7890-1234-567890abcdef --name my-data-snap-20251027
常用可选参数:
--description <描述文本>:为快照添加描述信息。--force:即使卷处于in-use(正在被虚拟机使用)状态,也强制创建快照。注意: 这可能会导致数据不一致,除非你确保文件系统处于一致状态(在虚拟机内先执行sync命令)。--property <key>=<value>:设置自定义属性。
# 带描述的快照 openstack volume snapshot create --volume my-data-volume --name "my-data-snap-20251027" --description "Weekly backup of project data" # 强制创建快照(不推荐,除非你知道你在做什么) # openstack volume snapshot create --volume my-data-volume --name my-data-snap-force --force
列出卷快照
查看所有可用的卷快照。
openstack volume snapshot list
输出会显示快照的 ID, 名称, 状态, 大小, 所属的卷等信息。

查看卷快照详情
获取特定快照的详细信息,包括状态、创建时间、描述等。
# 使用快照名称 openstack volume snapshot show my-data-snap-20251027 # 使用快照ID openstack volume snapshot show <快照ID>
从快照创建新卷
这是快照最常见的用途——从备份恢复数据。
命令格式:
openstack volume create --size <大小(GB)> --snapshot <快照ID或名称> --name <新卷名称> [可选参数]
示例:
从 my-data-snap-20251027 这个快照创建一个 20GB 的新卷,命名为 restored-volume。
# 使用快照名称 openstack volume create --size 20 --snapshot my-data-snap-20251027 --name restored-volume # 使用快照ID # openstack volume create --size 20 --snapshot <快照ID> --name restored-volume
注意:
- 新卷的大小可以等于或大于原始卷的大小,但不能小于原始卷的大小。
- 如果不指定
--size,新卷的大小将默认与原始卷相同。
删除卷快照
当快照不再需要时,可以将其删除以释放存储空间。
# 使用快照名称 openstack volume snapshot delete my-data-snap-20251027 # 使用快照ID # openstack volume snapshot delete <快照ID>
服务器快照 命令
服务器快照实际上是创建一个服务器模板,这个模板可以被用来快速创建新的、配置完全相同的虚拟机实例,它依赖于 Nova 计算服务。
创建服务器模板 (快照)
命令格式:
openstack server image create --name <模板名称> <服务器名称或ID> [可选参数]
示例:
对名为 my-web-server 的虚拟机创建一个快照模板,命名为 web-server-template-v1。
# 使用服务器名称 openstack server image create --name web-server-template-v1 my-web-server # 使用服务器ID # openstack server image create --name web-server-template-v1 <服务器ID>
常用可选参数:
--property <key>=<value>:设置镜像属性,--property hw_rng_model=virtio可以在创建新实例时启用硬件随机数生成器。--wait:等待镜像创建完成,镜像创建过程是异步的,使用此参数可以阻塞命令直到状态变为active。
# 等待创建完成 openstack server image create --name web-server-template-v1 --wait my-web-server
列出服务器模板 (镜像)
查看所有可用的镜像,包括从服务器快照创建的模板。
openstack image list
在列表中,你可以找到你刚刚创建的 web-server-template-v1,并查看其 ID, 状态, 大小等信息。
从模板创建新服务器
使用创建好的模板来启动一个新的虚拟机实例。
命令格式:
openstack server create --image <模板名称或ID> --flavor <规格名称或ID> --name <新服务器名称> [可选参数]
示例:
使用 web-server-template-v1 模板,选择 m1.medium 规格,创建一个名为 new-web-server-01 的新实例。
# 使用模板名称和规格名称 openstack server create --image web-server-template-v1 --flavor m1.medium --name new-web-server-01 # 使用模板ID和规格ID # openstack server create --image <模板ID> --flavor <规格ID> --name new-web-server-01
删除服务器模板 (镜像)
当模板不再需要时,可以将其删除。
# 使用镜像名称 openstack image delete web-server-template-v1 # 使用镜像ID # openstack image delete <镜像ID>
总结与对比
| 特性 | 卷快照 | 服务器快照 (创建镜像) |
|---|---|---|
| 服务 | Cinder (块存储) | Nova (计算) |
| 对象 | Cinder 卷 | Nova 实例 |
| 本质 | 卷数据的点对点备份 | 包含磁盘、网络配置的实例模板 |
| 主要用途 | 备份数据、卷扩容、数据迁移 | 快速克隆相同配置的虚拟机 |
| 命令核心 | openstack volume snapshot create |
openstack server image create |
| 恢复方式 | 从快照创建新卷 | 从镜像创建新实例 |
| 数据一致性 | 需谨慎处理,对 in-use 卷使用 --force 有风险 |
创建的是关机状态的模板,数据一致性好 |
| 灵活性 | 可将卷挂载到任何实例 | 直接生成一个完整的、可启动的系统 |
最佳实践建议:
- 数据备份:优先使用卷快照,对数据库、重要文件等数据进行备份时,这是最可靠的方式。
- 环境克隆:当你需要快速部署多个配置完全相同的应用服务器时,使用服务器快照(创建镜像)会非常高效。
- 组合使用:最佳实践是先为虚拟机系统盘和数据盘分别创建卷快照,然后从这些快照创建新卷,再组装成一个新的虚拟机,这样可以保证数据的一致性和环境的可复制性。
