记录通过libvirt的virsh命令启动虚拟机而不通过openstack

时间:2021-01-22 08:43:00

目标:之前收集数据都是通过openstack不停启动VM,现在想要在多台服务器上同事跑虚拟机收集数据,为了避免在除了controller上其他node上装openstack的麻烦,现要通过libvirt来创建,其实openstack也是通过调用libvirt来生成虚拟机,我们这里要绕过openstack这一层,生成虚拟机的iamge不变。


开始通过openstack启动虚拟机,然后在/etc/libvirt/qemu/ 目录下查看vm的.xml文件,想通过参考这个.xml修改配置来启动虚拟机。

如希望生成test这个虚拟机。在test.xml中,重新配置以下参数

<name>test</name>

<uuid>

<memory><vcpu>

<devices> -> <disk> -> <source file="">  指向image的路径

<mac>

<interface> -> <mac> 和 <source bridge="">


生成uuid 命令:uuidgen

生成mac 地址:echo $RANDOM | md5sum | sed's/\(..\)/&:/g' | cut -c1-17    (注意这里mac地址第二位要为偶数,因为要求为单播mac地址,所以这个有待改进...)

其中生成bridge遇到了问题,请教了大神解决:

ifconfig 查看eth1连接外网。执行

brctladdbr br1

brctladdif br1 eth1

ifconfig eth1 0.0.0.0

dhclient br1

其中br1为新生成的网段。然后<source bridge="br1">即可。


.xml文件配置好了以后通过命令

virsh define test.xml //创建虚拟机

virsh start test //启动虚拟机,test为虚拟机名字

virsh list   //查看当前虚拟机


virsh vncdisplay test  //查看虚拟机的vnc端口, 然后就可以通过vnc view 登录来查看虚拟机

virsh shutdown ubuntu                      # 正常关闭虚拟机

virsh destroy ubuntu                          # 强制关闭虚拟机