Ovirt调研(转)

2024-06-14 20:32
文章标签 调研 ovirt

本文主要是介绍Ovirt调研(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://blog.csdn.net/liukuan73/article/details/46410953进行了修改标注


1.ovirt介绍

Ovirt(openVirtualization)是一个基于KVM的开源IaaS项目,是redhat虚拟化管理平台RHEV的开源版本,其前身是Redhat的虚拟化商业产品。在架构设计上它使用了Node/Engine分离结构,以方便功能的划分与管理。

oVirt中的Engine通过HTTP协议向外提供HTTP API,同时提供内建的网页服务供用户和系统管理员使用。系统管理员通过网页可以创建、修改虚拟机及相关设备或用户权限,用户在拥有权限的情况下可以操作自己的虚拟机,并通过VNCSSH登陆自己的虚拟机。

Engine在整个系统中充当管理者的角色并对外提供管理服务,它挂载了自己的数据库记录整个系统中所有的虚拟机配置,各个节点的自身状态,系统的网络状态,存储器状态。管理的逻辑,状态及策略全部在Engine中设置与实现。

Node只负责功能上的实现,不进行任何状态的记录和任何策略的实现。

EngineNode之间的关系十分像Linux中驱动程序与应用程序的功能分割关系:驱动仅仅负责功能的实现,如设备的读、写、开启与关闭,如何使用这些功能留给应用层。同样Node仅仅负责实现虚拟机器与设备的创建与修改,资源的共享与保护,如何使用这些功能交给Engine处理。

VDSM的功能主要有:负责Node的自动启动与注册;虚拟机的操作与生命周期管理;网络管理;存储管理;HostVM状态监视与报告;提供对虚拟机的外部干涉功能;提供内存与存储的合并与超支功能(OverCommitment)

Ovirt体系架构

一个标准的oVirt部署包括三部分,主要有:

1.ovirt-engine,这个被用于部署,监管,移除,停止和创建VM镜像,配置存储,网络,等等。

2.一个或多个ovirt-node,我们在node上运行虚拟机(VMs)node上安装了VDSMlibvirt以及安装了一些额外的包,这些包可以实现网络和其他系统服务的虚拟化。

3.一个或多个存储节点,其上保存着对应虚拟机的磁盘镜像和ISO镜像。存储节点可以使用块和文件存储,并且可以通过NFS在本地或者远程进行访问。通过POSIXFS存储类型是可以支持Gluster这样的存储技术的。存储节点被分在一个存储池中,这样可以保证高可用和冗余。

Ovirt Engine

oVirtengine是一个基于JBossjava应用程序(C#演变过来),它作为web服务来运行。这个服务直接指挥node上的VDSM去部署,启动,停止,迁移和监控虚拟机,以及从模板中创建新的镜像至存储中。

engine提供的一些功能:

  1. 虚拟机生命周期管理

  2. 通过LDAP微软的ADIPA)进行身份验证

  3. 网络管理-增加本地网络并且将其附加至主机上

  4. 存储管理-管理存储域NFS/iSCSI/Local)和虚拟VM磁盘

  5. 高可用-在其它主机中失败的主机上自动重启客户虚拟机

  6. 在线迁移-在零停机的情况下移动主机之间的虚拟机

  7. 系统调度-基于资源使用/政策持续负载均衡虚拟机

  8. 节能优化-在非高峰时期将续集你集中到较少的服务器上

  9. 维护管理器-在计划的维护期间无需为虚拟机停机

  10. 镜像管理-基于模板管理自动精简配置和快照

  11. 监控-为系统中的所有对象-虚拟客户机主机网络存储等等

  12. 导出/导入-使用OVF文件导入和导出虚拟机和模板

  13. V2V-可以将VMwareRHELXen环境下的虚拟机轻松转换到oVirt环境中


 EngineCore

enginecore中的主要组件有:

  • -负责所有与之相关的DB操作

  • VDS Broker -负责所有需要与VDSM交互的操作

  • LDAP Broker -负责验证和抓取LDAP目录下用户/组的属性当前支持ADIPARHDS

  • Backend Bean-一个Singletonbean ,负责运行不同实体的指令查询和监控

VDSM

