Libvirt domain的几种状态及转换关系
在Libvirt里,一个Domain是一个运行在虚拟机器上的操作系统的实例,它可以指一个运行着的虚拟机,或者用于启动虚拟机的配置。
那么,对于一个Domain而言,主要有哪些状态呢?,他们的转换关系是什么?可以参考文档VM lifecycle。其中,状态主要包括以下:
Domain有以下状态:
- Undefined(未定义) - 基线状态。Libvirt不知道任何关于domain的信息,因为它还没有被创建。
- Defined or Stopped(已定义/停止) - Domain已经被定义,但是不在运行状态,也被成为停止状态,只有持久性domain有这个状态,当非持久domain停止或者关机了,则它就不存在了。
- Running(运行中) - Domain已经被定义并且且启动了,无论是持久性domain还是非持久domain,任何处于该状态的 domain 都已经在主机的 hypervisor 中被执行了。
- Paused(暂停) - 在hypervisor上的该domain被挂起了,它的状态被暂存,直到被唤醒。对于domain自身而言,是无法知道自己处于该状态的,如果熟悉操作系统里的进程挂起状态的话,这个很类似。
- Saved(已保存) - 和暂停状态很像,只不过domain的状态被存储在持久存储中,而不是内存中,同样domain可以被恢复,并且并不知道自己处于这个状态。
这些状态之间的转换关系,可以参考图:
参考: