libvirt零知识学习1 —— libvirt简介

news2024/11/23 9:50:52

本文内容部分取自《KVM实战 —— 原理、进阶与性能调优》,非常好的一本书。

1. 概述

提到KVM的管理工具,首先必须要介绍的无疑是大名鼎鼎的libvirt。libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口。并且,一些常用的虚拟机管理工具(如virsh、virt-install、virt-manager、virt-viewer等)和云计算框架平台(如OpenStack、ZStack、OpenNebula、Eucayptus等)都在底层使用libvirt的应用程序接口。

libvirt是为了更方便地管理平台虚拟化技术而设计的开放源代码(开源)的应用程序接口、守护进程和管理工具。它不仅提供了对虚拟化客户机的管理,也提供了对虚拟化网络和存储的管理。libvirt支持多种虚拟化方案,既支持包括KVM、QEMU、Xen、VMWare、VirtualBox、Hyper-V等在内的平台虚拟化方案,也支持OpenVZ、LXC等Linyx容器虚拟化系统,还支持用户态Linux(UML)的虚拟化。libvirt是一个免费的开源的软件,使用的许可证是LGPL(GNU宽松的通用公共许可证),这表明使用libvirt库进行链接的软件不一定要选择开源和遵守GPL许可证。

和KVM、Xen等开源项目类似,libvirt也有自己的开发者社区,而且随着虚拟化、云计算等成为近年来的技术热点,libvirt项目的社区也比较活跃。目前,libvirt的开发主要由Redhat公司作为强大的支持。由于红帽公司在虚拟化方面逐渐偏向于支持KVM(而不是Xen),故libvirt对QEMU/KVM的支持是非常成熟和稳定的。当然,IBM、Novell等公司以及众多的个人开发者对libvirt项目的代码贡献量也是非常大的。

libvirt本身提供了一套较为稳定的C语言应用程序接口。目前,在其它一些流行的编程语言中也提供了对libvirt的绑定,在Python、Perl、Java、Ruby、PHP、OCaml等高级编程语言中已经有libvirt的程序库可以直接使用。libvirt还提供了为基于AMQP(高级消息队列协议)的消息系统(如Apache Qpid)提供QMF代理,这可以让云计算管理系统中宿主机与客户机、客户机与客户机之间的消息通信变得更易于实现。libvirt还为安全地远程管理虚拟客户机提供了加密和认证等安全措施。正是由于 libvirt拥有这些强大的功能和较为稳定的应用程序接口,而且其许可证(License)也比较宽松,所以libvirt的应用程序接口已被广泛地用在基于虚拟化和云计算的解决方案中,主要作为连接底层Hypervisor和上层应用程序的一个中间适配层。

libvirt对多种不同的Hypervisor的支持是通过一种基于驱动程序的架构来实现的。libvirt对不同的Hypervisor提供了不同的驱动:对Xen有Xen的驱动、对QEMU/KVM有QEMU驱动、对VMware有VMware驱动。在libvirt源代码中,可以很容易找到qemu_driver.c、xen_driver.c、xenapi_driver.c、VMware_driver.c、vbox_driver.c这样的驱动程序源代码文件。

libvirt作为中间适配层,可以让底层Hypervisor对上层用户空间的管理工具是完全透明的,因为libvirt屏蔽了底层各种Hypervisor的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)。通过libvirt,一些用户空间管理工具可以管理各种不同的Hypervisor和其上运行的客户机。

用户空间管理工具、libvirt、各种Hypervisor之间的基本交互框架如下图所示:

2. 重要概念

libvirt中涉及以下几个重要的概念,解释如下:

  • 结点(Node)

一个物理机器,上面可能运行着多个虚拟客户机。Hypervisor和Domain都运行在结点上。

  • 虚拟机监控器(Hypervisor)