VDSM是一个以Python开发的组件,它可以为主机,虚拟机,网络和存储管理提供所需要的所有功能。

  1. VDSMAPI是基于XML-RPC计划转移到RESTAPI这就是ovirt-engine如何与VDSM进行通信的

  2. 配置主机网络和共享的存储

  3. 使用libvirt进行虚拟机的生命周期操作

  4. 多线程多进程

  5. 通过virtio-serial和客户代理对话

  6. 添加自定义的对扩展到数以百计的nodeLVM的集群支持

  7. 在所支持的存储类型本地目录,FCP, FCoE, iSCSI, NFS, SAS的基础上实现一个分布式镜像库

  8. 多主机系统一个并发的元数据写入器

  9. 在数据写入器中进行扩展

Hooks机制

  1. 允许管理员定义修改虚拟机操作的脚本例如添加额外的操作像CPU定位watchdog设备直接访问LUN

  2. 允许在集成完成前为新的KVM特性扩展oVirt

  3. 有一种简单的方式来测试新的kvm/libvirt/linux特性

  4. VDSM利用libvirt开始启动虚拟机之前调用hook机制

  5. hook改变了虚拟机定义并且VDSM通过定义至libvirt以开启虚拟机

MoM集成

VDSM是和MoM集成在一起的。MOM的行为配置了策略。随着这些策略的使用者可以微调主机的高内存过量使用或安全操作。为了控制它的mom实例,vdsm确实传递了一个mom配置文件并且mom策略文件可以设置mom的缺省行为。刚开始,vdsmd利用配置和策略文件导入了mom并将其初始化。从那时起,mom通过API.py中定义好的APIvdsm进行交互并且控制了运行在主机上的每个虚拟机的内存。mom实例作为vdsm守护进程内的线程运行。

VDSM对存储器的管理

存储器的管理是oVirt的重点,本节将介绍oVirt是如何组织与分配各种存储器的,用户应该如何使用它。每一个Node上都会运行一个VDSM,实现网络、存储器、虚拟机的创建与修改的功能。VDSM的大部分代码用在了存储系统上,其功能包括数据的组织,集群下的数据共享与保护,故障恢复。通常情况下每一个物理机器当作一个Node,运行一个VDSMNode本身只携带少量存储器用以保存配置。一个集群中通常有一个Engine和数个Node这些Node通过网络连接到SAN(StorageArea Network) 上,VDSMNode上运行的虚拟机存储数据保存在SAN上,Node本身为无状态的节点,重新启动后状态消失,从而保证了系统整体的可用性,一般情况下不会因用户的操作而使Node失效。一旦问题发生,通常一次重启即可恢复工作状态

在云计算环境中,SAN中往往存储着大量虚拟机器使用的virtualimage,同时每一个virtualimage在任何时候都可能被任意Node访问,同时出于性能的考虑virtualimage可能以文件或者数据块的形式出现,这些对存储系统的设计提出了挑战。

为此,VDSM基于以下原则设计了自己的存储系统:

1高可用性:一群安装有VDSMNode在组建集群的时候,没有潜在的单点故障存在,任何一个Node崩溃不会影响整个集群的功能,它的角色会被其他Node取代。Engine不可用的情况下,Node将继续工作,用户对虚拟机的操作可以继续进行。

2高伸缩性:添加NodeSAN几乎不需要用户的设置,Node上的VDSM会自己注册自己。

3集群安全性:一个VDSM对正在操作的virtualimage进行排它性保护。

4备份与恢复:virtualimage之间有相互关连的特性记录可进行一系列引用/备份操作。

5性能优化:利用多线程与多进程减少操作堵塞状况。

存储域

StorageDomain(以下简程SD)VDSM中的最基本存储实体,所有的virtualimagevirtualimage对应的元数据都会保存在其中。和VDSM中的StorageImage概念不同,这里的virtualimage表示的是虚拟机程序用到的虚拟磁盘数据,特指虚拟机程序最终能够操作的文件或设备文件对象。元数据是描述virtualimage相关数据大小、状态、锁等内容的一组数据集合。SD包括两种类型:FileDomainBlockDomainFileDomain使用文件系统存储数据并同步操作,主要针对NFS(NetworkFile System) LOCALFS(LocalFile System) 文件系统。在文件系统的帮助下,FileDomain拥有良好的virtualimage操作能力,每一个虚拟机的存储数据(称为Volume)和对应的元数据都以文件的方式保存。每一个Domain实际对应于Host文件系统上的一个目录,针对NFS文件系统VDSM还有额外的逻辑来处理相关意外与错误情况。而BlockDomain直接操作原始的块数据,使用LinuxLVM(LogicalVolume Manager) 功能来组织数据,主要针对iSCSI(InternetSmall Computer System Interface)FCoE(FibreChannel over Ethernet ) 等块设备。由于目标设备上通常没有一个文件系统来保证访问的安全性,VDSM使用了邮箱机制来保证任意时刻,只有一个Node可以修改Block上的内容,而其他Node则通过Socket邮箱发送自己的修改请求。因此它的操作请求速度和监视功能都会比FileDomain弱一些。通常设备将使用Linuxdevicemapper机制进行一次映射,每一个Domain实际上是一个Linux中的VolumeGroup(lun),元数据保存在其中的一个LogicVolume及其tag上,虚拟机的Volume保存在另一个LogicVolume中。

