通过前一篇的学习加上Horizon的使用,我们可以了解到OpenStack为每个虚拟机实例维护了3个状态,一个实例状态vm_state,一个任务状态task_state,一个电源状态power_state,那么这一篇我们先学习下nova-compute的状态机,这对我们之后学习虚拟机各种操作对应的流程大有裨益。
我们需要明确以下几点:
1.电源状态power_state是实例在hypervisor上的状态,只能由nova-compute进行汇报
2.实例状态vm_state是基于API调用的稳定状态,符合用户预期;在没有API调用涉及到实例时,它的vm_state不应该发生变化,且vm_state只在任务结束时才被修改;如果任务失败或不能回滚,vm_state会被置为ERROR
3.任务状态task_state是为了流程化API调用引入的暂态,任务结束时task_state会被置为None
4.只要数据库可用,那么就能对实例进行硬删除;
5.电源状态和实例状态有可能发生冲突,譬如实例状态为ACTIVE但是电源状态却是SHUTDOWN
详细的实例状态转换关系请参见