qemu配合ovs3.12使用vhostuser

        基于上一次的dpdk和ovs配合使用的环境,目前还差qemu与ovs的sock通信。由于使用的是dpdkvhostuserclient端口类型,需要qemu提供/tmp/sock0供ovs连接。在创建端口时如果重连失败,ovs会将该fd加入队列,由线程vhost_reconn线程进行重连,成功后由vhost_reconn线程进行消息读取和本地配置。网桥配置如下:

ovs-vsctl add-br br0

ovs-vsctl set bridge br0 datapath_type=netdev

ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true

ovs-vsctl add-port br0 qemu-dpdk0 -- set interface qemu-dpdk0 type=dpdkvhostuserclient options:vhost-server-path="/tmp/sock0"
 

第二步:创建虚拟机

qemu-system-x86_64 -m 4096 -drive file=/home/centos/CentOS-7-x86_64-DVD-2207-02.qcow2,format=qcow2 -cpu host -enable-kvm -smp 4 -usbdevice tablet -usb -chardev socket,id=char1,path=/tmp/sock0,server -netdev type=vhost-user,id=mynet1,chardev=char1,vhostforce -device virtio-net-pci,netdev=mynet1,id=net1,mac=a2:11:22:33:44:55

此时出现错误qemu-system-x86_64: -netdev type=vhost-user,id=mynet1,chardev=char1,vhostforce: Invalid parameter 'vhost-user'。经过研究发现低版本的qemu并不支持vhostuser,于是将qemu升级到qemu5.0版本,并解决编译问题。

第三步:继续执行上述命令,仍出现报错qemu: could not load PC BIOS 'bios-256k.bin',该问题与路径有关,需要指定该文件存在的路径  -L /share/qemu/。

第四步:执行添加-L之后的命令,报错如下:

qemu-system-x86_64: Failed initializing vhost-user memory map, consider using -object memory-backend-file share=on

qemu-system-x86_64: vhost_set_mem_table failed: Interrupted system call (4)

qemu-system-x86_64: unable to start vhost net: 4: falling back on userspace virtio

根据提示我们需要进一步配置内存相关的配置,同时保证系统中预留的大页内存充足。-object memory-backend-file,id=mem,mem-path=/dev/hugepages,size=4096M,share=on -numa node,memdev=mem -mem-prealloc

第五步:基于上述配置后,执行最终命令

qemu-system-x86_64 -m 4096 -drive file=/home/centos/CentOS-7-x86_64-DVD-2207-02.qcow2,format=qcow2 -cpu host -enable-kvm -smp 4  -chardev socket,id=char1,path=/tmp/sock0,server -netdev type=vhost-user,id=mynet1,chardev=char1,vhostforce -device virtio-net-pci,netdev=mynet1,id=net1,mac=a2:11:22:33:44:55 -L /share/qemu/ -object memory-backend-file,id=mem,mem-path=/dev/hugepages,size=4096M,share=on -numa node,memdev=mem -mem-prealloc

发现命令执行正常,但没有虚拟机界面,日志一直停留VNC server running on ::1:5900。原因是没有安装SDL相关组件,包括SDL、SDL_image、SDL2、SDL2_image 及其devel,同时qemu编译需要configure增加--enable-vhost-user --enable-sdl选项。解决玩编译问题后重新执行命令即可。最终ovs侧连接qemu成功,虚拟机启动缓慢但能够成功起来。

尝试配置ip并ping,发现网络不通,且修改队列失败,问题还在排查中,有小伙伴知道原因请相告,谢谢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勺红华落空寂叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值