Hypervisor也称虚拟机监控器(VMM),如KVM、Xen、VMware、Hyper-V等,是虚拟化中的一个底层软件层,它可以虚拟化一个结点,让其运行多个虚拟客户机(不同客户机可以有不同的配置和操作系统)。

  • 域(Domain)

3. 组成部分

libvirt主要由3部分组成,分别是:应用程序编程接口库、一个守护进程(libvirtd)和一个默认命令行管理工具(virsh)。

  • 应用程序接口

为其它虚拟机管理工具(如virsh、virt-manager等)提供虚拟机管理的程序库支持。

  • libvirtd守护进程

负责执行对结点上的域的管理工作。在用各种工具对虚拟机进行管理时,这个守护进程一定要处于运行状态中。守护进程可以分为两种:一种是root权限的libvirtd,其权限较大,可以完成所有支持的管理工作;另一种是普通用户权限的libvirtd,只能完成比较受限的管理工作。

  • virsh

virsh是libvirt项目中默认的对虚拟机进行管理的一个命令行工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle VM VirtualBox 安装 CentOS Linux

Virtual Box VirtualBox是一个强大的、面向个人用户或者企业用户的虚拟机产品,其支持x86以及AMD64/Intel64的计算架构,功能特性丰富、性能强劲,支持GPL开源协议,其官方网址是www.virtualbox.org,由Oracle开源&#xf…

Spring自动装配

自动装配的三种方式一、xml方式自动装配二、 按类型自动装配三、使用注解一、xml方式自动装配 byName: 会自动在容器上下文查找,和自己对象set方法后面的值对应的bean id(通过id匹配) //实体类 Data public class Pepole {private String n…

GameFrameWork框架(Unity3D)使用笔记(八) 实现场景加载进度条

前言: 游戏在转换场景的时候,需要花费时间来加载相关的资源。而这个过程往往因为游戏场景的规模和复杂度以及玩家电脑配置的原因花费一小段时间(虽然这个项目里用不到)。 所以,如果这一小段时间,画面就卡在…

计算机网络 —— TCP篇 三次握手与四次挥手

计算机网络系列文章目录 TCP篇 三次握手四次挥手 socket 文章目录计算机网络系列文章目录前言4.1 tcp三次握手与四次挥手面试题4.1.1 TCP的基本认识TCP头部为什么需要tcp,tcp工作在哪一层什么是tcp什么是tcp连接如何唯一确定一个tcp连接(tcp&udp比较) UDP 和 T…

机器学习【西瓜书/南瓜书】--- 第1章绪论+第二章模型选择和评估(学习笔记+公式推导)

【西瓜书南瓜书】task01: 第1、2章(2天) 第一章 绪论 主要符号表 下述这些符号在本书中将频繁的使用,务必牢记于心各个特殊符号所具有的的含义 🌟对上述部分定义做一下解释: 向量有维度,其中的元素是有…

路由器NAT典型配置

1.组网需求内部网络中IP地址为10.110.10.0/24的用户可以访问Internet,其它网段的用户则不能访问Internet。外部的PC可以访问内部的服务器。公司具有202.38.160.100/24至202.38.160.105/24六个合法的IP地址。选用202.38.160.100作为公司对外的IP地址,WWW服…

stm32平衡小车(2)-----编码器电机驱动

前言:之前做arduino小车的时候使用的是L298N电机,没有用过编码器,这次第一次用编码器,还是比较懵圈,记录一下学的整个过程。 1.编码器的简介 霍尔编码器是一种通过磁电转换将输出轴上的机械几何位移量转换成脉冲或数字…

下载整个网站

使用Cyotek WebCopy下载整个网站一、下载网站复制所需软件:二、打开Cyotek WebCopy,然后下载网站系统环境:win10 所需工具:Cyotek WebCopy 一、下载网站复制所需软件: https://www.cyotek.com/cyotek-webcopy/downloa…

3-3存储系统-高速缓冲存储器Cache

