Libvirt概念及实现原理是什么

发布时间:2021-11-22 18:55:00 作者:柒染
来源:亿速云 阅读:781

这篇文章给大家介绍Libvirt概念及实现原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、Libvirt简介

Libvirt是由Redhat开发的一套开源的软件工具,目标是提供一个通用和稳定的软件库来高效、安全地管理一个节点上的虚拟机,并支持远程操作。它由以下的模块组成:

基于可移植性和高可靠性的考虑,Libvirt采用C语言开发,但是也提供了对其他编程语言的绑定,包括Python,Perl,Ocaml,Ruby,Java和PHP。因此Libvirt的调用可以被集成到各种编程语言中,适应不同的环境。 Libvirt支持多种虚拟机,具体情况如下:

名称注释
LXC轻量级的Linux容器
OpenVZ基于Linux内核的轻量级Linux容器
KVM/QEMU基于Linux的类型2的VMM
Xen开源的类型1的VMM
User-mode Linux(UML)系统调用级别的Linux虚拟机
VirtualBoxOracle开发的类型2的VMM
Vmware ESX and GSXVmware虚拟化的服务器版本
Vmware Workstation and PlayerVmware虚拟化的桌面版本
Hyper-V微软开发的VMM
PowerVMIBM开发的VMM
Parallels WorkstationParallels为Mac开发的VMM
BhyveFreeBSD 9+上的VMM

二、Libvirt的结构

Libvirt屏蔽了不同虚拟化的实现,提供统一管理接口。用户只关心高层的功能,而VMM的实现细节,对于最终用户应该是透明的。Libvirt就作为VMM和高层功能之间的桥梁,接收用户请求,然后调用VMM提供的接口,来完成最终的工作。 Libvirt的层次结构如下: Libvirt概念及实现原理是什么

为了支持多种VMM,Libvirt采用了基于驱动的架构,如图下图所示。也就是说,每种VMM需要提供一个Driver和Libvirt进行通信来操控特定的VMM。

Libvirt概念及实现原理是什么

三、Libvirt的实现

Libvirt代码里所定义的主要对象如下图所示。 Libvirt概念及实现原理是什么

  1. VirConnectPtr:代表了一个特定VMM建立的连接。每一个基于Libvirt的应用程序都应该先提供一个URI来指定本地或远程的某个VMM,从而获得一个VirConnectPtr连接。比如xen+ssh://host-virt/代表了通过ssh连接一个在host-virt机器上运行的Xen VMM。拿到virConnectPtr连接后,应用程序就可以管理这个VMM的虚拟机和对应的虚拟化资源,比如存储和网络。

  2. VirDomainPtr:代表一个虚拟机,可能是激活状态或者仅仅已定义。

  3. VirNetworkPtr:代表一个网络

  4. VirStorageVolPtr:代表一个存储卷,通常被虚拟机当做块设备使用。

  5. VirStoragePoolPtr:代表一个存储池,用来分配和管理存储卷的逻辑区域。

1、本机之间的通信‘

在初始化的过程中,所有的驱动被枚举和注册。每一个驱动都会加载特定的函数为Libvirt API所调用。如下图所示,Application通过URI调用Public API,然后PublicAPI通过使用Driver提供的API接口调用正真的Driver实现。

Libvirt概念及实现原理是什么

2、远程主机之间的通信

Libvirt的目标是支持远程管理,所以到Libvirt的驱动的访问,都由Libvirt守护进程libvirtd处理,libvirtd被部署在运行虚拟机的节点上,通过RPC由对端的remote Driver管理,如下图所示。

Libvirt概念及实现原理是什么

在远程管理模式下,virConnectionPtr实际上连接了本地的remote Driver和远端的特定Driver。所有的调用都通过remote Driver先到达云端的libvirtd,libvirtd访问对应的Driver。

关于Libvirt概念及实现原理是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. # IT明星不是梦 # kubernetes调度器学习基础概
  2. Vue实现原理是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

libvirt

上一篇:如何理解企业级容器Registry开源项目Harbor架构

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》