因为要搭建ovs-dpdk,所以需要vhost-user的qemu
centos默认的qemu与qemu-kvm都不支持vhost-user,qemu最高版本是2.0.0, qemu-kvm最高版本是1.5.3
在这之前,首先搞懂两个问题。
一:qemu与qemu-kvm到底什么区别:
https://serverfault.com/questions/767212/difference-between-qemu-kvm-qemu-system-x86-64-qemu-x86-64?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
这是是唯一找到有价值的内容,但是并没有解答。
CentOS默认带的是qemu-kvm,它与libvrit配合使用。qemu是可以在官方源安装的,看help的话,会发现qemu-kvm与qemu-system-x86_64功能重合。
我早年看见过社区的一个声明,仿佛记得:qemu-kvm与qemu之前是两个工程,后来已经合并为一个了。qemu-kvm将不再维护。唯一搞不懂的就是为什么centos7里还在用qemu-kvm这个包。
二: vhost-user是什么鬼:
(=@__@=)呐! 文档在这http://docs.openvswitch.org/en/latest/topics/dpdk/vhost-user/, 请自行理解
三: 清清楚楚的讲明白 virtio,vhost,vhost-user
https://blog.csdn.net/qq_15437629/article/details/77899905
virtio就是半虚拟化,减少模拟设备时的各种复杂io操作。
-device virtio-net-pci,netdev=n1
vhost通过内核模块,vhost-net.ko 直接在内核里与tap设备通信。
-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
vhost-user,数据不仅内核,从用户态到用户态,backend可能是文件,socket等。
-netdev vhost-user,chardev=id[,vhostforce=on|off][,queues=n]
但,如果backend就是要走内核的,比如是一个tap,那就就应该选择vhost。如果backend在用户态,比如dpdk,ovs-dpdk。这个时候用vhost-user。
virtio设置的虚拟机里边的设备,vhost/vhost-user说的是虚拟机外部的设备。
三:
这是一个副本任务,回主线剧情的传送门,请点击:
[cloud][OVS][sdn] Open vSwitch 初步了解
好,开始:
自然,是源码安装!
见:https://www.qemu.org/download/#source
git clone git://git.qemu.org/qemu.git
[root@D128 qemu]# git submodule init
[root@D128 qemu]# git submodule update --recursive
到最新稳定版:
[root@D128 thirdparty]# wget https://download.qemu.org/qemu-2.12.0-rc3.tar.xz
[root@D128 qemu-2.12.-rc3]# ./configure ERROR: glib-2.22 gthread-2.0 is required to compile QEMU
依赖:
glib-2.22 gthread-2.0
[root@D128 qemu-2.12.-rc3]# yum install gtk3-devel
编译:
[root@D128 qemu-2.12.-rc3]# ./configure --prefix=/root/BUILD_qemu
[root@D128 qemu-2.12.-rc3]# make
安装:
[root@D128 qemu-2.12.-rc3]# make install
[root@D128 qemu-2.12.-rc3]# /root/BUILD_qemu/bin/qemu-system-x86_64 --version
QEMU emulator version 2.11.
Copyright (c) - Fabrice Bellard and the QEMU Project developers
[root@D128 qemu-2.12.-rc3]#