StoragePool(以下简称SP)是一组SD的组合,目标是管理跨越SD之间的操作,也就是说SD之间互相的引用、备份、恢复,合并一般发生在一个SP之中。在数据中心里,一个SP抽象了一组SD的集合供外界的Node访问或者Engine管理,并且一个SP中的所有SD必须是同一类型,如NFS或者iSCSI

为了保证SP中的数据安全,一组SP中需要选择一个SD作为主存储域MasterDomain这个Domain的不同之处在于它会保存SP中所有的元数据,保存一些异步请求或者任务的数据,保存所在SP的集群存储用到的锁

为了简化管理,oVirt中抽象出了DataCenter概念,一个DataCenter将拥有一组NodeCluster用来运行虚拟机,一个StoragePool用来保存虚拟磁盘数据。NodeCluster是一组专门用来运行虚拟机的Node的集合,运行在其中的虚拟机可以动态迁移到NodeCluster中的另外一个Node上。一个DataCenter是一个完成oVirt所有功能的实体,在这个DataCenter中用户可以创建虚拟机、备份虚拟机、配置虚拟机的StorageDomain,动态迁移虚拟机。NodeEngine有一些算法在开启的时候可以自动平衡DataCenter中的Node的负载。概括起来一个DataCenter是一个管理NodeClusterStoragePool的集合。

由于DataCenter中所有的Node都拥有对DataCenter中的StoragePool的访问权限,因此VDSM实现了一个称为SPM(StoragePool Manager) 的功能角色。在一个DataCenter中,所有的Node启动后会自动选举出一个Node充当SPM的角色,被选举者将运行VDSM上的SPM逻辑,SPM负责完成以下功能:创建/删除/缩放所在DataCenter中的Image,快照,模板。这些操作的共同点是会影响StoragePool中的元数据,SAN上松散块设备的分配。为了保证元数据不被多个Node同时修改,SPM拥有对StoragePool中元数据的排它性操作权限SPM使用集中式邮箱接受其他Node的相关请求,其他Node只能通过给SPM发送操作请求的方式修改元数据,最终的操作都由SPM线性完成,从而避免了存储器操作竞态的出现。为了兼顾效率,不修改元数据的普通操作,如数据读写,Node可以不同过SPM,自己直接访问StoragePool完成。由于SPM是由一个普通Node选举出来的,因此当它因为外部原因失效后,系统将会选举出另外的Node充当SPM,从而保证系统能继续运行。

Ovirt guest agent

Ovirt-guest-agent是一个python编写的运行在虚拟机内部的守护程序(可执行文件为/usr/share/ovirt-guest-agent/ovirt-guest-agent.py),通过宿主机的VDSM为虚拟化管理器(ovirt-enginerhev-m)提供虚拟机的信息,在虚拟机上通过虚拟串口virtio-serial(默认首选方式)或者isa-serial使用json协议与宿主机上的unixsocket文件进行交互。

guest agent它提供了虚拟机的一些信息和一些无法从虚拟机操作系统外部来执行的预设操作

Engine将发给guestagent的请求重定向到VDSMVDSM通过 VirtIO通道使用JSON格式的纯文本命令与guest通信

获取linux系统的信息可以参考guest agent的实现,参考源博客内容的代码分析。

Vdsm代码分析

    要去看一下,python基础没有,随便看看


常用文档地址

ovirt安装指南:http://www.ovirt.org/documentation/install-guide/Installation_Guide/
ovirt下载地址:http://www.ovirt.org/download/
ovirt管理端安装:http://www.ovirt.org/documentation/install-guide/chap-Installing_oVirt/
ovirt node安装 :http://www.ovirt.org/documentation/install-guide/chap-oVirt_Nodes/


