
virsh是libvirt虚拟化管理工具的核心命令行接口,用于管理KVM、QEMU、Xen等虚拟化技术。通过virsh,系统管理员可以完成从域(虚拟机)的创建、监控、修改到删除的全生命周期管理,同时还能管理存储池、网络、快照等虚拟化资源。
作为虚拟化环境中的瑞士军刀,virsh提供了数百个子命令,覆盖了虚拟化管理的方方面面。它既支持交互式模式(直接输入virsh进入命令行环境),也支持非交互式模式(virsh 命令直接执行)。掌握virsh是Linux虚拟化运维的必备技能。
1. 基本语法与选项
| 命令/选项 | 说明 |
|---|
virsh [选项]... [命令] | |
-c URI | 指定hypervisor连接URI(如 qemu:///system) |
-d NUM | |
-e 字符 | |
-h | |
-q | |
-r | |
-v | |
-V | |
2. 域管理(虚拟机生命周期)
| 命令 | 说明 |
|---|
virsh list | |
virsh list --all | |
virsh define 配置文件.xml | |
virsh create 配置文件.xml | |
virsh start 域名 | |
virsh shutdown 域名 | |
virsh destroy 域名 | |
virsh reboot 域名 | |
virsh suspend 域名 | |
virsh resume 域名 | |
virsh undefine 域名 | |
virsh autostart 域名 | |
virsh autostart --disable 域名 | |
virsh console 域名 | |
virsh dominfo 域名 | |
virsh domstate 域名 | |
3. 域配置管理
| 命令 | 说明 |
|---|
virsh dumpxml 域名 | |
virsh edit 域名 | |
virsh setvcpus 域名 数量 | |
virsh setmem 域名 内存大小 | |
virsh setmaxmem 域名 最大内存 | |
virsh vcpucount 域名 | |
virsh vcpuinfo 域名 | |
virsh vcpupin 域名 vcpu CPU核心 | |
virsh domrename 旧名 新名 | |
4. 存储管理
| 命令 | 说明 |
|---|
virsh pool-list | |
virsh pool-list --all | |
virsh pool-info 池名 | |
virsh pool-create-as 池名 类型 路径 | |
virsh pool-destroy 池名 | |
virsh pool-delete 池名 | |
virsh pool-undefine 池名 | |
virsh vol-list 池名 | |
virsh vol-create-as 池名 卷名 容量 | |
virsh vol-delete 卷名 --pool 池名 | |
virsh vol-info 卷名 --pool 池名 | |
virsh vol-resize 卷名 新容量 --pool 池名 | |
5. 磁盘设备管理
| 命令 | 说明 |
|---|
virsh attach-disk 域名 源路径 目标设备 | |
virsh detach-disk 域名 目标设备 | |
virsh attach-device 域名 设备XML文件 | |
virsh detach-device 域名 设备XML文件 | |
virsh domblklist 域名 | |
virsh domblkinfo 域名 设备名 | |
virsh domblkstat 域名 设备名 | |
virsh blockresize 域名 设备名 新大小 | |
6. 网络管理
| 命令 | 说明 |
|---|
virsh net-list | |
virsh net-list --all | |
virsh net-info 网络名 | |
virsh net-create 网络XML文件 | |
virsh net-define 网络XML文件 | |
virsh net-start 网络名 | |
virsh net-destroy 网络名 | |
virsh net-undefine 网络名 | |
virsh net-autostart 网络名 | |
virsh net-dumpxml 网络名 | |
virsh net-edit 网络名 | |
virsh net-dhcp-leases 网络名 | |
7. 虚拟网络接口管理
| 命令 | 说明 |
|---|
virsh attach-interface 域名 类型 源 | |
virsh detach-interface 域名 类型 mac地址 | |
virsh domiflist 域名 | |
virsh domifaddr 域名 | |
virsh domifstat 域名 接口名 | |
virsh domif-setlink 域名 接口名 状态 | |
virsh domiftune 域名 接口名 | |
8. 快照管理
| 命令 | 说明 |
|---|
virsh snapshot-list 域名 | |
virsh snapshot-create 域名 | |
virsh snapshot-create-as 域名 快照名 | |
virsh snapshot-revert 域名 快照名 | |
virsh snapshot-delete 域名 快照名 | |
virsh snapshot-current 域名 | |
virsh snapshot-dumpxml 域名 快照名 | |
virsh snapshot-edit 域名 快照名 | |
virsh snapshot-info 域名 快照名 | |
9. 迁移与保存
| 命令 | 说明 |
|---|
virsh migrate 域名 目标URI | |
virsh migrate --live 域名 目标URI | |
virsh save 域名 状态文件 | |
virsh restore 状态文件 | |
virsh managedsave 域名 | |
virsh managedsave-remove 域名 | |
virsh dump 域名 内核转储文件 | |
10. 监控与统计
| 命令 | 说明 |
|---|
virsh domstats 域名 | |
virsh dommemstat 域名 | |
virsh cpu-stats 域名 | |
virsh domjobinfo 域名 | |
virsh domtime 域名 | |
virsh vncdisplay 域名 | |
virsh domdisplay 域名 | |
virsh screenshot 域名 保存路径 | |
11. 主机与Hypervisor管理
| 命令 | 说明 |
|---|
virsh nodeinfo | |
virsh capabilities | |
virsh domcapabilities | |
virsh version | |
virsh hostname | |
virsh uri | |
virsh sysinfo | |
virsh nodecpustats | |
virsh nodememstats | |
virsh freecell | |
virsh freepages | |
12. virsh自身命令(交互模式)
| 命令 | 说明 |
|---|
help | |
help 组名 | |
命令 --help | |
quit | |
cd 目录 | |
pwd | |
echo 参数 | |
connect URI | |
13. 实用组合模式
| 命令 | 说明 |
|---|
| virsh list --all | grep running | |
virsh list --all --name | |
| virsh dominfo 域名 grep -i uuid | 查看域的UUID |
for 域 in $(virsh list --name); do virsh dominfo $域; done | |
| virsh dumpxml 域名 | grep -A 5 'disk type' | |
14. 故障排查指南
| 问题 | 解决方法 |
|---|
| 连接失败:无法连接到 hypervisor | 检查libvirtd服务状态:systemctl status libvirtd;确认用户是否在libvirt组:groups $USER |
| 权限不足 | 使用sudo执行,或确保用户已加入libvirt组:sudo usermod -aG libvirt $USER |
| 域无法启动 | 检查日志:journalctl -u libvirtd;验证XML配置:virsh edit 域名 |
| 迁移失败 | 确认目标主机libvirtd服务正常;检查网络连通性;查看迁移日志:virsh domjobinfo 域名 |
| 存储池无法激活 | 检查存储路径权限:ls -ld /存储/路径;查看pool信息:virsh pool-info 池名 |
| 快照操作失败 | 确认磁盘格式支持快照(qcow2支持,raw不支持);检查磁盘文件权限 |
温馨提示:
virsh命令众多,不需要全部记忆。建议掌握域生命周期管理(start/shutdown/destroy)、配置查看(list/dominfo/dumpxml)和基本设备管理(attach/detach)即可。对于不常用的命令,随时可以使用virsh help和命令 --help查阅。另外,在生产环境操作前,建议先在测试环境验证命令效果。
关注公众号(haopython),请回复: LLTKVM