openstack中虚拟大神libvirt库

libvirt 是一个强大的库,提供了一组虚拟机监控程序不可知的 API,用于安全管理运行在主机上的来宾操作系统。它最初为 Xen 设计,但现在支持多种虚拟机监控程序,如 Xen、QEMU 和 KVM。libvirt 提供了两种控制方式,本地和远程,以及多种语言绑定。通过 virsh 命令行工具和 Python 等接口,可以实现对虚拟机的创建、启动、暂停、恢复和销毁等操作。此外,libvirt 还支持虚拟网络和存储资源的管理。
摘要由CSDN通过智能技术生成

讲到向外扩展计算(比如云计算),libvirt 可能是您从未听说过的最重要的库之一。libvirt 提供一种虚拟机监控程序不可知的 API 来安全管理运行于主机上的来宾操作系统。libvirt 本身 不是一种工具,它是一种可以建立工具来管理来宾操作系统的 APIlibvirt 本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的 API。libvirt 起初是专门为 Xen 设计的一种管理 API,后来被扩展为可支持多个虚拟机监控程序。

首先让我们从用例模型视角来展开对 libvirt 的讨论,然后深入探究其架构和用途。libvirt 以一组 API 的形式存在,旨在供管理应用程序使用(见图 1 )。libvirt 通过一种特定于虚拟机监控程序的机制与每个有效虚拟机监控程序进行通信,以完成 API 请求。文章后面我将探讨如何通过 QEMU 来实现该功能。


1. libvirt 比较和用例模型 
 

图中还显示了 libvirt 所用术语对照。这些术语很重要,因为在对 API 命名时会用到它们。两个根本区别在于,libvirt 将物理主机称作节点,将来宾操作系统称作。这里需要注意的是,libvirt(及其应用程序)在宿主 Linux 操作系统(域 0)中运行。

控制方式

使用 libvirt,我们有两种不同的控制方式。第一种如  1所示,其中管理应用程序和域位于同一节点上。 在本例中,管理应用程序通过 libvirt 工作,以控制本地域。当管理应用程序和域位于不同节点上时,便产生了另一种控制方式。在本例中需要进行远程通信(参见  2)。该模式使用一种运行于远程节点上、名为 libvirtd 的特殊守护进程。当在新节点上安装 libvirt时该程序会自动启动,且可自动确定本地虚拟机监控程序并为其安装驱动程序(稍后讨论)。该管理应用程序通过一种通用协议从本地 libvirt 连接到远程 libvirtd。对于 QEMU,协议在 QEMU 监视器处结束。QEMU 包含一个监测控制台,它允许检查运行中的来宾操作系统并控制虚拟机(VM)各部分。


2. 使用 libvirtd 控制远程虚拟机监控程序


 

虚拟机监控程序支持

为支持各种虚拟机监控程序的可扩展性,libvirt 实施一种基于驱动程序的架构,该架构允许一种通用的 API 以通用方式为大量潜在的虚拟机监控程序提供服务。这意味着,一些虚拟机监控程序的某些专业功能在 API 中不可见。另外,有些虚拟机监控程序可能不能实施所有 API 功能,因而在特定驱动程序内被定义为不受支持。 3 展示了 libvirt API 与相关驱动程序的层次结构。这里也需要注意,libvirtd 提供从远程应用程序访问本地域的方式。


3. 基于驱动程序的 libvirt 架构
 

在撰写此文时,libvirt 为表 1 所列的虚拟机监控程序实现了驱动程序。随着新的虚拟机监控程序在开源社区出现,其他驱动程序无疑也将可用。


1. libvirt 支持的虚拟机监控程序 

虚拟机监控程序

描述

Xen(放码源代拟开虚机监视器,由剑桥大学开发。它打算在单个计算机上运行多达100个满特征的操作系统。

面向 IA-32,IA-64 和 PowerPC 970 架构的虚拟机监控程序

QEMU(虚拟机)

面向各种架构的平台仿真器

Kernel-based Virtual Machine (KVM)

Linux 平台仿真器

Linux Containers(LXC)

用于操作系统虚拟化的 Linux(轻量级)容器

OpenVZ

基于 Linux 内核的操作系统级虚拟化

VirtualBox

x86 虚拟化虚拟机监控程序

User Mode Linux

面向各种架构的 Linux 平台仿真器

Test

面向伪虚拟机监控程序的测试驱动器

Storage

存储池驱动器(本地磁盘,网络磁盘,iSCSI 卷)

libvirt 和虚拟 shell

上面已经介绍了 libvirt 的一些架构,接下来看一下如何使用 libvirt 虚拟化 API 的一些示例。首先介绍一种名为 virsh(虚拟 shell)的应用程序,它构建于 libvirt 之上。该 shell 允许以交互(基于 shell)方式使用多个 libvirt 功能。在本节中,我使用 virsh 演示了一些 VM 操作。

第一步是要定义域配置文件(如下面的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值