范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

libvirtandQEMU基础篇

  零、前言
  我们知道,操作系统上的程序分为两种,一种是用户态的程序,例如 Word、Excel 等,一种是内核态的程序,例如内核代码、驱动程序等。
  为了区分内核态和用户态,CPU 专门设置四个特权等级 0、1、2、3 来做这个事情。大牛们在写 Linux 内核的时候,如果用户态程序做事情,就将扳手掰到第 3 等级,一旦要申请使用更多的资源,就需要申请将扳手掰到第 0 等级,内核才能在高权限访问这些资源,申请完资源,返回到用户态,扳手再掰回去。这个程序一直非常顺利地运行着,直到虚拟机出现了。
  一、虚拟化框架
  " 虚拟化  " 是一个描述运行软件的广义计算机术语,通常体现为在单一系统上运行多个操作系统,这些操作系统同时运行,而每个操作系统又是相互独立的。大多数现行的虚拟化实现使用一个 " 虚拟机管理程序  "(hypervisor),即一个软件层或子系统,该子系统控制硬件并向 " 客机操作系统  " 提供访问底层硬件的途径。通过向客机操作系统提供虚拟化的硬件虚拟机管理程序允许多种操作系统在相同的物理系统中运行,该虚拟机管理系统称为 " 客机  "(guest)。
  文康说:通过虚拟化,可以将单台计算机划分成多台虚拟机,每台虚拟机拥有自己的操作系统。从物理机角度上看,它们彼此是独立的。具体来说就是具有自己的网络接口和IP地址、文件系统以及其他外围设备。(特指完全虚拟化环境下)从每个操作系统的角度来看,他们运行在自己的专有硬件(虚拟出来的硬件)上。它们认为自己是和硬件直接在打交道,但其实是同  qemu   模拟出来的硬件打交道,并且  qemu   会将这些指令  转译(中间人) 给真正的硬件。
  hypervisor   是管理和支持虚拟化环境的软件,可为每个操作系统运行虚拟机,并且为每个虚拟机提供虚拟 CPU、内存、磁盘、网络和其他外围设备的访问权限。同时限制虚拟机,使其无法直接访问实际硬件以及互相直接访问。
  提供  hypervisor   的物理计算机或操作系统称为  host   计算节点。客户机  guest   是在  hypervisor   上运行的虚拟机 二、虚拟化细节
  Q:不用虚拟化,能不能在一台机器上跑多台系统?
  A:不能同时,只能跑一台。
  每一个操作系统都有一个内核 kernel ,而这个 kernel 是需要对 CPU 的 ring0 进行操作的。如果没有任何限制,运行多台虚拟机则会出现多个操作系统 同时 抢占 CPU。所以运行多台虚拟机就需要一个调度程序去进行调度,它被称为 hypervisor ( 虚拟机控制软件 )。
  通过这样处理以后,我们就得到了虚拟机,而虚机运行在 ring3 环。反过来说。在 ring3 称为用户模式下的  全虚拟化  虚拟机,而 ring2 使用  hypervisor  实现资源调度;多台同时运行在 ring0 下的  半虚拟化   虚拟机容易崩。 1、虚拟化类型
  虚拟化主要分为三种类型: 完全 虚拟化、 半 虚拟化和 软件 虚拟化。 完全虚拟化使用系统 CPU 的硬件特性为虚拟客户提供底层物理系统的完全抽象。 完全虚拟化(full virtualization) : 允许未修改的操作系统和软件在虚拟机上的运行,就像直接在真实硬件上的运行。 配备虚拟外围设备后,虚拟机环境看起来就像是裸机一样。物理硬件的访问权限由 hypervisor 控制,因此虚拟机不会互相干扰。 半虚拟化使用呈现给虚拟客户的软件和数据结构的集合,要求客户中的软件修改以使用半虚拟化环境。 半虚拟化(Paravirtualization): 允许hypervisor为客户机操作系统提供特殊接口,以便其更有效地与hypervisor进行通信。通常,这需要对客户机操作系统或特殊hypervisor 感知型驱动程序的安装进行修改。 半虚拟化应用一系列呈现给虚拟机的软件和数据结构,需要客机中的软件修改以使用半虚拟环境。 半虚拟化包含整个内核,就像 Xen 准虚拟机,或者虚拟化 I/O 设备的驱动程序一样。 软件虚拟化使用较慢的二进制转换和其他仿真技术来运行未经修改的操作系统。像直接使用 QEMU 这种仿真技术。 Red Hat Enterprise Linux 不支持软件虚拟化。 原生虚拟化(native virtualization)或硬件辅助完全虚拟化(hardware-assisted fullvirtualization)允许几乎所有的代码都可未经更改地由CPU直接运行,从而提高效率。 hypervisior 只需在代码在使用干涉系统管理程序的状态或其支持环境的敏感指令时介入 当今32位和64位x86 处理器上的Intel 虚拟化技术(VT-x)和AMD虚拟化(AMD-V)的发展使硬件辅助完全虚拟化成为可能。利用处理器的硬件特性,向客机提供底层实体系统的总抽象。这创建了新的虚拟系统,被称为一个 " 虚拟机  "(virtual machine),它允许客机操作系统在无需修改的情况下运行。客机操作系统和任何在客机虚拟机器中的应用并不会察觉出虚拟化环境并正常运作。
  原生虚拟化,性能更好 。允许几乎所有的代码都可未经更改地由 CPU 直接运行,从而提高效率。
  也是工程师不断的在改进的地方,要更好的支持 原生虚拟化 。让虚拟化的速度和物理机一样,无论是 CPU 还是 IO or RAM。 2、硬件辅助虚拟化技术(HVM)
  为了 让虚拟机达到原生虚拟化 的目的,需要使用硬件辅助虚拟化技术。
  在第一代技术中,支持Intel VT/AMD-V的CPU上提供新处理器指令,可将CPU置入新的执行模式。为硬件辅助虚拟机执行指令时, CPU将切换到非root或客户机模式,在该模式下虚拟机的内核能够以级别0运行,而用户空间能够以级别3运行。
  对于虚拟机内核来讲,只要将标志位设为虚拟机状态,我们就可以直接在 CPU 上执行大部分的指令,不需要虚拟化软件在中间转述,除非遇到特别敏感的指令,才需要将标志位设为物理机内核态运行,这样大大提高了效率。
  这样操作以后,就出现了 CPU 快而 RAM 慢的情况。
  第二代x86 硬件虚拟化支持内存管理单元(MMU)虚拟化。通常,CPU需要花费很多周期来处理内存页面与虚拟机的映射。MMU 虚拟化允许将工作负载转移到特殊硬件,从而提高性能。Intel将此技术称为扩展页表(ERT),在Nehalem微型架构处理器中引入。AMD将此技术称为快速虚拟化索引(RVi), 于2007年在四核Opteron处理器中引入。
  这样 CPU 和 RAM 就都解决掉了。
  第三代x86 硬件虚拟化支持集中于I/0虚拟化。主板芯片集上的使能技术为安全PCI穿透,允许将物理PCI设备直接连接到虚拟机。该技术可为虚拟机提供近似原生的I/O性能。在Intel中,这称为直接1/O虚拟化技术(VT-d);在AMD中,称为1/0虚拟化技术(AMD- Vi)(最初称为IOMMU)
  之前,网卡 nic 还是要通过 hypervsor 交给虚拟机来用 vm ,到了千兆上不去。现在,新技术 SR-IOV 的网卡划48个口,跨过 hypervisor 直接给 vm 调用。很多通道的处理,直接交给网卡自己来做。 通过这种技术,就解决了 IO 性能问题 。 三、虚拟化组件KVM
  对于  KVM (英文 Kernel-based Virtual Machine 的缩写) 来说,其是一款支持虚拟机技术,而且是 linux 内核中的一个 功能模块 。它在 linux2.6.20 之后的任何 linux 分支中都被支持。 KVM 是基于内核的虚拟机,直接集成到Linux内核中。它允许 Linux 内核在裸机上运行,并直接自行充当 hypervisor。 KVM 项目由 Qumranet(现属于红帽) 于2006年10月启动。从 RHEL 5.4 开始,在 x86-64 架构上运行的红帽企业 Linux 中完全支持 KVM KVM 设计性能十分优异,hypervisor 所需的许多功能都已通过 Linux 内核实施,如处理器调度、内存管理、物理设备驱动程序等 KVM 需要芯片支持虚拟化技术(英特尔的 VT 扩展或者 AMD 的 AMD-V 扩展) 对于是否支持也可以通过命令行查看:egrep "(vmx|svm)" --color=always /proc/cpuinfo 在 bios 中是默认设置不打开该功能的,要去 bios 设置其为 enable 如果有任何内容则说明当期硬件架构是支持 kvm 的,否则就不支持。
  Q:为什么还要  yum install libvirt*
  A: 操作系统装以后,天生就可以安装虚拟机了。 但是,内核支持虚拟化,不代表应用就能直接访问虚拟化。应用需要调用 lib 来使用虚拟化,这是免费的。
  Q: 英特尔的 VT 扩展或者 AMD 的 AMD-V 扩展   是做什么的?
  A:因为完全虚拟化是非常慢的,所以要使用硬件辅助虚拟化技术 Intel-VT,AMD-V,所以需要 CPU 硬件开启这个标志位,一般在 BIOS 里面设置。当确认开始了标志位之后,通过 KVM,GuestOS 的 CPU 指令不用经过 Qemu 转译,直接运行,大大提高了速度。所以,KVM 在内核里面需要有一个模块,来设置当前 CPU 是 Guest OS 在用,还是 Host OS 在用。 libvirtlibvirt 程序包是一个与  虚拟机监控程序   相独立的  虚拟化应用程序接口  ,它可以与操作系统的一系列虚拟化性能进行交互。
  libvirt 是一个管理虚拟化平台的工具包,可从 C、Python、Perl、Go 等访问。
  ——提供简单虚拟化API的库
  # yum info libvirt Available Packages Name        : libvirt Arch        : x86_64 Version     : 4.5.0 Release     : 36.el7_9.5 Size        : 204 k Repo        : updates/7/x86_64 Summary     : Library providing a simple virtualization API URL         : https://libvirt.org/ License     : LGPLv2+ Description : Libvirt is a C toolkit to interact with the virtualization             : capabilities of recent versions of Linux (and other OSes). The             : main package includes the libvirtd server exporting the             : virtualization support.libvirt 项目旨在为运行在不同虚拟机管理程序技术上的虚拟管理工具提供长期稳定的 C API。
  也有 Python 写好的  libvirt-python   软件包,来调用 libvirt 库接口,从而方便自己的应用程序更好的使用虚拟化功能。
  libvirt 程序包在 GNU 较宽松公共许可证下,可作为免费软件使用。
  Red Hat Enterprise Linux 7 支持  libvirt  以及其包括的基于  libvirt  的工具作为默认虚拟化管理(如 Red Hat Enterprise Virtualization 管理),例如  virt-manager   与  virsh   命令行管理工具。
  libvirt  的主要功能: 一个稳定的 通用层 来安全地管理主机上的虚拟机。 一个管理本地系统和连网主机的 通用接口 。 提供 API 来列举、监测和使用管理节点上的可用资源,其中包括 CPU、内存、储存、网络和非一致性内存访问(NUMA)分区。 部署、创建、修改、监测、控制、迁移以及停止虚拟机操作都需要这些 API。 尽管  libvirt  可同时访问多个主机,但 API 只限于 单节点操作 。 管理工具可以位于独立于主机的物理机上,并通过安全协议和主机进行交流。
  架构设计思想
  从该图可以看出,libvirt 的设计理念,是面向驱动的架构设计。对任何一种虚拟机技术都开发设计相对于该技术的驱动。在 libvirt api 之上会有很多个 driver,对于每一种虚拟机技术都会有一种 driver,用来充当该虚拟机技术与 libvirt 之间的包装接口。如此设计就可以避免 libvirt 需要设计各种针对不同虚拟机技术的接口,它主要关注底层的实现,提供对外接口调用,而不同的虚拟机技术通过调用 libvirt 提供的接口来完成自己所需要的功能。不同虚拟机技术就可以使用不同驱动,而且相互直接不会影响,方便扩展。而且 libvirt 提供了多种语言的编程接口,可以直接通过编程,调用 libvirt 提供的对外接口实现对虚拟机的操作。 QEMU
  —— QEMU 是一个通用的开源机器模拟器和虚拟器。 QEMU 有整套的虚拟机实现,由以下部分构成 处理器模拟器(x86、IBM Z、PowerPC、Sparc) 模拟的设备(显卡、网卡、硬盘、鼠标) 用于将被模拟设备连接到相关主机设备的通用设备 被模拟计算机(PC、Power Mac)的说明 调试程序 用来与模拟器交互的用户界面 QEMU 是一个用户空间的进程,需要通过特定的接口才能调用到 KVM 模块提供的功能。 从 QEMU 角度来看,虚拟机运行期间,QEMU 通过 KVM 模块提供的系统调用接口进行内核设置,由 KVM 模块负责将虚拟机置于处理器的特殊模式运行。QEMU 使用了 KVM 模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化加速以提高虚拟机的性能。 当用作虚拟器时,QEMU 通过直接在主机 CPU 上执行来宾代码来实现接近原生的性能。在 Xen 管理程序下执行或在 Linux 中使用 KVM 内核模块时,QEMU 支持虚拟化。使用 KVM 时,QEMU 可以虚拟化 x86、服务器和嵌入式 PowerPC、64 位 POWER、S390、32 位和 64 位 ARM 以及 MIPS 客户机。
  Q:KVM 和 QEMU 有什么区别?
  A:QEMU 使用仿真;KVM 使用处理器扩展 (HVM) 进行虚拟化。
  Q:QEMU 和 KVM 是独立的吗?
  A:是,但不完全是。KVM 模块的职责就是打开并初始化 VMX 功能,提供相应的接口以支持虚拟机的运行。 QEMU(quick emulator) 本身并不包含或依赖 KVM 模块,而 是一套由 Fabrice Bellard 编写的模拟计算机的自由软件。 QEMU 虚拟机 是一个纯软件的实现,可以在没有 KVM 模块的情况下独立运行,但是性能比较低。
  Q:那为何还会有 qemu-kvm 这个名词?
  A:单纯的使用 Qemu 属于完全虚拟化,性能特别低。所以 Qemu 将 KVM 整合进来,将有关 CPU 指令的部分交由内核模块来做,就是 qemu-kvm (qemu-system-XXX)。另外 Qemu 还会模拟其他的硬件,如网络和硬盘。同样,全虚拟化的方式也会影响这些设备的性能。这个时候就需要让 GuestOS 知道自己是虚拟机,需要加载特殊的半虚拟化驱动来提高性能。总之 qemu-kvm 就是这样的一种技术。它补充了 kvm 技术的不足,而且在性能上对 kvm 进行了优化。
  Q:QEMU 和 KVM 到底有什么联系?
  A:KVM 只是内核模块,用户并没法直接跟内核模块交互,需要借助用户空间的管理工具,而这个工具就是 QEMU。KVM 和 QEMU 相辅相成,QEMU 通过 KVM 达到了硬件虚拟化的速度,而 KVM 则通过 QEMU 来模拟设备。简单直接的理解就是:QEMU 是个计算机模拟器,而 KVM 为计算机的模拟提供加速功能。
  Q:QEMU 又和 libvirt 有什么关系?
  A:对于 KVM 来说。其匹配的用户空间工具并不仅仅只有 QEMU 作为唯一选择,还有 RedHat 开发的 libvirt、virsh、virt-manager 等。
  原文链接:https://www.cnblogs.com/itxdm/p/libvirt_and_QEMU.html

自动构建SlaterKoster系数的TB模型(完整版代码)fromnumpyimportimportnumpy。matlibasmtlimportmatplotlib。pyplotaspltimportmatplotlibfrommatp反弹又回落跌宕起伏的比特币比特币价格从2。45万美元的回升跌至1。85万美元,创下熊市周期的第二个底部。这使超过11。8的比特币供应重新陷入未实现损失,于是我们对市场下行风险和熊市底部形成的可能性进行了深入曝骁龙8Gen1处理器明年或下放到中端机今年5月20日,高通举办了骁龙之夜活动,正式发布了新一代旗舰处理器骁龙8Gen1。7月以来,各大手机产商也纷纷推出搭载骁龙8Gen1处理器的高端旗舰新机。近日,有消息表示骁龙8Ge地震到底能不能预测?台湾的地震又勾起大家的回忆,地震到底能不能预测的争论又在响起,不过现在大多数人都逐渐认可了地震不可预测的科学共识,但还有相当一部分人不认同这个观点,我们就来简单探讨一下不同观点的背最新通知!加大补贴力度9月15日日照市发展和改革委员会等六部门发布关于阶段性调整价格补贴联动机制加大对困难群众物价补贴力度的通知关于阶段性调整价格补贴联动机制加大对困难群众物价补贴力度的通知各区县功能区5G明年回归?华为将拿出什么样的SOC5G近期,微博上不少大V都称明年下半年,华为或解决5G问题,并发布支持5G的麒麟芯片。如厂长是关同学就称华为明年5G机型基本上可以定了,虽然可能还是会有意外,但是意外概率不大,明年AMD6800u全球最小6寸掌机发布,核显性能相当GTX1060GPDWIN4掌机发布了,这次配置AMDRyzen76800U处理器,6nm制程工艺,16MB三级高速缓存,8核16线程,最大睿频4。7GHz。全新RDNA2架构AMDRadeon为什么美元上涨给全球经济带来麻烦?阿荣一说美元正在经历百年一遇的反弹。对于世界其他地区来说,这是一个大问题。美元作为全球贸易和金融中使用的主要货币的作用意味着其波动具有广泛的影响。斯里兰卡的燃料和食品短缺欧洲创纪录CopyFromChina模式成功,Shopee成全球下载量最大的购物App东南亚承包全球互联网经济增量谷歌和淡马锡和贝恩咨询合作发布了eConomySEA2021Report,SEA就是SouthEastAsian,东南亚的意思。这份报告统计说,2015燃油汽车的时代,真的要过去了吗?随着科技的快速发展,汽车从原来的动力来源于燃烧汽油,到如今的新能源汽车,也就是既可以燃烧汽油,又可以通过充电来发动汽车,以及汽车行业有进入智能汽车时代的趋势。为此,许多有关人士断言季羡林对绝大多数人,人生一无意义,二无价值文季羡林当我还是一个青年大学生的时候,报刊上曾刮起一阵讨论人生的意义与价值的微风,文章写了一些,议论也发表了一通。我看过一些文章,但自己并没有参加进去。原因是,有的文章不知所云,我
地球文明能联网上外星文明吗?还在纠结是否应该使用5G网络?对高级外星文明的生物来说,这或许根本不是事,他们已经在用恒星进行通讯了。用信号加强器建通讯网在恒星和恒星之间放置信号中转站,你就能接收到来自遥远星球的粉丝在某店买到翻新机iPhone但是商家却保证是原装机?很多小伙伴因为太喜欢iPhone的iOS系统,但是又对全新机高额的价格嗤之以鼻,不得已选择在网店购买,网店卖的iPhone不仅价格便宜,而且不生产的老款iPhone都有全新机。就算玩家实评ChordUltimaPre2前级开箱音响性和功能性兼得英国CHORD的最新前级ChordUltimaPre2订货多月,因为疫情关系所以货期一直拖,原本以为还要一段时间,谁知道圣诞前突然一个电话说机器到了,这就简单写几句报告新一代Pre租客圈中的新宠儿?当贝D5X不愧是3000元投影中的天花板近几年疫情的特殊情况,让居家观影需求陡增。虽然现在电影院已经重新开放,但不得不说,疫情还是改变了很多人的观影习惯,也在一定程度上,促进了投影市场的增长。说回投影,目前比较有代表性品FindN2出厂膜千万别撕,保护屏幕增强显示效果就靠它!作为智能手机最脆弱的部位,各厂商对屏幕的保护都非常看重,新机出厂一般都贴好了保护膜。而折叠屏手机在这方面但就更看重了,出厂全都有保护膜。而且基于折叠屏屏幕的特殊性,各厂家给自家新品LG或于2024年推出透明OLED电视,仍需完善产品并考虑外观设计今年在韩国首尔举行的KDisplay2022活动期间,LG展示了新一代424897英寸OLEDEX面板,以及新款透明OLED面板。后者主要针对商业客户,LG还着重强调了其OLEDTWiFi网络越来越卡,3招教你wifi信号增强3倍,网速起飞!!!很多朋友都会有这样的疑问,明明升级到千兆宽带,但家里的网速没有变快,相比较反而比以前百兆网速变慢了。手机刷视频还会经常出现卡顿。向运营商咨询后说网速没有问题,可能是路由器出现了问题最简年货节开启推动消费复苏,电商平台简化优惠规则成主流1212月26日以来,各个电商平台先后开启了年货节的促销节奏。今年年货节,被誉为最简单的一届年货节,记者对比多个电商平台发现,年货节的玩法变化明显,天猫唯品会等平台均采用无需满减凑华硕灵耀系列商务本年终推荐,高颜轻薄长续航全都有为了助力各位职场人士高效完成年终工作和新年规划,今天笔者推荐来自华硕灵耀系列的三款高端商务轻薄本,颜值高性能强,而且便携长续航,出差无压力,帮助各位职场人从容应对工作挑战。一灵耀1外国导师问我怎么用英文键盘打出中文?原来中文打字经历了这么多有网友在网上分享自己在国外留学的趣事,提到了中文打字的事情。某天早上,网友正在实验室里用word文档整理实验步骤。由于打的全都是中文,以至于网友的意大利导师路过网友电脑的时候,盯着8款好用到爆的时间管理app,你学习5小时顶别人10小时!工作总是到deadline才行动?说好的计划总是莫名的搁置。因为不自律,我们丢掉了多少宝贵的时间和机会。今天小编给大家带来了8款时间管理神器,包括任务待办清单提升专注力等工具,每款