virsh命令是一个用于管理虚拟机的命令行工具,它通过调用libvirt API来实现虚拟化的管理。virsh命令可以与virt-manager等工具类似,但它是通过命令行界面进行操作,适用于需要自动化脚本或命令行操作的场景,支持对虚拟机的创建、配置、启动、停止等操作。
1、列出虚拟机
列出正在运行的虚拟机:
virsh list
列出所有虚拟机(包括未启动的):
virsh list --all
2、启动和关闭虚拟机
启动虚拟机:
virsh start <vm_name or id>
停止虚拟机(通过发送ACPI关机信号):
virsh shutdown <vm_name or id>
强制关闭虚拟机(类似于拔掉电源):
virsh destory <vm_name or id>
重启虚拟机
virsh reboot <vm_name or id>
3、创建和删除虚拟机
创建虚拟机(从xml配置文件):
virsh create <config_file.xml>
定义虚拟机(从xml配置文件,定义虚拟机但不启动):
virsh define <config_file.xml>
删除虚拟机(仅删除虚拟机定义,不删除磁盘文件):
virsh undefine <vm_name or id>
删除虚拟机及其磁盘文件:
virsh undefine <vm_name or id> --remove-all-storage
4、修改虚拟机配置
编辑虚拟机配置(打开xml编译器):
virsh edit <vm_name or id>
查看虚拟机xml配置
virsh dumpxml <vm_name or id>
5、管理虚拟机快照
列出虚拟机的快照:
virsh snapshot-list <vm_name or id>
创建虚拟机快照
virsh snapshot-create-as <vm_name or id> <snapshot_name> --description "Snapshot description"
恢复虚拟机快照
virsh snapshot-revert <vm_name or id> <snapshot_name>
删除虚拟机快照
virsh snapshot-delete <vm_name or id> <snapshot_name>
6、虚拟机信息
查看虚拟机详细信息
virsh dominfo <vm_name or id>
查看虚拟机的CPu使用情况
virsh cpu-stats <vm_name or id>
7、网络和存储管理
列出虚拟网络
virsh net-list --all
启动/停止虚拟网络
virsh net-start <network_name>
virsh net-stop <network_name>
列出存储池
virsh pool-list --all
1
启动/停止存储池
virsh pool-start <pool_name>
virsh pool_stop <pool_name>
8、监控和调试
监控虚拟机的实时状态
virsh list --state-running
查看虚拟机的详细日志(可能需要访问虚拟机的日志文件):
virsh log <vm_name or id>
qemu/kvm的日志在/var/log/libvirt/qemu目录下,文件名以虚拟机名称命名
ssh到计算节点执行,以下命令中的vm-name表示虚拟机的名称;
- 查看virsh的版本:virsh -version
- 查看virsh的帮助命令:virsh --help
- 查看主机下的所有虚拟机:virsh list --all
- 查看主机下正在运行的虚拟机:virsh list
- 创建虚拟机:virsh define xml
- 删除虚拟机:virsh undefinevm-name --nvram
- 虚拟机开机:virsh start vm-name
- 虚拟机关机:virsh shutdown vm-name
- 虚拟机关闭电源:virsh destroy vm-name
- 暂停虚拟机:virsh suspend vm-name
- 恢复虚拟机:virsh resume vm-name
- 重启虚拟机:virsh reboot vm-name
- 查看虚拟机配置文件:virsh dumpxml vm-name
- 编辑虚拟机配置文件:virsh edit vm-name
- 进入虚拟机控制台:virsh console vm-name
- 查看虚拟机的VNC控制台连接密码:virsh dumpxml --security-info vm-name | grep passwd
- 查看虚拟机网卡信息:virsh domiflist vm-name
- 查看虚拟机信息:virsh dominfo vm-name
- 查看虚拟机磁盘IO数据:virsh domblkstat vm-name --device sda (sda是虚拟磁盘设备名)
常用存储池操作virsh命令
以下pool-name表示存储池的名称
- 查看所有存储池:virsh pool-list --all
- 查看激活状态的存储池:virsh pool-list
- 激活存储池:virsh pool-start pool-name
- 查看存储池的uuid:virsh pool-uuid pool-name
- 设置存储自动启动:virsh pool-autostart pool-name
- 删除存储池:virsh pool-delete pool-name
- 定义存储池:virsh pool-define pool-name
- 查看存储池的信息:virsh pool-info pool-name
- 查看存储池的xml文件:virsh pool-dumpxml pool-name
- 编辑存储池的xml文件:virsh pool-edit pool-name
- 刷新存储池:virsh pool-refresh pool-name
- 停止存储池:virsh pool-destroy pool-name
其它常用virsh命令
以下vm-name表示虚拟机的名称
- 查询虚拟机网卡信息:virsh domiflist vm-name
- 查询虚拟机虚拟磁盘信息:virsh domblklist vm-name
- 查看虚拟机VNC端口和密码:virsh dumpxml --security-info vmname | grep passwd
- 帮助命令:virsh –help
- 获取组中命令的详情:virsh help <group>,如virsh help domain
- 获取某个命令的详情:virsh help command