﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-LIULIANG-随笔分类-libvirt</title><link>http://www.cppblog.com/LIULIANG/category/19353.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 23 May 2012 08:50:06 GMT</lastBuildDate><pubDate>Wed, 23 May 2012 08:50:06 GMT</pubDate><ttl>60</ttl><item><title>虚拟机</title><link>http://www.cppblog.com/LIULIANG/archive/2012/05/23/175882.html</link><dc:creator>BIG森林</dc:creator><author>BIG森林</author><pubDate>Wed, 23 May 2012 05:35:00 GMT</pubDate><guid>http://www.cppblog.com/LIULIANG/archive/2012/05/23/175882.html</guid><wfw:comment>http://www.cppblog.com/LIULIANG/comments/175882.html</wfw:comment><comments>http://www.cppblog.com/LIULIANG/archive/2012/05/23/175882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/LIULIANG/comments/commentRss/175882.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/LIULIANG/services/trackbacks/175882.html</trackback:ping><description><![CDATA[<h1 id="lemmaTitle-1132" class="title"><span style="font-size: 10pt">虚拟机（Virtual Machine）指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。<br /><span class="headline-content">定义</span>　　通过<a href="http://baike.baidu.com/view/37.htm" target="_blank"><font color="#136ec2">软件</font></a>模拟的具有完整<a href="http://baike.baidu.com/view/25278.htm" target="_blank"><font color="#136ec2">硬件</font></a>系统功能的、运行在一个完全<a href="http://baike.baidu.com/view/292853.htm" target="_blank"><font color="#136ec2">隔离</font></a>环境中的完整<a href="http://baike.baidu.com/view/1130583.htm" target="_blank"><font color="#136ec2">计算机系统</font></a>。 
<div class="bpctrl"></div>
<h2 class="headline-1 bk-sidecatalog-title"><span class="headline-content">用途</span></h2>　　通过虚拟机软件，你可以在一台<a href="http://baike.baidu.com/view/2505.htm" target="_blank"><font color="#136ec2">物理</font></a>计算机上模拟出一台或多台虚拟的计算机，这些虚拟机完全就像真正的计算机那样进行工作，例如你可以安装<a href="http://baike.baidu.com/view/880.htm" target="_blank"><font color="#136ec2">操作系统</font></a>、安装<a href="http://baike.baidu.com/view/330120.htm" target="_blank"><font color="#136ec2">应用程序</font></a>、访问<a href="http://baike.baidu.com/view/3487.htm" target="_blank"><font color="#136ec2">网络</font></a>资源等等。对于你而言，它只是运行在你物理计算机上的一个应用程序，但是对于在虚拟机中运行的应用程序而言，它就是一台真正计算机。因此，当你在虚拟机中进行<a href="http://baike.baidu.com/view/5194259.htm" target="_blank"><font color="#136ec2">软件评测</font></a>时，可能系统一样会崩溃；但是，崩溃的只是虚拟机上的操作系统，而不是物理计算机上的操作系统，并且，使用虚拟机的&#8220;Undo&#8221;（恢复）功能，你可以马上恢复虚拟机到安装软件之前的状态。 
<div class="bpctrl"></div>
<h2 class="headline-1 bk-sidecatalog-title"><span class="headline-content">虚拟系统与虚拟机区别</span></h2>　　虚拟系统其实以Prayaya迅影V3虚拟系统为代表的，通过生成现有操作系统的全新虚拟镜像，它具有真实windows系统完全一样的功能，进入虚拟系统后，所有操作都是在这个全新的独立的虚拟系统里面进行，可以独立安装运行软件，保存数据，拥有自己的独立桌面，不会对真正的系统产生任何影响 ，而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的<a href="http://baike.baidu.com/view/1132.htm" target="_blank"><font color="#136ec2">虚拟机</font></a>（<a href="http://baike.baidu.com/view/301083.htm" target="_blank"><font color="#136ec2">Vmware</font></a>，<a href="http://baike.baidu.com/view/1047853.htm" target="_blank"><font color="#136ec2">VirtualBox</font></a>，<a href="http://baike.baidu.com/view/612302.htm" target="_blank"><font color="#136ec2">Virtual pc</font></a>）不同，虚拟系统不会降低电脑的性能，启动虚拟系统不需要像启动<a href="http://baike.baidu.com/view/4821.htm" target="_blank"><font color="#136ec2">windows</font></a>系统那样耗费时间，运行程序更加方便快捷。 <br /><br />主流的虚拟机软件<br /><span class="headline-content">Oracle xVM VirtualBox</span>　　 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle VM VirtualBox 是由Sun Microsystems公司出品的软件（sun 于 2010年被Oracle收购），原由德国innotek公司开发。2008年2月12日，Sun Microsystems宣布将以购买股票的方式收购德国Innotek软件公司，新版不再叫做Innotek VirtualBox，而改叫Sun xVM VirtualBox。2010年1月21日，欧盟终于同意Oracle收购Sun，VirtualBox再次该名变成 Oracle VM VirtualBox。VirtualBox是开源软件。目前VirtualBox 3.2.0支持的操作系统包括：Debian， Fedora， Linux， Mac OS X(Intel)， Mandriva， OpenSolaris， PCLiunxOS， Red Hat， SUSE Linux， Solaris 10， Ubuntu， Windows， Xandros， openSUSE等。Oracle VM VirtualBox 支持的客户端操作系统包括：从 3.1到Vista的所有版本的Windows、Linux 2.2、2.4和 2.6内核、Solaris x86、OS/2、、OpenBSD、 Netware 、FreeBSD 和 DOS 。在 2007 年 1 月，InnoTek 以 GNU General Public License (GPL) 释出 VirtualBox，并提供二进位版本及开放源码版本的代码。<br /><br />VMware Workstation<br />　　不需要重开机就能在同一台电脑使用好几个OS.VMware主要的功能有: 　　1.不需要分区或重开机就能在同一台PC上使用两种以上的操作系统. 　　2.完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料. 　　3.不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制贴上功能. 　　4.有复原(Undo)功能. 　　5.能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等.<br /><br />Virtual PC<br />　　它能够让你在一台 PC 上同时运行多个操作系统，使用它你不用重新启动 　　系统，只要点击鼠标便可以打开新的操作系统或是在操作系统之间进行切 　　换。安装该软件后不用对硬盘进行重新分区或是识别，就能够非常顺利地 　　运行你已经安装的多个操作系统，而且还能够使用拖放功能在几个虚拟 P C 之间共享文件和应用程序。<br /><br /><br />
<h3 class="headline-2 bk-sidecatalog-title"><span class="headline-content">VMware<font size="2">几个概念</font></span></h3>　　有几个概念要说明： 
<div class="spctrl"></div>　　1. VM（Virtual Machine）&#8212;&#8212;虚拟机，指由Vmware模拟出来的一台虚拟的计算机，也即逻辑上的一台计算机 
<div class="spctrl"></div>　　2.HOST&#8212;&#8212;指物理存在的计算机，Host&#8242;s OS指HOST上运行的操作系统 
<div class="spctrl"></div>　　3. Guest OS&#8212;&#8212;指运行在VM上的操作系统。例如在一台安装了Windows NT的计算机上安装了Vmware，那么，HOST指的是安装Windows NT的这台计算机，其Host&#8242;s OS为Windows NT。VM上运行的是Linux，那么Linux即为Guest OS。 <br /><br /></span></h1><img src ="http://www.cppblog.com/LIULIANG/aggbug/175882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/LIULIANG/" target="_blank">BIG森林</a> 2012-05-23 13:35 <a href="http://www.cppblog.com/LIULIANG/archive/2012/05/23/175882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>libvirt库简介 </title><link>http://www.cppblog.com/LIULIANG/archive/2012/05/22/175822.html</link><dc:creator>BIG森林</dc:creator><author>BIG森林</author><pubDate>Tue, 22 May 2012 15:24:00 GMT</pubDate><guid>http://www.cppblog.com/LIULIANG/archive/2012/05/22/175822.html</guid><wfw:comment>http://www.cppblog.com/LIULIANG/comments/175822.html</wfw:comment><comments>http://www.cppblog.com/LIULIANG/archive/2012/05/22/175822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/LIULIANG/comments/commentRss/175822.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/LIULIANG/services/trackbacks/175822.html</trackback:ping><description><![CDATA[<div></div><div><span style="color: #ff0000;"><span style="font-size: large;">一、什么是libvirt？</span>  </span>   <p><span style="font-size: medium;">答： libvirt是一套免费、开源的支持<a href="http://baike.baidu.com/view/1634.htm" target="_blank">Linux</a>  下主流虚拟化工具的C函数库，libvirt<em>本身</em>  不是一种工具，                 它是一种可以建立工具来管理来宾操作系统的 API，官方描述为：</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libvirt is: </span>  </p> <p><span style="font-size: medium;">　　&nbsp;&nbsp;&nbsp;&nbsp; * A toolkit to interact with  the virtualization capabilities of recent versions of Linux (and other  OSes).（提供给最新linux（其他操作系&nbsp;&nbsp;&nbsp;&nbsp; 统）的虚拟化功能的工具包） </span>  </p> <p><span style="font-size: medium;">　　&nbsp;&nbsp;&nbsp;&nbsp; * Free software available under the GNU Lesser General Public License. 　（遵循GUN公共许可的免费软件）</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp; 　&nbsp;&nbsp;&nbsp;&nbsp; * A long term stable C API 　（一个长期稳定的C语言API）　</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; * A set of bindings for common languages 　（一组通用语言的绑定）</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp; 　&nbsp;&nbsp;&nbsp;&nbsp; * A CIM provider for the DMTF virtualization schema（<span id="result_box"><span title="点击可显示其他翻译">CIM提供</span>  <span title="点击可显示其他翻译">的</span>  <span title="点击可显示其他翻译">虚拟化</span> <span title="点击可显示其他翻译">架构</span> <span title="点击可显示其他翻译">的DMTF（</span>  </span>  分布式管理工作组））</span>  </p> <p><span style="color: #ff0000;"><span style="font-size: large;">二、libvirt的主要目标时什么？</span>  </span>  </p> <p><span style="font-size: medium;">答：为包括<a href="http://baike.baidu.com/view/697213.htm" target="_blank">Xen</a>  在内的各种虚拟化工具提供一套方便、可靠的编程接口，用一种单一的方式管理多种不同的虚拟化提供方式和hypervisor（管理工具），避免学习、使用不同hypervisor的特定工具。</span>  </p> <p><span style="font-size: medium;">三、libvirt的架构及工作方式怎样的？</span>  </p> <p><span style="font-size: medium;">答：没有使用libvirt的虚拟机管理方式如下图左</span>  <span style="font-size: medium;">图：</span> </p> <p><span style="font-size: medium;"> </span></p><hr /> <br />   <p><span style="font-size: medium;"><br />  </span>  </p> <p><span style="font-size: medium;"> </span>  </p> <p><span style="font-size: medium;"><img src="http://www.ibm.com/developerworks/cn/linux/l-libvirt/figure1.gif" alt="" height="226" width="498" />  </span>  </p> <p><span style="font-size: medium;"> </span></p><hr />    <p><span style="font-size: medium;">libvirt的控制方式有两种：</span> </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; 1）管理应用程序和域位于同一节点上。管理应用程序通过 libvirt 工作，以控制本地域。（如上图右图）</span> </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2）管理应用程序和域位于不同节点上。该模式使用一种运行于远程节点上、名为 <em>libvirtd</em>   的特殊守护进程。当在新节点上安装 libvirt 时该程序会自动启动，且可自动确定本地虚拟机监控程序并为其安装驱动程序。该管理应用程序通过一种通用协议从本地 libvirt 连接到远程 libvirtd。（如下图）</span> </p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p><span style="font-size: medium;"><br />  </span>  </p> <p><img src="file:///tmp/moz-screenshot.png" alt="" />  <img src="file:///tmp/moz-screenshot-1.png" alt="" />  </p> <p><img src="http://www.ibm.com/developerworks/cn/linux/l-libvirt/figure2.gif" alt="" height="245" width="498" /> </p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p><span style="font-size: medium;">libvirt的基本架构是：</span> <span style="font-size: medium;">libvirt 实施一种基于驱动程序的架构，该架构允许一种通用的 API 以通用方式为大量潜在的虚拟机监控程序提供服务。（如下图所示）</span> </p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p><img src="http://www.ibm.com/developerworks/cn/linux/l-libvirt/figure3.gif" alt="" height="306" width="265" /> </p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p><span style="color: #ff0000;"><span style="font-size: large;">四、libvirt现在支持哪些虚拟机？</span>  </span>  </p> <p><span style="font-size: medium;">答：支持以下虚拟机</span>  </p> <table style="width: 742px; height: 234px;" summary="libvirt 支持的虚拟机监控程序" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td><span style="font-size: medium;">&nbsp; &nbsp;&nbsp; Xen</span>  </td> <td><span style="font-size: medium;">面向 IA-32，IA-64 和 PowerPC 970 架构的虚拟机监控程序</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp; &nbsp;&nbsp; QEMU</span>  </td> <td><span style="font-size: medium;">面向各种架构的平台仿真器</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp; &nbsp;&nbsp; Kernel-based Virtual Machine (KVM)</span>  </td> <td><span style="font-size: medium;">Linux 平台仿真器</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp; Linux Containers（LXC）</span>  </td> <td><span style="font-size: medium;">用于操作系统虚拟化的 Linux（轻量级）容器</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp;&nbsp;&nbsp; OpenVZ</span>  </td> <td><span style="font-size: medium;">基于 Linux 内核的操作系统级虚拟化</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp;&nbsp;&nbsp; VirtualBox</span>  </td> <td><span style="font-size: medium;">x86 虚拟化虚拟机监控程序</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp;&nbsp;&nbsp; User Mode Linux</span>  </td> <td><span style="font-size: medium;">面向各种架构的 Linux 平台仿真器</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp;&nbsp;&nbsp; Test</span>  </td> <td><span style="font-size: medium;">面向伪虚拟机监控程序的测试驱动器</span>  </td> </tr> <tr> <td><span style="font-size: medium;">&nbsp;&nbsp;&nbsp; Storage</span>  </td> <td><span style="font-size: medium;">存储池驱动器（本地磁盘，网络磁盘，iSCSI 卷）</span>  </td> </tr> </tbody> </table> <p><span style="font-size: large;"><span style="color: #ff0000;">五、libvirt的主要功能有哪些？</span>  </span>  </p> <p><span style="font-size: medium;">答：</span>  </p> <ul><li><span style="font-size: medium;">虚拟机管理：包括不同的领域生命周期操作，比如：启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作，包括：磁盘、网卡、内存和CPU。</span>  </li><li><span style="font-size: medium;">远程机器支持：只要机器上运行了libvirt  daemon，包括远程机器，所有的libvirt功能就都可以访问和使用。支持多种网络远程传输，使用最简单的SSH，不需要额外配置工作。比 如：example.com运行了libvirt，而且允许SSH访问，下面的命令行就可以在远程的主机上使用virsh命令行。 (可参考 <a free="" title="http://libvirt.org/remote.html" rel="nofollow" href="http://libvirt.org/remote.html">http://libvirt.org/remote.html</a>  ) </span>  </li></ul> <p><span style="font-size: medium;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; virsh --connect qemu+ssh://root@example.com/system</span>  </p> <ul><li><span style="font-size: medium;">存储管理：任何运行了libvirt  daemon的主机都可以用来管理不同类型的存储：创建不同格式的文件映像（qcow2、vmdk、raw等）、挂接NFS共享、列出现有的LVM卷组、 创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享，等等等等。因为libvirt可以远程工作，所有这些都可以通过远程主机使 用。（可参考<a free="" title="http://libvirt.org/storage.html" rel="nofollow" href="http://libvirt.org/storage.html">http://libvirt.org/storage.html</a>  ）</span>  </li><li><span style="font-size: medium;">网络接口管理：任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。可以列出现有的接口卡，配置、创建接口，以及桥接、vlan和关联设备等，通过netcf都可以支持。</span>  </li><li><span style="font-size: medium;">虚拟NAT和基于路由的网络：任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。Libvirt虚拟网络使用防火墙规则作为路由器，让虚拟机可以透明访问主机的网络。</span>  </li></ul> <p><span style="color: #ff0000;"><span style="font-size: large;">六、libvirt可以和和哪些语言绑定？</span>  </span>  </p> <p><span style="font-size: medium;"> 答：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libvirt 库用 <code>C</code>                 （支持 <code>C++</code>  ）实现，且包含对 Python 的直接支持。不过它还支持大量语言绑定。目前已经对 Ruby、Java&#8482; 语言，Perl 和 OCaml 实施了绑定。在从 <code>C#</code>   调用 libvirt 方面我们已做了大量工作。</span>  </p> <p><span style="color: #ff0000;"><span style="font-size: large;">七、基于libvirt有哪些应用程序？</span>  </span>  </p> <p><span style="font-size: medium;">答：&nbsp; </span>  <span style="font-size: medium;">virsh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 它是一种虚拟 shell。</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; virt-install&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应用程序，它可用于从多个操作系统发行版供应新域。</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; virt-clone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可用于从另一个 VM 复制  VM（既包括操作系统复制也包括磁盘复制）。</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; virt-manager&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一些高级应用程序包括多用途桌面管理工具 </span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; virt-viewer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安全连接到 VM  图形控制台的轻量级工具 。</span>  </p> <p><span style="color: #ff0000;"><span style="font-size: large;">八、怎样安装libvirt？</span>  </span>  </p> <p>&nbsp;<span style="font-size: medium;"> 1、在linux上安装:</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1）编译源码包：</span>  </p> <ul><li><span style="font-size: medium;">下载源码包，地址：<br />  </span>   </li><li><span style="font-size: medium;">&nbsp;解压源码包:<br />  <br />   $ gunzip -c libvirt-x.x.x.tar.gz | tar xvf -<br />   $ cd libvirt-x.x.x</span> <p><span style="font-size: medium;">$ ./configure<br />  <br />  </span>  </p> </li><li><span style="font-size: medium;">&nbsp;编译安装：<br /> $ ./configure <em>[possible options]<br /> </em> $ make<br /> $ <strong>sudo</strong>  <em>make install</em> <br /> </span> </li><li> <pre><span style="font-size: medium;"><em></em> <br /> <em>2）git安装</em> <br /> <br />         $ git clone git://libvirt.org/libvirt.git<br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; $ ./autogen.sh --prefix=$HOME/usr --enable-compile-warnings=error<br /> <br /> &nbsp; &nbsp; &nbsp;&nbsp;  $ make<br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; $ <strong>sudo</strong>  make install<br /> <br /> <br /> <br /> 2、在windows上安装:直接下载安装可执行程序，地址</span> <br /> <br /> <a id="installer" name="installer" href="http://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe"><span style="font-size: medium;">http://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe<br /> <br /> </span> <br /> <br /> <br /> </a> </pre> </li></ul> <p>&nbsp;</p> <p><span style="color: #ff0000;"><span style="font-size: large;">九、libvirt API简介：</span>  </span>  </p> <p><span style="font-size: medium;">答：高级 libvirt API 可划分为 5 个 API 部分：虚拟机监控程序连接 API、域 API、网络 API、存储卷 API 以及存储池 API。</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为给定虚拟机监控程序创建连接后会产生所有 libvirt 通信。该连接为所有其他要使用的 API 提供路径。在 <code>C</code>   API 中，该行为通过 <code>virConnectOpen</code>   调用（以及其他进行认证的调用）提供。这些函数的返回值是一个 <code>virConnectPtr</code>   对象，它代表到虚拟机监控程序的一个连接。该对象作为所有其他管理功能的基础，是对给定虚拟机监控程序进行并发 API 调用所必需的语句。重要的并发调用是 <code>virConnectGetCapabilities</code>   和 <code>virNodeGetInfo</code>  ，前者返回虚拟机监控程序和驱动程序的功能，后者获取有关节点的信息。该信息以 XML 文档的形式返回，这样通过解析便可了解可能发生的行为。</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入虚拟机监控程序后，便可以使用一组 API 调用函数重复使用该虚拟机监控程序上的各种资源。<code>virConnectListDomains</code>   API 调用函数返回一列域标识符，它们代表该虚拟机监控程序上的活动域。</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; API 实现大量针对域的函数。要探究或管理域，首先需要一个 <code>virDomainPtr</code>   对象。您可通过多种方式获得该句柄（使用 ID、UUID 或域名）。继续来看重复域的例子，您可以使用该函数返回的索引表并调用 <code>virDomainLookupByID</code>   来获取域句柄。有了该域句柄，就可以执行很多操作，从探究域（<code>virDomainGetUUID</code>  、<code>virDomainGetInfo</code>  、<code>virDomainGetXMLDesc</code>  、<code>virDomainMemoryPeek</code>  ）到控制域（<code>virDomainCreate</code>  、<code>virDomainSuspend</code>  、<code>virDomainResume</code>  、<code>virDomainDestroy</code>   和 <code>virDomainMigrate</code>  ）。 </span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 您还可使用 API 管理并检查虚拟网络和存储资源。建立了 API 模型之后，需要一个<code>virNetworkPtr</code>   对象来管理并检查虚拟网络，且需要一个 <code>virStoragePoolPtr</code>  （存储池）或 <code>virStorageVolPtr</code>  （卷）对象来管理这些资源。</span>  </p> <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; API 还支持一种事件机制，您可使用该机制注册为在特定事件（比如域的启动、中止、恢复或停止）发生时获得通知。</span>  </p><br /><p>参考资源：</p> <p>http://www.ibm.com/developerworks/cn/linux/l-libvirt/</p> <p>http://libvirt.org/</p> <p>http://baike.baidu.com/view/1592349.htm</p> <p>http://blog.csdn.net/MagBryan/archive/2010/03/22/5403907.aspx</p><p><br /></p><p>转自： <div>http://blog.csdn.net/mushubingfeng/article/details/6307914</div><br /></p></div><img src ="http://www.cppblog.com/LIULIANG/aggbug/175822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/LIULIANG/" target="_blank">BIG森林</a> 2012-05-22 23:24 <a href="http://www.cppblog.com/LIULIANG/archive/2012/05/22/175822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>