虚拟机在它的生命周期有以下几种状态:

  • undefined: 这个状态代表着虚拟机没有创建或者没有在libvirt中定义。
  • Defined/Shutoff: 这个状态代表虚拟机定义了,并且在/etc/libvirt/qemu中有效的,我们可以把这个状态叫做停止或关闭状态。
  • Running: 代表着虚拟机正在运行。
  • Shutdown:这个代表着虚拟机优雅的关闭,就是我们常说的正常关机了。
  • Paused: 代表这个虚拟机从运行状态到挂起状态,这个内存镜像被临时的存储,这对guest OS来说虚拟机重新使用,它是感觉不到的。
  • Saved:在这个状态中,这个虚拟机是持久的挂起状态。这个内存的状态信息保存在磁盘中。这个虚拟机重新使用时,从这个保存的状态文件中还原信息。
  • Idle: 这个状态意味着,虚拟机在等待一个IO,或者是它由于没有工作要执行,进入了一个Sleep状态。
  • Crashed: 虚拟机损坏,有可能是QEMU的进程被kill掉或核心崩溃。
  • Dying: 虚拟机要么关闭或者Crashed了。
  • Pmsuspended: 这个虚拟机是通过Guest OS's的电源管理进行挂起了。

虚拟机的当前状态并且会在virt-manager中显示,当我们右击虚拟,我们可以改变它的状态。

虚拟机基本管理_第1张图片

使用virsh检测虚拟机的状态:

注意:virsh destroy的选项,

  • destroy:去停止一个domain。这相当于直接从服务器拿掉电源线。
  • create :该选项是从一个XML文件中创建一个domain. 格式: virsh create /location/vm_name.xml
  • define: 从一个XML文件中去定义一个domain。 这是去添加一个虚拟机到libvirt.
  • undefine:这和上面的结果相反。

下面进行举例说明:

(1)我们首先备份现在domain的配置文件。

virsh dumpxml F22-03 > /root/F22-03.xml

(2)从libvirt中移除虚拟机。执行undefine这个命令时不会移除存储设备的。

virsh undefine F22-03

(3)然后我们可以用我们刚才备份的文件再创建回来。

virsh create F22-03.xml

(4)校验文件

virsh define F22-03.xml --validate

保存虚拟机状态:

virsh save F22-03 /root/F22-03_before_host_reboot

注意:在保存完虚拟机的状态到文件后,虚拟机会关机的。

还原虚拟机:

virsh restore /root/F22-03_before_host_reboot

其它相关的命令选项:

  • save-image-define:针对一个域的存储状态文件重新定义。
  • save-image-dumpxml: 存储域的状态信息在XML。
  • save-image-edit: 编辑域的存储文件。

另外一个选项是managedsave.

这将会自动保存状态信息到/var/lib/libvirt/qemu/save中去。当下一次VM启动时,libvirt将会尝试从状态文件中去还原信息。假如VM启动失败的话,我们只需要使用managedsave-remove删除那个文件即可。推荐使用save代替managedsave. virsh managedsave vm_name 和virsh start vm_name.