这篇关于Ovirt调研(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061428

相关文章

mysql动态扩容调研

MySQL动态扩容方案 目前可用方案 MySQL的复制: 一个Master数据库,多个Salve,然后利用MySQL的异步复制能力实现读写分离,这个方案目前应用比较广泛,这种技术对于以读为主的应用很有效。数据切分(MySQL的Sharding策略): 垂直切分:一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;垂直切分的思路就是分析

八、我们应当怎样做需求调研:需求捕获(下)

前面我们讨论了,需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获······需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。没有捕获哪来后面的整理与验证工作?但是,非常遗憾,按照我以往的经验,需求捕获是我们最薄弱的环节。前面我提到的许许多多项目开发的问题都可以归结为需求分析的问题,而许许多多需求分析的问题又都可以归结为需求捕获不完整的问题。需求捕获是整

七、我们应当怎样做需求调研:需求捕获(上)

前面我们讨论了,需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获······需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。没有捕获哪来后面的整理与验证工作?但是,非常遗憾,按照我以往的经验,需求捕获是我们最薄弱的环节。前面我提到的许许多多项目开发的问题都可以归结为需求分析的问题,而许许多多需求分析的问题又都可以归结为需求捕获不完整的问题。需求捕获是整

六、我们应当怎样做需求调研:迭代

前面我一直在反复强调这样一个观点,需求分析不是一蹴而就的,是一个反复迭代的过程。它将从第一次需求分析开始,一直持续到整个项目生命周期。为什么这样说呢?让我们一起来分析分析。  在第一次的需求分析阶段,我们在一段时期内需要与客户进行反复地讨论,这个过程往往是这样一个反复循环的过程:需求捕获->需求整理->需求验证->再需求捕获••••••  需求捕获,就是我们与客户在一起开研讨会

五、我们应当怎样做需求调研:需求研讨

前面我们探讨了业务研讨会应当怎样组织,下面我们再具体讨论一下我们应当怎样与客户讨论业务需求。如果说组织业务研讨会是项目经理的功底,那么讨论业务需求就是需求分析人员的功底。  以往我们常常认为,需求分析是一件最简单的事情。客户说他们需要做一个什么软件,有些什么功能,我们照着做就可以了,所谓的需求分析员就是需求的记录员。我要说,这是一个极大的错误,许多失败的软件项目,或者说软件项目中的需求问

[论文笔记] LLM大模型剪枝篇——1、调研

Attention Is All You Need But You Don’t Need All Of It For Inference of Large Language Models LLaMA2在剪枝时,跳过ffn和跳过full layer的效果差不多。相比跳过ffn/full layer,跳过attention layer的影响会更小。 跳过attention layer:7B/13B从

XILINX平台下LINUX DMA驱动调研

专栏目录 高质量文章导航-持续更新中-CSDN博客 基础概念 VA:virtual address称为虚拟地址, PA:physical address称为物理地址。 CPU通过地址来访问内存中的单元,如果CPU没有MMU,或者有MMU但没有启动,那么CPU内核在取指令或者访问内存时发出的地址(此时必须是物理地址,假如是虚拟地址,那么当前的动作无效)将直接传到CPU芯片的外部地址引脚上,

人机交互系统中的人脸讲话生成系统调研

《Human-Computer Interaction System: A Survey of Talking-Head Generation》 图片源:https://github.com/Yazdi9/Talking_Face_Avatar 目录 前言摘要一、背景介绍二、人机交互系统体系结构2.1. 语音模块2.2. 对话系统模块2.3. 人脸说话动作生成 三 人脸动作生成1 基

我的第一次项目需求调研

很幸运能在毕业的这一年参加一次项目需求调研与分析。 以前在课本和大学的课堂上理解到需求分析是整个项目的基础,需求分析的严谨直接决定项目能否验收。在参加调研之前,也对这个项目所处行业进行了比较深入的了解,理解一些该行业的规则。 需求调研开始的那天,因为抱着一颗想要完美自己的第一次需求调研的心,显得比较紧张,经理也许看出来了,就说:“就跟平时我们内部沟通一样的,我们公司跟客户公司关系比较铁,有过几次

北京市公共资源交易中心到访隆道调研交流

8月29日下午,北京市公共资源交易中心调研组在党委副书记朱永利带领下莅临隆道公司开展调研。隆道公司总裁吴树贵、总裁助理姚锐和市场总监张晶热情地接待来访的九位调研组成员,双方就招标采购数字化转型实践、人工智能技术研究和应用等话题展开深入交流。 近几年,人工智能技术不断突破发展,驱动新一轮科技革命和产业变革,成为各行各业持续关注的焦点。随着政策支持和市场需求的推动,各行业开始探索人工智能技术在实