Ovirt 基本介绍

在详细学习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中文手册

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值