在虚拟化环境中,管理虚拟机是日常运维的核心工作之一,对于基于 KVM(Kernel-based Virtual Machine)的虚拟化平台,virsh 作为命令行管理工具,提供了强大且灵活的操作能力,通过 virsh 命令,管理员可以高效地查看虚拟机的运行状态、资源配置、网络信息等关键数据,从而快速定位问题、优化性能,本文将详细介绍如何使用 virsh 命令查看虚拟机的各类信息,涵盖基础状态查询、资源配置分析、网络与存储监控等核心场景,帮助用户全面掌握 virsh 的查看功能。

基础状态查询:快速掌握虚拟机运行情况
查看虚拟机的基础状态是日常管理中最常用的操作,通过简单的命令即可获取虚拟机的运行状态、UUID、 hypervisor 类型等关键信息。
列出所有虚拟机及其状态
使用 virsh list 命令可以查看当前由 libvirtd 管理的所有虚拟机列表,默认情况下,该命令仅显示正在运行的虚拟机(running 状态),若需查看所有虚拟机(包括关机和异常状态),可添加 --all 参数:
virsh list --all
执行后,命令将返回三列信息:ID(虚拟机编号,-1 表示关机状态)、Name(虚拟机名称)、State(运行状态,如 running、shut off、paused 等)。
Id Name State
----------------------------------------------------
1 centos7 running
2 ubuntu20 shut off
3 debian11 paused
通过此命令,管理员可以快速了解哪些虚拟机正在运行,哪些需要关注异常状态(如 paused 可能表示资源不足或手动暂停)。
查看特定虚拟机的详细信息
若需获取某个虚拟机的详细配置摘要(如虚拟机类型、 hypervisor 版本、CPU/内存分配等),可使用 virsh dominfo 命令,后跟虚拟机名称或 ID:
virsh dominfo centos7 ``` 包含丰富的元数据信息,
Id: 1
Name: centos7
UUID: 12345678-9abc-def0-1234-56789abcdef0
OS Type: hvm
State: running
CPU(s): 2
CPU time: 1234.5s
Max memory: 4194304 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
`UUID` 是虚拟机的唯一标识符,可用于跨主机操作时精确定位虚拟机;`CPU(s)` 和 `Used memory` 分别显示当前分配的 CPU 核心数和已使用的内存量,是性能监控的基础数据。
### 二、资源配置分析:深入虚拟机硬件细节
虚拟机的性能和稳定性直接依赖其硬件资源配置,通过 `virsh` 可以详细查看 CPU、内存、磁盘、网络等硬件分配情况,为资源调整和故障排查提供依据。
#### 1. CPU 配置查看
使用 `virsh vcpuinfo` 命令可查看虚拟机的 CPU 核心数量、模式、当前状态等详细信息:
```bash
virsh vcpuinfo centos7
输出示例:
CPU: 0
State: running
CPU time: 123.4s
CPU Affinity: ffff
若需查看虚拟机的 CPU 最大可分配数量(即配置文件中设定的 vcpu 值),可使用 virsh vcpucount 命令:
virsh vcpucount centos7
结果会显示 当前使用的 vcpu 数量 和 最大可配置的 vcpu 数量,

