查询虚拟机信息

概述

管理员在管理虚拟机的过程中经常需要知道一些虚拟机信息,libvirt提供了一套命令行工具用于查询虚拟机的相关信息。本章介绍相关命令的使用方法,便于管理员来获取虚拟机的各种信息。

前提条件

查询虚拟机信息需要:

  • libvirtd服务处于运行状态。

  • 命令行操作需要拥有管理员权限。

查询主机上的虚拟机信息

  • 查询主机上处于运行和暂停状态的虚拟机列表。

    1. # virsh list

    例如,下述回显说明当前主机上存在3台虚拟机,其中openEulerVM01、openEulerVM02处于运行状态,openEulerVM03处于暂停状态。

    1. Id Name State
    2. ----------------------------------------------------
    3. 39 openEulerVM01 running
    4. 40 openEulerVM02 running
    5. 69 openEulerVM03 paused
  • 查询主机上已经定义的所有虚拟机信息列表。

    1. # virsh list --all

    例如,下述回显说明当前主机上定义了4台虚拟机,其中虚拟机openEulerVM01处于运行状态,openEulerVM02处于暂停状态,openEulerVM03和openEulerVM04处于关机状态。

    1. Id Name State
    2. ----------------------------------------------------
    3. 39 openEulerVM01 running
    4. 69 openEulerVM02 paused
    5. - openEulerVM03 shut off
    6. - openEulerVM04 shut off

查询虚拟机基本信息

Libvirt组件提供了一组查询虚拟机状态信息的命令,包括虚拟机运行状态、设备信息或者调度属性等,使用方法请参见表1

表 1 查询虚拟机基本信息

查询的信息内容

命令行

说明

基本信息

virsh dominfo <VMInstance>

包括虚拟机ID、UUID,虚拟机规格等信息。

当前状态

virsh domstate <VMInstance>

可以使用—reason选项查询虚拟机变为当前状态的原因。

调度信息

virsh schedinfo <VMInstance>

包括vCPU份额信息。

vCPU数目

virsh vcpucount <VMInstance>

查询虚拟机vCPU的个数。

虚拟块设备状态

virsh domblkstat <VMInstance>

查询块设备名称可以使用virsh domblklist命令。

虚拟网卡状态

virsh domifstat <VMInstance>

查询网卡名称可以使用virsh domiflist命令。

I/O线程

virsh iothreadinfo <VMInstance>

虚拟机I/O线程及其CPU亲和性。

示例

  • 使用virsh dominfo查询一个定义好的虚拟机的基本信息,从查询结果可知,虚拟机ID为5,UUID为ab472210-db8c-4018-9b3e-fc5319a769f7,内存大小为8GiB,vCPU数目为4个等。

    1. # virsh dominfo openEulerVM
    2. Id: 5
    3. Name: openEulerVM
    4. UUID: ab472210-db8c-4018-9b3e-fc5319a769f7
    5. OS Type: hvm
    6. State: running
    7. CPU(s): 4
    8. CPU time: 6.8s
    9. Max memory: 8388608 KiB
    10. Used memory: 8388608 KiB
    11. Persistent: no
    12. Autostart: disable
    13. Managed save: no
    14. Security model: none
    15. Security DOI: 0
  • 使用virsh domstate查询虚拟机的当前状态,从查询结果可知,虚拟机openEulerVM当前处于运行状态。

    1. # virsh domstate openEulerVM
    2. running
  • 使用virsh schedinfo查询虚拟机的调度信息,从查询结果可知,虚拟机CPU预留份额为1024。

    1. # virsh schedinfo openEulerVM
    2. Scheduler : posix
    3. cpu_shares : 1024
    4. vcpu_period : 100000
    5. vcpu_quota : -1
    6. emulator_period: 100000
    7. emulator_quota : -1
    8. global_period : 100000
    9. global_quota : -1
    10. iothread_period: 100000
    11. iothread_quota : -1
  • 使用virsh vcpucount查询虚拟机的vCPU数目,从查询结构可知,虚拟机有4个CPU。

    1. # virsh vcpucount openEulerVM
    2. maximum live 4
    3. current live 4
  • 使用virsh domblklist查询虚拟机磁盘设备信息,从查询结构可知,虚拟机有2个磁盘,sda是qcow2格式的虚拟磁盘,sdb是一个cdrom设备。

    1. # virsh domblklist openEulerVM
    2. Target Source
    3. ---------------------------------------------------------------------
    4. sda /home/openeuler/vm/openEuler_aarch64.qcow2
    5. sdb /home/openeuler/vm/openEuler-1.0-base-aarch64-dvd.iso
  • 使用virsh domiflist查询虚拟机网卡信息,从查询结果可知,虚拟机有1张网卡,对应的后端是vnet0在主机br0网桥上,MAC地址为00:05:fe:d4:f1:cc。

    1. # virsh domiflist openEulerVM
    2. Interface Type Source Model MAC
    3. -------------------------------------------------------
    4. vnet0 bridge br0 virtio 00:05:fe:d4:f1:cc
  • 使用virsh iothreadinfo查询虚拟机I/O线程信息,从查询结果可知虚拟机有5个I/O线程,在物理CPU7-10上进行调度。

    1. # virsh iothreadinfo openEulerVM
    2. IOThread ID CPU Affinity
    3. ---------------------------------------------------
    4. 3 7-10
    5. 4 7-10
    6. 5 7-10
    7. 1 7-10
    8. 2 7-10