在 OpenStack 中,我们对虚拟机实例做了修改后,可以以此实例为模版创建新的虚拟机镜像,其过程也很简单。


Table of Contents

  1. 创建实例的快照
  2. 下载快照到本地
  3. 从快照镜像生成镜像
  4. 从新镜像启动新实例
  5. 参考

创建实例的快照

  1. 找到将要作为模版的实例,并将其关掉。
1
2
3
4
5
6
$ source ~/keystonerc_admin
$ nova list
...
| 8e640acc-6cca-4a4a-8ca5-763150d107bd | my_instance | ACTIVE | - | Running | V2018=192.168.18.20 |
...
$ nova stop my_instance
  1. 确保实例已经关机。
1
2
3
4
$ nova list
...
| 8e640acc-6cca-4a4a-8ca5-763150d107bd | my_instance | ACTIVE | - | SHUTOFF | V2018=192.168.18.20 |
...
  1. 使用 nova image-create 创建实例快照。
1
2
$ nova image-create --poll my_instance my_instance_snp
Server snapshotting... 100% complete
  1. 确保 Nova 镜像处于 ACTIVE 状态。
1
2
3
4
$ nova image-list
...
| 5c8e13b7-2eea-4bf7-9440-c1e7c603380f | my_instance_snp | ACTIVE | 8e640acc-6cca-4a4a-8ca5-763150d107bd |
...

下载快照到本地

  1. 获取快照 ID。
1
2
3
4
$ nova image-list
...
| 5c8e13b7-2eea-4bf7-9440-c1e7c603380f | my_instance_snp | ACTIVE | 8e640acc-6cca-4a4a-8ca5-763150d107bd |
...
  1. 将快照下载到本地。使用快照 ID 而不是名字。
1
$ glance image-download --file my_instance_image.qcow2 5c8e13b7-2eea-4bf7-9440-c1e7c603380f
  1. 如果需要,将镜像复制到新环境中。

从快照镜像生成镜像

1
2
3
$ glance --os-image-api-version 1 image-create --container-format bare --disk-format qcow2 -name "my_new_image" --file my_instance_image.qcow2
### or
$ glance --os-image-api-version 1 image-create --container-format bare --disk-format qcow2 -name "my_new_image" --copy_from my_instance_image_url

从新镜像启动新实例

1
$ nova boot --flavor m1.tiny --image my_new_image my_new_instance

参考

  1. Use snapshots to migrate instances
  2. OpenStack – convert an instance to an image