VCPU: 2
CPU: 2
内存与资源分配监控
内存是虚拟机最关键的资源之一,virsh 提供了多种命令监控内存使用情况。virsh dommemstat 可查看虚拟机的实时内存统计信息,包括已用内存、可用内存、气球内存(ballooning)等:
virsh dommemstat centos7
输出示例:
actual 2097152
unused 1048576
actual 表示当前分配给虚拟机的内存总量(单位为 KiB),unused 表示未使用的内存量,若需查看虚拟机的最大内存限制和当前使用量,可结合 dominfo 中的 Max memory 和 Used memory 字段。
磁盘存储信息查询
虚拟机的磁盘配置直接影响 I/O 性能,virsh 提供了查看磁盘详情的命令。virsh domblklist 列出虚拟机所有挂载的磁盘设备及其来源路径:
virsh domblklist centos7
输出示例:
Target Source
--------------------------------
vda /var/lib/libvirt/images/centos7.qcow2
vdb /dev/sr0
Target 是虚拟机内部识别的磁盘设备名(如 vda),Source 是磁盘镜像文件路径或物理设备,若需进一步查看磁盘的详细属性(如磁盘格式、实际大小、分配大小等),可使用 virsh domblkinfo 命令:
virsh domblkinfo centos7 vda
输出结果包含磁盘的 总容量、分配容量 和物理容量 等信息,
Size: 10737418240
Allocation: 5368709120
Physical: 5368709120
网络配置与状态检查
网络是虚拟机与外部通信的桥梁,virsh 可帮助管理员查看虚拟机的网络接口、VLAN 配置、IP 地址等信息。virsh domiflist 列出虚拟机所有网络接口及其连接的虚拟网络:
virsh domiflist centos7
输出示例:

Interface Type Source Model MAC
----------------------------------------------------
vnet0 network default virtio 52:54:00:ab:cd:ef
Type 为网络类型(如 network 表示通过 libvirt 虚拟网络转发,bridge 表示直接桥接到物理网卡),Source 为虚拟网络名称或桥接设备名,MAC 是虚拟网卡的物理地址,若需查看虚拟机内部的 IP 地址信息,需登录虚拟机内部使用 ip addr 或 ifconfig 命令,virsh 本身不直接提供 IP 查询功能。
高级查看技巧:结合 XML 与性能统计
对于复杂场景,管理员可能需要查看虚拟机的完整配置文件或实时性能数据,virsh 提供了 XML 输出和性能统计功能,满足深度分析需求。
查看 XML 配置文件
虚拟机的所有配置信息均以 XML 格式存储在 libvirt 的配置文件中,使用 virsh dumpxml 可导出虚拟机的完整配置,便于备份、调试或迁移分析:
virsh dumpxml centos7 > centos7.xml
导出的 XML 文件包含虚拟机的 CPU、内存、磁盘、网络、设备等所有配置细节,例如磁盘的驱动类型(qcow2、raw)、缓存模式(none、writeback)、网络接口的模型(virtio、e1000)等,通过分析 XML 文件,管理员可以精确定位配置问题,如磁盘格式错误或网络模型不兼容等。
实时性能统计
virsh 支持通过 domstats 命令获取虚拟机的实时性能统计信息,包括 CPU 使用率、网络 I/O、磁盘 I/O 等:
virsh domstats centos7
输出示例:
centos7
cpu.time=1234567890
cpu.user=12345678
cpu.system=12345678
net.bytes_rx=1048576
net.bytes_tx=2097152
block.count_rd=100
block.count_wr=50
block.bytes_rd=1048576
block.bytes_wr=524288
cpu.time 表示虚拟机 CPU 使用总时间(纳秒),net.bytes_rx/tx 分别为网络接收和发送的字节数,block.bytes_rd/wr 为磁盘读取和写入的字节数,通过定期采集这些数据,可以分析虚拟机的性能瓶颈,如磁盘 I/O 过高或网络带宽不足等问题。
virsh 作为 KVM 虚拟化管理的核心工具,其查看功能覆盖了虚拟机的基础状态、资源配置、网络存储及性能统计等多个维度,通过 list、dominfo 等命令可快速掌握虚拟机运行概况,通过 vcpuinfo、dommemstat、domblklist 等命令可深入分析硬件资源分配,而 dumpxml 和 domstats 则为复杂场景下的配置调试和性能优化提供了详细数据支持,熟练掌握这些查看命令,能够帮助管理员高效管理虚拟机,确保虚拟化环境的稳定运行,在实际使用中,建议结合具体需求灵活组合命令,并注意定期记录和分析性能数据,以实现 proactive 的运维管理。

















