因为要搭建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]#

[qemu][cloud][centos][ovs][sdn] centos7安装高版本的qemu 以及 virtio/vhost/vhost-user咋回事的更多相关文章

  1. CentOS7安装高版本gcc

    CentOS7安装高版本gcc 下载 从hust镜像站下载gcc源码包. http://mirror.hust.edu.cn/gnu/gcc/ 我选择的是gcc-8.3.0.tar.gz. cd mk ...

  2. centos7 安装高版本svn

    一.安装高版本svn 1.创建一个新的yum库文件,vim /etc/yum.repos.d/wandisco-svn.repo 内容如下 [WandiscoSVN] name=Wandisco SV ...

  3. CentOS7 安装高版本gcc, g++, gfortran等工具

    SCL(Software Collections)是一个CentOS/RHEL Linux平台的软件多版本共存解决方案,为用户提供一种方便.安全地安装和使用应用程序和运行时环境的多个版本的方式. De ...

  4. Centos7 安装高版本php

    1. 配置yum源 查看yum源的链接是不是有效的.可以参考此链接  https://webtatic.com/projects/yum-repository/ # rpm -Uvh http://f ...

  5. CentOS下安装高版本GCC

    CentOS下安装高版本GCC 微信分享:   有时编译需要用到4.8以上版本的GCC,由于CentOS源没有提供高版本的GCC安装包,这时就不能通过安装包安装.通常的解决方案就是通过编译安装高版本的 ...

  6. Centos7使用Yum安装高版本的LNMP

    [摘要] 本文旨在介绍使用yum的方式安装一些高版本的NGINX.MySQL.PHP服务.当然如果觉得红帽给的就够用,就用红帽给的就行. 在红帽系列的Linux操作系统中,nginx/mysql/ph ...

  7. 在CentOS VPS上源代码安装高版本号git

    背景:个别软件在国内下载非常慢,在vps下载就非常快. 可是下载好后的文件通过scp弄出来的时候又非常慢,所以想通过在vps里安装git,通过gitlab或oschina来进行中转.但遗憾的是,上传到 ...

  8. Centos7安装最新版本的docker

    centos7 安装docker-ce ,最新版本docker,docker阿里云加速docker-ce是指docker的社区版 卸载老版本的 docker 及其相关依赖sudo yum remove ...

  9. yum安装高版本mysql(5.5)

    1.导入第三方源webtatic rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm 2.如果已安装低版本的mysql就删除 yum r ...

随机推荐

  1. Android源码阅读笔记二 消息处理机制

    消息处理机制: .MessageQueue: 用来描述消息队列2.Looper:用来创建消息队列3.Handler:用来发送消息队列 初始化: .通过Looper.prepare()创建一个Loope ...

  2. tar加密

    # tar -czvf - file_name|openssl des3 -salt -k |dd of=file_name.des3 # ls flie_name file_name.des3 # ...

  3. tensorflow模型量化

    tensorflow模型量化/DATA/share/DeepLearning/code/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/t ...

  4. Git -- 忽略特殊文件

    有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定 ...

  5. 3. CMake 系列 - 分模块编译&安装项目

    目录 1. 项目目录结构 2. 相关代码 2.1 add 模块 2.2 sub 模块 2.3 测试模块 2.4 顶层 CMakeLists.txt 3. 编译 & 安装 4. 项目安装基本语法 ...

  6. SQL中in参数在存储过程中传递及使用的方法

    背景: 1.使用存储过程 2.存储过程中有in 3.in括号里面的内容作为参数传递 解决方案: 1.直接拼接sql 可在存储过程中拼接字符串,然后执行此字符串,类似于js中的eval PROCEDUR ...

  7. 自己开发chrome插件生成二维码

    摘要: 最近在开发微信项目时,需要在微信调试,所以经常会在微信中输入本地服务地址,输入起来特别麻烦,所以自己就想了想微信中的扫一扫,然后开发了这款chrome插件,将当前url生成二维码,用微信扫一扫 ...

  8. SpringBoot(十四)-- 整合Swagger2

    1.pom依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...

  9. Android Pull解析XML

    在上文中介绍了使用sax方式解析xml,这里介绍下在Android中极力推荐的xmlpull方式解析xml.xmlpull不仅仅可以使用在Android上,同样也适用于javase,但在javase环 ...

  10. Spring Boot 集成 Redis 实现缓存机制

    本文章牵涉到的技术点比较多:spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对以上这些技术点有一定的了解或者也可以先看看这篇文章 ...