Ovirt 基本介绍

2023-11-02

在详细学习ovirt之前,建议了解一些基本虚拟化的基本概念。
虚拟化相关概念

ovrit 介绍

oVirt(Open Virtualization Manager)是一款免费开源虚拟化软件,是RedHat商业版本虚拟化软件RHEV的开源版本。
oVirt基于kvm,并整合使用了libvirt、gluster、patternfly、ansible等一系列优秀的开源软件。

部署架构

一个标准的oVirt部署架构应包括如下三个主要部分:

  • 1个ovirt-engine,用来进行管理虚拟机(创建、开关启停)、配置网络和存储等操作;

其中engine有一个认证服务(组件),用来实现用户和管理员的认证。

  • 1个或多个主机(节点),用来运行虚拟机;

主机节点是安装有vdsm和libvirt组件的linux发行版

  • 1个或多个存储节点,用来存放虚机镜像和iso镜像;

可以使用块存储或文件存储,也可以是利用主机节点自身的存储做存储节点。,或者使用外部的存储,例如通过NFS访问,或者是IP-SAN/FC-SAN。还有一种就是超融合架构,通过gluster将主机节点自身的磁盘组成池来使用,同时能够实现高可用和冗余。

整体架构

oVirt
主要组件:

  • Engine(oVirt-engine)——oVirt的管理组件,管理oVirt主机,管理虚机、存储、网络;
  • 管理门户——Engine为管理员提供的web入口;
  • 用户门户——Engine为普通用户提供的web入口;
  • REST API——通过这个api可以允许程序进行虚拟化管理操作,oVirt的命令行工具和python SDK就是调用的此api;
  • CLI/SDK——命令行接口和SDK提供一种与engine通信的方式;
  • 数据库——engine使用Postgresql数据库来持久化数据;
  • 主机代理(VDSM)——主机节点上用于与engine通信的组件,接收engine的命令执行虚机的相关操作;
  • 虚机代理(Guest Agent)——运行于虚机内部,通过一个虚拟串口与外部通信,向engine提供所需的信息;
  • AD/IPA——目录服务,engine通过目录服务来获取用户和组的信息,根据engine的权限进行控制;
  • DWH(数据仓库)——数据仓库组件使用Talend对从数据库中获取的数据进行挖掘,并存入历史数据库中;
  • 报告引擎——使用Jasper根据历史数据库中的数据生成系统资源使用报告;
  • SPICE客户端——用户用来访问虚机的工具。

虚拟化实现

CPU虚拟化

在这里插入图片描述

客户操作系统与虚拟机监视器共同构成了虚拟机系统的两级调度框架。客户操作系统负责第2 级调度,即线程或进程在VCPU 上的调度(将核心线程映射到相应的虚拟CPU上)。虚拟机监视器负责第1 级调度, 即VCPU在物理处理单元上的调度。两级调度的调度策略和机制不存在依赖关系。VCPU调度器负责物理处理器资源在各个虚拟机之间的分配与调度,本质上即把各个虚拟机中的VCPU按照一定的策略和机制调度在物理处理单元上可以采用任意的策略来分配物理资源, 满足虚拟机的不同需求。VCPU可以调度在一个或多个物理处理单元执行(分时复用或空间复用物理处理单元), 也可以与物理处理单元建立一对一固定的映射关系(限制访问指定的物理处理单元)。

内存虚拟化

内存虚拟化
因为VMM (Virtual Machine Monitor) 掌控所有系统资源,因此VMM 握有整个内存资源,其负责页式内存管理,维护虚拟地址到机器地址的映射关系。因Guest OS本身亦有页式内存管理机制,则有VMM的整个系统就比正常系统多了一层映射:

  1. 虚拟地址(VA),指 Guest OS 提供给其应用程序使用的线性地址空间;
  2. 物理地址(PA),经 VMM 抽象的、虚拟机看到的伪物理地址;
  3. 机器地址(MA),真实的机器地址,即地址总线上出现的地址信号;

