Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1379621
  • 博文数量: 370
  • 博客积分: 10654
  • 博客等级: 中将
  • 技术积分: 4396
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 15:44
文章分类

全部博文(370)

文章存档

2012年(36)

2011年(195)

2010年(139)

分类: 虚拟化

2011-04-11 13:57:07

 一、什么是libvirt

答: libvirt是一套免费、开源的支持Linux下主流虚拟化工具的C函数库,libvirt本身不是一种工具,它是一种可以建立工具来管理来宾操作系统的 API,官方描述为:

libvirt is:

  * A toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes).(提供给最新linux(其他操作系 统)的虚拟化功能的工具包)

   * Free software available under the GNU Lesser General Public License.  (遵循GUN公共许可的免费软件)

  * A long term stable C API  (一个长期稳定的C语言API) 

* A set of bindings for common languages  (一组通用语言的绑定)

  * A CIM provider for the DMTF virtualization schemaCIM提供的虚拟化架构的DMTF( 分布式管理工作组))

二、libvirt的主要目标时什么?

答:为包括Xen在内的各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式和hypervisor(管理工具),避免学习、使用不同hypervisor的特定工具。

三、libvirt的架构及工作方式怎样的?

答:没有使用libvirt的虚拟机管理方式如下图左图:


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------



libvirt的控制方式有两种:


1)管理应用程序和域位于同一节点上。管理应用程序通过 libvirt 工作,以控制本地域。(如上图右图)


2)管理应用程序和域位于不同节点上。该模式使用一种运行于远程节点上、名为 libvirtd的特殊守护进程。当在新节点上安装 libvirt 时该程序会自动启动,且可自动确定本地虚拟机监控程序并为其安装驱动程序。该管理应用程序通过一种通用协议从本地 libvirt 连接到远程 libvirtd。(如下图)

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

libvirt的基本架构是: libvirt 实施一种基于驱动程序的架构,该架构允许一种通用的 API 以通用方式为大量潜在的虚拟机监控程序提供服务。(如下图所示)

--------------------------------------------------------------------------------

-------------------------------------------------------------------------------



四、libvirt现在支持哪些虚拟机?

答:支持以下虚拟机

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

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

Kernel-based Virtual Machine (KVM) Linux 平台仿真器

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

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

VirtualBox x86 虚拟化虚拟机监控程序

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

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

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


五、libvirt的主要功能有哪些?

答:

•虚拟机管理:包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU

•远程机器支持:只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。支持多种网络远程传输,使用最简单的SSH,不需要额外配置工作。比 如:运行了libvirt,而且允许SSH访问,下面的命令行就可以在远程的主机上使用virsh命令行。 (可参考 )

virsh --connect qemu+ssh://

•存储管理:任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件映像(qcow2vmdkraw等)、挂接NFS共享、列出现有的LVM卷组、 创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享,等等等等。因为libvirt可以远程工作,所有这些都可以通过远程主机使 用。(可参考

•网络接口管理:任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。可以列出现有的接口卡,配置、创建接口,以及桥接、vlan和关联设备等,通过netcf都可以支持。

•虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。Libvirt虚拟网络使用防火墙规则作为路由器,让虚拟机可以透明访问主机的网络。

六、libvirt可以和和哪些语言绑定?

答: libvirt 库用 C(支持 C++)实现,且包含对 Python 的直接支持。不过它还支持大量语言绑定。目前已经对 RubyJava™ 语言,Perl OCaml 实施了绑定。在从 C#调用 libvirt 方面我们已做了大量工作。

七、基于libvirt有哪些应用程序?

答: virsh 它是一种虚拟 shell

virt-install 应用程序,它可用于从多个操作系统发行版供应新域。

virt-clone 可用于从另一个 VM 复制 VM(既包括操作系统复制也包括磁盘复制)。

virt-manager 一些高级应用程序包括多用途桌面管理工具

virt-viewer 安全连接到 VM 图形控制台的轻量级工具 。

八、怎样安装libvirt

1、在linux上安装:

1)编译源码包:

下载源码包

• 解压源码包:

$ gunzip -c libvirt-x.x.x.tar.gz | tar xvf -

$ cd libvirt-x.x.x

$ ./configure

• 编译安装:

$ ./configure [possible options]

$ make

$ sudomake install

2git安装

$ git clone git://

$ ./autogen.sh --prefix=$HOME/usr --enable-compile-warnings=error

$ make

$ sudo make install


2、在windows上安装:直接下载安装可执行程序,地址



九、libvirt API简介:

答:高级 libvirt API 可划分为 5 API 部分:虚拟机监控程序连接 API、域 API、网络 API、存储卷 API 以及存储池 API

为给定虚拟机监控程序创建连接后会产生所有 libvirt 通信。该连接为所有其他要使用的 API 提供路径。在 C API 中,该行为通过 virConnectOpen调用(以及其他进行认证的调用)提供。这些函数的返回值是一个 virConnectPtr对象,它代表到虚拟机监控程序的一个连接。该对象作为所有其他管理功能的基础,是对给定虚拟机监控程序进行并发 API 调用所必需的语句。重要的并发调用是 virConnectGetCapabilitiesvirNodeGetInfo,前者返回虚拟机监控程序和驱动程序的功能,后者获取有关节点的信息。该信息以 XML 文档的形式返回,这样通过解析便可了解可能发生的行为。

进入虚拟机监控程序后,便可以使用一组 API 调用函数重复使用该虚拟机监控程序上的各种资源。virConnectListDomains API 调用函数返回一列域标识符,它们代表该虚拟机监控程序上的活动域。

API 实现大量针对域的函数。要探究或管理域,首先需要一个 virDomainPtr对象。您可通过多种方式获得该句柄(使用 IDUUID 或域名)。继续来看重复域的例子,您可以使用该函数返回的索引表并调用 virDomainLookupByID来获取域句柄。有了该域句柄,就可以执行很多操作,从探究域(virDomainGetUUIDvirDomainGetInfovirDomainGetXMLDescvirDomainMemoryPeek)到控制域(virDomainCreatevirDomainSuspendvirDomainResumevirDomainDestroyvirDomainMigrate)。


您还可使用 API 管理并检查虚拟网络和存储资源。建立了 API 模型之后,需要一个virNetworkPtr对象来管理并检查虚拟网络,且需要一个 virStoragePoolPtr(存储池)或 virStorageVolPtr(卷)对象来管理这些资源。

API 还支持一种事件机制,您可使用该机制注册为在特定事件(比如域的启动、中止、恢复或停止)发生时获得通知




阅读(824) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~