KVM虚拟机管理工具 virsh
virsh是使用 libvirt management API 构建的管理工具,是kvm虚拟机常用的管理工具
virsh 含义是 virtualization shell 。virsh 有命令模式和交互模式如果直接在vrish后面添加参数是命令模式,如果直接写virsh,就会进入交互模式。
virsh --help #查看命令帮忙
virsh list #显示正在运行或挂起的虚拟机
virsh list --all #显示所有的虚拟机
virsh start domain #启动虚拟机
virsh shutdown domain #关闭虚拟机
virsh destroy domain #虚拟机强制断电(易丢失数据,慎用)
virsh suspend domain #挂起虚拟机
virsh resume domain #恢复挂起的虚拟机
virsh reboot domain #重启虚拟机
virsh undefine domain #删除虚拟机,慎用。会删除默认路径下(/etc/libvirt/qemu/)的虚拟机配置文件
virsh define domain.xml # 用于虚拟机迁移后的导入,domain.xml为虚拟机的配置文件(只要有虚拟机的磁盘文件加配置文件,那么虚拟机便可以迁移到如何地方并导入)
virsh dominfo domain #查看虚拟机的配置信息
virsh domiflist domain #查看虚拟机网卡配置信息
virsh domblklist domain #查看该虚拟机的磁盘位置
virsh edit domain #修改虚拟机的xml配置文件/etc/libvirt/qemu/domain.xml(带语法检查 )
virsh dumpxml domain #查看虚拟机当前配置
virsh dumpxml vm-node1 > vm-node1.bak.xml #备份vm-node1虚拟机的xml文件,原文件默认路径/etc/libvirt/qemu/vm-node1.xml
virsh autostart domain #KVM物理机开机自启动虚拟机,配置后会在此目录生成配置软连接文件/etc/libvirt/qemu/autostart/vm-node1.xml(所以,本质就是将虚拟机的配置文件移动到该目录下即可,手动移动也生效。)。如果物理机断电,上电后,希望kvm虚拟机能够立即自启动
virsh autostart --disable domain #取消开机自启动
virsh vncdisplay domain #查看虚拟机vnc端口号(第一台默认为5901)
virsh domblklist domain #列出虚拟机所有的块设备
virsh desc template1 #查看虚拟机的描述信息
virsh domrename domain_old domain_new #修改虚拟机名(关机状态下)
virsh pool-list
virsh pool-list --all
virsh net-list --all
virsh net-list
virsh net-edit <网卡> #编辑网络文件 即/etc/libvirt/qemu/networks/xxx.xml文件
virsh iface-list #物理主机接口列表
virsh nwfilter-list #列出网络过滤器
virsh snapshot-list domain #列出虚拟机的快照
virsh vol-list <pool> # 列出某地址池的数据卷
virsh nodeinfo # 查看宿主机CPU信息
KVM虚拟机配置文件
每个KVM虚拟主机都有自己的配置文件,都是以虚拟主机名命名;KVM虚拟机的配置文件在 /etc/libvirt/qemu/ 下,以xml文件形式存在;
[root@kvm ~]# virsh edit template1 # 或者使用 vim /etc/libvirt/qemu/template1.xml 进行编辑,但是不带语法检查
[root@kvm ~]# cat /etc/libvirt/qemu/template1.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit template1
or other application using the libvirt API.
-->
<domain type='kvm'>
<!--描述hypervisor。在Libvirt官方文档里面,将虚拟机定义为domain,而不是vm(virtual machine)。Xen中Domain0表示宿主机系统,而在KVM中,domain完全指虚拟机系统。-->
<!--type一项指明了使用的是哪种虚拟化技术。如果使用的是KVM,那么值为kvm。如果使用的是Xen,那么值为xen。当然,如果使用的是其他hypervisor,值也不尽相同-->
<name>template1</name>
<!--定义了虚拟机的名字。libvirt可以通过虚拟机的名字对虚拟机进行管理。在同一台物理机上,虚拟机的名字必须要保证唯一的。如果存在重名的情况,添加和创建虚拟机时,会失败。-->
<uuid>8188720f-93e7-44ab-b7cd-b5bd848b6dce</uuid>
<!--定义的虚拟机的UUID。在同一台物理机上,UUID值也必须是唯一的,否则会出现冲突。-->
<memory unit='KiB'>524288</memory>