KVM常用虚拟机操作virsh命令,virsh命令是什么

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