15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > QEMU虚拟机、源码 【虚拟化与云原生】

QEMU虚拟机、源码 【虚拟化与云原生】

时间:2023-06-29 17:24:01 | 来源:网站运营

时间:2023-06-29 17:24:01 来源:网站运营

QEMU虚拟机、源码 【虚拟化与云原生】:

QEMU 概述

QEMU的几个特点:

  1. QEMU可以被当作模拟器,也可以被当作虚拟机。
  2. 当QEMU被当作模拟器时,我们可以在一台机器上通过模拟设备,运行针对不同于本机上CPU的程序或者操作系统。(使用了动态翻译技术,在我们的虚拟化环境中并没有使用,因此不展开叙述)
  3. 当QEMU被当作虚拟机使用时,QEMU必须基于Xen Hypervisor或者KVM内核模块才能支持虚拟化。在这种条件下QEMU虚拟机可以通过直接在本机CPU上运行客户机代码获得接近本机的性能。

QEMU与KVM的关系

QEMU与KVM的关系如下:

QEMU和KVM如何分工协作呢?

我们用一张图说明:

外设的模拟一般不会由KVM负责,只有对性能要求较高的虚拟设备,如虚拟中断控制器和虚拟时钟,是由KVM模拟的,这样可以大量减少处理器的模式转换的开销。

QEMU的代码结构

线程事件驱动模型

系结构正如上图展示的——每个vCPU都是一个线程,这些vCPU线程可以运行客户机的代码,以及虚拟中断控制器、虚拟时钟的模拟。

而Main loop主线程则是Event-driver的,通过轮询文件描述符,调用对应的回调函数,处理由Monitor发出的命令、Timers超时,并且实现VNC、完成IO等功能。

QEMU事件驱动的代码主要可以查看include/qemu/main-loop.h,以及相关的实现代码。

QEMU设备模拟

QEMU虚拟机管理命令

QEMU中可以使用hmp command对虚拟机进行管理,在虚拟机环境中同时按住ctrl、Alt、2就可以进入QEMU的命令模式,通过输入命令,就可以进行虚拟机的管理。

比如savevm命令可以把虚拟机的当前状态保存到虚拟机的磁盘中,这些命令的实现函数都有一个统一的命名方式:hmp_xxx,比如hmp_savevm就是savevm的实现函数的起始位置,

hmp_migrate就是migrate的实现函数的起始位置,因此对于QEMU中的每一条命令都可以很快找到相关的实现函数。

块操作

QEMU源码编译

QEMU的编译过程并不复杂,首先进入QEMU的代码目录后,首先运行./configure –help,查看qemu支持的特性。
选择相关的特性进行编译,由于我们使用的X86_64的平台,我们使用下列命令配置:

./configure –enable-debug –enable-kvm –target-list=x86_64-softmmu

上述命令会生成Makefile文件,然后直接make就可以了,为了加速编译可以使用多线程:make -j number。




./configure命令运行时会检查物理机的环境,检查需要的相关的库是否已经安装在宿主机上。

因此可能由于相关库没有安装而中断,其中一些库包括:

pkg-config、zlib1g-dev、libglib2.0-dev、libpixman-1-dev、make等,库都可以通过ubuntu的包管理命令apt-get install直接安装。

如果需要把QEMU安装到系统中可以使用make install命令。

后面我会单独介绍 QEMU+KVM《纯命令行方式安装管理虚拟机》记录的文章,如感兴趣可查阅。

阅读代码的工具

阅读代码的工具Source Insight 4.0,软件资料链接百度网盘地址:

链接:https://pan.baidu.com/s/1iYhR31FuJTLP1BeXxjKYOQ
提取码:5iqa




此文件夹中有一些常用工具,大家自行下载。

安装方法简述:

下载 “SI4安装及PJ文件.zip” 和 “sourceinssight.rar” 两个文件,具体安装方法参考第一个文件夹中说明。




qemu 源码到官网上自行下载。
https://www.qemu.org/download/

此篇只是简单介绍 qemu 相关特征,以及作为虚拟机使用时,与kvm之间关系;此篇内容相对简单,但是对与初次接触 虚拟化的同学来说非常重要。此篇可一窥全貌,后面在接触virtio、virtio-net、vhost-net、kvm等知识时,不会迷路。笔者亲身体验过迷路的感受 ^=^ ,过程有点疼苦 。

虚拟化相关资料汇总

References

KVM

QEMU

• QEMU website: http://www.qemu.org/

• QEMU WIKI: https://wiki.qemu.org/Main_Page




Device Trees

devicetree.org website: http://devicetree.org

DTC, the device tree compiler is available at: The Device Tree Compiler .

DTC also includes a library called libfdt which can be used by software to parse device trees.




Virtio-- a framework for doing virtual I/O using KVM/QEMU

http://www.ibm.com/developerworks/linux/library/l-virtio/

http://ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf

http://docs.oasis-open.org/virtio/virtio/v1.0/csprd01/virtio-v1.0-csprd01.pdf




Virtual Networking with QEMU

http://wiki.qemu.org/Documentation/Networking
http://www.linux-kvm.org/page/Networking

转载自::https://blog.csdn.net/weixin_38387929/article/details/120121636



Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程

学习资料、教学视频和学习路线图有需要的可以自行添加学习交流群973961276

关键词:虚拟

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