openstack虚拟机状态(vm_state,task_state,power_state)

一 vm_state
1 虚拟机处在稳定状态,通过api产生的状态。
2 有Active,Error,Reboot,Build,Shutoff五种状态。
openstack虚拟机状态(vm_state,task_state,power_state)

二 task_state
  • 虚拟机处在中间状态,通过api产生
  • 表示虚拟机正在执行某种任务(操作)
  • 当任务执行完成后,task state都变成None
  • Powering-on,Suspending等等带有ing的状态
openstack虚拟机状态(vm_state,task_state,power_state)

三 power state
从hypervisor上获取的虚拟机状态
openstack虚拟机状态(vm_state,task_state,power_state)
通过libvirt得到状态
openstack虚拟机状态(vm_state,task_state,power_state)

四 三个状态之间的关系
1 三者没有必然的联系
被修复过的虚拟机,power state是running的虚拟机,vm state可能是rescued
2 三个状态之间会出现冲突
虚拟机内部关机,由于没有调用api,所以vm state还是active,但是power state变成了shutoff
但实际情况是vm state也会变成shutoff,为什么呢?如果只用一个状态,vm state就只能是active,和实际不符合,openstack会根据这三个状态,相互推断出一种合理的状态。这就是三种状态存在的理由。
3 每次task state的变化都会对应一个task,这个task会有唯一的id表示
任务结束后,task state和task id都设置为空
只有某些特殊任务可以抢占其他任务,比如force_delete