OpenStack实例Shelve操作深度解析

需积分: 0 0 下载量 110 浏览量 更新于2024-08-04 收藏 204KB DOCX 举报
"38-Shelve Instance 操作详解 1" 在OpenStack环境中,Instance的管理是一项关键任务,其中Shelve Instance是一个高级功能,用于暂时释放实例占用的资源,但保留其状态以便稍后恢复。当一个Instance被Suspend后,它虽然看起来是Shutdown状态,但实际上,Hypervisor仍然会在宿主机上为其保留资源。为了真正释放这些资源,我们可以使用Shelve操作。 Shelve操作的工作流程如下: 1. **向nova-api发送请求**: 用户或程序通过OpenStack API(nova-api)发起请求,要求将Instance Shelve。请求可能通过命令行接口(CLI)或其他编程方式发出。API服务接收到请求后,会在日志文件`/opt/stack/logs/n-api.log`中记录相关信息。 2. **nova-api发送消息**: nova-api随后通过Messaging系统(通常是RabbitMQ)向Nova Compute节点发送一条消息,指示执行Shelve操作。在`/opt/stack/nova/nova/compute/api.py`的源代码中,可以看到对应的`shelve`方法。 3. **nova-compute执行操作**: Nova Compute节点接收到消息后,开始处理Shelve请求。首先,它会安全地关闭Instance,然后执行一个快照操作。这个快照会被保存到Glance,以Instance名称加上“-shelved”的后缀作为标识。一旦快照成功创建,原始Instance在宿主机上的所有资源将被删除,包括磁盘映像、网络配置等。 完成Shelve操作后,Instance的状态会更新为ShelvedOffloaded,表明它已被移除,但其数据已存储在Glance中。同时,电源状态显示为ShutDown,意味着Instance不再占用宿主机的计算资源。 Shelve功能对于资源紧张的环境非常有用,比如在非工作时间或者低峰期间,可以将不常使用的Instance Shelve,以节省宝贵的计算资源。一旦需要,通过Unshelve操作可以快速恢复Instance到之前的状态。 在下一部分,我们将深入探讨Unshelve操作,它是Shelve的逆过程,如何从Glance中恢复Instance并重新分配资源到宿主机上。Unshelve同样涉及API交互、消息传递以及Nova Compute的处理,是OpenStack资源管理中的重要一环。