映射关系如下:Guest OS: PA = f(VA)、VMM: MA = g(PA)
VMM 维护一套页表,负责PA 到MA 的映射,Guest OS 维护一套页表,负责VA 到PA 的映射。
实际应用时,用户访问VA的地址,会经过Guest OS页表转成PA的地址,然后由VMM页表最终转换成MA的地址。

页表虚拟化技术原理
由于每个虚拟机访问内存都得经过两次转换,效率非常低,几乎不具有实际可用性,为实现虚拟地址到机器地址的高效转换,现普遍采用的思想是:由VMM根据映射f和g生成复合的映射fg,并直接将这个映射关系写入 MMU。当前采用的页表虚拟化方法主要是MMU类虚拟化(MMU Paravirtualization)和影子页表,后者已被内存的硬件辅助虚拟化技术所替代。

由于每个虚拟机访问内存都得经过两次转换,效率非常低,所以为了高效转换,出现了MMU技术。

MMU virtualization

原理:当Guest OS创建一个新的页表时,会从它所维护的空闲内存中分配一个页面,并向VMM注册该页面,VMM会剥夺Guest OS对该页表的写权限,之后Guest OS对该页表的写操作都会陷入到VMM加以验证和转换。VMM会检查页表中的每一项,确保他们只映射了属于该虚拟机的机器页面,而且不得包含对页表页面的可写映射。后VMM会根据自己所维护的映射关系,将页表项中的物理地址替换为相应的机器地址,最后再把修改过的页表载入MMU。如此,MMU就可以根据修改过页表直接完成虚拟地址到机器地址的转换。

内存硬件辅助虚拟化

原理是:GVA(客户操作系统的虚拟地址)-> GPA(客户操作系统的物理地址)-> HPA(宿主操作系统的物理地址)两次地址转换都由CPU硬件自动完成(软件实现内存开销大、性能差)。

I/O设备虚拟化

通过截获 Guest OS对I/O设备的访问请求,然后通过软件模拟真实的硬件,目前I/O设备的虚拟化方式主要有三种:设备接口完全模拟、前端/后端模拟、直接划分。

设备接口完全模拟

即软件精确模拟与物理设备完全一样的接口,Guest OS驱动无须修改就能驱动这个虚拟设备,Vmware即使用此方法。

优点:没有额外的硬件开销,可重用现有驱动程序;

缺点:为完成一次操作要涉及到多个寄存器的操作,使得 VMM 要截获每个寄存器访问并进行相应的模拟,这就导致多次上下文切换;由于是软件模拟,性能较低。

前端/后端模拟

VMM 提供一个简化的驱动程序(后端, Back-End),Guest OS中的驱动程序为前端 (Front-End, FE),前端驱动将来自其他模块的请求通过与Guest OS间的特殊通信机制直接发送给Guest OS的后端驱动,后端驱动在处理完请求后再发回通知给前端,KVM即采用该方法。

优点:基于事务的通信机制,能在很大程度上减少上下文切换开销,没有额外的硬件开销;

缺点:需要VMM实现前端驱动,后端驱动可能成为瓶颈。

直接划分

即直接将物理设备分配给某个 Guest OS,由Guest OS直接访问I/O设备(不经 VMM),目前与此相关的技术有IOMMU(Intel VT-d, PCI-SIG 之 SR-IOV 等),旨在建立高效的I/O虚拟化直通道。

优点:可重用已有驱动,直接访问减少了虚拟化开销;

缺点:需要购买较多额外的硬件。

学习文档

ovirt中文手册

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ovirt 基本介绍 的相关文章

  • 专访用自己姓氏命名编译器YC++的创始人

    在CSDN的论坛里看到了这样的一条帖子 请使用中国人开发的C C 编译器 网页浏览器内核 并提供了该软件的下载地址 从大家的跟帖来看很多人 是很有兴趣的 但是作者并没有留下太多的介绍说明类的文字 为了一探究竟 我拨通了作者留下的电话并完成了
  • Ubuntu 16.04设置root用户登录图形界面

    Ubuntu默认的是root用户不能登录图形界面的 只能以其他用户登录图形界面 这样就很麻烦 因为权限的问题 不能随意复制删除文件 用gedit编辑文件时经常不能保存 只能用vim去编辑 下面以Ubuntu 16 04版为例说明 1 打开终
  • STM32实战项目:HAL_RCC_OscConfig中程序卡死问题解决办法

    STM32实战项目经验 HAL RCC OscConfig中程序卡死问题解决办法 工程环境 STM32CUBEIDE STM32F405VG 现象复现 项目中一个是IAP程序 另一个是APP程序 两个程序都是使用STM32CubeIDE生成
  • 搜索题目综合

    BFS 1 小X学游泳 题解 枚举每一个点作为连通块的起点 求得连通块大小 然后打擂台求最值即可 参考代码 include
  • element-ui和element-plus的自定义列表格用法

    前言 element plus 这个 UI 组件库 虽说基本和 vue2 element ui 差不多 但还是有点区别 以至于按emenent ui的写法来写会发现报错 下面我将讲解一下element ui和element plus的自定义
  • 一文彻底讲清Linux tty子系统架构及编程实例

    摘要 本文详细解读了linux系统下的tty子系统的深层次原理和架构 并参考了LDD3中的代码实例讲述了无硬件下实现一个简单的tty设备驱动模块的编写 对了解tty子系统及下部串口驱动模块的学习有较好的参考价值 1 tty设备简介 tty一

随机推荐

  • 抖音广告IOS/Android接入笔记:

    一 抖音广告接入 Android接入 注意 内容输出对接中已包含广告对接 建议使用广告4 6 0 7版本 如使用其他广告版本建议做好自测 2600及以上版本 需要使用如下Maven命令 火山引擎maven仓库地址 maven url htt
  • 红帽系统服务器格式化,Redhat Linux默认的文件系统是什么格式?

    满意答案 现在Redhat Linux默认的文件系统格式是ext4 可以通过如下多种方法查询文件系统类型 1 mount mount dev sda1 on type ext4 rw errors remount ro user xattr
  • 第五周总结

    已知字符串 this is a test of java 按要求执行以下操作 统计该字符串中字母s出现的次数 统计该字符串中子串 is 出现的次数 统计该字符串中单词 is 出现的次数 实现该字符串的倒序输出 public class da
  • MySQL之常见的CRUD面试题【下】

    Welcome Huihui s Code World 接下来看看由辉辉所写的关于MySQL数据库的相关操作吧 目录 Welcome Huihui s Code World 导读 一 MySQL常见的内置函数 1 字符串函数 2 数值函数
  • 测绘地理信息标准规范汇总下载

    经常 我们要下载一些相关的规范来指导作业 每次都在网上找 这里一次性全部整理好 欢迎大家来下载 打包下载 链接 百度网盘地址 分页下载 一 国家测绘局制定的测绘地理信息国家标准 专题地图信息分类与代码 GBT 18317 2001 被GBT
  • 4-C语言-冒泡排序以及数组名的使用

    问题 给数组进行从小到大的升序排序 思想 一般给冒泡排序 进行封装 写成一个函数 这就需要让数组传进去 而传数组 实际传的数组的首元素的地址 因此如果在冒泡内部 进行数组数据个数的计算 用sizeof a sizeof a 0 实际上为1
  • Braft--工作日记

    建议在阅读本笔记之前先观看此网址的动画Raft 分布式共识算法动画演示 首先bRaft是实现分布式共识的协议 一个节点可以处于三种状态 Follower跟随者状态 Candidate候选者状态 Leader领导者状态 而所有的节点都以跟随者
  • 计算机毕业设计SSM大型零售电商平台——购物车管理子系统【附源码数据库】

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 SSM mybatis Ma
  • softmax函数的定义及求导

    本文中 x0 x1 xm x 0 x 1 x m 代表一个向量 也就是一个 m m行1列的矩阵 在监督式的深度学习中 输入通常是一个向量 用xx表示 输出 y y则可以分为多种情况 标量 yy表示输入 x x属于某一类别的概率 向量 此时输
  • AutoDev 1.1.3 登场,个性化 AI 辅助:私有化大模型、自主设计 prompt、定义独特规则...

    在过去的半个月里 我们为开源辅助编程工具 AutoDev 添加了更强大的自定义能力 现在你可以 使用自己部署的开源大模型 自己配置 Intellij IDEA 中的行为 自定义开发过程中的规范 当然了 如果您自身拥有开发能力的话 建议您自己
  • 绕过身份检测,破解Android SU

    http www 61ic com Mobile Android 201207 43661 html 由于Android底层是Linux内核 故了解了Linux的权限管理后就可以知道ROOT的原理 具体可以访问 Android系统权限和ro
  • js基础-语句

    语句 表达式在JavaScript中是短语 而语句 statement 就是JavaScript整句或命令 JavaScript语句是以分号结束 默认情况下 JavaScript解释器依照语句的编写顺序依次执行 1 表达式语句 1 复合语句
  • linux服务器部署docker版nginx(nginx容器化)

    为了服务器安全 nginx端口不直接暴漏在外 现在服务器使用了docker版nginx 记录下使用步骤 docker安装就不再叙述 之前有写 分为2种适用于服务器能上网和不能上网的情况 这里写的一个sh文件和dockerfile文件 用于d
  • 最强大的布局——约束布局(ConstraintLayout)的一些技巧

    一 使用viewBinding 1 想开启那个模块的viewBinding就进入对应模块的build gradle 2 进入app的build gradle 开启viewbinding viewBinding enabled true 3
  • 基于HAL库stm32f1的DS18B20温度传感器

    由于做比赛 所以写了温度传感器 记录一下 一 介绍 DS18B20是常用的数字温度传感器 其输出的是数字信号 具有体积小 硬件开销低 抗干扰能力强 精度高的特点 1 DS18B20数字温度传感器接线方便 封装成后可应用于多种场合 如管道式
  • 让AI来告诉你什么叫幽灵堵车

    使用环境参考 CocosCreator v3 7 2 ChatGPT 正文 什么是幽灵堵车 堵车 大家都不陌生 堵车时我就思维发散 用 CocosCreator 模拟下堵车应该挺好玩 网上总说高速上最前面如果有个龟速的车 后面能堵车堵个两三
  • OpenCV仪表数据识别(二):数字区域自动定位

    下载和配置Opencv在网上和书上有很多的讲解 这里不再赘述 此处附上Opencv的下载链接 想要对图片中的数字信息进行识别首先要对图片进行预处理 排除干扰的因素 只留下有价值的信息 这里需要两张图 一张为有数据的图片 一张为仪表关闭时没有
  • 无线传感网课后习题(书本名称无线传感器网络基础 : 理论和实践 : Fundamentals of wireless sensor networks : theory and practice)二

    7 4 Describe a WSN application for each of the following categories time driven eventdriven and query driven 译 为以下每一种类型描
  • 系统安装部署系列教程(五):精简母盘和集成补丁

    所谓母盘就是我们平时说的官方原版镜像 在封装系统的过程中常常需要精简某些功能 有些功能在系统封装阶段是没办法彻底精简的 所以我们首先需要对官方镜像进行精简操作 以去除某些不需要的功能 减小镜像大小 精简母盘的工具有很多 Dism MSMG
  • Ovirt 基本介绍

    Ovirt 介绍 ovrit 介绍 部署架构 整体架构 虚拟化实现 CPU虚拟化 内存虚拟化 MMU virtualization 内存硬件辅助虚拟化 I O设备虚拟化 设备接口完全模拟 前端 后端模拟 直接划分 学习文档 在详细学习ovi