管理虚拟机生命周期

概述

本节介绍如何使用StratoVirt对虚拟机进行启动、暂停、恢复、退出等生命周期的管理。

创建并启动虚拟机

根据虚拟机配置可知,可以通过命令行参数或json文件指定虚拟机配置,并在主机通过stratovirt命令创建并启动虚拟机。

  • 使用命令行参数给出虚拟机配置,创建并启动虚拟机的命令如下:
  1. $ /path/to/stratovirt -[参数1] [参数选项] -[参数2] [参数选项] ...
  • 使用json文件给出虚拟机配置,创建并启动虚拟机的命令如下:
  1. $ /path/to/stratovirt \
  2. -config /path/to/json \
  3. -api-channel unix:/path/to/socket

其中,/path/to/json为json配置文件的路径。/path/to/socket为用户指定的socket文件(如/tmp/stratovirt.socket),使用上述命令会自动创建socket文件。为确保虚拟机能够正常启动,在创建socket文件前确保该文件不存在。

管理虚拟机生命周期 - 图1

虚拟机启动后,内部会有eth0和eth1两张网卡。这两张网卡预留用于网卡热插拔。热插的第一张网卡是eth0,热插的第二张网卡是eth1,目前只支持热插2张virtio-net网卡。

连接虚拟机

StratoVirt当前采用QMP管理虚拟机,暂停、恢复、退出虚拟机等操作需要通过QMP连接到虚拟机进行管理。

在主机上打开新的命令行窗口B,并使用root权限进行api-channel连接,参考命令如下:

  1. # ncat -U /path/to/socket

连接建立后,会收到来自StratoVirt的问候消息,如下所示:

  1. {"QMP":{"version":{"qemu":{"micro":1,"minor":0,"major":4},"package":""},"capabilities":[]}}

现在,可以在窗口B中输入QMP命令来管理虚拟机。

管理虚拟机生命周期 - 图2

QMP提供了stop、cont、quit和query-status等来管理和查询虚拟机状态。

管理虚拟机的QMP命令均在窗口B中进行输入。符号:<-表示命令输入,->表示QMP结果返回。

暂停虚拟机

QMP提供了stop命令用于暂停虚拟机,即暂停虚拟机所有的vCPU。命令格式如下:

{“execute”:”stop”}

示例:

使用stop暂停该虚拟机的命令和回显如下:

  1. <- {"execute":"stop"}
  2. -> {"event":"STOP","data":{},"timestamp":{"seconds":1583908726,"microseconds":162739}}
  3. -> {"return":{}}

恢复虚拟机

QMP提供了cont命令用于恢复处于暂停状态suspend的虚拟机,即恢复虚拟机所有vCPU的运行。命令格式如下:

{“execute”:”cont”}

示例:

使用cont恢复该虚拟机的命令和回显如下:

  1. <- {"execute":"cont"}
  2. -> {"event":"RESUME","data":{},"timestamp":{"seconds":1583908853,"microseconds":411394}}
  3. -> {"return":{}}

退出虚拟机

QMP提供了quit命令用于退出虚拟机,即退出StratoVirt进程。命令格式如下:

{“execute”:”quit”}

示例:

  1. <- {"execute":"quit"}
  2. -> {"event":"SHUTDOWN","data":{"guest":false,"reason":"host-qmp-quit"},"timestamp":{"ds":1590563776,"microseconds":519808}}
  3. -> {"return":{}}