提供资料下载的网站如何建设网页制作学习
virsh
- 查看全部虚拟机列表
 - 停止虚拟机列表
 - 启动虚拟机
 - 强制关闭虚拟机
 - 连接虚拟机控制台
 - 查看虚拟机的详细信息
 - 查看虚拟机接口信息
 - 查看虚拟机xml文件配置
 - 删除虚拟机
 
KVM(Kernel-based Virtual Machine)是一种基于 Linux 内核的虚拟化技术,允许在一个物理主机上运行多个虚拟机。KVM 提供了一组命令行工具来管理虚拟机的创建、启动、停止、管理和监控等操作。openstack默认使用kvm作为底层虚拟化技术
查看全部虚拟机列表
包含关闭和运行的
root@controller:~# virsh list --allId   Name                State
-----------------------------------3    instance-00000004   running 
停止虚拟机列表
指定id或者虚拟机名称
root@controller:~# virsh shutdown 3
Domain '3' is being shutdownroot@controller:~# virsh list --allId   Name                State
-------------------------------------    instance-00000004   shut off 
启动虚拟机
注意启动虚拟机则必须要指定名称,此时没有id
root@controller:~# virsh start instance-00000004
Domain 'instance-00000004' startedroot@controller:~# virsh list --allId   Name                State
-----------------------------------4    instance-00000004   running 
强制关闭虚拟机
类似断电关机,此时可以指定id或者名称
root@controller:~# virsh list --allId   Name                State
-----------------------------------4    instance-00000004   runningroot@controller:~# virsh destroy 4
error: failed to get domain '4'root@controller:~# virsh list --allId   Name                State
-------------------------------------    instance-00000004   shut off
 
连接虚拟机控制台
ctrl+】可退出
root@controller:~# virsh list --allId   Name                State
-----------------------------------7    instance-00000004   runningroot@controller:~# virsh console 7
Connected to domain 'instance-00000004'
Escape character is ^] (Ctrl + ])login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
test login: cirros
Password:
$ sudo su -
# exit
$ exitlogin as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
test login:
root@controller:~#
 
查看虚拟机的详细信息
此时可以查看到虚拟机的内存,cpu等
root@controller:~# virsh list --allId   Name                State
-----------------------------------7    instance-00000004   runningroot@controller:~# virsh dominfo 7
Id:             7
Name:           instance-00000004
UUID:           0b910f75-3c81-4919-a01a-b70a314a3a3e
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       12.9s
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0
Security label: libvirt-0b910f75-3c81-4919-a01a-b70a314a3a3e (enforcing)
 
查看虚拟机接口信息
查看接口和mac地址
root@controller:~# virsh list --allId   Name                State
-----------------------------------7    instance-00000004   runningroot@controller:~# virsh domiflist 7Interface        Type       Source   Model    MAC
------------------------------------------------------------------tapacf8cea4-33   ethernet   -        virtio   fa:16:3e:33:d6:52root@controller:~#
 
查看虚拟机xml文件配置
会列出有关虚拟机的所有信息,需要过滤一下,例如查看虚拟机的ip信息
root@controller:~# virsh dumpxml instance-00000004 | grep address<nova:ip type="fixed" address="10.0.0.11" ipVersion="4"/><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/><address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/><mac address='fa:16:3e:33:d6:52'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/><address type='usb' bus='0' port='1'/><address type='usb' bus='0' port='2'/><listen type='address' address='192.168.200.195'/><address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/><address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
root@controller:~#
 
查看虚拟机的名称,在openstack中创建名称为test
root@controller:~# virsh dumpxml 8|grep nova:name<nova:name>test</nova:name>
 
删除虚拟机
首先关闭虚拟机,如果关闭不了则强行关机,然后删除虚拟机。
root@controller:~# virsh list --allId   Name                State
-----------------------------------7    instance-00000004   runningroot@controller:~# virsh shutdown 7
Domain '7' is being shutdownroot@controller:~# virsh undefine instance-00000004
Domain 'instance-00000004' has been undefinedroot@controller:~# virsh list --allId   Name   State
--------------------root@controller:~#
 
但是需要注意的是,不会实际删除openstack中的实例,实例重启后,virsh list又会出现
因为在 OpenStack 中,虚拟机实例的生命周期和 hypervisor 中的虚拟机的生命周期是分开管理的。当使用 virsh undefine 命令删除 hypervisor 中的虚拟机时,并不会影响 OpenStack 数据库中对应虚拟机实例的记录。
在 OpenStack 中,虚拟机的状态和其他元数据被存储在数据库中。即使 hypervisor 中的虚拟机被删除,OpenStack 数据库中的虚拟机记录仍然存在。因此,当重启实例时,OpenStack 会检查数据库中的记录,发现虚拟机实例丢失,并尝试重新创建它。
