![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457197031167.png]()
上一节我们讨论了 snapshot,snapshot 的一个重要作用是对 instance 做备份。
如果 instance 损坏了,可以通过 snapshot 恢复,这个恢复的操作就是 Rebuild。
Rebuild 会用 snapshot 替换 instance 当前的镜像文件,同时保持 instance 的其他诸如网络,资源分配属性不变。
下面是 rebuild instance 的流程图
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457001037864.png]()
-
向 nova-api 发送请求
-
nova-api 发送消息
-
nova-compute 执行操作
下面我们详细讨论每一个步骤。
向 nova-api 发送请求
客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“Rebuild 这个 Instance”
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457309098709.png]()
选择用于恢复的 image
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457399072064.png]()
查看日志/opt/stack/logs/n-api.log
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457529000369.png]()
nova-api 发送消息
nova-api 向 Messaging(RabbitMQ)发送了一条消息:“Rebuild 这个 Instance” 源代码在 /opt/stack/nova/nova/compute/api.py,方法是 rebuild。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457531097953.png]()
nova-compute 执行操作
查看日志 /opt/stack/logs/n-cpu.log
关闭 instance
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457504006976.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457605008877.png]()
下载新的 image,并准备 instance 的镜像文件
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457645020640.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457654011663.png]()
启动 instance
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457703047371.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457744057836.png]()
Rebuild 后,GUI 显示 instance 已经使用新的 image
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160522-1463901457760078312.png]()
以上就是 Rebuild 操作的分析,下一节我们讨论 Shelve 操作。
![]()