资讯专栏INFORMATION COLUMN

OpenStack设计与实现(二)Libvirt简介与实现原理

zzir / 1806人阅读

摘要:一简介是由开发的一套开源的软件工具,目标是提供一个通用和稳定的软件库来高效安全地管理一个节点上的虚拟机,并支持远程操作。用户只关心高层的功能,而的实现细节,对于最终用户应该是透明的。本机之间的通信在初始化的过程中,所有的驱动被枚举和注册。

一、Libvirt简介

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

一个库文件,实现管理接口

一个守护进程(libvirtd)

一个命令行工具(virsh)

基于可移植性和高可靠性的考虑,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虚拟机|
|VirtualBox|Oracle开发的类型2的VMM|
|Vmware ESX and GSX|Vmware虚拟化的服务器版本|
|Vmware Workstation and Player|Vmware虚拟化的桌面版本|
|Hyper-V|微软开发的VMM|
|PowerVM|IBM开发的VMM|
|Parallels Workstation|Parallels为Mac开发的VMM|
|Bhyve|FreeBSD 9+上的VMM|

二、Libvirt的结构

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

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

三、Libvirt的实现

Libvirt代码里所定义的主要对象如下图所示。

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

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

VirNetworkPtr:代表一个网络

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

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

1、本机之间的通信‘

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

2、远程主机之间的通信

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

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

原文链接: http://blog.csdn.net/xingjiarong/article/details/50545826

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25157.html

相关文章

  • OpenStack虚拟云桌面在携程呼叫中心的应用

    摘要:一为什么要使用虚拟云桌面背景携程呼叫中心,即服务联络中心,是携程的核心部门之一,现有几万员工。他们全年小时为全球携程用户提供服务。为此,携程正式引入了虚拟云桌面。携程云桌面现状携程云桌面现已部署上海南通如皋合肥信阳穆棱六个呼叫中心。 编者:本文为刘科在第六期【携程技术微分享】中的分享内容。在携程技术中心(微信号ctriptech)微信后台回复【云桌面】,可加入微信交流群,和关注云桌面的...

    EsgynChina 评论0 收藏0
  • OpenStack虚拟云桌面在携程呼叫中心的应用

    摘要:一为什么要使用虚拟云桌面背景携程呼叫中心,即服务联络中心,是携程的核心部门之一,现有几万员工。他们全年小时为全球携程用户提供服务。为此,携程正式引入了虚拟云桌面。携程云桌面现状携程云桌面现已部署上海南通如皋合肥信阳穆棱六个呼叫中心。 编者:本文为刘科在第六期【携程技术微分享】中的分享内容。在携程技术中心(微信号ctriptech)微信后台回复【云桌面】,可加入微信交流群,和关注云桌面的...

    biaoxiaoduan 评论0 收藏0
  • 虚拟化实践

    摘要:本文并非虚拟化的科普文章,主要将我们在私有云实践过程中的一些思想和遇到的问题拿出来跟大家讨论分享。我们虚拟化实践包含了传统的基于协议的以及目前流行的。 引言 这里的虚拟化等于私有云。本文并非虚拟化的科普文章,主要将我们在私有云实践过程中的一些思想和遇到的问题拿出来跟大家讨论分享。我们虚拟化实践包含了传统的基于libvirt协议的KVM以及目前流行的docker。 为什么要虚拟化 虚拟化...

    newsning 评论0 收藏0
  • Virtlet 介绍—— 或许是 NFV 新方向?

    摘要:该公司刚刚宣布了一个计划,意在取代现有的发行版。这甚至可能帮找到一个新方向。为了解决这个问题,我们在上增加了一个名为的新功能。总体而言,整个过程呈现如下建立包括,以及一个的基础架构。 这是 TCP CLOUD 联合创始人 & 前 CTO Jakub Pavlik 于 2017 年 7 月 9 日发布于 www.mirantis.com 的文章。本文主要介绍了 Virtlet 及其未来与...

    XUI 评论0 收藏0
  • OpenStack、桉树、vCloud Director对比

    摘要:使这个平台使用更方便的较大的优势之一是全面兼容亚马逊。因此,基于亚马逊的所有的脚本和软件产品都可以轻松地为你的私有云部署。此外,商业版提供了广泛的功能管理程序工具兼容亚马逊和集成等等。 考虑到云计算有极大的潜力提高效率,显著节省成本,实现可升级的基础设施和高性能以及安全的数据存储,云计算仍然是目前IT领域最热门的话题之一。 然而,选择合适的云平台是很困难的。这些云平台都有支持意见和反对意见。...

    Sike 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<