LIULIANG

libvirt库简介

一、什么是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 schema(CIM提供 虚拟化 架构 的DMTF( 分布式管理工作组))

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

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

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

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





libvirt的控制方式有两种:

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

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

 


 


 


 

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

 


 

 


 

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

答:支持以下虚拟机

     Xen 面向 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的主要功能有哪些?

答:

  • 虚拟机管理:包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。
  • 远程机器支持:只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。支持多种网络远程传输,使用最简单的SSH,不需要额外配置工作。比 如:example.com运行了libvirt,而且允许SSH访问,下面的命令行就可以在远程的主机上使用virsh命令行。 (可参考 http://libvirt.org/remote.html )

         virsh --connect qemu+ssh://root@example.com/system

  • 存储管理:任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件映像(qcow2、vmdk、raw等)、挂接NFS共享、列出现有的LVM卷组、 创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享,等等等等。因为libvirt可以远程工作,所有这些都可以通过远程主机使 用。(可参考http://libvirt.org/storage.html
  • 网络接口管理:任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。可以列出现有的接口卡,配置、创建接口,以及桥接、vlan和关联设备等,通过netcf都可以支持。
  • 虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。Libvirt虚拟网络使用防火墙规则作为路由器,让虚拟机可以透明访问主机的网络。

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

答:       libvirt 库用 C (支持 C++ )实现,且包含对 Python 的直接支持。不过它还支持大量语言绑定。目前已经对 Ruby、Java™ 语言,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
    $ sudo make install
  •  
    2)git安装

    $ git clone git://libvirt.org/libvirt.git

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

           $ make

            $ sudo make install



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


    http://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe




 

九、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 对象。您可通过多种方式获得该句柄(使用 ID、UUID 或域名)。继续来看重复域的例子,您可以使用该函数返回的索引表并调用 virDomainLookupByID 来获取域句柄。有了该域句柄,就可以执行很多操作,从探究域(virDomainGetUUIDvirDomainGetInfovirDomainGetXMLDescvirDomainMemoryPeek )到控制域(virDomainCreatevirDomainSuspendvirDomainResumevirDomainDestroyvirDomainMigrate )。

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

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


参考资源:

http://www.ibm.com/developerworks/cn/linux/l-libvirt/

http://libvirt.org/

http://baike.baidu.com/view/1592349.htm

http://blog.csdn.net/MagBryan/archive/2010/03/22/5403907.aspx


转自:

http://blog.csdn.net/mushubingfeng/article/details/6307914

posted on 2012-05-22 23:24 BIG森林 阅读(1225) 评论(0)  编辑 收藏 引用 所属分类: libvirt


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