文章目录一.概述二.Cache与主存的映射方式1.直接映射2.全相联映射3.组相联映射三.Cache中主存块的替换算法1.随机算法RAND2.先进先出算法FIFO3.最近最少使用算法LRU4.最不经常使用算法LFU四.Cache写策略1.写命中2.写不命中一.概述 高速缓冲存储器(Cache&#xff09…

labelme使用labelme2voc.py忽略部分标签生成VOC/coco类型数据集(Ignore a label in json file)

一:背景和问题描述这是一个比较小众,且查找全网未有答案的问题。在使用labelme标注数据之后,生成了json文件。在利用json文件生成可用于训练分割模型的voc或者coco数据集时,可以使用labelme中自带的示例文件labelme2voc.py&#x…

第二章.线性回归以及非线性回归—弹性网

第二章.线性回归以及非线性回归 2.14 弹性网(Elastic Net) Elastic Net是一种使用L1和L2作为正则化矩阵的线性回归模型,这种组合用于只有很少的权重非零的稀疏模型。 当多个特征和另一个特征相关时,弹性网络非常有用,L…

C++ STL简介

文章目录前言一、STL概述二、STL历史三、STL六大组件功能与运用前言 对C/C学习感兴趣的可以看看这篇文章哦:C/C教程 一、STL概述 在软件行业,一直都希望建立一种可以重复运用的东西和一种可以制造出“可重复使用的东西”的方法,来让程序员…

什么是基于模型设计(MBD)?

MBD(Model based Design)是什么? 随着嵌入式行业的快速发展,MBD作为解决专家紧缺、国内解决方案匮乏的新软件开发方式备受关注。 MBD是一种通过建模自动生成代码的(Auto-generation Code)开发方式。 可以说它与如何用传统的C/C等计…

CANoe-仿真总线上的红蓝线、“CANoe DEMO“ license下的软件限制

1、仿真总线上的红蓝线 最近有人问我一个问题,就是Simulation Setup界面下的仿真网络里,有两条线:红线、蓝线。它们表示什么意思呢? 有人可能首先想到:会不会是代表CAN总线的两条物理连线? 那LIN网络呢?LIN网络属于单条线,它在仿真网络里应该显示一条线咯? LIN总线也…

ThreadLocal 详解

ThreadLocal 详解 1. ThreadLocal简介 1.1 官方介绍 /*** This class provides thread-local variables. These variables differ from* their normal counterparts in that each thread that accesses one (via its* {code get} or {code set} method) has its own, indep…

【go语言http2.0代码实现】

go语言之http2.0Serverclient之前主要说的是基于http1.1的。然后因为http1.1存在的局限性,现在http2.0越来越流行,这里来根据go的源码来分析一下http2.0的实现。首先需要注意的是http2.0是在https的基础之上,因此推荐有https的基础或者看前面…

如何在Microsoft Teams中发布作业

之前我们介绍了在Microsoft Teams中收发批改作业的基础使用方法。今天我们会在“发布作业”这个方面上进行详细介绍。 首先我们进入Teams的“作业”点击“创建”。 选择“作业”。 可以通过“附加”的形式发布已创建的作业文件。 可以通过选择OneDrive的形式来选取里面的文件发…

BOSS直聘依然面临监管和估值过高的风险

来源:猛兽财经 作者:猛兽财经 BOSS直聘是中国重新开放和经济复苏的受益者 由于中国已经全面放开,所以,全球各地的分析师们正在上调对中国2023年经济增长的预测。 比如CNBC的文章就提到摩根士丹利(MS)的经…

Pandas 数据结构 - Series

前言Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。Series 由索引(index)和列组成,函数如下:pandas.Series( data, index, dtype, name, copy)参…

基于springboot,vue电影院售票系统

开发工具:IDEA服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7系统用户前台和管理后台两部分,项目采用前后端分离前端技术:vue elementUI服务端技术:springbootmybatis项目功…