目标:之前收集数据都是通过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 # 强制关闭虚拟机